He escrito el siguiente método para devolver una lista de clases Unserializable (clases de LINQ) de una lista de clases serializables (POCOs):C#: palabra clave 'por defecto' con los genéricos
List<UnSerializableEntity> ToListOfUnserializables(List<SerializableEntity> entityList)
{
var tempList = new List<UnSerializableEntity>();
entityList.ForEach(e =>
{
if (e != null)
{
tempList.Add(ConvertFromSerializableToUnserializable(e));
}
});
return tempList;
}
Ahora, ReSharper tiene ' quejado' sobre esta línea: if (e != null)
, y sugirió que cambiarlo a esto:
if (!Equals(e, default(SerializableEntity)))
Mi pregunta es lo que ha hecho este cambio mejorado o impedido suceda? y sé que la palabra clave predeterminada en este contexto tiene que hacer algo con los genéricos, pero no estoy seguro de lo que representa exactamente.
PS. UnSerializableEntity
y SerializableEntity
son genéricos de clase.
Pero su instrucción if verificó que el valor era _not_ nulo, entonces eso significaría que lo haría siempre ejecutar? – sisve
El bloque "if" nunca se ejecutará: los tipos de valor arrojarán una excepción. –
@Simon la declaración e! = Null y! Iguales (e, predeterminado (SerializableEntity)) son verdaderos cuando e no es nulo/predeterminado –