"this" svarer til Visual Basics "Me" og Delphis "self".
Det er en egenreference til klasse-instancen selv. Den er ikke nødvendig at få med, men som finger siger, giver den mulighed for intellisense til egne properties og metoder.
Ahh! Hvis du nu skal kalde en funktion, og den funktion er i din class, kan du kalde det ved this.fuctionGetTime(); (f.eks)
Hvis du nu har en Form1, som du skal sætte højden på, istedet for at skrive Form1.Height = 2000; kan du bruge this.Height = 2000;, det samme hvis du skal lukke en form kan du bruge this.Dispose();
Altså this er som det betyder, denne! Det er en genvej til den class du arbejder med! Er, jeg forklarer ikke så godt så håber disse eksempler kan hjælpe lidt!
The this keyword refers to the current instance of the class. Static member functions do not have a this pointer. The this keyword can be used to access members from within constructors, instance methods, and instance accessors.
The following are common uses of this:
To qualify members hidden by similar names, for example:
det er aldrig _NØDVENDIGT_ at bruge det. Du kan bruge det som en dejlig lille hjælp med intellisense til at få en liste over dine metoder og variable i den klasse. Om man vil bruge det eller ej, er en smagssag. Men det er en dejligt feature.
jeg kan forestille mig at hvis du ikke bruger Visual Studio (der understytter intellisense), så kan det virke formålsløst (med mindre man skal bruge de i en constructor;-))
1) den allerede nævnte hvor argumenter skygger for instans medlemmer
2) når et objekt skal sende en referance til sig selv som argument
3) når en constructor vil kalde en anden constuctor i samme klasse
4) ved indexers
Se følgende fjollede eksempel:
using System;
class B { private A a; public B(A a) { this.a = a; // argument shadows for instance member } public void foobar() { Console.WriteLine(a.V); Console.WriteLine(a[77]); } }
class A { private int v; private B b; public A(int v) { this.v = v; // argument shadows for instance member b = new B(this); // pass itself as argument } public A() : this(0) // use another constructor { } public int V { get { return v; } } public int this[int ix] // indexer { get { return v; } } public void foobar() { b.foobar(); } }
class MainClass { public static void Main(string[] args) { A a1 = new A(123); a1.foobar(); A a2 = new A(); a2.foobar(); } }
Synes godt om
Ny brugerNybegynder
Din løsning...
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.