C#   zodpovězená otázka

C#

Dobrý den,

mohl by mi prosím někdo vystvětlit tento kus kódu:

class MyClass
{
  static int[] array = new int[5];
 
  static MyClass()
  { 
    int i = 0;
    for(int element : array)
      element = i++;
  }
}

Nejsou mi jasné dvě věcy:

1) Syntaxe cyklu for by přeci měla obsahovat dva středníky a mimo to mi bohužel není jasné co znamená "int element : array"

2) Jaký má význam má ve třídě, která není statická, používat statický konstruktor a statická pole? K čemu je to dobré?

Omlouvám se, pokud se v bodě 1 jedná o něco samozřejmého, ale doposud jsem psal především ve VB.NET a s touto syntaxí jsem se v C# doposud nesetkal...

Předem děkuji za ochotu

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ještě se omluvám, za hloupý nadpis, nevšiml jsem si, že jsem ho nedopsal, než sem příspěvek odeslal. Pokud ho může někdo (admin?) změnit, tak by to bylo fajn...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To je totiž přesně ta hovadská a naprosto nesrozumitelná syntaxe C#. Zlatý Visual Basic. Pokud ten hnus zkopíruji do C# 3.0 (2008), hází to chybu právě na řádku s : array. Dělat statický konstruktor v nestatické třídě je totální hovadina a ani nevím, jaký návrhový vzor by takovou pitomost mohl využívat.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Pane Linhart, toto jsou trochu předčasné a od vás trochu neuvážlivé poznámky, to, že se vám nelíbí C# je jen proto, že jste odkojen VB.NETem, mě se taky nelíbí VB.NET(resp. jeho syntaxe) proto, že jsem se učil na C-LIKE syntaxi.

Ještě k tomu příkladu:

Upřímně rečeno, mě se to nezdá jako C#, vypadá to spíš jako FOR-EACH cyklus v Javě.

V C# by to bylo správně nějak takto:

class MyClass
{
  int[] array = new int[5];
 
  public MyClass()
  { 
    int i = 0;
    foreach(int element in array)
      element = i++;
  }
}

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

A ještě abych vám osvětlil cyklus FOR-EACH, ano máte pravdu klasický FOR cyklus by mohl vypadat nějak takto:

for(int i = 0; i < 10; i++)
  Console.WriteLine("Prave prochazim cyklem po " + i);

nebo

for(;;)
  Console.WriteLine("Nekonecny cyklus!");

Cyklus foreach slouzi k pruchodu kazdeho prvku pole/kolekce

Pro srovnání napíší stejne příklady, které sečtou čísla, jednou ve for cyklu a jednou ve foreach:

//Klasicky For
int[] cisla = {1,5,6,4,78,5};
int soucet = 0;

for(int i; i < cisla.Length; i++)
{
  soucet += cisla[i];
}

a varianta s FOR-EACH

//For Each
int[] cisla = {1,5,6,4,78,5};
int soucet = 0;

foreach(int i in cisla)
{
  soucet += i;
}

Prostě de o to, že ve foreach každý prvek projdete jakoby proměnnou, která zastupuje každý prvek v kolekci a Danou činnost vykonná s každým prvkem v kolekci

PS: Psal jsem to z hlavy, je tedy možné, že je tam někde chyba!

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Vážený anonymní pane, já jsem sice začínal s Visual Basicem (Basic a Pascal nepočítám, to bylo jenom hraní), ale přes 4 roky jsem profesionálně dělal v C#, takže zcela odpovědně a objektivně můžu říct, jaký je to oproti Visual Basicu těžkopádný a neforemný humus, se kterým už nikdy víc nechci přijít do styku. To naopak pseudovývojáři v C#, kteří nikdy neviděli Visual Basic jím automaticky pohrdají, opět znám z praxe.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Jak to myslíte "Pseudo vývojáři", ano Visual Basic má možná o něco hezčí syntaxi, ale mě osobně příjde nepřehledné, pokud má zdroják více řádků. A myslím si, že je to čistě subjektivní pocit každému se líbí něco jiného, takže já se s vámi nebudu hádat. A ještě k těm pseudovývojářům, oba sva jazyky(VB.NET, C#) jsou vázány na .NET a využívají jeho třídy, takže to co jste řekl je blbost. A ano já jsem ve VB.NET také dělal, ale prostě C# je modernější jazyk, který lépe vyhovuje dnešním potřebám, abych to upřesnil, je prostě "šití na míru .NETu".

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Aha, takže C# je modernější, než Visual Basic? Šité na míru .NETu? CIL jako CIL! Jen proto, že má Visual Basic ve jméně Basic, neznamená to, že je starší a méně použitelný. Není, sám jste to napsal a pak to popřel, protiřečíte si.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

VB má syntaxi nejen hezčí, ale hlavně nesrovnatelně přehlednější. Ve VB lze rovněž psát kód na více řádků, ve verzi 10 už dokonce bez použití podtržítka. Subjektivní pocit to není, lepší a jednodušší syntaxi má Visual Basic a to je prostě holý fakt:

        End While
      Next
    End If
  End Sub
End Class

For x = 1 To 5
Next

        }
      }
    }
  }
}

for (var x = 1; x <= 5; x++)
{
}

Dále sem plácáte nesouvisející věci, bavíme se o syntaxi a ne o Frameworku, díky němuž mají oba jazyky rovnocenné možnosti při vývoji. Vaše tvrzení, že C# je modernější jazyk je přinejmenším úsměvné, Visual Basic .NET je zde jednak mnohem déle než C# a jednak jeho vývoj jde paralelně s C#. lépe vyhovuje dnešním potřebám, šití na míru .NETu - tak zde už skutečně nemáte vůbec žádné argumenty a proto střílíte od boku takové kriploviny.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

S vámi nemá cenu se o čemkolli bavit, v něčem máte pravdu v něčem ne .

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

Proč to nemá cenu? Protože na mojí argumentaci plácáte jen samé směšné hovadiny viz. předchozí příspěvek? Uveďte konkrétně alespoň jeden bod, ve kterém nemám pravdu, nebo zalezte někam do kouta a nechte si šití na míru .NETu pro nějaké vám podobné chudáky.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Se syntaxí jste se setkal, když ji zde uvádíte - mohl jste napsat odkud kód pochází a možná by byl jasnější.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky všem za odpovědi! K poslednímu příspěvku. Za prvé jsem předpokládal, že třída, by měla dávat smysl sama o sobě bez ohledu na okolnosti, zvlášť pokud se jedná o třídu, která se jmenuje "MyClass" nebo jak to bylo. Z druhé ano, setkal jsem se syntaxí, když jsem jí sem napsal, cítím se poníženě ... neměl jsem od Vás čekat analytické schopnosti u psaného textu.....

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

Vymyslíte nebo opíšete neznámo kde (jen renomovaný zdroj by měl váhu) kus kódu, sám konstatujete, že je špatný a čekáte, že tím bude někdo vážně zabývat. S názory k tomu naložte podle svého, ale rozhodně vás nikdo nechtěl ponižovat - nejde o vás, ale o kód, který jste napsal.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Vy neumíte číst? Já nenapsal, že kód je špatný, ale že mu nerozumím! Navíc to, z jakého je kód zdroje nemění nic na tom, jestli je dobrý nebo špatný.. Kód může být špatný, i kdyby ho psal sám Gates a dobře ho může napsat i tříleté dítě na kus toaletního papíru. Ale pokud to opravdu potřebujete vědět, kód je z tutoriálu o C# na http://www.programmingvideotutorials.com a nemá souvislost s žádnou jinou třídou....

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback