2009-11-03 26 views
46

Có cách nào để tôi có thể chèn các giá trị vào từ điển VB.NET khi tạo nó không? Tôi có thể, nhưng không muốn, làm dict.Add (int, "string") cho mỗi mục.Làm thế nào để chèn các giá trị vào VB.NET Dictionary trên instantiation?

Về cơ bản, tôi muốn thực hiện "How to insert values into C# Dictionary on instantiation?" bằng VB.NET.

var dictionary = new Dictionary<int, string> 
    { 
     {0, "string"}, 
     {1, "string2"}, 
     {2, "string3"} 
    }; 

Trả lời

54

Nếu sử dụng Visual Studio 2010 hay muộn bạn nên sử dụng từ khóa FROM như thế này:

Dim days = New Dictionary(Of Integer, String) From {{0, "string"}, {1, "string2"}} 

Xem: http://msdn.microsoft.com/en-us/library/dd293617(VS.100).aspx

Nếu bạn cần phải sử dụng một phiên bản trước của Visual Studio và bạn cần phải làm điều này thường xuyên, bạn chỉ có thể kế thừa từ các lớp học từ điển và thực hiện nó cho mình.

Nó có thể giống như thế này:

Public Class InitializableDictionary 
    Inherits Dictionary(Of Int32, String) 

    Public Sub New(ByVal args() As KeyValuePair(Of Int32, String)) 
     MyBase.New() 
     For Each kvp As KeyValuePair(Of Int32, String) In args 
      Me.Add(kvp.Key, kvp.Value) 
     Next 
    End Sub 

End Class 
+0

đó làm việc. Cảm ơn, – onsaito

+0

Câu trả lời này không chính xác ngay bây giờ. –

+1

@BrianWebster cảm ơn! phản hồi được cập nhật để phản ánh cả phương pháp tiếp cận hiện tại và trước đó. – brendan

5

Những gì bạn đang nhìn vào một tính năng của C# gọi là "initializers bộ sưu tập" này. Tính năng này đã tồn tại cho VB, nhưng đã bị cắt trước khi phát hành Visual Studio 2008. Nó không giúp bạn ngay bây giờ, nhưng điều này dự kiến ​​sẽ có sẵn trong Visual Studio 2010. Trong thời gian chờ đợi, bạn sẽ phải làm theo cách cũ theo cách — gọi phương thức .Add() của phiên bản mới của bạn.

25

Đây không phải là phiên bản thể của Visual Basic trước năm 2010.

Trong VB2010 và sau đó, bạn có thể sử dụng từ khóa FROM.

Dim days = New Dictionary(Of Integer, String) From {{0, "Sunday"}, {1, "Monday"}} 

Reference

http://msdn.microsoft.com/en-us/library/dd293617(VS.100).aspx

+0

Như Joel Coehoorn nói trong câu trả lời của mình, có vẻ như từ khóa FROM đã được rút ra khỏi VB2008. Tôi nhớ rằng tôi đã từng sử dụng nó trước đây, nhưng có lẽ tôi chỉ thử dùng Array-inizializers. Tốt. Đây là liên kết tôi nhận được thông tin của tôi từ anyway: http://msdn.microsoft.com/en-us/library/dd293617 (VS.100).aspx – Stefan

+0

Đây là những gì làm việc cho tôi sạch sẽ và với tham khảo +1 –

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