I C# 3.0 kan du gøre det du viser, men kun med de allerede nævnte extension metoder:
static class EnIntExtender { public static double ToDouble(this int etTal) { return (double)etTal; // bruger en explictit cast ... // return etTal; ... men kunne laves med en implicit cast } }
class Program { static void Main(string[] args) { int test = 1; double dblTest;
dblTest = test.ToDouble(); } }
Det viste eksempel er dog relativt trivielt, og kamouflere egentlig blot den almindelige cast funtionalitet.
...
Meeen. Når du så snakker om ToStrign() så er det noget andet du er ude i. ToString() kan kun overloades fordi at den allerede er erklæret "virtual" i den klasse hvor den oprindeligt er defineret (System.Object). Hvis du vil lave noget ligenende med andre metoder så skal de også væere erklæret virtual.
I sagesn natur er det jo ikke noget som du kan ænder så meget på for de allerede definerede klasser/structrs som int, double eller string.
Du kan kun gøre det for klasser du selv definere:
class Klasse1 { private readonly int etTal; public Klasse1(int etTal) { this.etTal = etTal; }
public virtual double ToDouble() // Her bruges virtual { return etTal; // Implicit cast } }
class Klasse2 : Klasse1 { public Klasse2(int etTal) : base(etTal) { }
Ja nielle det er jeg. Jeg havde dog lidt problemer med at få extentions til at virke efter hensigten, men det lykkedes endeligt i går. Så læg et svar nielle, hmortensen kan også lægge et svar da det var ham der foreslog extentions men ikke med kode :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.