我有这样的功能:
private T DeserializeStream<T>(Stream data) where T : IExtensible
{
try
{
var returnObject = Serializer.Deserialize<T>(data);
return returnObject;
}
catch (Exception ex)
{
this.LoggerService.Log(this.AccountId, ex);
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
一切都很好,除了它抱怨return null;部分
无法将表达式类型'null'转换为'T'类型
如何从这样的函数返回null?
您可以添加T作为类的泛型约束(因为结构是值类型而不能是null).
private T DeserializeStream<T>(Stream data) where T : class, IExtensible
Run Code Online (Sandbox Code Playgroud)
作为@mindandmedia 评论,另一种是返回default的T -这将使其价值工种(这样的Nullable<T>,int32等...).
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |