SORU
27 EYLÜL 2010, PAZARTESİ


Neden atama deyimleri bir değeri döndürür?

Bu izin verilir:

int a, b, c;
a = b = c = 16;

string s = null;
while ((s = "Hello") != null) ;

Benim anladığım kadarıyla, atama s = ”Hello”; “Hello” s, atanacak neden ama işlemi herhangi bir değer geri dönmez. Eğer bu doğru olsaydı, o zaman ((s = "Hello") != null) null hiçbir şey için karşılaştırıldığında olabilir, çünkü bir hata üretir.

Atama deyimleri bir değer döndürmek için izin arkasındaki mantık nedir?

CEVAP
27 EYLÜL 2010, PAZARTESİ


Benim anladığım kadarıyla, atama s = ""; sadece neden "Merhaba ler atanacak, ancak bu işlem herhangi bir değer geri dönmez". Merhaba

Anlayışınız 100% doğru değil.Bu yanlış şeye inanıyorsunuz. bunun nedenini açıklayabilir misiniz?

Atama deyimleri bir değer döndürmek için izin arkasındaki mantık nedir?

Öncelikle, atamatablolarbir değer döndürmüyor. Atamaifadelerbir değeri döndürür. Bir atama ifadesi bir hukuki deyim; orada sadece bir avuç ifadesi olan hukuk deyimleri C#: örnek inşaat, artırma, eksiltme, çağırma ve atama ifadeleri kullanılabilir bir açıklama bekleniyor.

C ifadesinin tek bir tür vardır# değer bir tür, yani, void döndüren olarak yazılmış bir şey bir çağırma üretmez. İfade her türlü değer veya değişken ya da referans ya da özellik erişimi veya olay bir erişim ve benzeri üretir.

İfadeleri olarak yasal olan tüm ifadeler olduğuna dikkat edinyan etkileri için yararlı. Burada anahtar fikir, ve belki de atamaları açıklamaları gereken sezgilerinizi nedeni ve ifadeler değil bence. İdeal olarak, her ifade için tam bir yan etkisi var, ve bir ifade hiçbir yan etkisi.biraz yan etki code garip bir ifade içeriği olarak kullanılabilir.

Bu özelliği sağlayan arkasındaki mantık (1) sık sık uygun olduğu için ve (2) C gibi bir dilde deyimsel.

Bir soru yalvardı olmuştur not: neden bu C gibi bir dilde deyimsel?

Dennis Ritchie emin olmak için sormanız gerekiyor, ama benim tahminim atama hemen hemen her zaman geride bırakırsadece atanmış değerbir kayıt. C Bir çok "" bir çeşit dil. makine bulunur Bir dil özelliği olması akla yatkın ve C tasarımı ile uyum içinde görünüyor temelde anlamına gelen "ben sadece atanan değeri kullanarak devam ediyor. Çok kolay bu özellik için bir kod jeneratör yazmak; sadece değeri depolanmış atandı kasayı kullanmaya devam et.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fraser Raft

    Fraser Raft

    9 Mart 2010
  • Matt Stokes

    Matt Stokes

    22 Ocak 2008
  • TVNorge

    TVNorge

    5 EKİM 2006