Dot-Net
有沒有辦法使用 ReSharper 自動生成 GetHashCode 和 Equals?
在 eclipse 中,當我用 Java 編寫程式碼時,有一個功能可以自動生成一個基本的、高效的、無錯誤的實現,
hashCode()並且equals()不消耗腦力。Visual Studio 或 ReSharper 中是否內置了類似的功能?
是的,Resharper 可以做到這一點。將游標放在您的類型中,打開“生成程式碼”菜單(
Alt+Ins取決於設置或Resharper -> 編輯 -> 生成程式碼),然後選擇“平等成員”:
這將打開一個視窗,您可以在其中選擇用於相等的成員,以及有關生成程式碼的一些選項(例如,您的類型是否應該實現
IEquatable<T>):
如果您從具有兩個屬性的簡單類型開始:
class Person { public string FirstName { get; private set; } public string LastName { get; private set; } }然後生成的程式碼可能類似於:
class Person : IEquatable<Person> { public string FirstName { get; private set; } public string LastName { get; private set; } public bool Equals(Person other) { if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; return string.Equals(FirstName, other.FirstName) && string.Equals(LastName, other.LastName); } public override bool Equals(object obj) { if (ReferenceEquals(null, obj)) return false; if (ReferenceEquals(this, obj)) return true; if (obj.GetType() != this.GetType()) return false; return Equals((Person)obj); } public override int GetHashCode() { unchecked { return ((FirstName != null ? FirstName.GetHashCode() : 0) * 397) ^ (LastName != null ? LastName.GetHashCode() : 0); } } }

