2016-06-05 3 views
0

J'ai un annulable octet je veux incrémenter ou mis à 0 en fonction si elle est nulle, comme ceci:raccourci javascript équivalent en C#

if (TheNullableByte == null) 
{ 
    TheNullableByte = 0; 
} 
else 
{ 
    TheNullableByte = TheNullableByte++; 
} 

En javascript je l'écris comme ceci:

TheNullableByte = (TheNullableByte) ? TheNullableByte++ : 0; 

Y a-t-il quelque chose de similaire en C#?

Merci.

+1

'TheNullableByte = TheNullableByte ++;' semble au moins douteuse. Peut-être que "TheNullableByte = TheNullableByte + 1;" a plus de sens. – AlexD

Répondre

7

Cela devrait être le plus court possible construire:

TheNullableByte = ++TheNullableByte ?? 0; 

Utilisation du null-coalescing operator.

Petite explication:

En supposant TheNullableByte est une variable byte? sans valeur (il est null) ++TheNullableByte ne change pas sa valeur (le résultat de l'expression est null). À la fin, vous avez 0 (si c'était null) ou la valeur incrémentée de un.

+0

'TheNullableByte ++' est évalué avant le test de coalescence nulle et lancera une exception si 'TheNullableByte' est' null' – CoolBots

+0

@CoolBots Testé sur [CSharpPad] (http://csharppad.com/) et fonctionne correctement. Êtes-vous sûr de cela? –

+0

@CoolBots Vous pouvez essayer de l'exécuter vous-même: http://rextester.com/BDZZ21816 –