Dlaczego umieszczamy main()
metodę zawsze wewnątrz class
w C#, podczas gdy w C++ zawsze znajduje się poza class
.dlaczego główna metoda w języku C# jest zawsze umieszczana wewnątrz klasy, ale nie w C++
Odpowiedz
Ze względów historycznych. C++ ewoluował z C, który miał globalną funkcję main()
. C# jest znacznie młodszy i został zaprojektowany od zera. Jedną z cech konstrukcyjnych C# jest brak funkcji globalnych, więc funkcja main
musi należeć do klasy.
Nie sądzę, że to jest historyczne. Jeżeli decyzja miałaby zostać podjęta dzisiaj, myślę, że nadal byłaby to funkcja wolnostojąca. W przeciwieństwie do niektórych języków C++ w pełni obejmuje funkcje globalne. –
@ edA-qamort-ora-y: To jest historyczne, ale niehistoryczne rozumowanie rzeczywiście ma odpowiednią wagę :) –
Ponieważ w .NET można umieszczać metody tylko wewnątrz typów. Nie możesz ich unieść w pustej przestrzeni. C++ ma swoje dziedzictwo z C, które nie jest językiem OOP, więc możesz definiować funkcje w dowolnym miejscu.
To nie tylko dziedzictwo; funkcje wolnostojące są bardzo użyteczne, a standard C++ wprowadza wiele z nich poza te odziedziczone po C. –
ok, rozumiem. dziękuję –
Nie można umieścić metody poza klasą/strukturą w języku C#. Każda metoda musi być w klasie/strukturze.
Projektanci języka C++ podążali za przewodnikiem C, więc główna funkcja jest prostą funkcją.
Projektanci języków C# dokonali wyboru podczas projektowania języka, że wszystkie metody muszą należeć do klas.
Jest to konwencja. Co jest zgodne z Javą (również wynika z semantycznego posiadania metody w klasie).
wiem, ale czy jest jakiś inny konkretny powód lub zwykła konwencja? –
@r_ohit - To tylko konwencja. Projektanci Javy uważali, że dobrym pomysłem jest mieć wszystko więcej OO. Potem wymyślili funkcje statyczne, aby pokonać ograniczenie ... –
To nie jest konwencja - to wymóg języka. Konwencja oznacza, że istnieją inne możliwości. – adelphus
C# to kompletny język zorientowany obiektowo, w którym wszystko jest traktowane jako obiekty. Dlatego Main() jest trzymany w klasie.
- 1. dlaczego nie ma metody Center() klasy Rectangle w języku C#?
- 2. Wywoływanie System.Delegate obiekt klasy w języku C#
- 3. C++. metoda klasy Wskaźniki
- 4. Czy istnieje metoda "upto" w języku C#?
- 5. Gdzie jest główna metoda w formularzu wniosku?
- 6. Metoda spłaszczania Ruby w języku C#
- 7. Metoda klasy, która nie jest w interfejsie
- 8. Dziedziczenie z klasy szablonu w języku C++
- 9. Metoda jest zawsze dobrym pomysłem ukrywanie
- 10. Nie można znaleźć klasy HttpServerUtility w System.Web w języku C#
- 11. C# Usługa główna systemu Windows
- 12. Domyślnie Dostępność klasy w języku C#
- 13. Zdefiniuj strukturę wewnątrz klasy w C++
- 14. Tworzenie klasy Pythona w języku C#
- 15. C++ - budowa obiektu wewnątrz klasy
- 16. W języku Java, dlaczego jest słowo kluczowe, a nie metoda?
- 17. Używanie klasy VB6 w języku C#
- 18. Dlaczego metoda __new__ klasy nie jest w jego __dict__?
- 19. Dlaczego nie mogę złapać ogólnego wyjątku w języku C#?
- 20. Funkcja Przypisanie wskaźnika działa w języku C, ale nie w C++
- 21. W języku C++ możliwe jest zdefiniowanie funkcji czysto wirtualnej?
- 22. `PROCESSENTRY32W` w języku C#?
- 23. Czy C# w języku angielskim jest uniwersalne?
- 24. Konwersja System.Data.Entity.DynamicProxies do (nie proxy) klasy w języku C#
- 25. Dlaczego przeciążanie nie jest możliwe w C?
- 26. Dlaczego ta asynchroniczna metoda C# 4.0 nie jest wywoływana?
- 27. Co to jest ".. ::." w języku C#?
- 28. Jaka jest główna różnica między C++ a C++ .NET?
- 29. Dlaczego nie jest możliwe wyeksportowanie instancji klasy w języku TypeScript?
- 30. metoda klasy w JavaScript nie jest funkcją
Absurd, jak może się wydawać, ponieważ są to różne języki. –
Żadna z odpowiedzi nie dodała żadnego historycznego kontekstu ... Tak wiele języków programowania ma większość punktów wejścia o nazwie "main", dlaczego 'main', a nie" start "? –
@parapurarajkumar 'start' też by działało. Ale musiał być dokonany wybór. Kiedy wybór został dokonany, ten wybór utknął. –