Mám problém s použitím tohoto klíčového slova. Nikdy nevím, kdy ho mám použít. V metodě to je samozřejmé, ale kdy a proč? Neměli by jste tu pro mě nějakej dobrej příklad na to, kdy ho použít? Na netu - ani v knížkách o tom nic moc není. Díky. ;-)
Fórum › .NET
Slovíčko This.
Jestli chápeš, co zmanená, tak podle mě není, co řešit :).
Ale používat se nemusí, pokud tedy nemáš stejně pojmenovanou lokální a třídní proměnnou:
class MojeTrida {
int promenna;
void metoda() {
int promenna;
promenna = 23;//přiřazení do lokální proměnné
this.promenna = 42;
}
}
Ale já bych ho přesto používal, protože zlepšuje přehlednost (hned vidíš, že se nejedná o lokální proměnnou).
Díky Japo. To jsem nevěděl, že se tím pouze rozeznává lokální a třídní proměnná. To znamená, že ta "this.promenna = 42" je třídní (globální) proměnná?
To RePRO : Globální proměnná to není. C# je nepodporuje. Pomocí this lze rozlišit třídní proměnné a lokální (popř. parametry metod), ale také se používá k vytváření accessorů a k volání přetížených konstruktorů.
public Trida():this("text")
{
// nejprve se provede následující konstruktor
}
public Trida(string str)
{
}
public string this[int index]
{
get;
set;
}
Fajn, dík.
class MojeTrida {
int promenna;
void metoda() {
int promenna;
promenna = 23;//přiřazení do lokální proměnné
this.promenna = 42;
}
}
A tady: this.promenna = 42; znamená tedy třídní proměnná?
To RePRO : Ano.
Take lze 'this' pouzit this pri vytvareni Extension metod - napriklad:
static class Sample
{
public static string DejMiPrvniDvaNeboAa(
this string vstupniText)
{
if (string.IsNullOrEmpty(vstupniText) ||
vstupniText.Length < 2)
{
return "Aa";
}
return vstupniText.Substring(0, 2);
}
}
a pouzilo by se to takhle:string sample = "Ahoj".DejMiPrvniDvaNeboAa();
string sample2 = "".DejMiPrvniDvaNeboAa();
ale funguje to jen pro Framework 3.5 a je to trochu jine vyuziti 'this' nez je popsano vyse
To rudolf_franek : To není tak docela pravda. Rozšiřující metody jsou jen syntaktickej cukr. Jakmile to projde C# 3.0 kompilátorem, tak to běhá i na .NET 2.0.
To djanosik : ano je to syntakticky cukr. I kdyz psat si svoji aplikaci v Frameworku 2.0 a mit knihovnu rozsirujicich metod v Frameworku 3.5 me osobne prijde trochu zvlastni.. ale ano slo by to.
To rudolf_franek : Jo to mě taky. Myslel jsem to spíš tak, že lze celou tu aplikaci napsat pod 3.5 a provozovat pod 2.0.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Moderátoři diskuze