Koşullu operatör olamaz dökme örtülü olarak? | Netgez.com
SORU
7 ÅžUBAT 2010, Pazar


Koşullu operatör olamaz dökme örtülü olarak?

# Cilvesi bu küçük C ile biraz tıkandım:

Verilen deÄŸiÅŸkenler:

Boolean aBoolValue;
Byte aByteValue;

Aşağıdaki derler:

if (aBoolValue) 
    aByteValue = 1; 
else 
    aByteValue = 0;

Ama bu olmaz:

aByteValue = aBoolValue ? 1 : 0;

Hata diyor ki: "Cannot convert türü örtülü olarak''''." bayt int

Ve tabii ki, bu ucubeyi derleme:

aByteValue = aBoolValue ? (byte)1 : (byte)0;

Burada neler oluyor?

DÜZENLEME:

VS2008 C# 3.5 kullanılarak

CEVAP
7 ÅžUBAT 2010, Pazar


Bu oldukça sık sorulan bir soru.

C#, neredeyse her zaman dışarıdan içeriden bir sebep. Gördüğünüzde

x = y;

x, y tipi nedir, tipi ve y tipi tayini x ile uyumlu olup olmadığını öğrenmeliyiz. Ama y tipi çalışma dışarı çıktığımızda x türü ne olduğunu biliyoruz aslında kullanmıyoruz.

Birden fazla x olabilir, çünkü:

void M(int x) { }
void M(string x) { }
...
M(y); // y is assigned to either int x or string x depending on the type of y

Bizgerekifade türünü bulmak mümkünolmadanatanmış olmanın ne olduğunu bilmek. Tür bilgi akışıdışarıbir ifade, değiliçinebir ifade.

Çalışmak, bu tür koşullu ifade, biz iş türü sonucu ve alternatif ifadeler, çekme, daha genel iki tür, ve o olur bu tür koşullu deyim. Sizin örnekte, koşullu ifadesinin tipi "int", ve değil, sürekli bir durum ifade sürekli doğru ya da sürekli yanlış değilse). Sabit olduğundan, sonuç sabit değildir; ne zaman derleyici sebep sadece değerleri türlerinden değil, byte atayabilirsiniz.

Tüm bu kurallara istisna lambda ifadeleri yazın bilgiyoklambda içine içerik akışı. Bu mantık doğru almak çok zor oldu.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • BenjiManTV

    BenjiManTV

    20 Mart 2011
  • justintimberlakeVEVO

    justintimber

    2 EYLÜL 2009