Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何为可为null和不可为null编写扩展方法_Asp.net_Vb.net_Extension Methods_Nullable - Fatal编程技术网

Asp.net 如何为可为null和不可为null编写扩展方法

Asp.net 如何为可为null和不可为null编写扩展方法,asp.net,vb.net,extension-methods,nullable,Asp.net,Vb.net,Extension Methods,Nullable,我已经编写了以下扩展方法 <Extension()> Public Function ToUtcIso8601(ByVal dt As Date) As String Return String.Format("{0:s}Z", dt) End Function 这是正确的方法吗?我选择第二种方法。不幸的是,在对日期结构使用扩展方法时,日期?扩展方法不适用,否则您可以只为日期声明一个扩展?类型。为了支持这两种类型,您必须采用与现有方法类似的方

我已经编写了以下扩展方法

    <Extension()>
    Public Function ToUtcIso8601(ByVal dt As Date) As String
        Return String.Format("{0:s}Z", dt)
    End Function

这是正确的方法吗?

我选择第二种方法。不幸的是,在对日期结构使用扩展方法时,日期?扩展方法不适用,否则您可以只为日期声明一个扩展?类型。为了支持这两种类型,您必须采用与现有方法类似的方法。

不幸的是,我的第二个选项一直使WebDev服务崩溃,您需要提供堆栈跟踪或其他内容。该行不应该读取:
返回If(不是dt为Nothing,是ToutISO8601(dt.value),Nothing)
调试器看起来像是在创建一个无限loop@rockinthesixstring:这对我来说很好,但是我总是发现在这种情况下可以使用可空类型清理器的.HasValue属性;我会使用类似这样的东西:Return If(dt.HasValue,ToUtcIso8601(dt.Value),Nothing)可能是@MichaelFreidgeim的副本是的,也可能不是。这一个是VisualBasic,另一个是c#
    <Extension()>
    Public Function ToUtcIso8601(ByVal dt As Date?) As String
        Return If(dt, Nothing).ToUtcIso8601()
    End Function
    <Extension()>
    Public Function ToUtcIso8601(ByVal dt As Date?) As String
        Return If(Not dt Is Nothing, ToUtcIso8601(dt), Nothing)
    End Function
    Public Function ToUtcIso8601(ByVal dt As Date?) As String
        Return If(Not dt Is Nothing, ToUtcIso8601(dt.Value), Nothing)
    End Function