2012-10-23 12 views
7

machte ich einen Tippfehler und Visual Studio hat es nicht als Fehler markiert:Was ist `Nullable <T>?`?

void Method(Nullable<SpriteFont>? font = null) { }

font zeigt als SpriteFont?? in der Ausgabe auf. Was habe ich gerade gemacht?

UPD: Sorry, jeder, ich habe nicht versucht, es zu kompilieren, es erschien nur nicht als Fehler, bis ich es tat. Trotzdem ist es komisch, dass es in der Ausgabe als Type?? angezeigt wird.

Außerdem SpriteFont ist bereits nullable, so wollte ich einen Fehler irgendwie erhalten :(

+9

Sie haben Ihre Schriftart als Nullable definiert. > – manman

+1

Ich dachte, dass Typen, die Nullwerte akzeptieren, nicht nullfähig gemacht werden können ... wie Klassen. –

+0

@manman: setzen Sie das als Antwort – zerkms

Antwort

4

Ich habe es hier versucht, gerade jetzt ... und ich konnte nicht reproduzieren, was Sie sayd.

Alle der folgenden Aussagen nicht kompiliert:

  • Nullable<int>? a = 1;
  • Nullable<Nullable<int>> b = 1;
  • Nullable<int?> a = 1;
  • void A(Nullable<Nullable<int>> a)
  • void A(Nullable<int>? a)
  • void A(Nullable<int?> a)

mit Visual Studio 2012, C# 4 oder 5 Ich denke, 4.5 .NET Framework.

+2

@Vulcan: Nein, ich denke es ist eine Antwort, denn die Frage scheint falsch zu sein. – Mehrdad

+2

@Vulcan: Es gibt keine Antwort für falsche Fragen oder falsche Aussagen ... nur Gegenbeispiele. –

+3

Das ist eigentlich eine Antwort. Und wenn Antworten im Grunde sagen "Ich habe keine Ahnung, wie du hast, was du getan hast", ist die Frage in der Regel das Problem :) –

4

Der Syntax-Checker des Editors konnte es nicht als Fehler mit den roten Schnörkeln markieren. Nicht der Compiler.

Zwei verschiedene Codeabschnitte. Sie müssen sein, Syntax-Code zu überprüfen, während Sie es eingeben, im Wesentlichen immer gebrochen, erfordert einen ganz anderen Ansatz.

+0

Dies ist die einzige Erklärung! Es bedeutet auch, dass die Frage gestellt wurde, ohne den Code tatsächlich zu kompilieren. –

Verwandte Themen