Entwickler-Ecke

C# - Die Sprache - Kann nicht auf Methode zugreifen


storestore - So 25.09.11 11:33
Titel: Kann nicht auf Methode zugreifen
Hallo,
naja ist vlt. weider eine totale anfänger frage :roll: Ich habe folgenden code:
Das Problem ist das Grüne findet er nicht bzw. ich kann nicht von der Main- Methode drauf zugreifen. Wieso nicht?

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
        <span style="color: green">// Beschleunigung()</span>
            
        }

       
    public void  Beschleunigung(int beschleunigung)
        {
            beschleunigung += 20;
            Console.WriteLine(beschleunigung);
            Console.ReadLine();

           
            

        }
    }
}

Edit: Definiere ich die Methode als static heißt es :
Zitat:
Fehler 1 Keine Überladung für die Beschleunigung-Methode nimmt 0 Argumente an. C:\Users\*****\AppData\Local\Temporary Projects\ConsoleApplication1\Program.cs 12 13 ConsoleApplication1

Edit2= Mit static hat sich gelöst ich muss die variable nur einen wert zuweises. Aber das mit Public (siehe oben) funktioniert immer noch nicht!
mfg storestore


Christian S. - So 25.09.11 11:58

Wenn Du eine Methode mit Parameter erstellst, musst Du den beim Aufruf auch übergeben.


storestore - So 25.09.11 12:01

Ok, und wie sieht es mit der Public methode aus? Er kann sie ja garnicht erst in Main aufrufen! Er findet sie irgendwie nicht z.B.
wenn ich jetzt "Beschl" sollte er mir ja schon "Beschleunigung" anzeigen, macht er aber nicht!
mfg storestore


Th69 - So 25.09.11 12:04

Hallo storestore,

du scheinst den Unterschied zwischen einer statischen und nicht-statischen Methode immer noch nicht verstanden zu haben.
Von einer statischen Methode aus kannst du nicht direkt eine nicht-statische Methode aufrufen (denn diese benötigt nun mal eine Instanz).

Also entweder die Methode als 'static' deklarieren oder aber eine Instanz erzeugen und dann dessen Methode aufrufen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
class Program
{
    static void Main(string[] args)
    {
        Program program = new Program();

        program.Beschleunigung(42);
    }

    // ...
}


P.S. Für eine einfache kleine Konsolenanwendung kann man den Code oben so belassen, aber für größere Anwendungen sollte man den Code in eine andere Klasse auslagern und von der Program.Main aus dann nur aufrufen (Program program = new Program() sieht ein bißchen eigenartig aus).


storestore - So 25.09.11 12:08

Hallo Th69,
Achso ist doch klar :autsch:
Naja, man kann nicht alles wiesen ;)
Danke
Mfg storestore