Perché abbiamo inserito il metodo main()
sempre all'interno dello class
in C# mentre in C++ è sempre posizionato all'esterno dello class
.perché il metodo principale in C# viene sempre inserito all'interno della classe ma non in C++
risposta
Per motivi storici. C++ si è evoluto da C, che aveva una funzione globale main()
. C# è molto più giovane ed è stato progettato da zero. Una delle funzionalità di progettazione di C# è l'assenza di funzioni globali, pertanto la funzione main
deve appartenere a una classe.
Non penso che sia storico. Se oggi venisse presa la decisione, penso che sarebbe comunque trasformata in una funzione indipendente. A differenza di alcuni linguaggi, C++ abbraccia pienamente le funzioni globali. –
@ edA-qamort-ora-y: È _is_ storico, ma il ragionamento non storico ha effettivamente una quantità adeguata di peso :) –
Perché in .NET è possibile inserire metodi solo all'interno dei tipi. Non puoi farli fluttuare nello spazio vuoto. C++ ha il suo retaggio da C che non è un linguaggio OOP in modo da poter definire le funzioni ovunque.
Non è solo legacy; le funzioni freestanding sono molto utili e lo standard C++ ne introduce molte oltre quelle ereditate da C. –
ok ho capito il tuo punto .. Grazie –
Non è possibile posizionare il metodo all'esterno di class/struct in C#. Ogni metodo deve essere in classe/struct
I progettisti di linguaggio C++ hanno seguito la guida di C e quindi la funzione principale è una funzione semplice.
I progettisti di linguaggio C# hanno scelto, durante la progettazione della lingua, che tutti i metodi debbano essere parte delle classi.
È una convenzione. Che è in linea con Java (segue anche la semantica di avere un metodo all'interno della classe).
so ma c'è qualche altro motivo specifico o solo una convenzione? –
@r_ohit - È solo una convenzione. I progettisti di Java hanno pensato che fosse una buona idea avere di più OO. Quindi hanno inventato funzioni statiche per superare la limitazione ... –
Non è una convenzione, è un requisito della lingua. Una convenzione implica che ci sono altre possibilità. – adelphus
C# è un linguaggio orientato agli oggetti completo in cui tutto è considerato come oggetti. Quindi, Main() è tenuto all'interno della classe.
Assurdo come può sembrare, perché sono lingue diverse. –
Nessuna delle risposte ha aggiunto alcun contesto storico ... Quindi molti linguaggi di programmazione hanno per la maggior parte un punto d'ingresso chiamato 'main' perché' main' e non dicono 'start'? –
Anche @parapurarajkumar 'start' avrebbe funzionato. Ma doveva esserci una scelta fatta. Una volta che è stata fatta una scelta, quella scelta è rimasta bloccata. –