【问题标题】:Correctly declaring an array? [duplicate]正确声明一个数组? [复制]
【发布时间】:2018-12-14 17:33:49
【问题描述】:

试过调查,但不知道如何用谷歌搜索。

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

var intArray = new int[]{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

~欢迎提出更好的标题,真的不知道怎么问这个。~

【问题讨论】:

标签: c# arrays syntax


【解决方案1】:

当你显式定义值时,你的局部变量初始化器(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 无法编译该代码并将其存储在内存中。您是否将其引用为 1 个对象? 4个对象?一个字符串值?它是 JSON 模式吗?

【讨论】:

  • 这个答案不清楚为什么编译器无法推断{ 1 } 的类型,而它却推断new[] { 1 }。如需更好的解释,请参阅引用为重复的问题。
【解决方案2】:
var intArray = new int[]{}
int[] digArray = {}

这两个指定数组的大小。创建数组时必须做的事情。 在哪里

var numArray 

没有。

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

【讨论】:

  • 请阅读 Eric Lippert 在我引用为重复的问题中的回答。从技术上讲,这是可能的,但语言设计团队决定不这样做。
  • @dymanoid 从不实现该功能似乎是一个奇怪的选择。我想我们总是有列表
  • @dymanoid 谢谢,是的,忘记了隐含的部分,如果我用谷歌搜索的话,很可能也会找到那个……我想我太专注于数组部分。
  • @JamesS 你的答案并不是真正的答案,因为,当然,var 没有定义大小,但 int[] 也没有。大小发生在“{,,,}”部分中的两个。我只是觉得愚蠢的是编译器看不到“var”应该被替换为“int[]”或至少“object[]”类型。
  • @DennisVanhout [] 内部没有数字,表示数组可以是任意大小。例如 int array = new int[5] 的大小为 5。 int array = new int[] 的大小未知
猜你喜欢
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 2015-08-03
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
相关资源
最近更新 更多