加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Nullable(Of T)对象上的VB.NET扩展,给出了类型错误

发布时间:2020-12-17 07:25:44 所属栏目:百科 来源:网络整理
导读:我想要的代码: Extension()Public Function NValue(Of T)(ByVal value As Nullable(Of T),ByVal DefaultValue As T) As T Return If(value.HasValue,value.Value,DefaultValue)End Function 基本上我想要它做的是将默认值赋给可空对象,并且根据它是否为null
我想要的代码:

<Extension()>
Public Function NValue(Of T)(ByVal value As Nullable(Of T),ByVal DefaultValue As T) As T
    Return If(value.HasValue,value.Value,DefaultValue)
End Function

基本上我想要它做的是将默认值赋给可空对象,并且根据它是否为null,它将给出自己的值或默认值.

所以使用Date对象,它会这样做,这有效,但我无法使用通用T:

<Extension()>
Public Function NValue(ByVal value As Date?,ByVal DefaultValue As Date) As Date
  Return If(value.HasValue,DefaultValue)
End Function

Dim test As Date? = Nothing
Dim result = test.NValue(DateTime.Now)

变量’result’现在具有当前的DateTime.

当我用T尝试它时,我得到这个错误(Visual Studio在Nullable(Of T)中放置T:
类型’T’必须是值类型或约束为’结构’的类型参数,以便与’Nullable’或可为空的修饰符’?’一起使用.

非常感谢您的帮助!

问候

解决方法

尝试:

Public Function NValue(Of T as Structure)(ByVal value As Nullable(Of T as Structure),ByVal DefaultValue As T) As T

我不确定你是否需要两者作为结构条款.

更新

根据以下评论,只需要第一个条款:

Public Function NValue(Of T as Structure)(ByVal value As Nullable(Of T),ByVal DefaultValue As T) As T

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读