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

C# .NET .NET (C# a Visual Basic) var vs. plnohodnotný název třídy American English version English version

Avatar
Majkel
Člen
Avatar
Majkel:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Majkel
David Čápka:

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í
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 19.10.2015 10:26
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na Majkel
Jakub Šárník:

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
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Jakub Šárník
Jan Vargovský:

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 Jakub Šárník
Majkel:

Š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:

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ý
Jakub Šárník:

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

 
Nahoru Odpovědět 19.10.2015 12:55
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.