如何为布尔值实现GetHashCode?

时间:2016-04-02 14:40:41

标签: c# boolean gethashcode

我想知道它们究竟是如何从C#/ .NET中的布尔类型生成哈希码的?

1 个答案:

答案 0 :(得分:6)

您可以看到.NET here的实际源代码,bool的GetHashCode()的实际内容是

  private bool m_value;

  internal const int True = 1; 
  internal const int False = 0; 

  public override int GetHashCode() {
      return (m_value)?True:False;
  }

(是的,System.Boolean包含bool作为成员变量是奇怪的,当编译类时,CLR会处理“原始”类型Boolean,{{1 }},ByteSByteInt16UInt16Int32UInt32Int64UInt64IntPtrUIntPtrCharDouble特殊,以便他们可以做类似的事情)