C# 是否正确声明数组?

C# 是否正确声明数组?,c#,arrays,syntax,C#,Arrays,Syntax,我已经试着研究过了,但甚至不知道如何用谷歌搜索这个 我知道这给出了一个错误var intArray={1,2,3,4}并且它必须是 var intArray=newint[]{1,2,3,4}或int[]intArray={1,2,3,4} 但我似乎找不到一个真正的理由为什么我不能使用第一个 因为至少我希望它在默认情况下生成一个对象[] 所以基本上我要问的是:为什么第一个不正确/不允许 var intArray = { 1, 2, 3, 4 }; //incorrect

我已经试着研究过了,但甚至不知道如何用谷歌搜索这个

我知道这给出了一个错误
var intArray={1,2,3,4}并且它必须是

var intArray=newint[]{1,2,3,4}
int[]intArray={1,2,3,4}

但我似乎找不到一个真正的理由为什么我不能使用第一个

因为至少我希望它在默认情况下生成一个对象[]

所以基本上我要问的是:为什么第一个不正确/不允许

        var intArray = { 1, 2, 3, 4 }; //incorrect
        var numArray = new int[] { 1, 2, 3, 4 }; //correct
        int[] digArray = { 1, 2, 3, 4 }; //correct
~z~欢迎你提出更好的标题,我真的不知道该怎么问~

var intArray = new int[]{}
int[] digArray = {}
这两个参数指定数组的大小。创建阵列时必须执行的操作。 何处为

没有

如果不想定义数组的大小,可以使用列表

这两个参数指定数组的大小。创建阵列时必须执行的操作。 何处为

没有


如果不想定义数组的大小,可以使用列表。

在显式定义值时,局部变量初始值设定项(var)不知道给定的类型

因此:

var intArray = { 1, 2, 3, 4 };
一旦您为其指定了一种类型,它可能会起作用:

int intArray = { 1, 2, 3, 4 };
但是我们当然知道不能在一个int中存储4个值,所以需要声明一个数组

int[] digArray = { 1, 2, 3, 4 };
因为至少我希望它在默认情况下生成一个对象[]


var={1,2,3,4}有太多的变体,以至于IDE无法编译代码并将其存储在内存中。您是否将其作为一个对象引用?4个物体?字符串值?它是JSON模式吗

当您显式定义值时,您的局部变量初始值设定项(var)不知道您给它的是什么类型

因此:

var intArray = { 1, 2, 3, 4 };
一旦您为其指定了一种类型,它可能会起作用:

int intArray = { 1, 2, 3, 4 };
但是我们当然知道不能在一个int中存储4个值,所以需要声明一个数组

int[] digArray = { 1, 2, 3, 4 };
因为至少我希望它在默认情况下生成一个对象[]



var={1,2,3,4}有太多的变体,以至于IDE无法编译代码并将其存储在内存中。您是否将其作为一个对象引用?4个物体?字符串值?它是JSON模式吗

错误消息足够清楚了吗?:无法使用数组初始值初始化隐式类型的局部变量此答案的第二点可以帮助您。您可以删除
int[]
即:
var intArray=new[]{1,2,3}
错误消息是否足够清楚无法使用数组初始值初始化隐式类型的局部变量此答案的第二点可以帮助您。您可以删除
int[]
即:
var intArray=new[]{1,2,3}
请阅读Eric Lippert在我引用为重复的问题中的答案。从技术上讲,这是可能的,但语言设计团队刚刚决定反对它。@dymanoid似乎是一个奇怪的选择,从不实现该功能。我想我们总是这样lists@dymanoid谢谢,是的,忘了隐式部分,如果我在谷歌上搜索的话,很可能也会找到那个。。。我想我太关注数组部分了。@JamesS您的答案并不是真正的答案,因为,当然,var没有定义大小,但int[]也没有定义大小。对“{,,,}”部分中的两个部分都进行大小调整。我觉得很愚蠢的一件事是,编译器看不到“var”应该被类型“int[]”或至少是“object[]”替换@DennisVanhout[],如果数组中没有一个数字,那么数组可以是任意大小。对于exmaple int array=new int[5],其大小为5。int array=new int[]的大小未知请阅读Eric Lippert在我引用为重复的问题中的回答。从技术上讲,这是可能的,但语言设计团队刚刚决定反对它。@dymanoid似乎是一个奇怪的选择,从不实现该功能。我想我们总是这样lists@dymanoid谢谢,是的,忘了隐式部分,如果我在谷歌上搜索的话,很可能也会找到那个。。。我想我太关注数组部分了。@JamesS您的答案并不是真正的答案,因为,当然,var没有定义大小,但int[]也没有定义大小。对“{,,,}”部分中的两个部分都进行大小调整。我觉得很愚蠢的一件事是,编译器看不到“var”应该被类型“int[]”或至少是“object[]”替换@DennisVanhout[],如果数组中没有一个数字,那么数组可以是任意大小。对于exmaple int array=new int[5],其大小为5。int array=new int[]的大小未知此答案不清楚为什么编译器在为
new[]{1}
推断时无法推断
{1}
的类型。要获得更好的解释,请参见引用为重复的问题。此答案不清楚为什么编译器无法推断
{1}
的类型,而它却可以推断
新[]{1}
。如需更好的解释,请参见重复引用的问题。