我想学习如何使用扩展方法,并创建了我自己的。现在我试图运行我的代码,但Visual Studio给了我一个错误,我有一个未处理的InvalidCastException,所以我处理它并试图运行它。扩展方法返回InvalidCastException
我不得不在catch块中返回null,所以我还有另一个未处理的异常,并将其打印出来。
现在,当我尝试运行此代码,我输出
InvalidCastException NullReferenceException
Generic conversion method throw InvalidCastException试过解决方案,发现这里加入(动态)的演员阵容,同样的结果。
注意,我有一个Java的背景下,不C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
Reeks r = new Reeks();
IEnumerable<int> selectie = r.TakeRange(10, 1000);
try
{
foreach (int i in selectie)
{
Console.WriteLine("selectie: {0}", i);
}
}
catch (NullReferenceException)
{
Console.WriteLine("NullReferenceException");
}
Console.ReadLine();
}
}
static class MyExtension
{
public static Reeks TakeRange(this Reeks r, int start, int end)
{
try
{
return (Reeks)r.Where(i => i > start && i < end);
}
catch (InvalidCastException) {
Console.WriteLine("InvalidCast"); return null;
}
}
}
public class Reeks : IEnumerable<int>
{
public Reeks()
{
}
public IEnumerator<int> GetEnumerator()
{
int start = 2;
yield return start;
for (; ;)
{
int nieuw = start * 2;
yield return nieuw;
start = nieuw;
}
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
}
}
在哪一行?你调试了你的代码吗? –
在这两个try-bodies上,开始于'return(Reeks)r.Where(i => i> start && i
Ivaro18
'reeks.Where'不是'Reeks'的类型。 'Reeks'是'IEnumerable'但每个'IEnumerable '不是'Reeks'。 –