在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)
我相信这可以做到这一点:)
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)
假设您要填写13号.
int[] myarr = Enumerable.Range(0, 10).Select(n => 13).ToArray();
要么
List<int> myarr = Enumerable.Range(0,10).Select(n => 13).ToList();
如果你喜欢列表.
| 归档时间: |
|
| 查看次数: |
85908 次 |
| 最近记录: |