C# 如何将空数组作为C中隐式数组的一部分#
此声明导致错误,因为最后一项为空C# 如何将空数组作为C中隐式数组的一部分#,c#,anonymous-types,C#,Anonymous Types,此声明导致错误,因为最后一项为空 var foo = new[] { new [] {1, 2, 3}, new [] {3, 4, 5}, new [] {} }; 我知道,一般来说,编译器需要所有这些数组都是相同的(匿名)类型,但它似乎应该允许“empty”作为特例,并像所有其他数组一样键入它 是否有某种方法来声明上述内容,以便我可以拥有一个空数组和非
var foo = new[] {
new [] {1, 2, 3},
new [] {3, 4, 5},
new [] {}
};
我知道,一般来说,编译器需要所有这些数组都是相同的(匿名)类型,但它似乎应该允许“empty”作为特例,并像所有其他数组一样键入它
是否有某种方法来声明上述内容,以便我可以拥有一个空数组和非空数组
Michael当然,只需将其设置为
int[]
:
int[][] foo = new[] {
new [] {1, 2, 3},
new [] {3, 4, 5},
new int[] {}
};
当然,只需将其设置为
int[]
:
int[][] foo = new[] {
new [] {1, 2, 3},
new [] {3, 4, 5},
new int[] {}
};
如果您将其初始化为特定类型,则可以:
var foo = new int[][] {
new int[] {1, 2, 3},
new int[] {3, 4, 5},
new int[] {}
};
如果您将其初始化为特定类型,则可以:
var foo = new int[][] {
new int[] {1, 2, 3},
new int[] {3, 4, 5},
new int[] {}
};
是的缩写
new int[] { 1,2,3 }
编译器可以计算出它必须是int
,因为数组包含int。但是如果你说
new [] { }
由于数组为空,因此无法确定类型。因此,您必须明确地告诉编译器类型是什么:
var foo = new[] {
new [] {1, 2, 3},
new [] {3, 4, 5},
new int [] {}
};
是的缩写
new int[] { 1,2,3 }
编译器可以计算出它必须是int
,因为数组包含int。但是如果你说
new [] { }
由于数组为空,因此无法确定类型。因此,您必须明确地告诉编译器类型是什么:
var foo = new[] {
new [] {1, 2, 3},
new [] {3, 4, 5},
new int [] {}
};
无法隐式创建空数组。 正如@Dennis_E所说,“由于数组是空的,因此无法确定类型。” 你可以参考 引用相关部分: 空数组
...
var data8 = new [] { } and int[] data9 = new [] { } are not compilable.
...
顺便说一句,可能到-提供的细节更少-隐式创建空数组是不可能的。 正如@Dennis_E所说,“由于数组是空的,因此无法确定类型。” 你可以参考 引用相关部分: 空数组
...
var data8 = new [] { } and int[] data9 = new [] { } are not compilable.
...
另外,如果不想显式地编写类型,可以使用linq过滤最后一个数组
var foo = new [] {
new [] {1, 2, 3},
new [] {3, 4, 5},
new [] {0}.Where(e => false).ToArray()
};
如果您必须将此代码更改为:
var foo = new[] {
new [] { new { N = 1 }, new { N = 2 }, new { N = 3} },
new [] { new { N = 3 }, new { N = 4 }, new { N = 5} },
new [] { new { N = 0 } }.Where(e => false).ToArray()
};
如果不想显式写入类型,可以使用linq过滤最后一个数组
var foo = new [] {
new [] {1, 2, 3},
new [] {3, 4, 5},
new [] {0}.Where(e => false).ToArray()
};
如果您必须将此代码更改为:
var foo = new[] {
new [] { new { N = 1 }, new { N = 2 }, new { N = 3} },
new [] { new { N = 3 }, new { N = 4 }, new { N = 5} },
new [] { new { N = 0 } }.Where(e => false).ToArray()
};
它无法确定元素的类型。(因为它没有元素)它无法确定元素的类型。(因为它没有元素)演员在哪里?演员在哪里?