Property accessor – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Property accessor – .NET – Fórum – Programujte.comProperty accessor – .NET – Fórum – Programujte.com

 

Montezo
~ Anonymní uživatel
188 příspěvků
21. 10. 2021   #1
-
0
-

Zdravím. Při pročítání tohoto ( https://en.wikibooks.org/wiki/C_Sharp_Programming/Keywords/return ) jsem narazil na frázi " property accessor ". Sice sem si našel "Google definici" ale nijak jsem z ní nezmoudřel. 

Property in C# is a member of a class that provides a flexible mechanism for classes to expose private fields. Internally, C# properties are special methods called accessors. A C# property have two accessors, get property accessor and set property accessor.

Property v jazyce C# spadají do skupiny tříd, která poskytuje flexibilní mechanismus pro další třídy "vystavení soukromých polí". Interně, C# propertis jsou speciální metody zvanou accescors. Property v C# mají dvě accessors, získej hodnotu property a nastav hodnotu property.

Jako chápu to, jeden nastaví hodnotu proměnné, druhý "vyzvedne" hodnotu proměnné. Ale co z toho vyplívá?

Nahlásit jako SPAM
IP: 178.255.168.–
Kit+15
Guru
21. 10. 2021   #2
-
0
-

#1 Montezo
Property accesories jsou zlo, které degraduje OOP. Ve třídě můžeš zřídit virtuální proměnné a k nim metody get a set. Ty metody pak převzaté hodnoty uloží do skutečných proměnných nebo je naopak vyzvednou a předají ven. Původní záměr byl, aby se v těchto metodách prováděla validace nebo formátování, ale ještě jsem neviděl, že by to někdo takhle využil. Vidím vždy jen {get; set;}

Nahlásit jako SPAM
IP: 213.175.51.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
BDS+3
Věrný člen
21. 10. 2021   #3
-
+1
-
Zajímavé
Kit +

#1 Montezo 

kdyby jsi místo vynalézání nové přezdívky, napsal vyhledávače: property accessor c# example

našel by jsi něco takového:

class TestClass
    {
        private int _x; //chci aby _x mohlo mít hodnotu v rozsahu -100 až 100 

        public int X //vlastnost X je public, takže k ní lze přistupovat z venčí
        {
            get { return _x; }
            set
            { //tímto zajistím, že _x bude v rozsahu -100 až 100
                if (value < -100) _x = -100;
                else
                {
                    if (value > 100) _x = 100;
                    else _x = 100;
                }
            }
        }
    }

a muselo by ti to být jasné

Nahlásit jako SPAM
IP: 185.69.68.–
W11 :)
22. 10. 2021   #4
-
+1
-
Zajímavé

#3 BDS
Kouknul jsem na to jen letmo, ale za posledním else bych čekal _x = value;

hu

Nahlásit jako SPAM
IP: 195.178.67.–
BDS+3
Věrný člen
22. 10. 2021   #5
-
0
-

#4 hlucheucho
pravdu máš! 

class TestClass
    {
        private int _x; //chci aby _x mohlo mít hodnotu v rozsahu -100 až 100 

        public int X //vlastnost X je public, takže k ní lze přistupovat zvenčí
        {
            get { return _x; }
            set
            { //tímto zajistím, že _x bude v rozsahu -100 až 100
                if (value < -100) _x = -100;
                else
                {
                    if (value > 100) _x = 100;
                    else _x = value; //<oprava
                }
            }
        }
    }

opraveno

Nahlásit jako SPAM
IP: 94.113.253.–
W11 :)
Montezo
~ Anonymní uživatel
188 příspěvků
22. 10. 2021   #6
-
0
-

   

Ty metody pak převzaté hodnoty uloží do skutečných proměnných nebo je naopak vyzvednou a předají ven

Takže je to asi stejný, jako koupit jogurt, a doma ho přelít z plastového kelímku do skleničky s kovovým víčkem, že?

Nahlásit jako SPAM
IP: 178.255.168.–
Montezo
~ Anonymní uživatel
188 příspěvků
22. 10. 2021   #7
-
0
-

"kdyby jsi místo vynalézání nové přezdívky" Tak on ten překlad byl spíš orientační, takže ano, některé pojmy mohou působit jako "přezdívka" nebo zbytečná kreativita...

Nahlásit jako SPAM
IP: 178.255.168.–
BDS+3
Věrný člen
22. 10. 2021   #8
-
0
-

#7 Montezo
měl jsem na mysli:

