25 EYLÜL 2008, PERŞEMBE
Galatasaray' operatör olarak 'doğrudan döküm?
Aşağıdaki kodu göz önünde bulundurun:
void Handler(object o, EventArgs e)
{
// I swear o is a string
string s = (string)o; // 1
//-OR-
string s = o as string; // 2
// -OR-
string s = o.ToString(); // 3
}
Tek tercih edilmesi gereken, kalıp, 3. iyi bir döküm değil, ama niyet olsun... ) ve üç tip arasındaki fark nedir?
CEVAP
25 EYLÜL 2008, PERŞEMBE
o
string
değilInvalidCastException
atar. Eğero
null
hatta eğer yoksa atars
o
.- Atarsa
o
string
Bir ise veya eğero
null
s
null
. Bu nedenle, yapamazsınız değer türleri (operatör asla bu durumdanull
dönebilir) ile kullanabilirsiniz. Yoksa atars
o
. o
null
NullReferenceException
neden olur.o.ToString()
s
, ne tür olursa olsun döndürdükleri ataro
.
Çoğu dönüşüm için kullanın 1 - basit ve anlaşılır. Neredeyse hiç bir şey doğru türde değil, ben genellikle bir istisna meydana gelecek beri 2 kullanmak eğilimindedir. Sadece bu iade-null hata kodları (=hata, özel durumlar kullanmak yerine, örneğin, return null) kullanan kötü tasarlanmış kütüphaneler işlevsellik türü için bir ihtiyaç gördüm.
3 dökme değildir ve sadece bir çağırma yöntemi. Dize olmayan bir nesnenin string gösterimini ihtiyacınız olduğunda kullanın.
Bunu Paylaş:
Koşullu operatör olamaz dökme örtülü o...
Döküm vs CLR 'kelime olarak'...
Python's "" operatör be...
Nasıl sözlük olarak değişken anahtar d...
'VE' '&&' operatör...