SORU
28 Mayıs 2013, Salı


Olmayan geçersiz bir yöntem eksik iade bildirimini derler

Bir yerde bir durumla karşılaştımnon-void yöntemibir eksikdönüşaçıklama ve kod hala derler. While döngüsünden sonra ifadeleri olduğunu biliyorumulaşılamazve asla idam olurdu (ölü kod). Ama neden derleyici bile dönen bir şey hakkında uyarmak değil mi? Ya da neden bir dil bize olmayan geçersiz bir yöntem sonsuz bir döngüye sahip ve hiçbir şey vermediğin için izin verecek?

public int doNotReturnAnything() {
    while(true) {
        //do something
    }
    //no return statement
}

Eğer eklerim bir ara deyim bile koşullu bir) süre döngü, derleyici şikayet eder bu rezil hatalar: 'Yöntem değil dönüş değeri'(güneş Tutulması) ve 'tüm kod yolları dönüş değeri'(Visual Studio)

public int doNotReturnAnything() {
    while(true) {
        if(mustReturn) break;
        //do something
    }
    //no return statement
}

Bu hem Java ve C doğrudur#

CEVAP
28 Mayıs 2013, Salı


Neden bir dili bizden olmayan geçersiz bir yöntem sonsuz bir döngüye sahip ve hiçbir şey vermediğin için izin verecek?

Non-void yöntem olduğu için kuraldöndüren her kod yolu bir değer döndürmesi gerekirkural programınızda memnun olduğunu , ve dönüş değeri döndürür sıfır kod yollar dışında sıfır. Kural değildir "non-void her yöntemi döndüren bir kod yolu olması gerekir".

Bu saplama yöntemleri gibi yazma sağlar:

IEnumerator IEnumerable.GetEnumerator() 
{ 
    throw new NotImplementedException(); 
}

Olmayan geçersiz bir yöntem.vardırarayüzü karşılamak için olmayan geçersiz bir yöntem olduğu. Ama bir şey geri gelmez saçma çünkü bu uygulama yasadışı yapmak gibi görünüyor.

Senin yöntemi vardır ulaşılamıyor son noktası çünkü bir goto (unutma, while(true) sadece daha keyifli bir şekilde yazmak goto) yerine throw (başka bir form goto) konuyla ilgisi yok.

Neden derleyici bile dönen bir şey hakkında uyarmak değil mi?

Derleyici kodu yanlış olduğuna iyi bir kanıt var çünkü. Birisi while(true) yazdı ve bunu yapan kişi ne yaptığını biliyormuş gibi görünmektedir.

Nerede C erişilebilirlik analizi hakkında daha fazla okuyabilirim#?

Bu konuda benim makalelere bakın, burada:

ATBG: de facto and de jure reachability

Ve ayrıca C# özellikleri okuma düşünebilirsiniz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ADDVOiCE

    ADDVOiCE

    28 Mayıs 2009
  • Ludique

    Ludique

    21 NİSAN 2009
  • metal571

    metal571

    30 Mayıs 2006