【发布时间】:2011-08-01 12:43:43
【问题描述】:
我的目标是 .NET 3.5。假设我有一个类 Bob,它是 SubBob 的抽象基类。
我可以这样声明:
Bob b = new SubBob();
但我不能这样做:
// compliation error - can't convert
BindingList<Bob> myList = new BindingList<SubBob>();
我的猜测是 BindingList 不希望您这样做,因为它必须知道右侧的类型与左侧的内存布局相同。 SubBob 的大小可能比 Bob 大。
有什么方法可以进行隐式转换,还是需要强制转换?
【问题讨论】:
-
您使用的是 Visual Studio 2010 吗?
-
@Daniel - 他使用什么版本的 VS 有什么关系?他已经说过他的目标是 3.5,这意味着 C# 3.0 是他将使用的版本。
-
不,将使用4.0编译器。
-
下一行:
myList.Add(new SomethingOtherThanASubBobButThatAlsoDerivesFromBob())。对于这个只希望包含SubBob实例的列表,您看到问题出在哪里了吗? -
@Daniel White,每个项目都使用目标框架指定。 VS2010 允许您针对 4.0 之后的任何现有框架
标签: .net generics casting implicit-conversion