C#force构造函数的参数用于接收特定值

时间:2017-10-21 23:37:08

标签: c# constructor compilation

如何强制构造函数的参数具有特定值? 在下面的例子中,我想只有2-4名玩家。

当我输入错误的_numOfPlayers值时,我想有一个编译错误。 警告编码人员以错误的方式使用构造函数的另一种方法将受到欢迎。

    public class Rules
{
    public Rules(int _numOfPlayers)
    {

        numOfPlayers = _numOfPlayers;
    }
 public readonly int numOfPlayers;

}

更复杂的情况:

    public class Rules
{
    public Rules(int _numOfPlayers, int _money)
    {

        numOfPlayers = _numOfPlayers;
        money = _money;
    }
 public readonly int numOfPlayers;
 public readonly int money;

}

这里我想只有特定的组合: 2名球员,2000钱。 2名球员,1000块钱。 3名球员,700钱。 4名球员,500金钱。

我怎么能保证呢?

1 个答案:

答案 0 :(得分:3)

在C#的编译时,没有实用的方法来约束这样的类型。我认为你能在你的例子中做的最好的事情可能是创建一个只有有效值的enum。如果您使用除这些值之外的任何内容,那么您的代码将无法编译。

enum PlayerCount {Two = 2, Three, Four};

然后你的构造函数看起来像这样:

public Rules(PlayerCount count)
{
   numOfPlayers = (int)count;
}