我想工作的代码:VB.NET扩展(Of T)已对象,给出错误类型
<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对象,它会做到这一点,它的工作原理,但我不能让它与一般的科技工作:
<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)
变量“结果”现在有当前日期时间。
当我和T尝试它,我得到这个是错误(这Visual Studio中提出在T在可空(Of T)已: 型“T”必须是值类型或约束为“结构”类型参数为了与“可空”或为空的修饰符“?”来使用。
非常感谢您的帮助!
问候
只需要第一个'As Structure'子句,第二个将导致语法错误。除此之外,这是正确的。 – 2010-10-29 13:31:49
我认为可能是这种情况。我自己还没有必要使用它,但我知道这是可能的。 – 2010-10-29 13:33:40
非常感谢!这个伎俩。 :) – FrieK 2010-10-29 14:09:22