2012-01-25 8 views
10

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++

+20

Assurdo come può sembrare, perché sono lingue diverse. –

+0

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'? –

+0

Anche @parapurarajkumar 'start' avrebbe funzionato. Ma doveva esserci una scelta fatta. Una volta che è stata fatta una scelta, quella scelta è rimasta bloccata. –

risposta

8

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.

+4

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. –

+0

@ edA-qamort-ora-y: È _is_ storico, ma il ragionamento non storico ha effettivamente una quantità adeguata di peso :) –

4

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.

+4

Non è solo legacy; le funzioni freestanding sono molto utili e lo standard C++ ne introduce molte oltre quelle ereditate da C. –

+0

ok ho capito il tuo punto .. Grazie –

3

Non è possibile posizionare il metodo all'esterno di class/struct in C#. Ogni metodo deve essere in classe/struct

11

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.

0

È una convenzione. Che è in linea con Java (segue anche la semantica di avere un metodo all'interno della classe).

+0

so ma c'è qualche altro motivo specifico o solo una convenzione? –

+0

@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 ... –

+1

Non è una convenzione, è un requisito della lingua. Una convenzione implica che ci sono altre possibilità. – adelphus

0

C# è un linguaggio orientato agli oggetti completo in cui tutto è considerato come oggetti. Quindi, Main() è tenuto all'interno della classe.