C # switch statement Einschränkungen - warum?

Beim schreiben einer switch-Anweisung, es scheint sich um zwei Beschränkungen auf, was kann man in case-Anweisungen.

Zum Beispiel (und ja, ich weiß, wenn du tust diese Art der Sache bedeutet es vermutlich, dass Ihre Objekt-orientierte (OO) - Architektur ist zweifelhaft - das ist nur ein erfundenes Beispiel!),

  Type t = typeof(int);

  switch (t) {

    case typeof(int):
      Console.WriteLine("int!");
      break;

    case typeof(string):
      Console.WriteLine("string!");
      break;

    default:
      Console.WriteLine("unknown!");
      break;
  }

Hier die switch () - Anweisung nicht mit 'Einem Wert eines ganzzahligen Typ erwartet' und die case-Anweisungen fehl mit 'konstanter Wert erwartet wird'.

Warum sind diese Einschränkungen im Ort, und was ist die zugrunde liegende Rechtfertigung? Ich sehe keinen Grund, warum die switch-Anweisung hat zu erliegen, um die statische Analyse nur, warum der Wert wird eingeschaltet hat, um integral zu sein, (das ist, primitiv). Was ist die Rechtfertigung?

InformationsquelleAutor der Frage ljs | 2008-09-04

Schreibe einen Kommentar