【问题标题】:Is there anything like Or-Equals from Ruby in .NET/C#?.NET/C# 中的 Ruby 中是否有类似 Or-Equals 的东西?
【发布时间】:2009-09-25 23:50:22
【问题描述】:

我正在尝试在 C# 中做一些我一直在 Ruby 中做的事情,我想知道最接近的事情会是什么。

如果枚举不包含我的整数值的定义,我希望它默认为某个值。我可以一行完成吗?

Ruby-ish 赋值(两个示例):

namedStr = Enum.GetName(typeof(myEnum), enumedInt) || "DEFAULT"

namedStr = Enum.GetName(typeof(myEnum), enumedInt)
namedStr ||= "DEFAULT"

【问题讨论】:

    标签: c# .net ruby


    【解决方案1】:
    namedStr = Enum.GetName(typeof(myEnum), enumedInt) ?? "DEFAULT"
    

    【讨论】:

      【解决方案2】:

      你可以使用:

      namedStr = Enum.IsDefined(tyepof(MyEnum), enumedInt)
          ? ((MyEnum)enumedInt).ToString()
          : "DEFAULT";
      

      ...或:

      namedStr = Enum.GetName(typeof(MyEnum), enumedInt) ?? "DEFAULT";
      

      我更喜欢第二种选择。

      ?? 运算符称为空合并运算符。

      【讨论】:

        【解决方案3】:

        我认为您正在寻找类似于 SQL 的 COALESCE 或 ISNULL 的东西。这是VB中的sn-p:

        Public Shared Function Coalesce(Of T)(ByVal value As T, ByVal NullValue As T) As T
            If value Is Nothing Then : Return NullValue
            Else : Return value
            End If
        End Function
        

        像这样使用:

        myString = Coalesce(Of String)(x, valIfXIsNull)
        

        【讨论】:

          猜你喜欢
          • 2011-05-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-13
          • 2018-04-13
          • 2011-01-21
          • 1970-01-01
          • 2015-11-25
          相关资源
          最近更新 更多