Visual Studio提供的equals Code Snippets展開後是這樣的:
// override object.Equals
public override bool Equals(object obj)
{
//
// See the full list of guidelines at
// http://go.microsoft.com/fwlink/?LinkID=85237
// and also the guidance for operator== at
// http://go.microsoft.com/fwlink/?LinkId=85238
//
if (obj == null || GetType() != obj.GetType())
{
return false;
}
// TODO: write your implementation of Equals() here
throw new NotImplementedException();
return base.Equals(obj);
}
// override object.GetHashCode
public override int GetHashCode()
{
// TODO: write your implementation of GetHashCode() here
throw new NotImplementedException();
return base.GetHashCode();
}
我認為有如下缺點:
- 通過GetType() != obj.GetType()來判斷類型,顯然沒有考慮衍生類別型的情況。
- 沒有強型別的Equals方法執行。
- 包含多餘注釋。
因此寫了一個增強Code Snippets,取名equalsex。克服了上述缺點。
當你在一個類型中使用equalsex時:
會展開成這樣:
class a
{
public override bool Equals(object obj)
{
var tmp = obj as a;
if (tmp == null)
{
return false;
}
return Equals(tmp);
}
public bool Equals(a obj)
{
}
public override int GetHashCode()
{
}
}
他會自動包含正確的,強型別的Equals方法執行!同時也有GetHashCode方法。
檔案下載
下載頁面
注意:連結是微軟SkyDrive頁面,下載時請用瀏覽器直接下載,用某些下載工具可能無法下載
檔案類型:.snippet檔案