我想學習如何使用擴展方法,並創建了我自己的。現在我試圖運行我的代碼,但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'。 –