【发布时间】:2010-10-27 19:18:31
【问题描述】:
我有一个类似于以下使用内部列表的类:
public class MyList<T> : IEnumerable<T>
{
private List<T> _lstInternal;
public MyList()
{
_lstInternal = new List<T>();
}
public static implicit operator List<T>(MyList<T> toCast)
{
return toCast._lstInternal;
}
}
当我尝试将MyList<object> 传递给采用List<object> 的函数时,我得到一个InvalidCastException。为什么?
【问题讨论】:
-
您使用的是什么版本的 C#?我正在使用 4.0 并且能够在没有
InvalidCastException的情况下执行您在此处描述的操作。 -
你有什么理由不只是从
List<T>派生? -
@CodeInChaos,然后该类的用户将能够改变列表或通过索引器访问它。也许作者不想公开该功能。
-
我没有使用 .NET 2.0 获得异常,您可以发布您有异常的行吗?
-
@Anthony Pegram 他已经通过公共隐式转换运算符公开了它。他只隐藏了类似于显式接口实现的方法。
标签: c# operator-keyword implicit implicit-conversion