gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 22:25:12 25 4
gpt4 key购买 nike

我想要工作的代码:

<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

所以基本上我想要它做的是为一个可为空的对象提供一个默认值,并且取决于它是否为空,它会给出自己的值或默认值。

因此,对于 Date 对象,它会执行此操作,这可行,但我无法使用通用 T:
<Extension()>
Public Function NValue(ByVal value As Date?, ByVal DefaultValue As Date) As Date
Return If(value.HasValue, value.Value, DefaultValue)
End Function

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

变量“result”现在具有当前日期时间。

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

非常感谢您的帮助!

问候

最佳答案

尝试:

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

我不确定您是否需要两个 as Structure 子句。

更新

根据下面的评论,只需要第一个子句:
Public Function NValue(Of T as Structure)(ByVal value As Nullable(Of T), ByVal DefaultValue As T) As T

关于Nullable(Of T) 对象上的 VB.NET 扩展,给出类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4052243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com