如何強制構造函數的參數具有特定值? 在下面的例子中,我想只有2-4名玩家。C#強制構造函數的參數接收特定值
我想輸入一個錯誤的_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個玩家,兩千塊錢。 2名球員,1000塊錢。 3名球員,700塊錢。 4名球員,500塊錢。
我該如何承諾?
一種常見的方式做,這是從構造函數中拋出'ArgumentOutOfRangeException',如果玩家的數量是不能接受的。這隻在運行時執行,而不是在編譯時執行。 –
爲什麼你想要這個編譯錯誤?你將不得不創建一個有你需要的限制的自定義類型。對限制的任何改變都需要改變類型,或者增加更多的類型。很多開銷只是爲了得到編譯錯誤。如果錢不是範圍(如玩家數量),那麼您可以簡單地將該屬性設置爲只讀並根據傳入玩家的數量將其設置在構造函數內。 –