C# Compiler Kauderwelsch

Hallo,

ich hatte mich ja kürzlich über die Qualität des Microsoft C#-compilers positiv geäußert.

Leider habe ich nun auch etwas schlechtere Erfahrungen gemacht. Folgender code

using System;
using System.Collections.Generic;
using System.Text;
 
namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
           List aList = new List();
           foreach (string str in aList)
           {
                Console.WriteLine(str);
           }
 
           string str = "Hallo";
    }
}
}

erzeugt folgende Fehlermeldung:


Fehler 1 Eine lokale Variable mit dem Namen "str" kann in diesem Bereich nicht deklariert werden, weil dadurch "str" eine andere Bedeutung erhalten würde, was bereits im Bereich "untergeordnet" in anderer Bedeutung verwendet wird. c:\Temp\ConsoleApplication1\Program.cs 18 20 ConsoleApplication1

Alles klar?

Man könnte nun annehmen, dass der C#-Compiler anders als ein ANSI-konformer C++ Compiler den scope der ersten Deklaration von str nicht auf die foreach-Schleife beschränkt. Dann müsste man aber bei der Zuweisung an str nach der foreach-Schleife einfach die Deklaration weglassen können, was aber nicht der Fall ist.

Fehler 1 Der Name "str" ist im aktuellen Kontext nicht vorhanden. c:\Temp\ConsoleApplication1\Program.cs 18 13 ConsoleApplication1

Dieser Forumsbeitrag legt nahe, dass dieses Verhalten Absicht ist, die Dokumentation auf der MSDN website beschreibt aber einen wesentlich nachvollziehbareren Fall. Meiner Meinung nach ist das ein klarer Compiler-bug.

Liebe Leser, was meinen Sie dazu?

Viele Grüsse,
Andreas

Technorati Tags: ,

One Response to “C# Compiler Kauderwelsch”

  1. Andreas Awenius’ blog » Blog Archive » Anzeige von source code mit syntax highlighting in blog posts (wp-syntax) Says:

    [...] und bin recht zufrieden damit. Die Benutzung ist einfach und das Ergebnis ist ansprechend (Beispiel). Kleines goodie am Rande: das plugin setzt Sonderzeichen wie etwa < oder > automatisch in [...]

Leave a Reply