Sdílet prostřednictvím


Key (Visual Basic)

Key Klíčového slova umožňuje zadat vlastnosti anonymní typy chování.Pouze vlastnosti určit jako klíčové vlastnosti účastnit zkoušek rovnosti mezi anonymní typ instance nebo výpočet hodnoty hash kódHodnoty vlastností klíče nelze změnit.

Určit vlastnost anonymní typ jako vlastnost klíče umístěním na klíčové slovo Key z jeho prohlášení Inicializace seznamu.V následujícím příkladu Airline a FlightNo jsou vlastnosti klíče, ale Gate není.

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

Při vytvoření nové anonymní typ zdědí přímo z Object.Kompilátor přepíše tři zděděné členy: Equals, GetHashCode, a ToString.Přepsání kódu, který je vyroben pro Equals a GetHashCode je založena na vlastnosti klíče.Pokud neexistují žádné klíčové vlastnosti typu GetHashCode a Equals není přepsán.

Rovnost

Dvě instance anonymní typ jsou stejné, pokud jsou instance stejného typu a shodné hodnoty jejich vlastnosti klíče.V následujících příkladech flight2 se rovná flight1 z předchozího příkladu protože jsou instance stejného anonymní typ a mít odpovídající hodnoty pro jejich vlastnosti klíče.Však flight3 není rovno flight1 protože má jinou hodnotu pro vlastnost klíče, FlightNo.Instance flight4 není stejného typu jako flight1 protože se určí jako klíčové vlastnosti různých vlastností.

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))

Je-li dvě instance, které jsou deklarovány pomocí pouze klíčový vlastnosti, stejné jméno, typ, objednávky a hodnoty, dvě instance nejsou stejné.Instance bez vlastností klíče je rovna pouze sám.

Další informace o podmínkách, za kterých jsou dvě instance anonymní typ instance stejného typu anonymní Anonymní typy (Visual Basic).

Kód výpočtu algoritmu hash

Jako Equals, funkci hash, který je definován v GetHashCode anonymní typ je založena na typu vlastnosti klíče.Následující příklady ukazují interakce mezi klíčové vlastnosti a hash kód hodnoty.

Anonymní typ instance, které mají stejné hodnoty pro všechny klíčové vlastnosti mají stejná hodnota hash kód i v případě, že klíčový vlastnosti nemají odpovídající hodnoty.Následující příkaz vrátí True.

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

Anonymní typ instance, které mají různé hodnoty pro jednu nebo více vlastností klíče mají odlišné kód hodnoty hash.Následující příkaz vrátí False.

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

Anonymní typy, které jako klíčové vlastnosti určit různé vlastnosti instance nejsou instancí stejného typu.I když se stejné názvy a hodnoty všech vlastností mají odlišné kód hodnoty hash.Následující příkaz vrátí False.

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

Čtení hodnot

Hodnoty vlastností klíče nelze změnit.Například v flight1 v předchozích příkladech Airline a FlightNo pole jsou jen pro čtení, ale Gate lze změnit.

' 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"

Viz také

Úkoly

Postupy: Odvození názvů a typů vlastností v deklaracích anonymního typu (Visual Basic)

Koncepty

Definice autonomního typu (Visual Basic)

Anonymní typy (Visual Basic)