Tôi đã viết các phương pháp sau để trả về một danh sách các lớp Unserializable (lớp LINQ) từ một danh sách các lớp Serializable (POCOs):C#: 'mặc định' từ khóa với Generics
List<UnSerializableEntity> ToListOfUnserializables(List<SerializableEntity> entityList)
{
var tempList = new List<UnSerializableEntity>();
entityList.ForEach(e =>
{
if (e != null)
{
tempList.Add(ConvertFromSerializableToUnserializable(e));
}
});
return tempList;
}
Bây giờ, Resharper có ' phàn nàn' về dòng này: if (e != null)
, và gợi ý để thay đổi nó như thế này:
if (!Equals(e, default(SerializableEntity)))
câu hỏi của tôi là để những gì đã thay đổi này thực sự được cải thiện hoặc ngăn ngừa xảy ra? và tôi biết từ khóa mặc định trong ngữ cảnh này phải làm một cái gì đó với generics, nhưng tôi không chắc chắn những gì nó đại diện chính xác.
PS. UnSerializableEntity
và SerializableEntity
là lớp học chung.
Nhưng câu lệnh if của anh ấy đã kiểm tra giá trị đó là _không null, điều đó có nghĩa là luôn luôn thực hiện? – sisve
Khối "if" sẽ không bao giờ thực thi: các kiểu giá trị sẽ ném một ngoại lệ. –
@Simon tuyên bố e! = Null và! Equals (e, mặc định (SerializableEntity)) đều đúng khi e không phải là null/default –