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