28. juli 2005 - 14:24
Der er
8 kommentarer og 1 løsning
Constructor overloading?
Normalt hvis jeg skal bruge overloadede constructors plejer jeg at lave dem således: public class Settings { string fileName; string rootName; public Settings(string fileName, string rootName) { this.fileName = fileName; this.rootName = rootName; } public Settings(string fileName) { Settings(fileName, "Settings") } public Settings() { Settings("default.xml", "Settings") } } Men nu er jeg stødt på et par eksempler hvor de er lavet således: public Settings(string fileName) : this(fileName, "Settings") { } For mig at se giver det samme resultat, men er der nogen forskel på de to fremgangsmåder, og i så fald, hvad er "best practice"?
Annonceindlæg fra Jysk IT
Sikkerhed skal være en del af driften
Skal virksomheder stå stærkere mod angreb og kunne udvikle sig, skal sikkerhed, drift og forretning tænkes sammen. Det er tanken bag Jysk IT’s ambition om at skabe en “sikker fremtid” for kunderne.
Den var ny for mig, men er det nu også rigtigt at det er en overload. Er det ikke nærmere følgende: public Settings(string fileName) : this(fileName, "Settings") { } Hvis du bruger denne, så kaldes din constructor public Settings(string fileName, string rootName) { this.fileName = fileName; this.rootName = rootName; } før den går ind i koden på den kaldte constructor.
Jeg troede kun at det var den sidste som var valid C# !!
Hvis du gør følgende: public Settings(string fileName) : base() { } betyder det jo at den kalder superklassens constructor før den kalder din constructor
using System; namespace HejProg { public class Class1 { public string hej; public string medDig; public Class1() { this.medDig = "hejsa"; } public Class1(string h): this() { this.hej = h; } } } hvis du udefra laver en Class1 kan man gøre følgende: Class1 one = new Class1(); så bliver hej aldrig sat, men kalder du den anden: Class1 one = new Class1("davs"); bliver hej sat. Altså ikke overloading, du kalder bare en constructør
Class1 one = new Class1("davs"); sætter selvfølgelig også medDig - fik det ikke lige med
Tror jeg har fået fat i det nu... Og jeg fik vist også skrevet lidt forkert info i starten, men jeg er blevet lidt klogere! :) Smider du et svar spif?
Tak for hjælpen! Tror vist hellere jeg snart må få lidt frisk luft, for at få gang i hjernen igen... :D
hæhæ - sidder også hele dagen foran skærmen, men heldigvis er jeg ryger på en ikke-rygende arbejdsplads hvor man skal gå udenfor og ryge - det klarer lige hjernen
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.