2011-08-01 30 views

Trả lời

12

Không có sự khác biệt trong trường hợp này - nhưng cú pháp đầu tiên là chỉ có sẵn khi khai báo biến. Từ phần thông số C# 4 12.6:

Trình khởi tạo mảng có thể được chỉ định trong khai báo trường, khai báo biến cục bộ và biểu thức tạo mảng.

(Các "mảng initializer" là bit trong niềng răng - và một biểu thức tạo mảng là hình thức mà bạn chỉ định new int[] hoặc bất cứ điều gì.)

Khi bạn không khai báo một biến cục bộ hoặc một lĩnh vực (ví dụ: nếu bạn đang đi qua một cuộc tranh cãi đến một phương pháp), bạn phải sử dụng hình thức thứ hai, hoặc từ C# 3.0, bạn có thể sử dụng một mảng ngầm gõ:

Foo(new[] { 1, 2, 3}); 
2

Không tạo sự khác biệt. Cả hai đều như nhau.

1
int[] array1; // declare array1 as an int array of any size 
array1 = new int[10]; // array1 is a 10-element array 
array1 = new int[20]; // now it's a 20-element array 

int[] array2 = new int[5] {1, 2, 3, 4, 5}; // declare array 2 as an int array of size 5 

Cả hai đều giống nhau. Xem tại MSDN on initializing arrays.

1

Vì bạn đang cung cấp bộ khởi tạo trong cùng một dòng mà bạn đang khai báo, bạn cam bỏ qua toán tử mới.

// Đây là OK

int [] i32Array = {1,2,3,4,5};

// Đây là KHÔNG

int [] i32Array; i32Array = {1,2,3,4,5};

Nếu định nghĩa và khởi của bạn xảy ra trong dòng khác nhau mà bạn sẽ phải làm điều này int

i32Array = new [] {1,2,3,4,5};

Vì vậy, nói về mặt kỹ thuật, chúng ta có thể khai báo một biến mảng mà không cần khởi tạo, nhưng bạn phải sử dụng các nhà điều hành mới khi bạn gán một mảng này biến

1

Cả hai đều giống hệt nhau

nhìn mã này:

int[] arr1={1,2,3,4}; 
int[] arr2= new int[]{1,2,3,4}; 

sử dụng phản xạ cả hai chuyển đổi như sau:

int[] expr_07 = new int[] 
      { 
       1, 
       2, 
       3, 
       4 
      }; 
      int[] expr_19 = new int[] 
      { 
       1, 
       2, 
       3, 
       4 
      }; 
Các vấn đề liên quan