Re: Codeproject.com
Geplaatst: zo 12 okt 2008, 13:14
Waarom is dat meer netjes? Een private main functie lijkt me eerder not done.
Omdat een main functie doorgaans niet vanuit andere klassen aangeroepen hoort te worden.
Waarom is dat meer netjes? Een private main functie lijkt me eerder not done.
Omdat een main functie doorgaans niet vanuit andere klassen aangeroepen hoort te worden.
Deze vat ik niet echt.Overigens hebben private static methodes wel degelijk waarde. Een voorbeeld is een public static methode die een sub-functie aanroept die alleen binnen die klasse gebruikt wordt.
De main functie is zowel in C# als in Java geen globale functie. De main functie moet altijd een methode van een klasse zijn.Rogier schreef:Als C#-noob even een vraag: is de main functie in C# net als in C/C++ een globale functie? (als in, geen memberfunctie van een class)
En zo ja, wat is het verschil tussen een private of public bij een globale functie?
Zolang je klassen importeert (includen in c++) lukt het wel om ze aan te spreken. Ook wanneer ze in dezelfde package zitten (dan is importeren zelf niet nodig).En wat static vs niet static betreft: bij C/C++ worden static globale functies (evenals static globale variabelen) niet geexporteerd voor de linker, dus kunnen alleen binnen hun eigen .c/.cpp file worden aangesproken. Geldt dat ook voor C#?
Hoeft ook niet in java hoor (al is het wel beter dat je het wel doet).ik had trouwens al de indruk dat compilers voor C# een stuk lakser zijn dan die van Java, je hoeft bevoorbeeld ook niet voor elke klasse een nieuw bestand aan te maken.
Van welke klasse? Er kunnen ook meerdere klassen zijn met een main functie lijkt me, hoe weet de compiler/linker dan welke als entry point voor je programma geldt?De main functie is zowel in C# als in Java geen globale functie. De main functie moet altijd een methode van een klasse zijn.
Ja okee, nou is het bij c++ gebruikelijk om .h files te includen, en static zooi (globale functies of variabelen) die in andere .cpp's worden gedefinieerd bestaan dan normaliter alleen daar (en kunnen dus niet in andere cpp's gebruikt worden).Zolang je klassen importeert (includen in c++) lukt het wel om ze aan te spreken. Ook wanneer ze in dezelfde package zitten (dan is importeren zelf niet nodig).
Er "kunnen" meerdere klassen met een main functie zijn, maar dan is het aan jou om de compiler duidelijk te maken welke nu de echte main functie is. De rest wordt genegeerd als "echte" main functie. De main functie moet idd static zijn (door de reden die je zelf opgeeft ).Rogier schreef:Van welke klasse? Er kunnen ook meerdere klassen zijn met een main functie lijkt me, hoe weet de compiler/linker dan welke als entry point voor je programma geldt?
Die main functie moet dan wel static zijn lijkt me? (anders, van welke instantie van de klasse gaat hij dan die functie aanroepen?)