Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使int数组为空?_C#_.net - Fatal编程技术网

C# 如何使int数组为空?

C# 如何使int数组为空?,c#,.net,C#,.net,我有以下代码: var contractsID = contracts.Select(x => x.Id); int?[] contractsIDList = contractsID.ToArray();//for debug 在这方面: int?[] contractsIDList = contractsID.ToArray();//for debug 我得到这个错误: 无法将int[]类型隐式转换为int 我试图做的是使contractsIDList成为可为空的类型 如何使int数

我有以下代码:

var contractsID = contracts.Select(x => x.Id);
int?[] contractsIDList = contractsID.ToArray();//for debug
在这方面:

int?[] contractsIDList = contractsID.ToArray();//for debug
我得到这个错误:

无法将int[]类型隐式转换为int

我试图做的是使contractsIDList成为可为空的类型

如何使int数组为空?

您应该得到的错误是:

无法将int[]类型隐式转换为int?[]

因此,您需要转换这些值:

int?[] contractsIDList = contractsId.Cast<int?>().ToArray();//for debug
int?[]contractsIDList=contractsId.Cast().ToArray()//用于调试

在您的情况下,最简单的方法是从
选择中获取
int?

var contractsID = contracts.Select(x => (int?)x.Id);
int?[] contractsIDList = contractsID.ToArray();

但我猜您实际上希望从
int[]
获取
int?[]
(因为
Id
不可为空)。您可以使用数组。ConvertAll

int[] contractsID = contracts.Select(x => x.Id).ToArray();
int?[] contractsIDList = Array.ConvertAll(contractsID, i => (int?)i);
或者直接在LINQ查询中强制转换它:

int?[] contractsIDList = contracts.Select(x => (int?) x.Id).ToArray();
用这个

int?[] contractsIDList = contractsID.ConvertAll<int?>((i) => { int? ni = i; return ni; }).ToArray();
int?[]contractsIDList=contractsID.ConvertAll((i)=>{int?ni=i;返回ni;}).ToArray();

为什么希望数组为空?作为引用类型,它已经可以为null。我不理解错误消息。
x.Id
int?
还是
int
?你真的想从
int[]
创建
int吗?[]
?你的错误消息对你显示的代码没有意义。在我看来,一个模棱两可的问题导致了很多分歧。我想知道你的100%评论是否正确,它根本不起作用。如果
contractsID
是一个数组(它是什么),您需要将数组作为参数传递,它不是一个实例方法。OP已经显示了他的代码:
var contractsID=contracts.Select(x=>x.Id)
,它是一个
IEnumerable
。也可以表示为
契约。选择(x=>newint?(x.Id))