Compartilhar via


Key (Visual Basic)

The Key palavra-chave permite que você especifique o comportamento de propriedades de tipos anônimo. Somente propriedades que você designar sistema autônomo propriedades de chave participam de testes de igualdade entre instâncias de tipo anônimo ou o cálculo dos valores de código hash.No entanto, os valores das propriedades de chave não podem ser alterados.

Você designa uma propriedade de um tipo anônimo como uma propriedade-chave colocando a palavra-chave Key na frente de sua declaração na lista de inicialização.No exemplo a seguir, Airline e FlightNo são propriedades-chave, mas Gate não é.

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

Quando um novo tipo anônimo é criado, ele herda diretamente de Object.O compilador substitui três membros herdados: Equals, GetHashCode, e ToString. O código de substituir é produzido para Equals e GetHashCode baseia-se em chave Propriedades. Se não há propriedades-chave no tipo, GetHashCode e Equals não são desautorizados.

Igualdade

Duas instâncias de tipo anônimo são iguais se são instâncias do mesmo tipo e se os valores de suas propriedades-chave são iguais.Os exemplos a seguir, flight2 é igual a flight1 do exemplo anterior porque elas são instâncias de anônimo mesmo tipo e eles têm correspondência valores para suas chave propriedades. No entanto, flight3 não é igual a flight1 porque ela tem um valor diferente para uma propriedade de chave FlightNo. Instância flight4 não é o mesmo tipo flight1 porque eles designar diferentes propriedades sistema autônomo propriedades de chave.

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

Se duas instâncias de tipo são declaradas com apenas propriedades que não são chave, idênticas em nome, tipo, ordem e valor, as duas instâncias não são iguais.Uma instância sem propriedades-chave é igual somente a ela mesma.

Para obter mais informações sobre as condições em que dois tipo anônimo instâncias são instâncias do mesmo tipo anônimo, consulte Tipos anônimos.

Cálculo Dividido de Código

Como Equals, a função de hash é definida em GetHashCode para um tipo anônimo é com base nas propriedades principais do tipo. Os exemplos a seguir mostram a interação entre propriedades de chave e hash de valores de código.

Instâncias de um tipo anônimo que possuem os mesmos valores para todas as propriedades de chaves tiverem o mesmo valor de código hash, mesmo se não-chave propriedades ainda não tiver valores correspondentes.A demonstrativo seguinte retorna True.

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

Instâncias de um tipo anônimo que possuem valores diferentes para um ou mais propriedades-chave têm valores de código hash diferente.A demonstrativo seguinte retorna False.

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

Instâncias de tipos anônimo designar diferentes propriedades sistema autônomo propriedades de chave não são instâncias do mesmo tipo.Eles têm valores de código hash diferente, mesmo quando os nomes e valores de todas as propriedades são iguais.A demonstrativo seguinte retorna False.

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

Valores somente leitura

No entanto, os valores das propriedades de chave não podem ser alterados.Por exemplo, em flight1 nos exemplos anteriores, o Airline e FlightNo campos são somente leitura, mas Gate pode ser alterado.

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

Consulte também

Tarefas

Como: Inferir tipos na declaração de tipo anônimo e nomes de propriedade

Como: Declare uma instância de um tipo anônimo

Conceitos

Definição tipo anônimo

Tipos anônimos

Date

History

Motivo

Julho de 2008

Exemplos de adicionado para a seção "Cálculo do código hash".

Aprimoramento de informações.