EDIT: как комментатор отметил, мое первоначальное осуществление не работает. Эта версия работает, но довольно негладкая, основанная на цикле for.
Если вы готовы создать метод расширения, вы могли бы попробовать это
public static T[] SetAllValues<T>(this T[] array, T value) where T : struct
{
for (int i = 0; i < array.Length; i++)
array[i] = value;
return array;
}
, а затем вызвать его, как этот
bool[] tenTrueBoolsInAnArray = new bool[10].SetAllValues(true);
В качестве альтернативы, если вы довольны имея класс, висящий вокруг, вы можете попробовать что-то вроде этого
public static class ArrayOf<T>
{
public static T[] Create(int size, T initialValue)
{
T[] array = (T[])Array.CreateInstance(typeof(T), size);
for (int i = 0; i < array.Length; i++)
array[i] = initialValue;
return array;
}
}
, которые вы можете вызывать как
bool[] tenTrueBoolsInAnArray = ArrayOf<bool>.Create(10, true);
Не уверен, который я предпочитаю, хотя я lurv методы расширения серии и серии в целом.
только если IPagedResult: IEnumerable –
2008-09-26 00:52:10