Я пытаюсь научиться использовать методы расширения и создал свой собственный. Теперь я попытался запустить свой код, но Visual Studio дал мне ошибку, что у меня было необработанное InvalidCastException, поэтому я обработал его и попытался запустить его.Метод расширения возвращает InvalidCastException
Я должен был вернуть null в catch catch, поэтому у меня было еще одно необработанное исключение, напечатанное также.
Теперь, когда я пытаюсь запустить этот код, я выход
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();
}
}
}
На какой линии? Вы отлаживали свой код? –
На обоих телах-попытках, начинающихся с 'return (Reeks) r.Where (i => i> start && i
Ivaro18
Тип 'reeks.Where 'больше не' Reeks'. 'Reeks'' 'IEnumerable', но каждый 'IEnumerable ' не 'Reeks'. –