Resharper gợi ý rằng những điều sau đây được thay đổi từ:C# Loại So sánh: Type.Equals vs toán tử ==
Type foo = typeof(Foo);
Type bar = typeof(Bar);
if(foo.Equals(bar)) { ... }
Để:
if(foo == bar) { ... }
toán tử ==
// Summary:
// Indicates whether two System.Type objects are equal.
//
// Parameters:
// left:
// The first object to compare.
//
// right:
// The second object to compare.
//
// Returns:
// true if left is equal to right; otherwise, false.
public static bool operator ==(Type left, Type right);
Bằng (Loại o)
// Summary:
// Determines if the underlying system type of the current System.Type is the
// same as the underlying system type of the specified System.Type.
//
// Parameters:
// o:
// The System.Type whose underlying system type is to be compared with the underlying
// system type of the current System.Type.
//
// Returns:
// true if the underlying system type of o is the same as the underlying system
// type of the current System.Type; otherwise, false.
public virtual bool Equals(Type o);
Câu hỏi
Tại sao operator ==
được khuyến cáo trên Equals(Type o)
khi so sánh các loại?
R # thường sẽ đề nghị một cái gì đó và cung cấp một lý do chính đáng; trong trường hợp này nếu chúng tương đương về mặt chức năng, tôi nghi ngờ rằng đề xuất là để dễ đọc, đó là chủ quan. Tôi tự hỏi nếu có một lý do khác nó đang được đề xuất? –
@MetroSmurf - R # thường gợi ý mọi thứ vì lợi ích của khả năng đọc (ví dụ như làm tổ trong các câu lệnh if). –
Đó là lý do khá có thể là lý do, nhưng khi hai không tương đương với chức năng trong trường hợp này, thì chắc chắn đây là một sai lầm trong Resharper? –