【发布时间】:2014-12-20 06:55:19
【问题描述】:
问题:
我想为自定义dice 构建一个类。但它还应提供以下内容:
- 每个
side可以包含另一个dice -
sides的数量应该是动态可扩展的,但必须至少包含一个- 逻辑上
dice需要有一个currentSide
- 逻辑上
- 每个
side都有一个property,它提供了这一面的内容(在D6 上为"4")
到目前为止一切顺利,我创建了两个类dice 和side,并为他们提供了我认为他们需要的属性。
public class Side
{
//public bool HasDice { get { return Dice != null; } } - Removed not needed
public Dice Dice { get; set; }
public string Value { get; set; }
}
public class Dice
{
public ObservableCollection<Side> Sides { get; set; }
public string Name { get; set; }
public Side CurrentSide { get; set; }
}
是这样吗,我从来没有做过任何递归类所以我不确定?
另外,我如何检测相同的骰子和面是否“无休止地”指代它们自己。
喜欢:
D1.CurrentSide = Side1; Side1.Dice = D1;
我应该在构建对象时检查这个吗?
编辑:
如果 D1 掷出 S2,则不应掷出 D2。还有
D2.Dice = Null。如果 D1 掷出 S1,则应掷出 D2。
如果 D2 掷出 S1,则应掷出 D3。
- 如果 D2 掷出 S2,则应掷出 D4。
D3 和 D4 不应触发任何滚动。
【问题讨论】:
-
抛开良好的编程习惯不谈,这个设计是谁提出的?公共财产说一方是否有骰子?这对你有任何意义吗?
-
Side中的Dice引用是指该面所属的骰子,还是您实际上在其他骰子之上有骰子? -
也许它是一个超级骰子,所以每一边都有另一个骰子? @NielsKeurentjes 这太不专业了+1。
-
所以
Side.Dice可以选择引用任何Dice,除了它包含的Dice?
标签: c# class recursion self-reference dice