Eu tenho um método genérico com esse código (fictício) (sim, eu sei que IList tem predicados, mas meu código não está usando IList, mas alguma outra coleção, de qualquer maneira isso é irrelevante para a pergunta ...)
static T FindThing<T>(IList collection, int id) where T : IThing, new()
{
foreach T thing in collecion
{
if (thing.Id == id)
return thing;
}
return null; // ERROR: Cannot convert null to type parameter 'T' because it could be a value type. Consider using 'default(T)' instead.
}
Isso me dá um erro de compilação
"Não é possível converter nulo no parâmetro de tipo 'T' porque pode ser um tipo de valor. Considere usar 'padrão (T)'."
Posso evitar esse erro?
null
independentemente de seT
éObject
ouint
ouchar
.