NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: var vs. plnohodnotný název třídy

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Majkel
Člen
Avatar
Majkel:19.10.2015 10:13

Ahoj,

jelikož často vídám, že někde je zápis typu:

MyClass myClass = new MyClass();

a někde zase

var myClass = new MyClass();

Pokládám si otázku, kdy a proč by se mělo (nemělo) var při vytváření tříd používat. Případně, proč jej nepoužívat pořád, když je to takto kratší?

 
Odpovědět
19.10.2015 10:13
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Majkel
David Hartinger:19.10.2015 10:26

Oficiální konvence je, myslím, že var máš používat když je z kódu jasný typ nebo typ není důležitý. Pak tedy:

var myClass = new MyClass(); // Správě, vidíme, že myClass je typu MyCLass
var b = a; // Špatně, nevidíme, kterého typu je a (a je jedno, že je to třeba o řádku výš)

Var se nepoužívá vždy všude ze 2 důvodů:

  • Byl do C# dodán až později (tuším .NET 3.5)
  • V jiných jazycích se nepoužívá a narušuje původní koncepci jazyka

Jak to budeš dělat je na tobě, když to bude přehledné. Mně osobně to nepřijde jako dobrý nápad, bylo to původně přidané kvůli LINQ, který vrací dost šílené typy a proto se to tam hodí.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
19.10.2015 10:26
New kid back on the block with a R.I.P
Avatar
Odpovídá na Majkel
Neaktivní uživatel:19.10.2015 12:20

No a taky var jde použít pouze uvnitř metody a ne třeba u atributů.

Nahoru Odpovědět
19.10.2015 12:20
Neaktivní uživatelský účet
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Jan Vargovský:19.10.2015 12:27

Asi myslíš fieldy, atributy jsou v C# něco jiného.

 
Nahoru Odpovědět
19.10.2015 12:27
Avatar
Majkel
Člen
Avatar
Odpovídá na Neaktivní uživatel
Majkel:19.10.2015 12:33

Šlo mi o vytváření tříd. A jak říká pako:

int vek = 20; // Field
public string Vek { get; set;} // Vlastnost

Neboli:
public string Vek
{
        get
        {
                return vek;
        }
        set
        {
                vek = value;
        }

Vlastnost je v podstatě metoda, do které si můžeš přidat nějakou logiku.

 
Nahoru Odpovědět
19.10.2015 12:33
Avatar
Majkel
Člen
Avatar
Odpovídá na Majkel
Majkel:19.10.2015 12:37

Jo aha atribut :D Tak to nahoře je blbost. Takhle je to správně:

int vek = 20; // Field

[Display(Name="Product Number")] // Atribut
public int ProductID { get; set; }
 
Nahoru Odpovědět
19.10.2015 12:37
Avatar
Odpovídá na Jan Vargovský
Neaktivní uživatel:19.10.2015 12:55

Jo myslel jsem fieldy a nemohl jsem si vzpomenout, jak se tomu v c# říká :-)

Nahoru Odpovědět
19.10.2015 12:55
Neaktivní uživatelský účet
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 7 zpráv z 7.