РЕДАКТИРОВАТЬ: как отметил комментатор, моя первоначальная реализация не сработала. Эта версия работает, но довольно непривлекательно, поскольку основана на цикле 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.