代码之家  ›  专栏  ›  技术社区  ›  Chase Florell

如何为Nullable和Not Nullable编写扩展方法

  •  1
  • Chase Florell  · 技术社区  · 15 年前

        <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 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
    

    这样做对吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   cdhowie    15 年前

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