C # -Umwandlung in einen nullfähigen Typ?

Darüber hinaus der regelmäßige langweilige Unterschied zwischenCast undAs

wenn ichkennt DasApfel ist einObst also kann ich benutzen(Fruit)apple - und es löst eine Ausnahme aus, wenn es nicht istas value kann mit null verglichen werden, um zu sehen, ob dies erfolgreich war. [Ausnahme wird nicht ausgelöst ...]

Allerdings habe ich @ EricLippert gelesenArtikel dazu und es gab ein schönes Beispiel über Nullable Value Types:

<code>short? s = (short?)123;
int? i = s as int?;
</code>

dieseGewohnheit kompilieren...

Typ 'short?' Kann nicht konvertiert werden zu 'int?' über eine Referenzkonvertierung, Boxing-Konvertierung, Unboxing-Konvertierung, Wrapping-Konvertierung oder Null-Typ-Konvertierung

Fein.

also warum das:

<code>    short? s = (short?)123;
    int? i = (int?)s;
</code>

Tut Kompilieren? (Gegen ALLE Erwartungen ! ichKENNT Dass ist nichtint? - und es sollte knallen, aber es ist nicht ...)

Die Cast-Überprüfung hier sollte viel tödlicher sein als das vorherige Beispiel (das Bang ging).

Es tut mir leid, nach diesem viel diskutierten Thema zu fragen.

Danke im Voraus.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage