我知道 C# 中值类型的实例化数组会自动填充该类型的默认值(例如,布尔为 false,int 为 0,等等)。
有没有办法使用不是默认值的种子值自动填充数组?是在创建时还是之后的内置方法(如Java的Arrays.fill())?假设我想要一个默认为 true 的布尔数组,而不是 false。有没有内置的方法可以做到这一点,或者你只需要使用 for 循环遍历数组?
// Example pseudo-code: bool[] abValues = new[1000000]; Array.Populate(abValues, true); // Currently how I'm handling this: bool[] abValues = new[1000000]; for (int i = 0; i < 1000000; i++) { abValues[i] = true; }
必须遍历数组并将每个值“重置”为 true 似乎效率低下。有没有办法解决?也许通过翻转所有值?
在输入这个问题并考虑之后,我猜测默认值只是 C# 如何在幕后处理这些对象的内存分配的结果,所以我想这可能是不可能的。但我还是想确定一下!
不知道框架方法,但您可以编写一个快速助手来为您完成。
public static void Populate<T>(this T[] arr, T value ) { for ( int i = 0; i < arr.Length;i++ ) { arr[i] = value; } }