2013-01-08 68 views
14

thể trùng lặp:
How do I quicky fill an array with a specific value?Khởi tạo một mảng số nguyên với một giá trị duy nhất trong C# .NET

Có cách nào để khởi tạo một mảng số nguyên với một giá trị duy nhất như -1 mà không phải chỉ định rõ ràng từng mục?

Về cơ bản, nếu tôi có

int[] MyIntArray = new int[SomeCount]; 

Tất cả các mục được phân công 0 theo mặc định. Có cách nào để thay đổi giá trị đó thành -1 mà không sử dụng vòng lặp không? hoặc chỉ định rõ ràng từng mục bằng cách sử dụng {}?

+4

Ngoài ra kiểm tra này http://stackoverflow.com/questions/13980570/how-to-intialize-integer-array-in -c-sharp/thảo luận về cách thực hiện nó hiệu quả và http://stackoverflow.com/questions/10519275/high-memory-consumption-with-enumerable-range cách không sử dụng ToArray cho mảng lớn. –

Trả lời

37
int[] myIntArray = Enumerable.Repeat(-1, 20).ToArray(); 
+3

Đừng quên '.ToArray()' – mlorbetske

+4

+1 cho tất cả ToArray một lần. Trước khi sử dụng, vui lòng đọc [Tiêu thụ bộ nhớ cao với Enumerable.Range] (http://stackoverflow.com/questions/10519275/high-memory-consumption-with-enumerable-range) nếu mảng của bạn lớn. –

+0

Và đối với các loại khác với int, hãy sử dụng mẫu biểu mẫu, ví dụ: Enumerable.Repeat (1,20) .ToArray(); – dlchambers

11

Nếu bạn đã có một giá trị duy nhất (hoặc chỉ một vài) bạn có thể đặt chúng bằng một cách rõ ràng collection initializer

int[] MyIntArray = new int[] { -1 }; 

rất nhiều Nếu bạn đã có, bạn có thể sử dụng Enumerable.Repeat như thế này

int[] MyIntArray = Enumerable.Repeat(-1, YourArraySize).ToArray(); 
+1

đặt một số kích thước vào [Kích thước] int mới và tuyên bố này sẽ không hoạt động. Ngay cả khi bạn đặt kích thước tĩnh như 50. Vì vậy, tôi không nghĩ rằng đây là câu trả lời đúng. –

+1

@FarhanHafeez Bạn hoàn toàn chính xác, ban đầu tôi đã hiểu sai câu hỏi và ngay lập tức đã chỉnh sửa câu trả lời của tôi, xin lỗi – mlorbetske

15

Bạn có thể sử dụng phương pháp Enumerable.Repeat

int[] myIntArray = Enumerable.Repeat(1234, 1000).ToArray() 

sẽ tạo ra một mảng 1000 yếu tố, mà tất cả đều có giá trị của 1234.

+1

Chỉ câu trả lời rõ ràng. – ozgur

Các vấn đề liên quan