C# 是否可以从空变量开始合并?
我需要一些东西,比如:C# 是否可以从空变量开始合并?,c#,.net,linq,union,var,C#,.net,Linq,Union,Var,我需要一些东西,比如: var myList; foreach (MyObject myObject in myObjects) { myList = myList.Union(myObject.Items.Cast<Item>()); } var-myList; foreach(MyObject中的MyObject MyObject) { myList=myList.Union(myObject.Items.Cast()); } 但我似乎无法初始化空变量。解决方案?v
var myList;
foreach (MyObject myObject in myObjects)
{
myList = myList.Union(myObject.Items.Cast<Item>());
}
var-myList;
foreach(MyObject中的MyObject MyObject)
{
myList=myList.Union(myObject.Items.Cast());
}
但我似乎无法初始化空变量。解决方案?
var
不是这样工作的,它使用类型推断根据等号后面的内容分配类型
另外,当您在初始化myList之前试图访问它时(它应该是null
),会抛出一个null异常。试试这个:
IEnumerable<Item> myList = myObjects.SelectMany(m => m.Items.Cast<Item>());
IEnumerable myList=myObjects.SelectMany(m=>m.Items.Cast());
var
不是这样工作的,它使用类型推断根据等号后面的内容分配类型
另外,当您在初始化myList之前试图访问它时(它应该是null
),会抛出一个null异常。试试这个:
IEnumerable<Item> myList = myObjects.SelectMany(m => m.Items.Cast<Item>());
IEnumerable myList=myObjects.SelectMany(m=>m.Items.Cast());
Union
返回与所需类型相同的类型,考虑到您在其中使用的是IEnumerable
,然后:
var myList = Enumerable.Empty<Item>();
var myList=Enumerable.Empty();
Union
返回与所需类型相同的类型,考虑到您在其中使用的是IEnumerable
,然后:
var myList = Enumerable.Empty<Item>();
var myList=Enumerable.Empty();
您必须指定变量的类型,并且必须从空集合开始,例如:
IEnumerable<Item> myList = new List<Item>();
IEnumerable myList=new List();
您必须指定变量的类型,并且必须从空集合开始,例如:
IEnumerable<Item> myList = new List<Item>();
IEnumerable myList=new List();
编译器无法知道要创建哪种类型,因此
var myList;
不足以告诉编译器myList的类型是什么。
你能行
List<Item> myList;
还是一个数不清的数字
IEnumerable<Item> myEnumerable = Enumerable.Empty<Item>()
IEnumerable myEnumerable=Enumerable.Empty()
编译器无法知道要创建哪种类型,因此
var myList;
不足以告诉编译器myList的类型是什么。
你能行
List<Item> myList;
还是一个数不清的数字
IEnumerable<Item> myEnumerable = Enumerable.Empty<Item>()
IEnumerable myEnumerable=Enumerable.Empty()
这不是联合的问题,而是试图读取任何未初始化的局部变量的问题
您可以使用:
var myVar = Enumerable.Empty<Item>();
var myVar=Enumerable.Empty();
。。。或者只需使用mattytommo所示的
SelectMany
,可能还需要调用Distinct()
,以获得不同的元素(就像Union
那样)。这不是Union
的问题,而是试图读取任何未初始化的局部变量的问题
您可以使用:
var myVar = Enumerable.Empty<Item>();
var myVar=Enumerable.Empty();
。。。或者只需使用mattytommo所示的
SelectMany
,可能还需要调用Distinct()
来获取不同的元素(就像Union
那样)。我不会将其描述为“惰性评估”-这是类型推断。很好!也适用于var myList=myObjects.SelectMany(m=>m.Items.Cast())
@markzzz是的,你可以保留var
,只要你先给它赋值:)我不会把它描述为“惰性评估”——它是类型推断。很好!也适用于var myList=myObjects.SelectMany(m=>m.Items.Cast())
@markzzz是的,你可以保留var
,只要你先给它赋值:)