/ / Która jest lepsza - wartość (int) lub wartość jako int? [duplikat] - c #, przesyłanie

Która jest lepsza - (int) wartość lub wartość jako int? [duplicate] - c #, casting

Możliwe duplikaty:
Direct casting vs operator „as”?

Czy ktoś może mi wyjaśnić różnicę i który z nich jest lepszy? Wiem, że w niektórych sytuacjach mogę używać tylko jednego lub drugiego.

(int)value

value as int

Odpowiedzi:

2 dla odpowiedzi № 1

Ten ostatni jest nieważny. Możesz użyć

value as int?

jeśli chcesz „przekonwertować, jeśli to możliwe”. To wolniejsze niż

if (value is int)
{
int x = (int) value;
...
}

chociaż. Tego prawdopodobnie powinieneś użyć, jeśli nie jesteś tego pewien value w rzeczywistości jest int. Jeśli jednak kod jest taki, że jeśli value isn "t an int, co oznacza błąd, a następnie wystarczy bezwarunkowo wysłać:

int x = (int) value;

Jeśli to się nie powiedzie, wygeneruje wyjątek - który jest ogólnie odpowiedni dla błędu.


0 dla odpowiedzi nr 2

ja value as int spowoduje błąd kompilatora, ponieważ operator must be used with a reference type or nullable type ("int" is a non-nullable value type). Więc kiedy masz do czynienia z strukturami, zawsze używasz (int)value a z Przedmiotami wolę obj as SomeType ponieważ jest wyraźniejszy i bardziej bezpośredni do rzeczy, a ponadto automatycznie obsługuje wyjątki (jeśli wystąpi błąd podczas rzutowania, operator zwraca wartość null).