C# 是否使用特定值初始化运行时值类型数组?

C# 是否使用特定值初始化运行时值类型数组?,c#,.net,arrays,C#,.net,Arrays,是否有一种方法可以将以下运行时数组初始化为alltrues,而不使用foreach循环 声明如下: bool[]foo=newbool[someVariable.Count] 谢谢 bool[] bools = (new bool[someVariable.Count]).Select(x => !x).ToArray(); 有点开玩笑。有点几乎可以。是否禁止任何类型的显式循环,或者您只关心避免foreach bool[] foo = Enumerable.Repeat(true, so

是否有一种方法可以将以下运行时数组初始化为all
true
s,而不使用foreach循环

声明如下:

bool[]foo=newbool[someVariable.Count]

谢谢

bool[] bools = (new bool[someVariable.Count]).Select(x => !x).ToArray();

有点开玩笑。有点几乎可以。

是否禁止任何类型的显式循环,或者您只关心避免foreach

bool[] foo = Enumerable.Repeat(true, someVariable.Count)
                       .ToArray();
bool[] foo = new bool[someVariable.Count];
for (int i = 0; i < foo.Length; i++) foo[i] = true;
bool[]foo=newbool[someVariable.Count];
对于(inti=0;i
这是我所知的C#中唯一一种将
数组
初始化为默认值以外的特定值的方法,默认值不涉及创建其他临时对象。 如果类
Array
有Fill()或Set()之类的方法,那就太好了


如果我错了,请纠正我。

你忘了.Take(someVariable.Count)@Philippe:不太可能,但我忘了它必须是
someVariable.Count
元素。这是一个你知道的笑话:)哦,应该理解的p现在你更改了示例,这不再有趣了,对:p但我有另一个想法:(new bool[Int32.MaxValue])。选择(x=>!x)。获取(someVariable.Count)。ToArray(),太完美了!我不反对也不禁止,我只是想知道是否有更好的方法或内置的语言结构:)你为什么不使用foreach。这看起来是最简单的方法。是的,你是对的。我只是想知道是否有另一种方法或某种语言结构可以为您做到这一点/隐藏这一点。数组初始化器仍然需要使用新数据覆盖“默认”数组,并且新数据在复制到数组之前必须存储在某个位置。对于简单类型,数据在编译时烘焙到程序集元数据中,然后在运行时直接复制到数组中。对于非简单类型,初始化器被转换为IL,以便在运行时显式地分别创建和添加元素。(据我所知,这些只是实施细节,而不是文件化的保证。)
bool[] foo = new bool[]{true,true,true,...};