2017-05-08 1 views
-1

Ich kann manchmal null zu int? aber nicht innerhalb einer ? : zuweisen, warum?Kann nicht int einstellen? zu Null innerhalb von?: Operator

Beispiel

int? a; // good 
    int? b; // good 

    a = null; // why is this allowed? 
    b = (a != null) ? 1 : null /* and this not allowed? */; 

    b = (a != null) ? 1 : (int?)null /* this is a fix */; 
+0

Da beide Ausdrücke im?: -Operator den gleichen Typ haben sollten oder eine implizite Konvertierung von einem zu einem anderen Typ erforderlich sein sollte. Das ist bei int (1) und null nicht der Fall. – Evk

Antwort

5

Von the documentation:

Entweder ist die Art von first_expression und second_expression müssen gleich sein, oder eine implizite Konvertierung von einem Typ zum anderen vorhanden sein muss.

in b = (a != null) ? 1 : null Typ ersten Arguments ist also int, und die zweite Argument ist null, die die obige Regel verstößt. Im zweiten Fall kann int implizit in (int?)null konvertiert werden, deshalb funktioniert es.

+0

Nur um hinzuzufügen, gibt es jetzt eine implizite Konvertierung, die existiert, wenn Sie das 'null' nach' (int?) Null 'umsetzen. –

Verwandte Themen