Montezo Viktor funkce safranek DEBRECEN gripen..

Nahlásit jako SPAM
IP: 94.113.253.–
W11 :)
Kit+15
Guru
22. 10. 2021   #9
-
0
-

#6 Montezo
Jenže při tom přelévání ho můžeš dochutit a při servírování přelít do hezké misky. Takové dekorátory se občas hodí.

Nahlásit jako SPAM
IP: 213.175.43.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Montezo
~ Anonymní uživatel
188 příspěvků
22. 10. 2021   #10
-
0
-

BDS: tuhle wifinu využívá více lidí. 

Nahlásit jako SPAM
IP: 178.255.168.–
Montezo
~ Anonymní uživatel
188 příspěvků
22. 10. 2021   #11
-
0
-

Jenže při tom přelévání ho můžeš dochutit a při servírování přelít do hezké misky. Takové dekorátory se občas hodí

Ale to se snad dělá při instanci, ne?   

Nahlásit jako SPAM
IP: 178.255.168.–
Kit+15
Guru
22. 10. 2021   #12
-
0
-

#11 Montezo
Při vytváření instance je to značka ideál. Mnoho vývojářů však neumí s immutable objekty pracovat.

Nahlásit jako SPAM
IP: 213.175.43.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Montezo
~ Anonymní uživatel
188 příspěvků
22. 10. 2021   #13
-
0
-

"Při vytváření instance je to značka ideál. Mnoho vývojářů však neumí s immutable objekty pracovat."

Bez urážky, ale jakej má smysl udělat instanci, a pak do ni "za běhu přilepovat" nějaký doplňky?

Stejně, pokud to zkompiluješ na .exe, tak už ten kód nevidíš, a nemůžeš se v něm rýpat. To mi přijde, jako udělat dort, co bude mít vršek - se šlehačkou - posypanej lentilkama, ale červený a zelený lentilky se budou zásadně sypat ve speciální místnosti, pracovníkem, co je určen pouze na sypání lentilek.

Nahlásit jako SPAM
IP: 178.255.168.–
BDS+3
Věrný člen
22. 10. 2021   #14
-
0
-

#13 Montezo

BDS: tuhle wifinu využívá více lidí. a všichni máte dotazy stejného typu :D

Myslím, že se v těch přirovnáních ztrácíš (nebo já). Zatím ještě neznáš základy a už by jsi chtěl vyvíjet programovací jazyk.

Je to tam například pro ošetření vstupů uživatele, nebo ošetření chyb při čtení souborů.....

nebo i pomoc vývojáři:

class TestClass
    {
        private int _x = 0;
        public bool ValueIsCorrect{get; private set;} = true;

        public int X
        {
            get { return _x; }
            set
            { 
                if (value < -100) 
                {
                 _x = -100;
                 ValueIsCorrect = false;
                }
                else
                {
                   if (value > 100) 
                   {
                    _x = 100;
                     ValueIsCorrect = false;
                   }
                   else
                   {
                    _x = value;
                    ValueIsCorrect = true;                    
                   }
                 }
                 PrekresliOkno();
            }
        }

     private void PrekresliOkno()
     {
      //nejaky kod
     }
    }

trochu krkolomné, ale snad o to lépe pochopitelné 

Nahlásit jako SPAM
IP: 94.113.253.–
W11 :)
Montezo
~ Anonymní uživatel
188 příspěvků
22. 10. 2021   #15
-
0
-

"a všichni máte dotazy stejného typu :D" Tak když se zajmáme o stejnou věc.   

Nahlásit jako SPAM
IP: 178.255.168.–
Montezo
~ Anonymní uživatel
188 příspěvků
22. 10. 2021   #16
-
0
-

" Zatím ještě neznáš základy a už by jsi chtěl vyvíjet programovací jazyk."  No, na střední zase všichni pedagogové brečeli, že jen žáci recitují učebnice z paměti. To už pak člověk fakt netuší, jak to má celý dělat, a nepodělat. Přemýšlet nad problémem je špatně, nalejt si do hlavy mechanicky učebnici je taky špatně.   

Nahlásit jako SPAM
IP: 178.255.168.–
Kit+15
Guru
22. 10. 2021   #17
-
0
-

#16 Montezo
Přemýšlet nad problémy je správně.

Nahlásit jako SPAM
IP: 46.135.93.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 55 hostů

Podobná vlákna

Form property — založil Joudak

EditMask Property — založil Borisek

Description pre property — založil Johnnny

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý