2009-03-12 42 views
5

Tôi đã viết điều này - rất đơn giản - chức năng, và sau đó tự hỏi VB có một số chức năng được xây dựng sẵn để làm điều này, nhưng không thể tìm thấy bất cứ điều gì cụ thể.VB.Net Khởi tạo một mảng trên bay

Private Shared Function MakeArray(Of T)(ByVal ParamArray args() As T) As T() 
    Return args 
End Function 

Không quá nhiều để được sử dụng như

Dim someNames() as string = MakeArray("Hans", "Luke", "Lia") 

Bởi vì điều này có thể được thực hiện với

Dim someNames() as string = {"Hans", "Luke", "Lia"} 

Nhưng giống như

public sub PrintNames(names() as string) 
    // print each name 
End Sub 

PrintNames(MakeArray("Hans", "Luke", "Lia")) 

Bất kỳ ý tưởng?

Trả lời

15

Bất kỳ lý do không nên làm:

Dim someNames() as string = New String()("Han", "Luke", "Leia") 

Sự khác biệt duy nhất là gõ suy luận, như xa như tôi có thể nói.

Tôi vừa mới kiểm tra, và VB 9 có implicitly typed arrays quá:

Dim someNames() as string = { "Han", "Luke", "Leia" } 

(Điều này sẽ không làm việc trong VB 8 như xa như tôi biết, nhưng phiên bản rõ ràng sẽ Phiên bản ngầm là cần thiết. với nhiều loại vô danh, mà cũng là người mới đến VB 9.)

+0

Tuyệt vời, ví dụ đầu tiên là chính xác những gì tôi đang tìm kiếm. Cảm ơn. –

+2

Tôi nghĩ tất cả chúng ta đều có thể đồng ý rằng điều quan trọng nhất ở đây chính xác là "Han" :) – Andy

+0

@Andy sai, thứ tự xuất hiện của nó .... nó phải là "Luke", "Han", và sau đó "Leia" .... làm cho tất cả chúng ta đều biết rằng Han và Leia thuộc về nhau hơn và không tách rời bởi anh trai mình;) – GoldBishop

6
Dim somenames() As String = {"hello", "world"} 
1
PrintNames(New String(){"Hans", "Luke", "Lia"}) 
1

Microsoft khuyến cáo các dạng sau

Dim mixedTypes As Object() = New Object() {item1, item2, itemn} 

mỗi http://msdn.microsoft.com/en-US/library/8k8021te(v=VS.80).aspx

Lưu ý, bạn không cần phải xác định kích thước của mảng mới, vì đó là suy ra từ số khởi tạo của args. Nếu bạn muốn chỉ định độ dài, bạn chỉ định không phải là "độ dài" nhưng số chỉ mục của không gian cuối cùng trong mảng. I E. Đối tượng mới (2) {0, 1, 2} 'chú thích 3 args.

+0

Đây là định dạng khai báo rõ ràng, được gợi ý bởi MS. Định dạng ngụ ý là không có lớp 'Object' được định nghĩa và giả định. NHƯNG, nếu bạn có tập 'Option Explicit', thì bạn phải có' Object' được định nghĩa trong câu lệnh. – GoldBishop

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