2016-03-31 25 views
-6

Player.ToString() yöntemimin, numaralı adı almak ve yazdırmak istiyorum. Ama kişi üzerinde toplam skoru yazdırmak istemiyor. Ben doğru soruyu anlamakPlayer nesnesinde ToString() öğesini nasıl uygularım?

class Player 
{ 
    public string Name { get; set; } 
    public List<Arrows> trow = new List<Arrows>(); 

    public Player(string name = "") 
    { 
     Name = name; 
    } 

    public override string ToString() 
    { 
     return Name; 
    } 
} 


class Arrows : Player 
{ 
    private int arrowOne; 
    private int arrowTwo; 
    private int arrowThree; 

    public Arrows(int arrowOne = 0, int arrowTwo = 0, int arrowThree = 0) 
    { 

     this.arrowOne = arrowOne; 
     this.arrowTwo = arrowTwo; 
     this.arrowThree = arrowThree; 
    } 

    public int GetScore() 
    { 
     return arrowOne + arrowTwo + arrowThree; 
    } 

    public override string ToString() 
    { 
     return string.Format("Din totala summa är {0}{1}", Name); 
    } 
} 
+0

Bu, ok sınıfınızın içinde "ToString" çağrısının olduğunu varsayalım. Eğer durum buysa, 'ToString' –

+0

'unuzun' string.Format 'yöntemine bir değer eklediniz. Lütfen buraya gönderdiğiniz kodu en aza indirin. Oyuncu nesnesi oluşturan ve player.ToString() çıkışlarını üreten bir ana yöntem oluşturmanızı öneririm. Bu işe yaramıyor mu? –

+0

Darren: Evet doğru, üzgünüm kötü explention vardı problem vardı. Evet, bu sorunun cevabını okuyor. ve ben okları böyle koymak için test var: return string.Format ("Din totala summa är {0} {1}", İsim, Oklar); Ardından, doğrulanabilen bir hata türü alıyorum. Thomas: Nasıl ima ettiğini gösterebilir misin? –

cevap

0

, sadece bu gibi görünecek şekilde ToString() yöntemini değiştirmek istiyorum:

public override string ToString() 
{ 
    return string.Format("Din totala summa är {0}{1}", Name, GetScore()); 
} 

Şimdi, söz konusu, muhtemelen var bir dizi başka problem. Arrows sınıfının Player sınıfını miras alması pek olası görünmüyor. Kalıtım, bir "bir" ilişki olduğunu ima eder. Yani Kodunuz ok grubunun oyuncusudur. Belli bir oyunda doğru olabileceğini düşünüyorum, ama bu çok sıra dışı bir tasarım ve gerçekten kastettiğiniz gibi görünmüyor. Öte yandan

, sizin Player sınıf zaten Arrows sınıf Player & hellip miras gerektiğini benim şüphe takviye Arrows nesneler (bir listesi vardır; o Arrows Player olurdu neden Player olduğunu doğru olsaydı bunların bir listesi?).

Maalesef, gerçekten burada ne yapmak istediğinizi bilmek için yeterli bilgi yok. Muhtemelen Player sınıfında ToString() yöntemini değiştirmelisiniz, ör. gibi bir şey: böyle

public override string ToString() 
{ 
    return string.Format("Din totala summa är {0}{1}", Name, trow.Count); 
} 

Ya da belki bir şey:

public override string ToString() 
{ 
    return string.Format("Din totala summa är {0}{1}", Name, trow.Sum(a => a.GetScore())); 
} 

Ama gerçekten kesin diyemeyiz.

İlgili konular