Diskuze: proměnná this

C# .NET .NET (C# a Visual Basic) proměnná this American English version English version

Avatar
Selak
Člen
Avatar
Selak:

Ahoj,chci se zeptat na proměnnou this koukal jsem se na tutoriál,kde bylo o čem to je,koukal jsem se i na komentáře,ale moc mi to nedalo,tak se chci zeptat tady.Učím se ted v c# OOP jak udělat toho bojovníka a arénu atd. a koukal jsem jak tady ve zdrojových kódech i jinde v knížkách,že proměnná this se dost používá,tak bych to rád pochopil dobře.Děkuji.

 
Odpovědět 30.10.2014 18:01
Avatar
Lukáš Křehula
Redaktor
Avatar
Lukáš Křehula:

this = aktuální instance třídy
Když máš třeba okno pojmenovaný "Form1" a napíšeš this, tak se odkazuješ na ten Form1

tzn

this.Size = new Size(100,100);

je totožné s tímto

Form1.Size = new Size(100,100);
Editováno 30.10.2014 18:16
 
Nahoru Odpovědět 30.10.2014 18:16
Avatar
Selak
Člen
Avatar
Selak:

Jo aha děkuji.Asi to chápu,ale pro jistotu jak by to bylo tady v tom příkladě?

public Kostka(int pocetSten)
{
this.pocetSten = pocetSten;
random = new Random();
}

 
Nahoru Odpovědět 30.10.2014 18:20
Avatar
Selak
Člen
Avatar
Odpovídá na Lukáš Křehula
Selak:

Už to chápu nemusíš odpovídat díky moc,konečně se můžu vrhnout do nových tutoriálů :D

 
Nahoru Odpovědět 30.10.2014 18:22
Avatar
Hit
Člen
Avatar
Odpovídá na Selak
Hit:

Čus, this není proměnná, spíš bych to nazval ukazatelem na aktuální instanci, pomocí, kterého můžeš přistupovat k jednotlivým proměnným, pro příklad si vezmi např. třídu Člověk, ta bude mít proměnné jméno a věk, při vytváření instance třídy člověk budeš chtít tyhle hodnoty nastavit, to znamená v konstruktoru.

public class Clovek{
        private String name;
        private int age;

        //konstruktor
        public Class(String name, int age){
                this.name = name;
                this.age = age;
        }
}

Tady jsi jedné konkrétní instanci nastavil jméno Lukáš a věk 22.

Instanci pak vytvoříš

Clovek c = new Clovek("Lukáš", 22);
Nahoru Odpovědět 30.10.2014 18:23
Life's not about how hard you can hit, it's about how hard you can GET hit and keep moving forward.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Hit
David Čápka:

To může i bez this když je pojmenuje jinak, to jsi mu to moc nevysvětlil. Mám dojem, že je tam na to nějaké cvičení. Každopádně si představ, že máš třídu garáž a auto:

class Auto
{

}

class Garaz
{
        public auto;
}

Garáž má jako atribut auto, které v ní je uložené. Teď jak dát auto metodu, která ho zaparkuje do garáže?

class Auto
{

        public void ZaparkujDoGaraze(Garaz garaz)
        {
                garaz.auto = this;
        }

}

Do garáže se uloží to auto, na kterém se metoda volá. Tedy this. Program je potom:

class Program
{

        public static void main()
        {
                Garaz garazePraha = new Garaz();
                Auto skoda = new Auto();
                Auto bmw = new Auto();
                skoda.ZaparkujDoGaraze(garazePraha);
                bmw.ZaparkujDoGaraze(garazePraha);
        }

}

Poprvé je v this skoda, podruhé tam je bmw. Je tam zkrátka ta instance, na které se volá ta metoda.

Pokud to pořád nepochopí tak fakt doporučuji ta cvičení.

Nahoru Odpovědět 30.10.2014 19:02
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Selak
Člen
Avatar
Odpovídá na David Čápka
Selak:

Docela už to chápu cvičení si určitě udělám,ale je mi 14,nějakou tu kreditku nemám a máma to taky nepodporuje.Jedině jak jsem někde četl,že někdy to bude za sms,ale to by bylo asi předražený.No chvíli počkám,včera jsem si po druhý podal žádost o redaktorská práva,tak chvíli počkám a kdyžtak potom si zkusím na ty cvičení našetřit :)

 
Nahoru Odpovědět 30.10.2014 19:26
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Selak
David Čápka:

To se tu již milionkrát řešilo, místo do MC Donald's si zajdi na poštu. Vyplníš poukázku A a můžeš si koupit cvičení, opravdu zde není na co se vymlouvat. Na dalších platebních metodách se pracuje.

Nahoru Odpovědět  ±0 30.10.2014 19:39
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Selak
Člen
Avatar
Odpovídá na David Čápka
Selak:

Jo aha to promin sice jsem se díval,ale nenašel jsem to.Ale je to teda super v pátek nebo v pondělí si tam zajdu nějaký prachy mám našetřený,tak vím kam to dám . :O

 
Nahoru Odpovědět 30.10.2014 19:44
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.