Der C#-Compiler gibt keinen Fehler aus, wenn er sollteC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Der C#-Compiler gibt keinen Fehler aus, wenn er sollte

Post by Anonymous »

Der Compiler erkennt nicht, dass in Zeile 3 ein Fehler auftritt:
IList xs = new List { new List { 2 } };
IList x0 = xs.First(); // does not compile, as expected
foreach (IList x in xs) { } // works, unexpectedly!

(Auch wenn kein Fehler vorliegt, schlägt Visual Studio in Zeile 3 vor, dass eine implizite Umwandlung vorliegt, die zur Laufzeit möglicherweise fehlschlägt.)
Interessanterweise erkennt der Compiler das Problem hier erfolgreich:
IList xs = new List { 2 };
string x0 = xs.First(); // does not compile, as expected
foreach (string x in xs) { } // also does not compile, as expected

Gibt es einen guten Grund, warum Zeile 3 nur einen Vorschlag und keinen Fehler gibt, wie in den Zeilen 2, 5 und 6?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post