我有一个使用这个(虚拟)代码的通用方法(是的,我知道 IList 有谓词,但我的代码没有使用 IList 而是使用其他一些集合,无论如何这与问题无关......)
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. }
这给了我一个构建错误
“无法将 null 转换为类型参数 ‘T’,因为它可能是值类型。请考虑改用 ‘default(T)’。”
我可以避免这个错误吗?
两种选择:
default(T)
null
0
int
'\0'
char
where T : class