我正在尝试使用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中执行此操作?
如果您想要一个通用列表,那么您必须在某处定义该泛型类型.我假设这是在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
是关键字而不是类型.它将自身替换为后面的表达式的实际类型,从而允许您正确创建表达式,而不必首先显式定义它.因此,为了使用它,实际上必须有一个跟随它的表达式.
归档时间: |
|
查看次数: |
234 次 |
最近记录: |