jos*_*ers 3 c# collections casting exception
这是我的自定义集合声明.
public interface IMenuCollection<T> : ICollection<T>
public class HTMLMenuCollection: IMenuCollection<HTMLMenu>
Run Code Online (Sandbox Code Playgroud)
我试图从另一个集合中转向它IList<T>.
IList<HTMLMenu> htmlMenuList = new List<HTMLMenu>();
...
HTMLMenuCollection tempColl = (HTMLMenuCollection)htmlMenuList;
Run Code Online (Sandbox Code Playgroud)
我不知道为什么这不起作用.如果我投射IList<T>到ICollection<T>它工作得很好,但有了这个我得到一个无效的强制转换异常.我究竟做错了什么?
将继承视为"是一种"关系.
然后你可以把它想象成因为HTMLMenuCollection是一个List<HTMLMenu>但不是每个List<HTMLMenu>都是一个HTMLMenuCollection(因为List<HTMLMenu>不继承HTMLMenuCollection).
您可以从List转换为IList到ICollection的原因如下:
public class List<T> : IList<T>, ICollection<T> // and more
Run Code Online (Sandbox Code Playgroud)
和
public interface IList<T> : ICollection<T> // and more
Run Code Online (Sandbox Code Playgroud)