Pochodze z ActionScripta gdzie Konstruktory nie byly statyczne stad to pytanie;]
"A dlaczego wszystko nie może być statyczne? jaką masz korzyść tutaj że init będzie niestatyczne?"
Rozumiem ze jezeli w grze masz miniguna ktory strzela 1000x/sek to kazdy pocisk bedzie statyczna klasa?:> niezle podejscie;]
AdamWox dzieki za odpowiedz tylko to sie wydaje dziwne bo wymusza na kazdej klasie bazowej operator static, to nie jest dziwne waszym zdaniem? Czemu akurat klasa bazowa musi byc w C# statyczna, w innych jezykach to jest rozwiazane inaczej.
@goku21
Faktycznie, aż mnie ciekawi skąd ty to bierzesz? Main()
nie jest konstruktorem, nie potrzebujesz tej metody w każdej klasie, nie potrzebujesz mieć wszystkich klas statycznych, wręcz powiedziałbym, że nie powinieneś mieć. Klasa bazowa w C# nie jest statyczna, tylko jej metoda Main()
jest, aby można było wywołać ją
Program.Main();
zamiast
Program p = new Program();
p.Main();
Klasy niestatyczne mogą zawierać statyczne metody i właściwości
public class MojaKlasa
public MojaKlasa()
{
//konstruktor, który nie jest statyczny
}
public void Init()
{
//metoda niestatyczna
}
public static void init_static()
{
//metoda statyczna
}
Jeśli chcesz się odwołać do Init()
musisz mieć obiekt tej klasy, jeśli zaś chcesz się odwołać do init_static()
to tego obiektu nie potrzebujesz.
MojaKlasa m = new MojaKlasa();
m.init();
MojaKlasa.init_static();