Diskuze: Sčítání po kliknutí.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 18 zpráv z 18.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Convert se používá pouze mezi čísly, z textu se vždy parsuje, viz jeden z prvních tutoriálů zde: http://www.itnetwork.cz/…-a-parsovani
Kód upravíš takto:
int plus = int.Parse(label2.Text) + 1;
Jinak je samozřejmě hloupost to stále převádět, ale měl bys to mít uložené v lokální proměnné formuláře, nebo ještě lépe objektu.
Tak proč ta třída convert může vzít taky string a přeconvertovat ho na
int?
A proč by nemohla, convert ti to vymění mezi datový typy, ale tomu asi ještě nerozumíš.
Asi nerozumím. Tak mi teda vysvětli jaký je rozdíl? Oboje vrací int, tak nevím proč by to nefungovalo.
string num = "10";
int n1 = int.Parse(num);
int n2 = Convert.ToInt32(num);
David Hartinger v tomhle myslím neměl pravdu. Tady je definice z stackoverflow:
Have a look in reflector:
int.Parse("32"):
public static int Parse(string s)
{
return System.Number.ParseInt32(s, NumberStyles.Integer,
NumberFormatInfo.CurrentInfo);
}
which is a call to:
internal static unsafe int ParseInt32(string s, NumberStyles style, NumberFormatInfo info)
{
byte* stackBuffer = stackalloc byte[1 * 0x72];
NumberBuffer number = new NumberBuffer(stackBuffer);
int num = 0;
StringToNumber(s, style, ref number, info, false);
if ((style & NumberStyles.AllowHexSpecifier) != NumberStyles.None)
{
if (!HexNumberToInt32(ref number, ref num))
{
throw new OverflowException(Environment.GetResourceString("Overflow_Int32"));
}
return num;
}
if (!NumberToInt32(ref number, ref num))
{
throw new OverflowException(Environment.GetResourceString("Overflow_Int32"));
}
return num;
}
Convert.ToInt32("32"):
public static int ToInt32(string value)
{
if (value == null)
{
return 0;
}
return int.Parse(value, CultureInfo.CurrentCulture);
}
Jednoduše metoda konvert vrací 0 pokud je parametr nulový. Jinak volá
metodu int.Parse
Přečti si tutorial, tam je hned v druhem nebo třetim díle že v c# musíš přetypovávat string na čísla pomocí int.Parse("10"). Pokud ti to leze na obtíž tak si vyber jazyk kde to dělat nemusíš.
Tato diskuze se nějak zvrhává. Pánové, cokoli se převádí z textu se vždy parsuje. Že něco jiného někdy volá Parse je hezké, ale není to důvod Parse implicitně nevolat, k tomu tam přeci je. Parsování počítá s chybami a odstraňuje třeba mezery okolo řetězce, rozdíl je i kdy se zaokrouhlí a podobně. Convert by se mělo používat jen mezi čísly.
Misaz: Parsování není přetypování, to je něco jiného.
Neodpověděl jsi na otázku, jaký je mezi tím rozdíl. Resp. vůbec nechápu proč mi říkáš, že musím přetypovat string na int - unikámi pointa proč jsi to vůbec psal?
Tak ještě jednou, nechci se s tebou hádat, ale skusým ti to vysvětlit. int.Parse() parsuje vždy ze stringu, zatímco convert ti to převed v podstatě z čehokoliv. Na převod string > int se vždy používalo parse.
Jak říkám, až budeš mít více zkušeností i z OOP tak možná pochopíš na co tam je Convert. Teď to ber tak, že je tam pro srandu králikům.
Stále jsi mi neodpověděl rozdíl mezi těma dvouma metodama.
Když už do toho pleteš i oop, tak mě tím tuplem zajímá jaký je mezi nima rozdíl. Aby jsme si to ujasnili, já se neptám naco je třída Convert, ale jaký je rozdíl mezi těma dvouma metodama. Kdybys řekl, že je určitá konvence používat Parse, když převádíš string na int, tak sklapnu. Jen se musíš blbě povyšovat, ale moc ti to nejde? Googlovat umí každý, ty očividně mluvíš pokaždé o nečem jiném a neumíš normálně odpovědět.
Btw, řekl bych že hádka vypadá jinak. Já se pouze ptám a ty mi odpovídáš. Ale asi máme každý jinačí názor na to, jak vypadá hádka.
To snad pochopíš z názvu... Parse se zajímá o to, co je na ASCII pozici každého charu. Convert jen o ASCII...
Představ si že jsem tam ten rozdíl napsal. Cituji sám sebe:
int.Parse() parsuje vždy ze stringu, zatímco convert ti to převed v podstatě z čehokoliv.
Nemyslím, si, že jsi v pozici, aby jsi se tu s námi mohl takhle dohadovat, když máš problém s parsováním čísla. Jak jsem ti psal, parsování je převod z textu, to je to, co ty tady děláš. Convert nedělá převod z textu, ale konverzi. To znamená, že vymyslí výsledek mezi nekompatibilními typy a třeba když mu dáš místo stringu null, vrátí ti nulu, zatímco Parse hodí chybu (což je správně, když v řetězci nic není).
Zobrazeno 18 zpráv z 18.