dlaczego w C# aplikacji konsoli, w klasie „Program”, który jest domyślnym, wszystkie metody muszą być statyczne wraz zC# aplikacji konsoli - metody statyczne
static void Main(string[] args)
dlaczego w C# aplikacji konsoli, w klasie „Program”, który jest domyślnym, wszystkie metody muszą być statyczne wraz zC# aplikacji konsoli - metody statyczne
static void Main(string[] args)
funkcji członkowskim nie mają być statycznym; ale jeśli są one statyczne, to wymaga to utworzenia obiektu Program
w celu wywołania metody składowej.
metod statycznych:
public class Program
{
public static void Main()
{
System.Console.WriteLine(Program.Foo());
}
public static string Foo()
{
return "Foo";
}
}
Bez metod statycznych (innymi słowy, wymagając do wystąpienia Program
):
public class Program
{
public static void Main()
{
System.Console.WriteLine(new Program().Foo());
}
public string Foo() // notice this is NOT static anymore
{
return "Foo";
}
}
Main
musi być statyczna, ponieważ w przeciwnym razie trzeba by powiedzieć kompilator, jak utworzyć instancję klasy Program
, co może, ale nie musi być banalnym zadaniem.
Czy tworzenie instancji klasy "Program" jest inteligentnym posunięciem pod względem pamięci? jeśli jest to duży program, brzmi to okropnie. – MasterMastic
Możesz napisać niż metody statyczne też, po prostu należy użyć jak ten
static void Main(string[] args)
{
Program p = new Program();
p.NonStaticMethod();
}
Jedynym wymogiem dla aplikacji C# jest to, że zespół wykonywalny powinien mieć jedną statyczną metodę główną w każdej klasie w zespole!
Metoda główna jest statyczna, ponieważ jest to punkt wejścia kodu do zespołu. Na początku nie ma żadnego obiektu, tylko szablon klasy załadowany do pamięci i jego statyczne elementy, w tym statyczna metoda Main point. Główna jest predefiniowana przez kompilator C# jako punkt wejścia.
Metoda statyczna może wywoływać tylko inne statyczne metody (chyba że istnieje uchwyt instancji czegoś złożonego do użycia). Z tego powodu metoda Main wywołuje inne statyczne metody i dlatego pojawia się błąd kompilacji, jeśli próbujesz wywołać metodę niestatyczną (instancja).
Jeśli jednak utworzysz instancję dowolnej klasy, nawet samej klasy Programu, zaczniesz tworzyć obiekty w aplikacji na obszarze sterty pamięci. Następnie możesz zacząć wywoływać członków instancji.
Nie wszystkie metody muszą być statyczne, można dodać metody instancji, a także utworzyć instancję klasy Program.
Ale dla Main musi być statyczny, ponieważ jest to punkt wejścia do twojej aplikacji i nikt nie stworzy instancji i nie zadzwoni.
Więc technicznie poprawne odpowiedzi są powyżej :)
powinienem zwrócić uwagę, że na ogół nie chcą iść w kierunku wszystkich metod statycznych. Utwórz obiekt, taki jak formularz okna, kontroler i przejdź do kodu obiektowego, a nie proceduralnego.
wow .. tak wiele wspaniałych odpowiedzi w tak krótkim czasie ... SO .. ty rock !!! Ci wszyscy, którzy odpowiedzieli ... dzięki! –