C# klíčové slovo THIS

Začátečníci mají často problém se správným pochopením funkce a využití klíčového slova this. Tento příspěvek by jim mohl pomoci.

Klíčové slovo this odkazuje na současnou instanci třídy. Lze ho použít pro přístup k členům třídy z konstruktoru, metod a přístupových metod dané instance.

Statické konstruktory a metody nemají ukazatel this, protože nelze vytvořit jejich instance. Během psaní kódu metody nebo vlastnosti třídy vám použití this zpřístupní intellisense. This se používá, pokud chceme procházet aktuální instanci, např. potřebujeme provést výpočet nebo další operace související s touto instancí.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace this_priklad_1
{
    class Program
    {
        public class Priklad
        {
            int vek;
            string jmeno;

            public Priklad(int vek, string jmeno)
            {
                vek = vek;
                jmeno = jmeno;
            }

            public void Ukaz()
            {
                Console.WriteLine("Tvůj věk je:" + vek.ToString());
                Console.WriteLine("Tvoje jméno je:" + jmeno);
            }
        }

        static void Main(string[] args)
        {
            int _vek;
            string _jmeno;

            Console.WriteLine("Vlož svůj věk:");
            _vek = Int32.Parse(Console.ReadLine());

            Console.WriteLine("Vlož svoje jméno:");
            _jmeno = Console.ReadLine();

            Priklad objekt = new Priklad(_vek, _jmeno);

            objekt.Ukaz();
            Console.ReadLine();
        }
    }
}
Výsledek při spuštění

Jak je vidět, program nevrátil žádné hodnoty. Důvodem je upřednostnění lokálních proměnných vek a jmeno před proměnnými instance. Všimněte si, že program vypsal pouze varování, nikoliv chybu. (Assignment made to some variable; did you mean to assign something else?) Musíme použít slovo this jako odkaz na proměnnou aktuální instance.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace this_priklad_2
{
    class Program
    {
        public class Priklad
        {
            int vek;
            string jmeno;

            public Priklad(int vek, string jmeno)
            {
                // ZDE BYLA PROVEDEN ZMENA (pridano THIS)
                this.vek = vek;
                this.jmeno = jmeno;
            }

            public void Ukaz()
            {
                Console.WriteLine("Tvůj věk je:" + vek.ToString());
                Console.WriteLine("Tvoje jméno je:" + jmeno);
            }
        }

        static void Main(string[] args)
        {
            int _vek;
            string _jmeno;

            Console.WriteLine("Vlož svůj věk:");
            _vek = Int32.Parse(Console.ReadLine());

            Console.WriteLine("Vlož svoje jméno:");
            _jmeno = Console.ReadLine();

            Priklad objekt = new Priklad(_vek, _jmeno);

            objekt.Ukaz();
            Console.ReadLine();
        }
    }
}

Výsledek za použití THIS
Tento příklad rozhodně nepokrývá všechny možnosti využití slova this, ale pokouší se ilustrovat, jak a kdy lze toto slovo použít.

Zdrojový kód je stažení na: http://www.butras.cz/download/this_priklad.zip

Zdroj: http://www.c-sharpcorner.com/UploadFile/puranindia/thiskeywordinCsharp05222009003020AM/thiskeywordinCsharp.aspx

Žádné komentáře:

Okomentovat