Aracılığıyla paylaş


Anahtar (Visual Basic)

Key Anahtar sözcüğünü anonim türleri özelliklerinin davranışı belirtmenizi sağlar.Anahtar özelliklerine anonim tür örnekleri veya karma kodu değerleri hesaplama arasındaki eşitlik testleri katılma gibi yalnızca özellikleri atayın.Anahtar özelliklerinin değerlerini değiştirilemez.

Anahtar sözcüğünü koyarak bir anahtar özellik olarak belirleyeceğiniz bir anonim türünde bir özellik Key başlatma listesi bildiriminde önünde.Aşağıdaki örnekte, Airline ve FlightNo anahtar özellikleri, ancak Gate değil.

Dim flight1 = New With {Key .Airline = "Blue Yonder Airlines",
                        Key .FlightNo = 3554, .Gate = "C33"}

Yeni bir anonim tür oluşturulduğunda doğrudan devralan Object.Derleyici üç devralınan üyeleri geçersiz kılar: Equals, GetHashCode, ve ToString.İçin üretilen geçersiz kılma kod Equals ve GetHashCode anahtar özelliklerini temel alan.Türü alanında, anahtar özelliği yok, GetHashCode ve Equals olmayan geçersiz kılınır.

Eşitlik

Aynı türden örnekler ise ve onların önemli özelliklerin değerlerinin eşit olması durumunda iki anonim tür örnekleri eşit.Aşağıdaki örneklerde, flight2 eşittir flight1 örneklerini aynı anonim olduğundan önceki örnekten türü ve eşleşen anahtar özellikleri için değerleri vardır.Ancak, flight3 eşit değildir flight1 bir anahtar özelliği için farklı bir değer olduğundan FlightNo.Örnek flight4 aynı türde değil flight1 bunlar anahtar özellik olarak farklı özellikler atamak için.

Dim flight2 = New With {Key .Airline = "Blue Yonder Airlines",
                        Key .FlightNo = 3554, .Gate = "D14"}
' The following statement displays True. The values of the non-key  
' property, Gate, do not have to be equal.
Console.WriteLine(flight1.Equals(flight2))

Dim flight3 = New With {Key .Airline = "Blue Yonder Airlines",
                        Key .FlightNo = 431, .Gate = "C33"}
' The following statement displays False, because flight3 has a 
' different value for key property FlightNo.
Console.WriteLine(flight1.Equals(flight3))

Dim flight4 = New With {Key .Airline = "Blue Yonder Airlines",
                        .FlightNo = 3554, .Gate = "C33"}
' The following statement displays False. Instance flight4 is not the  
' same type as flight1 because they have different key properties.  
' FlightNo is a key property of flight1 but not of flight4.
Console.WriteLine(flight1.Equals(flight4))

Yalnızca anahtar olmayan özelliklere sahip, adı, türü, sipariş ve değeri, birbirinin aynı iki tane bildirilir, iki örneğini eşit değildir.Anahtar özellikler olmadan yalnızca kendisine eşit örneğidir.

Altında iki anonim tür durumlardır örnekleri aynı anonim tür durumları hakkında daha fazla bilgi için bkz: Anonim Türleri (Visual Basic).

Karma kodu hesaplama

Gibi Equals, içinde tanımlanan karma işlev GetHashCode bir anonim tür türü anahtar özellikleri temel alınır.Aşağıdaki örnekler, karma anahtar özellikleri arasındaki etkileşim kod değerleri gösterir.

Değerleri eşleşen anahtar olmayan özelliklere sahip olmayan bile tüm anahtar özellikleri için aynı değerlere sahip bir anonim tür örneklerini aynı karma kodu değeri vardır.Aşağıdaki deyimi döndürür True.

Console.WriteLine(flight1.GetHashCode = flight2.GetHashCode)

Bir veya daha fazla anahtar özellikleri için farklı değerlere sahip bir anonim tür örneği farklı bir karma kodu değerleri vardır.Aşağıdaki deyimi döndürür False.

Console.WriteLine(flight1.GetHashCode = flight3.GetHashCode)

Anahtar özellikler olarak farklı özellikler atamak anonim türlerin örnekleri örnekleri aynı türde değil.Bunlar, adları ve tüm özelliklerin değerlerinin aynı olsa bile farklı bir karma kodu değerleri olacaktır.Aşağıdaki deyimi döndürür False.

Console.WriteLine(flight1.GetHashCode = flight4.GetHashCode)

Salt okunur değerler

Anahtar özelliklerinin değerlerini değiştirilemez.Örneğin, flight1 önceki örneklerde, Airline ve FlightNo alanlar salt okunur ama Gate değiştirilebilir.

' The following statement will not compile, because FlightNo is a key 
' property and cannot be changed. 
' flight1.FlightNo = 1234 
' 
' Gate is not a key property. Its value can be changed.
flight1.Gate = "C5"

Ayrıca bkz.

Görevler

Nasıl yapılır: Anonim Türde Bildirimlerden Özellik Adları ve Türlerini Çıkarma (Visual Basic)

Kavramlar

Anonim Tür Tanımı (Visual Basic)

Anonim Türleri (Visual Basic)