[英]Circular Reference On C# Properties
可能這是一個新手問題,但這是。 我正在開發紙牌游戲,並且有一個名為Player的類。Player具有一個名為Partner(另一個Player)的屬性和另一個名為Points的屬性。
public class Player
{
public Player()
{
}
public Player Partner { get; set; }
private int points = 0;
public int Points
{
get { return points;}
set {
if (Partner != null) Partner.Points = value;
points = value;
} // -> Here is the problem cause p1.Partner = p2 and p2.Partner = p1
}
問題是:如何最輕松地為玩家設置Points屬性並自動設置其Partner Points屬性?
例如:
Player p1 = new Player();
Player p2 = new Player();
p1.Partner = p2;
p2.Partner = p1;
p1.Points = 10;
int p = p2.Points
p應該等於10
在此先感謝Marcelo Brazil <。
我想我會添加一個復合(thx @ noah)類“團隊”。
團隊具有“玩家”和“積分”的屬性。
public class Team
{
public Player[] Players { get; set; } //or Player1 and Player2, depends
public int Points { get; set; }
}
}
set {
points = value;
if (Partner != null && Partner.Points != value)
{
Partner.Points = value;
}
}
可以修復循環引用,但是讓他們都引用以獲取總積分的Partnership
對象會更干凈,並允許每個玩家也存儲他們已經得分的各個點。
將Points
屬性移出玩家類,然后將其移至Game
, Board
或Team
類。
如果您擁有Team
類,那么您甚至可能甚至不需要Player
上的Partner
屬性,而擁有Team
屬性。
將以下內容作為第一行添加到您的設置器中:
if (points == value && partner.Points == value) return
這應該停止您的無限遞歸。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.