Wie verwende ich den ternären Operator von C # mit zwei Byte Werten?

8

Es scheint keinen Weg zu geben, den ternären Operator von C # auf zwei Bytes zu verwenden:

%Vor%

Dieser Code kann zur Zeit nicht mit "Kann den Quelltyp 'int' in den Zieltyp 'Byte' konvertieren" konvertiert werden, da der Compiler die Zahlen als Ganzzahlen behandelt. Offensichtlich gibt es kein benanntes Suffix, um anzuzeigen, dass 0 und 1 Bytes sind, so dass die einzigen Umgehungslösungen (a) das Ergebnis in ein Byte umwandeln oder (b) schließlich ein if-else-Steuerelement verwenden.

Irgendwelche Gedanken?

    
enderminh 11.12.2009, 19:35
quelle

4 Antworten

19
%Vor%

Die Besetzung ist hier kein Problem, in der Tat sollte der IL-Code überhaupt keine Besetzung haben.

Bearbeiten: Die generierte IL sieht so aus:

%Vor%     
Lucero 11.12.2009 19:36
quelle
6

Sie könnten immer tun:

%Vor%

Dies ergibt myByte == 0 für false und myByte == 1 für true.

    
Randolpho 11.12.2009 19:43
quelle
4
%Vor%     
Matt Davis 11.12.2009 19:37
quelle
3

Das kompiliert OK bei VS2008.

Korrektur : Dies kompiliert OK in VS2008:

%Vor%

Aber das nicht:

%Vor%

Seltsam!

Bearbeiten : Nach Erics Rat (siehe seinen Kommentar unten) habe ich Folgendes versucht:

%Vor%

Und es kompiliert perfekt. Nicht dass ich Eric misstraue; Ich wollte das hier nur der Vollständigkeit halber einbeziehen.

    
CesarGon 11.12.2009 19:37
quelle

Tags und Links