2009-09-25 3 views
1

J'essaie de faire quelque chose en C# que je fais tout le temps en Ruby, et je me demandais ce que serait le plus proche.Existe-t-il quelque chose comme Or-Equals de Ruby dans .NET/C#?

Si l'Enum ne contient pas de définition pour ma valeur d'entier, je veux qu'elle soit par défaut à une certaine valeur. Puis-je faire cela en une ligne?

affectation Ruby-ish (deux exemples):

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

ou

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

Répondre

10
namedStr = Enum.GetName(typeof(myEnum), enumedInt) ?? "DEFAULT" 
+0

+1 me battra quelques secondes :( –

+0

Parfait, je vous remercie. – cgyDeveloper

2

Vous pouvez utiliser:

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

... ou:

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

J'aime mieux la deuxième option.

L'opérateur ?? est connu sous le nom d'opérateur de coalescence nulle.

0

Je pense que vous cherchez quelque chose de similaire à SQL COALESCE ou ISNULL. Voilà extrait de s en 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 

occasion comme:

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