Laden...

Statische Methode in einer anderen Klasse aufrufen

Erstellt von Cele vor 6 Jahren Letzter Beitrag vor 6 Jahren 4.271 Views
C
Cele Themenstarter:in
2 Beiträge seit 2017
vor 6 Jahren
Statische Methode in einer anderen Klasse aufrufen

Hallo Leute,

habe in der Klasse Fakul01 eine statische Methode zur rekursiven Berechnung der Fakultät. Ich würde gerne diese Methode in der Klasse Program aufrufen, jedoch erscheint beim Kompilieren:

error CS0122. Auf Fakul01.fakul(long) kann wegen der Sicherheitsebene nicht zugegriffen werden.


using System;

class Fakul01
{

    static long fakul(long n)
    {
      long fakultaet = 1;
      if (n < 2) return 1;
      fakultaet = n * fakul(n - 1);
      return fakultaet;
    }



}

class Program
{
    static void Main(string[] args)
    {
      Console.WriteLine("Fakultaet= {0}", Fakul01.fakul(5));
            
    }
}


Wie kann ich denn sonst auf die Methode zugreifen?

3.170 Beiträge seit 2006
vor 6 Jahren

Hallo,

Du musst die Methode als public deklarieren.
Das sind absolute Grundlagen. Deshalb empfehle ich dringend [FAQ] Wie finde ich den Einstieg in C#?

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

C
Cele Themenstarter:in
2 Beiträge seit 2017
vor 6 Jahren

vielen Dank!

vor lauter static das public vergessen...

bin ja auch noch blutiger Anfänger.... 😃

T
461 Beiträge seit 2013
vor 6 Jahren

Und hier noch ein unhübschl:


    static public long fakul(long n)
    {
      long fakultaet = 1;
      if (n < 2) return 1;
      fakultaet = n * fakul(n - 1);
      return fakultaet;
    }

besser:


    static public long fakul(long n)
    {
      if (n < 2) return 1;
      long fakultaet = n * fakul(n - 1);
      return fakultaet;
    }

wenn du Sattelfest bist:


    static public long fakul(long n)
    {
      if (n < 2) return 1;
      return n * fakul(n - 1);
    }

Im grunde sollte es heißen, tue nichts was nicht notwendig ist... (außer wenn es um Wartbarkeit/Debuggen geht...)

Ich habe den Titel mal angepasst, so dass Suchende auch etwas damit anfangen können. EDIT: Ich sollte beim Wort "Shift" im Titel das "f" nicht vergessen... 😄

2.079 Beiträge seit 2012
vor 6 Jahren

Weil wir gerade dabei sind 😛

public static long fakul(long n)
{
    return n < 2 ? 1 : n * fakul(n - 1);
}

Zum nachlesen: Operator ?:

oder

public static long fakul(long n) => n < 2 ? 1 : n * fakul(n - 1);

Zum nachlesen: Expression-bodied Member

Und nein, Cele, ich will dir keine Angst machen, einfach nur der Vollständigkeit wegen 😄
Beides sind nur andere Schreibweisen, technisch kommt in beiden Fällen ziemlich genau das gleiche raus. Ist also Geschmackssache.
Aber es ist sicher praktisch, wenn Du das mal gesehen hast. Wenn Du das irgendwo im Internet mal siehst, erinnerst Du dich vielleicht an den Thread hier und kannst nach lesen.

T
461 Beiträge seit 2013
vor 6 Jahren

Hey @Palladin007, wollte ihm nicht gleich so überrumpeln aber hast recht, der Vollständikeitshalber... 😄

Ich habe den Titel mal angepasst, so dass Suchende auch etwas damit anfangen können. EDIT: Ich sollte beim Wort "Shift" im Titel das "f" nicht vergessen... 😄