Es ist zweifelhaft, dass wollen Sie tun möchten, ist eine gute Idee. Aber Tatsache ist, es ist nicht wirklich klar was Sie tun möchten.
Ich habe ein vages Gefühl, dass Sie wollen, jedes Mal, wenn die score
Eigenschaft festgelegt ist, den Wert der ttlScore
Eigenschaft hinzuzufügen. Wenn ja, dann sicher ... das kannst du, aber es ist eine schreckliche Idee. Die Verwendung einer Eigenschaft zur Darstellung dieser Operation wäre sehr verwirrend. stattdessen sollten Sie eine Methode, z. benannte AddScore()
, so ist es klar, den Code zu lesen, dass jedes Mal, wenn ein Score an die Methode übergeben wird, wird es zur laufenden Summe hinzugefügt.
Zum Beispiel so etwas wie dieses:
public class Bes : player
{
public int MostRecentScore { get; private set; }
public int TotalScore { get; private set; }
public int AddScore(int score)
{
this.MostRecentScore = score;
return this.TotalScore += score;
}
}
Dann wird die MostRecentScore
Eigenschaft wird noch zeigen, was die jüngste Punktzahl wurde, während die TotalScore
Eigenschaft wird die laufende Summe zeigen, aber die Klassenmitglieder machen deutlich, dass Sie müssen AddScore()
anrufen, um eine neue Punktzahl zu melden, und das wird dafür sorgen, beide Eigenschaften von Interesse zu aktualisieren.
Dieses Beispiel verwendet natürlich nicht den virtual
Aspekt Ihres Codebeispiels. Es ist nicht klar aus Ihrer Frage, warum die computescore()
Methode wurde tatsächlich virtuell gemacht, und es muss wahrscheinlich nicht —, wenn Sie wirklich wollen, dass die Basisklasse über Scoring wissen, dann gehören die punktebezogenen Eigenschaften auch dort, und Keines der Mitglieder muss virtual
— sein, also habe ich es weggelassen.
Wenn dies Ihre Frage nicht beantwortet, bitte edit your question, so dass es klarer ist, was Sie versuchen zu tun. Stellen Sie eine gute Minimal, Complete, and Verifiable code example bereit, die deutlich zeigt, was Sie versucht haben, zusammen mit einer detaillierten und spezifischen Erklärung, was der Code tut und was er stattdessen tun soll.
Was ist das Problem mit Ihrem Code? Jede Ausnahme oder unerwartetes Verhalten? – Peter
Jedes Mal, wenn ich Daten einlege (bes1.score = 30), ist der von computeScore zurückgegebene Wert immer der Wert, der kürzlich eingegeben wurde. Ich hatte erwartet, die Gesamtpunktzahl zu sehen. Ich habe es versucht, indem ich 3 Werte eingegeben habe. bes1.score = 10; bes1.score = 20; bes1.score = 30; Die Gesamtpunktzahl ist 30; Ich weiß nicht, was ich tun soll. – KuysChan
Was Sie tun sollten, ist ADD in die Partitur, anstatt ihr zuzuordnen. Wie 'bes1.score = bes1.score + 10;' –