ho scritto il seguente metodo per restituire un elenco di classi Unserializable (classi LINQ) da un elenco di classi Serializable (pocos):C#: parola chiave 'default' con i generici
List<UnSerializableEntity> ToListOfUnserializables(List<SerializableEntity> entityList)
{
var tempList = new List<UnSerializableEntity>();
entityList.ForEach(e =>
{
if (e != null)
{
tempList.Add(ConvertFromSerializableToUnserializable(e));
}
});
return tempList;
}
Ora, ReSharper ha ' lamentati' su questa linea: if (e != null)
, e ha suggerito di cambiarlo a questo:
if (!Equals(e, default(SerializableEntity)))
la mia domanda è quello di ciò che ha questo cambiamento effettivamente migliorato o impedito accada? e so che la parola chiave predefinita in questo contesto deve fare qualcosa con i generici, ma non sono sicuro di cosa rappresenti esattamente.
PS. UnSerializableEntity
e SerializableEntity
sono generici di classe.
Ma la sua istruzione if ha verificato che il valore era _not_ null, quindi ciò significherebbe che sarebbe eseguire sempre? – sisve
Il blocco "if" non verrà mai eseguito: i tipi di valore genereranno un'eccezione. –
@Simon l'istruzione e! = Null e! Equals (e, default (SerializableEntity)) sono entrambi veri quando e non è null/default –