Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Essa geração de código se aplica a:
- C#
Que: Permite gerar métodos Equals e GetHashCode .
Quando: Gere essas substituições quando você tiver um tipo que deve ser comparado por um ou mais campos, em vez de pelo local do objeto na memória.
Por que:
Se você estiver implementando um tipo de valor, considere substituir o método Equals . Você pode obter um desempenho maior em relação à implementação padrão do método Equals em ValueType quando fizer isso.
Se você estiver implementando um tipo de referência, considere substituir o método Equals se seu tipo se parecer com um tipo base, como Point, String, BigNumber e assim por diante.
Substitua o método GetHashCode para permitir que um tipo funcione corretamente em uma tabela de hash. Leia mais diretrizes sobre operadores de igualdade.
Como fazer
Coloque o cursor em algum lugar na linha da declaração de tipo.
public class ImaginaryNumber { public double RealNumber { get; set; } public double ImaginaryUnit { get; set; } }Seu código deve ser semelhante à seguinte captura de tela:
Dica
Não clique duas vezes em selecionar o nome do tipo ou a opção de menu não estará disponível. Basta colocar o cursor em algum lugar na linha.
Em seguida, escolha uma das seguintes ações:
Pressione Ctrl+. para acionar o menu Ações rápidas e refatoração .
Clique com o botão direito do mouse e selecione o menu Ações rápidas e refatoração .
Clique na
que aparece na margem esquerda.
No menu suspenso, selecione Gerar Igual (objeto) ou Gerar Igual e GetHashCode.
Na caixa de diálogo Escolher membros , selecione os membros para os quais você deseja gerar os métodos para:
Dica
Você também pode optar por gerar operadores dessa caixa de diálogo usando a caixa de seleção próxima à parte inferior da caixa de diálogo.
Os
Equalsmétodos e os métodosGetHashCodesão gerados com implementações padrão, conforme mostrado no código a seguir:public class ImaginaryNumber : IEquatable<ImaginaryNumber> { public double RealNumber { get; set; } public double ImaginaryUnit { get; set; } public override bool Equals(object obj) { return Equals(obj as ImaginaryNumber); } public bool Equals(ImaginaryNumber other) { return other != null && RealNumber == other.RealNumber && ImaginaryUnit == other.ImaginaryUnit; } public override int GetHashCode() { return HashCode.Combine(RealNumber, ImaginaryUnit); } }Seu código deve ser semelhante à seguinte captura de tela: