NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Diskuze – Lekce 5 - Typový systém podruhé - Datové typy v C# .NET

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Lukáš Nový
Jan Vargovský:5.2.2014 19:39

protože když napíšeš ReadLine tak ta metoda vrací string, takže můžeš zavolat cokoliv co má objekt string a to je buď length a nebo trim, když zavoláš length vrátí se ti int, zatím co když zavoláš trim, vrátí se ti nový string.

 
Odpovědět
5.2.2014 19:39
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Lukáš Nový
Jan Vargovský:5.2.2014 19:45

Btw díky toho můžeš napsat třeba takový kód

internal static class Program
{
    [STAThread]
    private static void Main(string[] args)
    {
        string s = "ahoj";
        Console.WriteLine(s.Zvyrazni().Zvyrazni().Zvyrazni());
    }

    private static string Zvyrazni(this string s)
    {
        return '*' + s + '*';
    }
}

A výsledek je

***ahoj***
Editováno 5.2.2014 19:45
 
Odpovědět
5.2.2014 19:45
Avatar
Odpovídá na Jan Vargovský
Lukáš Nový:6.2.2014 12:42

Moc ti nerozumím.
Ale to bude až v tom OOP ne?

Editováno 6.2.2014 12:43
 
Odpovědět
6.2.2014 12:42
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Lukáš Nový
Jan Vargovský:6.2.2014 15:31

Tohle nemá s OOP nic společného, tady třeba řadí metody do oop, já byl zvyklý na f-ce z jinačích jazyků, tak jsem je používal co nejdřív.

 
Odpovědět
6.2.2014 15:31
Avatar
petrph
Člen
Avatar
Odpovídá na Lukáš Nový
petrph:7.2.2014 15:19

Ahoj,má souvislost s OOP.A to tím základním principem, že každý objekt má v sobě nějakou hodnotu(atribut),a­le i metody které s stou hodnotou mohou pracovat.Soupis těch hodnot máš v popisu třídy toho objektu-čili v online nápovědě C# si najdeš třídu String a tam si přečteš.
A pak tedy platí pravidlo že pokud je výsledkem té metody nějaký objekt, ta zase zase na něj můžeš použít jeho metody.. výsledem zase může být nějaký objekt, na něj můžeš použít jeho metody..až nakonec poslední metoda vpravo vrací hodnotu do proměnné která je na začátku řádku.Konkrétně kdybych se pokusil "dešifrovat toto: string delsi = Console.ReadLi­ne().Trim().Len­gth;
Začneš od místa za závorkou,Conso­le.ReadLine() načte nějaký text, který za dáš z klávesnice, dejme tomu " ABCD " (na začátku a konci jsou mezery.) Na ten výslededek se zavolá metoda stringu Trim (čímž se umažou ty mezery), a vrátí výsledek "ABC",a jako poslední se volá vlastnost Length kteá ti vrátí délku toho "ABC", čili číslo 3.
Takže odpověď je to, že neexistuje nějaké obecné pravidlo "co psát dřív: aby to fungovalo.Ale ty musíš vědět (najít si v nápovědě) co ty metody dělají a pak je postupně seřadit tak aby ti správně zpracovaly prvotní objekt do výsledného tvaru jaký potřebuješ, asi jako stroje na výrobní lince..

 
Odpovědět
7.2.2014 15:19
Avatar
fejjaaas
Člen
Avatar
fejjaaas:7.2.2014 16:15

Dovolím si něco poupravit, pokud jsem to pochopil správně, reagoval jsi na příspěvek, který obsahoval tento zápis: string delsi = Console.ReadLi­ne().Trim().Len­gth
Rozhodně není pravda, že se to v tomto případě vykoná v pořadí: Length, Trim, ReadLine... Mám pocit, že jsi reagoval trochu na jinačí případ. V tomto případě, který jsem uvedl výše se ty metody vykonávají postupně, tudíž ReadLine, Trim a Length(vlastnost).
Ty jsi to vysvětloval na tomto příkladu: char b = char.Parse(Con­sole.ReadLine(), což je úplně něco jiného, než výše zmíněný příklad. Zde je Console.ReadLine() hodnotou metody Parse, nikoliv rovnocenná metoda metodě Parse. Rád si přečtu reakce na můj komentář, jestli má hlavu a patu nebo jsem tu sesmolil nesmysl :-) Díky, přeji hezký den.

 
Odpovědět
7.2.2014 16:15
Avatar
petrph
Člen
Avatar
Odpovídá na fejjaaas
petrph:7.2.2014 18:26

Ahoj- ano, reagoval jsem na Console.ReadLi­ne().Trim().Len­gth, a to pořadí se skutečně vykonává ReadLine, Trim a Lenght, tak jsem to i v komentáři nahoře slovně vyhodnocoval.Takto se vyhodnocují metody objektu tou tečkou mezi nimi říkáš že voláš vpravo stojící metodu z objektu který je od ní nalevo).
Ten druhý příklad
*
int a=Int32.Parse(Con­sole.ReadLine());

  • se musí vyhodnotit zase trochu jinak. Vidíš že mezi těmi Parse a Console.ReadLine není tečka-ale že ten výraz Console.ReadLine() je v závorce za Parse-čili je jeho hodnota předávaná metodě Parse jako její parametr. Takže slovní vyhodnocení zní "spustí se metoda Console.ReadLine(), zadáš z klávesnice nějaké číslice 123-a toto se jako textový řetězec se předá jako parametr metodě Parse("123"), která ho zpracuje na numerickou hodnotu 123.

Jinak jak jsem to přepsal s int to se používá pořád, s char jak jsi to napsal to nemá valný smysl,i když to formálně funguje taky (při vložení právě 1 znaku).

 
Odpovědět
7.2.2014 18:26
Avatar
fejjaaas
Člen
Avatar
Odpovídá na petrph
fejjaaas:7.2.2014 20:09

Měla to být reakce na MrPabloz, nechápu, kde se stala chyba :-). Tam to vypadalo, že reagoval na něco trochu jiného, než na co se ho dotyčný ptal. Ale i tak díky za reakci, rád si počtu názory lidí. Ahoj ;-)

Editováno 7.2.2014 20:11
 
Odpovědět
7.2.2014 20:09
Avatar
dolakdavid
Člen
Avatar
dolakdavid:5.3.2014 22:12

Krokonosohroch :D pobavilo, supr navod.

 
Odpovědět
5.3.2014 22:12
Avatar
alesekmoravec123:18.5.2014 23:25

Vyborné tutoriály, člověk to pochopí, nezkušenému to nepřipadá jako když na něj mluvíš marťanštinou. Zatím jsem zkoušel prográmek na výuku S/Z, nebo kalkulačku s mocninátorem. :-)

Odpovědět
18.5.2014 23:25
Udělat něco blbůmvzdorné je nemožné jelikož se vždy objeví nějaký větší blbec.
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 10 zpráv z 159.