C#4.0中的通用列表

mer*_*erp 3 .net c# generics

我正在尝试使用C#和.NET 4.0创建通用列表

List<var> varlist = new List<var>(); 此代码产生错误"上下文关键字'var'可能只出现在局部变量声明中"

原因是因为我想做这样的事情:

List<var> varList = new List<var>(); // Declare the generic list
List<Object1> listObj1;              // List of Object1
List<Object2> listObj2;              // List of Object2

varList = listObj1;                  // Assign the var list to list of Object1

varList = listObj2;                  // Re-assign the var list to the list of Object2
Run Code Online (Sandbox Code Playgroud)

有没有办法在C#.NET 4.0中执行此操作?

Jer*_*vel 9

如果您想要一个通用列表,那么您必须在某处定义该泛型类型.我假设这是在classlevel:

class MyClass<T> {
    List<T> someGenericList = new List<T>();
}
Run Code Online (Sandbox Code Playgroud)

或者您对所有类型使用基类:

List<object> someGenericList = new List<object>();
Run Code Online (Sandbox Code Playgroud)

或者你做到了dynamic(只有当你完全确定你需要它时才使用它)

List<dynamic> someGenericList = new List<dynamic>();
Run Code Online (Sandbox Code Playgroud)

或者最后:你适应你的设计.通常,如果您必须定义这种高级别类型的集合,则可以选择以允许您使用更多常见类型的方式对其进行重构.如果您想要对此进行反馈,那么您必须提供有关上下文的更多信息.

不要忘记阅读MSDN:C#泛型的介绍.

您的代码不起作用的原因是因为var是关键字而不是类型.它将自身替换为后面的表达式的实际类型,从而允许您正确创建表达式,而不必首先显式定义它.因此,为了使用它,实际上必须有一个跟随它的表达式.