Announcement

Collapse
No announcement yet.

Ich verstehe nicht, was mir VS.NET oder MSDN sagen will

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ich verstehe nicht, was mir VS.NET oder MSDN sagen will

    Guten Morgen

    Ich bekomme folgende Fehlermeldung bei VS .NET 2003:
    Klasse, Struktur oder Schnittstellenmethode muss einen Rückgabetyp haben.

    Wenn ich dazu nun mie MSDN Bibliothek befrage:
    Klasse, Struktur oder Schnittstellenmethode muss einen Rückgabetyp haben
    Eine Methode, die in einer Klasse, Struktur oder Schnittstelle deklariert ist, muss einen expliziten Rückgabetyp aufweisen.
    Im folgenden Beispiel wird CS1520 erzeugt:
    // CS1520a.cs
    public class x
    {
    f7() // CS1520, needs return type
    // try the following definition
    // void f7()
    {
    }

    public static void Main()
    {
    }
    }
    Dieser Fehler kann auch auftreten, wenn sich die Groß-/Kleinschreibung eines Konstruktornamens, wie im folgenden Beispiel dargestellt, von der Schreibweise der Klassen- oder Strukturdeklaration unterscheidet:
    // CS1520b.cs
    public class Class1
    {
    public class1() // CS1520, incorrect case
    {
    }
    static void Main()
    {
    }
    }

    Die zweite mögliche Ursache kann ich wohl ausschliessen, da ich alles nochmals überprüft habe. Kann mir vielleicht jemand bei der Interpretation der Fehlermeldung helfen?

    Danke für eure Hilfe.

  • #2
    Hallo,

    ohne das konkrete Beispiel kann ich auch nur die verschiedenen Fälle aufzählen:

    Fehlerfall 1: Methode DoWork deklariert keinen Rückgabewert (void ist auskommentiert)

    <pre>
    <b>using</b> System;
    <br>
    <b>namespace</b> ClassLibraryCS
    {
    <b>public</b> <b>class</b> Class1
    {
    <b>public</b> Class1()
    {
    }

    <font color="#003399"><i>/* void */</i></font> DoWork()
    {

    }
    }
    }
    </pre>

    Fehlerfall 2: Unterschiedliche Schreibweise (Class1 vs. class1)

    <pre>
    <b>using</b> System;
    <br>
    <b>namespace</b> ClassLibraryCS
    {
    <b>public</b> <b>class</b> Class1
    {
    <b>public</b> class1()
    {

    }
    }
    }
    </pre>

    Fehlerfall 3: Interface ist fehlerhaft
    <pre>
    <b>using</b> System;
    <br>
    <b>namespace</b> ClassLibraryCS
    {
    <b>public</b> <b>interface</b> ITest
    {
    DoWorkEx(); <font color="#003399"><i>// hier fehlt void !</i></font>
    }
    <br>
    <b>public</b> <b>class</b> Class1: ITest
    {
    <b>public</b> Class1()
    {
    }
    <br>
    <b>void</b> DoWork()
    {
    }
    <br>
    <b>public</b> <b>void</b> DoWorkEx()
    {
    }
    }
    }
    </pre&gt

    Comment


    • #3
      Danke für deine Antwort. In meinem Fall trifft die Nummer 1 zu. Was meint man mit Rückgabewert?
      return?

      Bin halt noch Neuling auf diesem Gebiet

      Comment


      • #4
        Hallo,

        &gt;Was meint man mit Rückgabewert?

        Diese Unterscheidung gibt es in jeder Sprache. In Pascal zum Beispiel unterscheidet man auch zwischen einer <i>Procedure</i> (kein Rückgabewert) und einer <i>Function</i> (die einen bestimmten Datentyp zurückliefert).

        Wenn in C# die aufgerufene Methode kein Ergebnis an den Aufrufer zurückliefert, wird diese über das Schlüsselwort <i>void</i> gekennzeichnet. Ansonsten wird der jeweilige Datentyp vorangestellt:
        <pre>
        <b>void</b> MeineMethodeOhneErgebnis();
        </pre>
        oder
        <pre>
        <b>string</b> MeineMethodeLiefertEinenString();
        </pre&gt

        Comment

        Working...
        X