the*_*dow 2 c# arrays syntax initialization
我见过类似的问题,但答案都是必须在运行时执行而不是在变量初始化时执行的解决方案。为了解释我具体要求什么(以及我不要求什么),请举这个例子:
假设我有一个要初始化的整数数组。
int[] numbers;
Run Code Online (Sandbox Code Playgroud)
伟大的。但现在它是空的。所以我可能会做这样的事情。
int[] numbers = new int[];
Run Code Online (Sandbox Code Playgroud)
现在它是一个长度为 0 的空数组。但我确切地知道我想要这个数组有多长,所以我这样做:
int[] numbers = new int[5];
Run Code Online (Sandbox Code Playgroud)
现在我有一个包含 5 个元素的整数数组,这些元素都默认为默认整数 0。这很好,但我实际上希望该数组初始化时所有元素都设置为 -1。好吧,我可以这样做:
int[] numbers = new int[5] {-1,-1,-1,-1,-1};
Run Code Online (Sandbox Code Playgroud)
很酷,我在初始化时就得到了我想要的东西......但我实际上希望数组有 200 个元素......
到目前为止,据我所知,我自定义该数组的初始化状态的能力已达到其极限。从技术上讲,它允许我手动输入 200 -1,但显然我不会这样做。
是的,我可以使用某种循环,填充方法,其他问题中的所有这些答案,但这需要在执行代码块中至少多一行代码。我希望能够做这样的事情。
int[] numbers;
Run Code Online (Sandbox Code Playgroud)
现在,从我的研究中我可以清楚地看出,根本不存在允许这样做的语法。但这让我感到惊讶。我希望有人对我有魔力。但另一方面,我认为如果某些对我来说显然有用的事情无法完成,那么一定有理由这样做,而且很可能不应该这样做。如果是这样的话,如果有人解释为什么我实际上不想这样做,即使我可以的话,这是一个加深我对编程理解的机会。
提前致谢。
您可以使用方法Enumerable.Repeat:
int[] numbers = Enumerable.Repeat(-1, 5).ToArray();
Run Code Online (Sandbox Code Playgroud)
这将创建一个包含元素 -1 五次的数组。