Ce vi se pare ciudat in urmatorul cod?
int value;
if(!int.TryParse(text.ToString(), out value))
{
value = 0;
}
In mod default, toate tipurile de numere de tip value type au valoarea default 0. Din aceasta cauza nu mai este nevoie sa setam value 0. Ajunge sa avem doar urmatorul cod:int value;
int.TryParse(text.ToString(), out value);
In cazul in care vrem sa obtinem valoarea default pentru orice tip de data putem sa ne folosim de "default". Acest keyword returneaza null pentru toate tipurile referinta si 0 (zero) pentru value type. In cazul structuriilor acesta o sa returneze structura noastra, iar fiecare element din structura o sa fie inializat cu default value pentru acesta.var value1 = default(int); // 0
var value2 = default(double); // 0
public struct Point
{
public int x, y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}
var value3 = default(Point); // X si Y o sa fie 0
var value 4 = default(MyCustomClass) // null
In cazul in care vrem ca codul nostru sa fie mai usor de inteles putem ca in momentul in care il declaram pe value sa il setam cu default(int) sau cu 0. Eu prefer a doua varianta deoarece este mult mai usor de citit.
Problema cu bucata nr.2 de cod (`int value;
ReplyDeleteint.TryParse(text.ToString(), out value);`) este ca daca iti vine zero nu stii daca zero era efectiv in string-ul respectiv sau a esuat parse-area...
Drept. In primul exemplu, se seta valoarea default la 0 daca parsa a esuat (nu mai era nevoie sa executam sau sa logam ceva daca aceasta a eusat). In al doilea exemplu se obtine acelasi comportament, valoarea default fiind setata pe 0.
Delete