有没有办法通过泛型将数组的所有元素初始化为常量值?
答案 0 :(得分:6)
就个人而言,我会使用一个好的旧的for循环,但是如果你想要一个单行,那么它就是:
T[] array = Enumerable.Repeat(yourConstValue, 100).ToArray();
答案 1 :(得分:3)
如果您需要经常这样做,您可以轻松编写静态方法:
public static T[] FilledArray<T>(T value, int count)
{
T[] ret = new T[count];
for (int i=0; i < count; i++)
{
ret[i] = value;
}
return ret;
}
关于这个的好处是你得到类型推断:
string[] foos = FilledArray("foo", 100);
这比(否则很整洁)Enumerable.Repeat(...)。ToArray()回答更有效。在小的情况下,差异不会太大,但对于更大的计数可能会有很大的意义。
答案 2 :(得分:2)
我会使用扩展器(.net 3.5功能)
public static class Extenders
{
public static T[] FillWith<T>( this T[] array, T value )
{
for(int i = 0; i < array.Length; i++)
{
array[i] = value;
}
return array;
}
}
// now you can do this...
int[] array = new int[100];
array.FillWith( 42 );