我使用俄语在C#上编写代码。我为列表创建别名类
public class Список<T> : List<T>
{
}
以及将IEnumerable强制转换为此别名的扩展方法
public static class Расширение
{
public static Список<T> ПривестиКСписку<T>(this IEnumerable<T> source)
{
return (Список<T>)(source.ToList());
}
}
但是强制转换不起作用-InvalidCastException
Список<T>
是一个List<T>
。相反不是正确的-List<T>
不是从列表派生的自定义类。因此,您不能简单地将的实例转换为List<T>
从其派生的某个类。
因此,您要么应该更改扩展方法的返回类型:
// which is odd, because ToList() already exists
public static List<T> ToList<T>(this IEnumerable<T> source)
{
return source.ToList();
}
或创建派生类的新实例并返回它:
public static Список<T> ПривестиКСписку<T>(this IEnumerable<T> source)
{
var список = new Список<T>();
список.AddRange(source);
return список;
}
笔记!尽量不要使用俄语-对于那些不懂俄语的人来说,这似乎很困惑,并且在键入代码时在输入语言之间进行切换确实很痛苦。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句