public override int GetHashCode()
{
unchecked
{
return (str1 ?? String.Empty).GetHashCode() +
(str2 ?? String.Empty).GetHashCode();
}
}
Die Verwendung des Operators '+' ist möglicherweise besser als die Verwendung von '^', da Sie zwar explizit möchten, dass ('AA', 'BB') und ('BB', 'AA') explizit identisch sind, dies aber möglicherweise nicht möchten ( 'AA', 'AA') und ('BB', 'BB') müssen gleich sein (oder alle gleichen Paare).
Die Regel 'so schnell wie möglich' wird in dieser Lösung nicht vollständig eingehalten, da bei Nullen ein 'GetHashCode ()' für die leere Zeichenfolge ausgeführt wird, anstatt sofort eine bekannte Konstante zurückzugeben, aber auch ohne explizite Messung bin ich bereit eine Vermutung zu riskieren, dass der Unterschied nicht groß genug wäre, um sich Sorgen zu machen, wenn Sie nicht viele Nullen erwarten.