SORU
2 ŞUBAT 2010, Salı


Geri dönüş vs değişkenim (değişkenim) arasında bir fark var mı?

Bazı örnek bakıyordum C# kodu ve bir örnekte dönüş sarılmış olduğunu fark ettim ()'ler.

Her zaman yaptığım gibi

return myRV;

Yok bir fark yapıyor:

return (myRV);

CEVAP
2 ŞUBAT 2010, Salı


GÜNCELLEME: Bu soru the subject of my blog on 12 April 2010. Eğlenceli soru için teşekkürler!

Pratikte fark yok.

teoribir fark olabilir. Bu bir fark mevcut olabilir C üç ilginç noktaları# şartname var.

İlk olarak, temsilci türleri için anonim işlevler ve ifade ağaçları dönüşüm. Aşağıdakileri göz önünde bulundurun:

Func<int> F1() { return ()=>1; }
Func<int> F2() { return (()=>1); }

F1 açıkça yasal. F2? Teknik olarak, hayır. The spec bir dönüşüm olduğunu bölüm 6.5 diyorlambda ifadesiuyumlu bir temsilci türü için. Birlambda ifadesi? Hayır. Birifadesi programlama dilinde * sembolübu bir içerirlambda ifadesi.

Derleyici küçük spec ihlal etti ve senin için parantez atar Visual C#.

İkinci:

int M() { return 1; }
Func<int> F3() { return M; }
Func<int> F4() { return (M); }

F3 yasal. F4. Hayır. Bölüm 7.5.3 programlama dilinde * sembolü bir ifade yöntemi, bir grup içerebilir belirtir. Yine, size kolaylık sağlamak için biz belirtimi ihlal ve dönüştürme izin ver.

Üçüncü:

enum E { None }
E F5() { return 0; }
E F6() { return (0); }

F5 yasal. F6? Hayır. Spec herhangi bir numaralandırılmış türü için birebir sıfırdan bir dönüşüm olduğunu belirtiyor. "(0)" literal sıfır değil, bir parantez literal sıfır yapılarak bir parantez izledi. Belirtimi biz burada bir ihlal ve aslında herhangi bir izinsürekli ifade sıfıra eşit derlemeve sadece gerçek sıfır.

Her durumda, teknik olarak bunu yapmak yasadışı olmasına rağmen kaçmak, izin veriyoruz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ASUS

    ASUS

    22 EKİM 2005
  • kndx

    kndx

    11 Mart 2006
  • Matthew Pearce

    Matthew Pear

    9 AĞUSTOS 2009