ich die folgende Methode geschrieben haben eine Liste von unserialisierbar Klassen (LINQ Klassen) aus einer Liste von Serializable Klassen (POCOs) zurückzukehren:C#: 'default' Schlüsselwort mit Generics
List<UnSerializableEntity> ToListOfUnserializables(List<SerializableEntity> entityList)
{
var tempList = new List<UnSerializableEntity>();
entityList.ForEach(e =>
{
if (e != null)
{
tempList.Add(ConvertFromSerializableToUnserializable(e));
}
});
return tempList;
}
Jetzt, ReSharper hat ' beschwerten‘darüber: if (e != null)
, und schlug vor, es so zu ändern:
if (!Equals(e, default(SerializableEntity)))
Meine Frage ist zu was diese Veränderung geschieht tatsächlich verbessert oder verhindert hat? und ich weiß, das Standard-Schlüsselwort in diesem Zusammenhang muss etwas mit Generika tun, aber ich bin mir nicht sicher, was es genau darstellt.
PS. UnSerializableEntity
und SerializableEntity
sind Klasse Generika.
Aber seine if-Anweisung überprüft, dass der Wert _not_ null war, würde also bedeuten, dass es wäre immer ausführen? – sisve
Der "if" -Block wird niemals ausgeführt: Werttypen werden eine Ausnahme ausgelöst. –
@Simon die Anweisung e! = Null und! Equals (e, default (SerializableEntity)) sind beide wahr, wenn e nicht null ist/default –