在C#中填充一个数组[重复]
Posted
技术标签:
【中文标题】在C#中填充一个数组[重复]【英文标题】:fill an array in C# [duplicate] 【发布时间】:2013-02-01 21:01:41 【问题描述】:在 Java 中,Arrays 类中有大约 18 个静态“填充”方法,用于为数组中的每个元素分配一个值。我正在寻找 C# 中的等价物来实现相同的目标,但我没有找到任何具有相同紧凑性的东西:
1) 据我所知,ForEach 按值传递数组中的元素,因此我无法更改它们
2) 从 Enumerable 重复创建一个新数组,创建一个新数组然后从数组中复制每个元素似乎是开销
3) for 循环并不漂亮,我想这就是为什么 Java 人员一开始就引入了这种紧凑的表示法
4) Array 类的 Clear 方法可以将所有内容设置为零,但是如何将零转换为我想要的非零值?
为了演示 Java 的语法,请考虑以下打印 3 倍数字 7 的代码:
int[] iii = 1, 2, 3;
Arrays.fill(iii, 7);
for (int i : iii)
System.out.println(i);
【问题讨论】:
发布一个Java示例,也许我明白你想要什么 不知道java的18种方法。发布一个例子。 在不需要复杂化的情况下为什么要复杂化.. 这可以帮助你 [***.com/questions/14210369/… 【参考方案1】:你可以试试这样的:
我已将数组初始化为值为 5,您可以同样输入您的数字。
int[] arr = new int[10]; // your initial array
arr = arr.Select(i => 5).ToArray(); // array initialized to 5.
【讨论】:
它创建新数组,而不是填充现有数组。【参考方案2】:给自己写一个扩展方法
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;
并像使用它
int foo[] = new int[]0,0,0,0,0;
foo.Fill(13);
将用 13 填充所有元素
【讨论】:
【参考方案3】:你可以写一个扩展方法
public static void Fill<T>(this T[] array, T value)
for(int i = 0; i < array.Length; i++)
array[i] = value;
【讨论】:
复制粘贴以前的答案不是很酷;-) 我没有复制粘贴任何人的答案。【参考方案4】:public static void Fill<T>(this IList<T> col, T value, int fromIndex, int toIndex)
if (fromIndex > toIndex)
throw new ArgumentOutOfRangeException("fromIndex");
for (var i = fromIndex; i <= toIndex; i++)
col[i] = value;
适用于所有IList<T>
s 的东西。
【讨论】:
IList<T>
仍然是T[]
如果这样的通用函数 - 我会使用默认 prms... public static void Fill假设你要填写数字 13。
int[] myarr = Enumerable.Range(0, 10).Select(n => 13).ToArray();
或
List<int> myarr = Enumerable.Range(0,10).Select(n => 13).ToList();
如果您喜欢列表。
【讨论】:
这不是在创建一个新数组吗? Arrays.fill() 在 Java 中没有这样做,它正在修改现有的。 由于问题是关于用常量值填充数组(即仅用于初始化),我假设您当时正在创建数组。所以我试图提供一个简短的答案。如果您的数组之前已经存在,我会在 Igoy 的回答中使用 Select 方法。 我喜欢这个答案,因为它让我有机会选择将注入常量的索引范围。 +1! 在使用 EF 时,我喜欢列表的想法,因为它很容易使用并且已经被许多其他实体和对象普遍使用。在这里 +1【参考方案6】:int[] arr = Enumerable.Repeat(42, 10000).ToArray();
我相信这可以完成工作:)
【讨论】:
我知道这种方法,正如我在 OP 中提到的那样,我正在寻找修改现有数组的东西。以上是关于在C#中填充一个数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章