1

我有一个类似于以下使用内部列表的类:

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。为什么?

4

1 回答 1

1

使用您描述的类,以下代码对我有用:

static void Main(string[] args)
{
   MyList<object> foo = new MyList<object>();

   MyMethod(foo);
}

static void MyMethod(List<object> things)
{
   // No InvalidCastException when called...
}

MyList<T>我从您在问题中发布的课程中唯一改变的是添加以下实现IEnumerable<T>

IEnumerator<T> IEnumerable<T>.GetEnumerator()
{
    return _lstInternal.GetEnumerator();
}

IEnumerator IEnumerable.GetEnumerator()
{
    return _lstInternal.GetEnumerator();
}

不太确定为什么会出现异常,除非我在评论中提到,我使用的是 C# 4.0 版。你用的是什么版本?

于 2010-10-27T19:48:53.073 回答