C#: "Für das nicht statische Feld [...] Objektverweis erforderlich?

C# - (Programm, programmieren)

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Die Fehlermeldung gibt eigentlich den Hinweis. Korrekt müsste die Signatur der Methode DoSomething wie folgt aussehen:

public static void DoSomething(out int param)
        {
            param = 550;
        }

DoSomething muss bei Dir zur statischen Methode werden. Du hast kein Objekt der Klasse "Program" erstelt, mit der du sie aufrufst. Es ist eine Klassenmethode und muss daher auch entsprechend deklariert werden.

Möchtest Du dagegen die Signatur der Mehtode DoSomething beibehalten, musst Du den Code der Main-Methode abändern. Also alternativ(!) wie folgt:

static void Main(string[] args)
        {
            int value;
            new Program().DoSomething(out value);
            Console.WriteLine(value);
        }

Dann kann die Methode DoSomething so stehen bleiben wie bei Dir im Originalcode.

Michael339  01.12.2014, 23:21

http://openbook.galileo-press.de/visual_csharp_2012/1997_03_005.html#dodtp757b19f8-9b64-4c17-b322-a5bafa952e6d Du hast Dich im Kapitel weiter unten irritieren lassen... macht nichts, in Kapitel 3.9 werden statische Methoden behandelt, dann wirst Du den Fehler nicht erneut machen.

0
ChrisBoy19 
Fragesteller
 02.12.2014, 08:44
@Michael339

Vielen dank für die Hilfe und die tolle Erklärung, hättest mehr als den "Stern" verdient :) Dann bin ich mal auf Kapitel 3.9 gespannt :P

grüße

1

DoSomthing ist abwechselnd mit 3 bzw. 2 Parametern aufgerufen - einmal fehlt int.

C# ist zwar nicht mein Spezialgebiet, aber meiner Meinung nach müsste das "out" in der Klammer hinter dem rot unterstrichenen "DoSomething" weg:

DoSomething(value);