为什么不能在c#中将null转换为类型参数T?
我正在将一堆代码从VB转换为C#,而我正在遇到一个方法的问题.这个VB方法效果很好:
Public Function FindItem(ByVal p_propertyName As String,ByVal p_value As Object) As T Dim index As Int32 index = FindIndex(p_propertyName,p_value) If index >= 0 Then Return Me(index) End If Return Nothing End Function 它允许为T返回Nothing(null) C#等价物不起作用: public T FindItem(string p_propertyName,object p_value) { Int32 index = FindIndex(p_propertyName,p_value); if (index >= 0) { return this[index]; } return null; } 它不会使用此错误进行编译:
我需要能够具有相同的功能,否则会破坏很多代码.我错过了什么? 解决方法
由于T可以是引用类型或值类型,因此如果T是值类型,则返回null将不满足.你应该回来:
return default(T); 从链接default keyword:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |