Triviality pro C#   zodpovězená otázka

C#, VB.NET

Zdravím a předem se omlouvám - téma nespadá do zaměření Webu.

Ale stále častěji se zde otíráme o jazyk C# a více či méně se ukazuje, že nemůže být na škodu nahlédnout i pod pokličku tohoto Microsoftem dost preferovaného jazyka.

Měl bych proto jednu prosbu k autorům stránek - nebylo-li by možno do diskusních fór doplnit i skupinu pro dotazy směřované na tento jazyk - myslím, že jich postupem doby bude přibývat.

A současně bych poprosil o shovívavost s mými banálními dotazy (leč prozatím jsem se vybavoval pouze literaturou zaměřenou na VB a knihy o C# mi jaksi v knihovně scházejí, takže než se jimi vybavím...):

Měl bych 2 dotazy. S pomocí hlavně článku pana Linharta jsem se chtěl pustit do našich VB lekcí z rubruky "začínáme", leč narazil jsem hned na začátku na úplnou trivialitu.

Jak v C# provést prachobyčejnou konverzi typu dat?

Zkoušel jsem najít analogické řešení pro úplně první příklad seriálu článků, kde je jednoduchý výpočet

TextBox3.text=CInt(textbox1.text)+CInt(textbob2.text)

bohužel jsem zjistil, že C# není nadáno takovým stupněm "vnitřní" inteligence jako VB a že si tedy odmítá fůru věcí "domýšlet" sám.

Zkusil jsem tedy konverzi dle pana Linharta, leč zápis

...(int)textBox1.text ....

mi to nebere s tím, že převod String na Int není možný.

Po delším bloumání jsem došel ke vztahu

textBox3.Text = Convert.ToString(Convert.ToInt32(textBox1.Text)+Convert.ToInt32(textBox2.Text)) ;

kterýžto zápis mi sice funguje, leč připadá mi na tu trivialitu, kterou řeší, až příliš ukecaným a komplikovaným.

Protože se jedná o velice častou úlohu, rád bych se zeptal, jak to má vypadat správně?

Druhý dotaz se týká zápisu

this.button1.Click += new System.EventHandler(this.button1_Click);

co tento zápis vlastně představuje. Ne nejde mi o jednoduchou funkcionalitu, spíše o formální tvar tohoto zápisu.

Je mi jasné, že tímto zápisem přidám tlačítku obsluhu jeho události "Click", ale jak chápat formát toho zápisu. Je to pouze nějaký syntaktický úzus a s pravou podstatou matematického operátoru += to nemá nic společného, nebo lze zápis chápat tak, že mohu k jedné události přiřadit i více obslužných kódů, nějak jako:

this.button1.Click += new System.EventHandler(this.button1_Click1);
this.button1.Click += new System.EventHandler(this.button1_Click2);

A lze zase naopak obsloužit více událostí jedním kódem (to předpokládám, že by jít mělo):

this.button1.Click += new System.EventHandler(this.buttons_Click);
this.button2.Click += new System.EventHandler(this.buttons_Click);

?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
//C#
TextBox3.Text = (int.Parse(TextBox1.Text) + int.Parse(TextBox2.Text)).ToString()


'VB.NET
TextBox3.Text = (Integer.Parse(TextBox1.Text) + Integer.Parse(TextBox2.Text)).ToString()
'nebo
TextBox3.Text = CInt(TextBox1.Text) + CInt(TextBox2.Text)

Máte pravdu, C# není vůbec flexibilní co se týče konverze typů. (int)TextBox1.Text znamená to samé co ve VB.NET DirectCast(TextBox1.Text, Integer) což také selže, protože se jedná o konverzi, kde jeden typ musí dědit od nebo implementovat druhý typ. Nadruhou stranu to poskytuje vyšší výkon než CInt nebo CType.

//C#
this.button1.Click += new System.EventHandler(this.button1_Click);
//nebo
button1.Click = new EventHandler(button1_Click);


'VB.NET
AddHandler button1.Click, AddressOf button1_Click

Máte opět pravdu že operátor += je tam pro možnost přiřazení jedné obslužné procedury více stejným událostem. Ve VB.NET byste použil buď několikrát AddHandler nebo několikrát Handles (v případě deklarativního přístupu)

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

Děkuji za Vaši ochotu zabývat se i mými začátečnickými dotazy, i za Vaše odpovědi.

nahlásit spamnahlásit spam 0 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