2016-03-25 11 views
0

Kitaptaki bir örneği takip etmeye çalışıyordum ve daha sonra bir düğmeye basarak değerleri koymak istedim. Bu sadece temelleri anlamaya çalışan basit bir düzeltme olmalı.Özetten kullanılabilir bir Tamsayı'ya mı gidiyorsunuz?

abstract class Spaceship 
{ 
    abstract public void LaserHit(); 
} 
class CombatShip : Spaceship 
{ 
    public override void LaserHit(int L) 
    { 
     int L = 10; 
    } 
} 
public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void button_Click(object sender, RoutedEventArgs e) 
    { 
     CombatShip goliath = new CombatShip(); 
     int L = goliath.LaserHit() - 10; 


    } 
} 
+0

LaserHit yönteminiz bir tamsayı bekleniyor. Int L = goliath.LaserHit (10) 'yapmak istiyor musunuz? Yöntem, beklediği parametreyle de hiçbir şey yapmaz. –

+0

Kodda tam olarak ne yapmaya çalışıyorsunuz? Şu anda yöntem çağrısının yanlış kullanımı nedeniyle tamamen belirsizdir. –

+1

Sadece yanlış kullanım değil, aynı zamanda bu kodun hiçbir şekilde derlenmediğini söyleyebilirim. LaserHit yöntemini geçersiz kıl, soyut yöntemden farklı bir imzası vardır. Button_Click yönteminde bir değer (int?) Döndürdüğü gibi kullanılır, ancak her iki yöntem tanımı ve bildirimi geçersiz dönüş değerine sahiptir. SDJ, probleminizi çok daha açık bir şekilde belirtmeniz gerekiyor. – Christoph

cevap

2

LaserHit yönteminizin yöntem imzasına dikkat edin. Dönüş türü void -> bu yöntemin hiçbir şey döndürmeyeceği anlamına gelir. LaserHit tarafından döndürülen değeri atamaya çalışıyorsunuz, ancak hiçbir şey döndürmek için tasarlanmamış.

Hem soyut sınıfta hem de somut sınıfta yöntem imzasını int olarak değiştirin ve istediğiniz şeyi elde edersiniz.

abstract class Spaceship 
{ 
    abstract public int LaserHit(); 
} 
class CombatShip : Spaceship 
{ 
    public override int LaserHit() 
    { 
     int L = 10; 
     return L; 
    } 
} 
+2

Lütfen dikkat, kodunuzu derleme :) –

+1

Teşekkürler, soyut sınıf içinde LaserHit imzalı imza –

+2

Dikkatinize bir kez daha dikkat edin :) –

İlgili konular