我正在尝试用C#做一些我在Ruby中一直做的事情,我想知道最接近的是什么。
如果Enum不包含我的整数值的定义,我希望它默认为某个值。我能在一行中做到这一点吗?
Ruby-ish赋值(两个例子):
namedStr = Enum.GetName(typeof(myEnum), enumedInt) || "DEFAULT"
或
namedStr = Enum.GetName(typeof(myEnum), enumedInt)
namedStr ||= "DEFAULT"
答案 0 :(得分:10)
namedStr = Enum.GetName(typeof(myEnum), enumedInt) ?? "DEFAULT"
答案 1 :(得分:2)
您可以使用:
namedStr = Enum.IsDefined(tyepof(MyEnum), enumedInt)
? ((MyEnum)enumedInt).ToString()
: "DEFAULT";
...或:
namedStr = Enum.GetName(typeof(MyEnum), enumedInt) ?? "DEFAULT";
我更喜欢第二种选择。
??
运算符称为空合并运算符。
答案 2 :(得分:0)
我认为你正在寻找类似于SQL的COALESCE或ISNULL的东西。这是VB中的代码片段:
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)