EDIT: làm người nhận xét đã chỉ ra, triển khai ban đầu của tôi không hoạt động. Phiên bản này hoạt động nhưng khá un-slick được dựa trên một vòng lặp for.
Nếu bạn sẵn sàng để tạo ra một phương pháp mở rộng, bạn có thể thử này
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;
}
và sau đó gọi nó như thế này
bool[] tenTrueBoolsInAnArray = new bool[10].SetAllValues(true);
Là một thay thế, nếu bạn hài lòng với có một lớp học treo quanh, bạn có thể thử một cái gì đó như thế này
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;
}
}
mà bạn có thể gọi là
bool[] tenTrueBoolsInAnArray = ArrayOf<bool>.Create(10, true);
Không chắc chắn tôi thích, mặc dù tôi sử dụng nhiều phương pháp mở rộng và rất nhiều.
Nguồn
2008-09-26 00:46:02
Bây giờ chỉ là trơn! – Rob
Tôi nghĩ rằng lưu ý hiệu suất của Nigel bảo đảm một đề cập đến - http://stackoverflow.com/questions/136836/c-array-initialization-with-non-default-value/1051227#1051227 – CrimsonX
Tôi không thể tin rằng mọi người upvote cho một cái gì đó nên 'mờ' (theo ý kiến của tôi) và tốn kém cho một thao tác đơn giản như điền vào một mảng. 'var arr = loại mới [10]; for (int i = 0; i
Aidiakapi