» »

[c#] get, set

[c#] get, set

japol ::

Naj mi nekdo razloži po domače kaj je get, set,... in zakaj se uporablja. Kakšen primer preproste kode je tudi dobrodošel.

FuI2cY ::

z set nastaviš vrednost, z get vračaš vrednost.

primer:
motor moped1(110); // podaš hitrost
cout<<moped1.getHitrost<<endl; // izpiše 110;

moped1.setHitrost(50); // nova hitrost je sedaj 50;
cout<<moped1.getHitrost()<<endl; // izpiše 50

tako nekako :)

detroit ::

upam da moj dokaj laični pristop ne bo napačen


Ti imaš nek objekt ki ima privatne spremenljivke
z get in set pa jih spreminjaš in dostopaš do njih iz drugih objektov (ki ne dedujejo od tega objekta)



recimo


public class Test
{
private string _ime

public string ime
{
get { return this._ime };


set {
this._ime = value};
}
}


i think its this, someone correct me
Skero

Zgodovina sprememb…

  • spremenil: detroit ()

Mitja Bonča ::

Ja get set metoda je tudi meni dolgo časa delala probleme - nisem in nisem mogel poštekati, kako bi jo rabil. No sedaj jo, ampak je kar trajalo nekaj časa.
Obrazlaga: imaš neko vrednost v spremenljivki (npr: int intStevilo = 5;) to stevilo z set metodo "shraniš", in ko nekje drugje vrednost spremenljivke intStevilo potrebuješ, jo dobiš iz get metodo. pa poglejmo primer:

private int intStevilo { get; set; }
private void Shrantitev stevila()
{
    int intA = Convert.ToInt32(textBox1.Text.Trim());
    intStevilo = intA; //shranitev vrednosti
}

private void PrikazVrednosti()
{
   int intB = intStevilo; //pridobitev prej shranjene vrednosti
   textBox2.Text = intB.ToStirng();
}


To je en enostaven primer kako se uporablja get;set; metoda. Upam da sem bil razumljiv.
Lep pozdrav,
Mitja

kogledom ::

Property se načeloma uporablja namesto public ali protected fieldov, saj ti tako omogoča nadzor inputa (znotraj setterja), hkrati pa ohrani sintakso fielda.
Več...

paco ::

Kot so že ostali nad mano povedali, pa da še jaz :).

using System;

namespace Neki
{
    class Program
    {
        static void Main()
        {
            //Objekt razreda Pravokotnik
            Pravokotnik p1 = new Pravokotnik();
            //Do spremenljivk _Visina in _Sirina ne moras dostopati, ker sta zasebni, lahko pa nastaviš in pridobiš njuni vrednosti z lastnostima Visina in Sirina
            p1.Visina = 10; //spremenljivki _Visina z lastnostjo Visina nastaviš vrednost na 10 (tu se izvede set blok lastnosti)
            p1.Sirina = 20; //spremenljivki _Sirina z lastnostjo Sirina nastaviš vrednost na 20 (tu se izvede set blok lastnosti)

            int V1 = p1.Visina; //ustvariš novo spremenljivko V1 in ji nastaviš vrednost spremenljivke _Visina, prek lastnosti Visina (tu se izvede get blok lastnosti)
            int S1 = p1.Sirina; //ustvariš novo spremenljivko S1 in ji nastaviš vrednost spremenljivke _Sirina, prek lastnosti Sirina (tu se izvede get blok lastnosti)
        }
    }

    //nek razred
    class Pravokotnik
    {
        //Dve zasebni spremenljivki
        private int _Visina;
        private int _Sirina;

        //Lastnosti
        public int Visina
        {
            //get blok
            get
            {
                return this._Visina;
            }
            //set blok
            set
            {
                this._Visina = value;
            }
        }

        public int Sirina
        {
            //get blok
            get
            {
                return this._Sirina;
            }
            //set blok
            set
            {
                this._Sirina = value;
            }
        }
    }
}


seveda pa lahko v get in set blokih tudi operiraš z podatki, npr.:

public int Sirina
        {
            //get blok
            get
            {
                int tmp = this._Sirina;
                int ost = tmp % 10;
                return (tmp + ost);
            }
            //set blok
            set
            {
                int tmp = value;
                int ost = tmp % 10;
                this._Sirina = (tmp - ost);
            }
        }
It iz aj.

Zgodovina sprememb…

  • spremenilo: paco ()

fiction ::

Property namesto spremenljivke uporabljaš zato, da lahko kasneje bolj elegantno dodaš kakšno preverjanje ali kaj podobnega. Interno je vse skupaj realizirano kot metodi get_ime in set_ime.
Pri spremenljivki ob nastavljanju vrednosti oz. branju le te ne moreš kaj veliko narediti, pri "lastnosti" pa lahko izvedeš poljubne stvari. Da ti ni treba pisati propertya in še spremenljivke obstaja sintaksa public int Blah { get; set; }, kar v bistvu naredi neko svojo spremenljivko in Blah direktno piše oz. bere iz tam. Če ti kdaj kasneje ni več všeč, da se Blah
nastavi na vrednost večjo od 100 enostavno "set;" zamenjaš s set { } in tam npr. z if stavkom pogledaš kakšen je value ter če je prevelik vržeš exception ali kaj podobnega. V glavnem ni treba spreminjati kode tam, kjer se Blah uporablja.

japol ::

Super, hvala, ste v veliko pomoč.
Se pravi, da get/set uporabim tam, kjer bom nek element (število, string, objekt,...) rabil kadarkoli med delovanjem programa, kjer je pomembno da si zapomne element, ker ga bom rabil nekje drugje? Mi bo to kar prav prišlo, ker lahko iz drugega class-a, button clik-a,... enostavno dostopam do tega elementa.
K get/set spada pod properties? Ko googlam, kaj naj iščem?

Mitja Bonča: Zelo razumljiv, točno to sem iskal. Hvala


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Java] Objekt poslan k metodi v kakšnem stanju?

Oddelek: Programiranje
211511 (958) shadeX
»

SQL uporaba imena spremenljivke stringu

Oddelek: Programiranje
7925 (819) BlueKnight
»

Java pomoč

Oddelek: Programiranje
131748 (1527) Serial
»

C# get/set

Oddelek: Programiranje
51035 (971) japol
»

[Java][Naloga] Seznam študentov, majčken problem

Oddelek: Programiranje
362287 (1974) VASkO

Več podobnih tem