用C#填充数组

Mis*_*hax 18 c# arrays

在Java中,类Arrays中大约有18个静态"填充"方法,用于为数组中的每个元素分配一个值.我正在寻找C#中的等价物以实现同样的目的,但我找不到具有相同紧凑性的任何东西:

1)ForEach,因为我理解通过值传递数组中的元素,所以我不能更改它们

2)从Enumerable重复创建一个新数组,创建一个新数组然后从数组中复制每个元素似乎是开销

3)for循环并不漂亮,我想这就是为什么Java人员开始介绍这个紧凑的符号

4)Array类中的Clear方法可以将所有内容都设置为零,但是如何将零转换为我想要的非零值?

要演示Java的语法,请考虑此代码打印数字7的三倍:

int[] iii = {1, 2, 3};
Arrays.fill(iii, 7);
for (int i : iii) {
    System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*tof 46

int[] arr = Enumerable.Repeat(42, 10000).ToArray();
Run Code Online (Sandbox Code Playgroud)

我相信这可以做到这一点:)

  • 正如我在OP中提到的那样,我知道这种方法,当时我正在寻找可以修改现有阵列的方法。 (2认同)

bra*_*ing 15

给自己写一个扩展方法

public static class ArrayExtensions {
    public static void Fill<T>(this T[] originalArray, T with) {
        for(int i = 0; i < originalArray.Length; i++){
            originalArray[i] = with;
        }
    }  
}
Run Code Online (Sandbox Code Playgroud)

并使用它

int foo[] = new int[]{0,0,0,0,0};
foo.Fill(13);
Run Code Online (Sandbox Code Playgroud)

将用13填充所有元素


Igo*_*goy 11

你可以尝试这样的事情:

我已将数组初始化为值为5,您可以将您的数字设置为类似.

int[] arr = new int[10]; // your initial array

arr = arr.Select(i => 5).ToArray(); // array initialized to 5.
Run Code Online (Sandbox Code Playgroud)

  • 它**创建**新数组,而不****填充**现有数组。 (2认同)

roa*_*r66 6

假设您要填写13号.

int[] myarr = Enumerable.Range(0, 10).Select(n => 13).ToArray();

要么

List<int> myarr = Enumerable.Range(0,10).Select(n => 13).ToList();

如果你喜欢列表.