如何控制变量的最大值?

时间:2019-03-23 15:37:03

标签: c# int global-variables console-application

正如标题所述,我想将技能,固定和运气整数的最大值设置为相关* Max整数的值。 * Max int值是在程序启动期间随机设置的,并且在程序运行期间会更改常规值。在某些情况下,*最大值会在播放过程中增加或减少。

public static int skillMax = 0;
public static int stamMax = 0;
public static int luckMax = 0;
public static int skill = skillMax;
public static int stam = stamMax;
public static int luck = luckMax;

由于我对C#的了解仍处于起步阶段,因此我没有做太多尝试。但是,我已经在互联网上进行了广泛的搜索,但是除了MinValue和MaxValue字段以及这段没有任何解释的代码外,找不到任何东西:

protected int m_cans;

public int Cans
{
    get { return m_cans; }
    set {
        m_cans = Math.Min(value, 10);
    }
}

在此先感谢您提出的任何建议!

2 个答案:

答案 0 :(得分:1)

代码说明:Cans是一个属性。属性提供对类或结构字段(变量)的受控访问。它们由两个称为get的方法来返回值,以及两个称为set的方法来分配值。一个属性也可以只有一个getter或一个setter。

属性Cans将其值存储在所谓的后备字段中。这里m_cans。设置器通过关键字value获取新值。

Math.Min(value, 10)返回两个参数中的最小值。也就是说,例如,如果value为8,则将8分配给m_cans。如果value为12,则将10分配给m_cans

您可以像这样使用此属性

var obj = new MyCalss(); // Replace by your real class or struct name.
obj.Cans = 20; // Calls the setter with `value` = 20.
int x = obj.Cans; // Calls the getter and returns 10;

属性有助于实现a test example的原则。


您可以轻松地在此示例中修改您的变量。通常,类级别变量(字段)以_开头,以将其与局部变量(即在方法中声明的变量)区分开来。属性用PascalCase编写。

private static int _skillMax; // Fields are automatically initialized to the default
                              // value of their type. For `int` this is `0`.
public static int SkillMax
{
    get { return _skillMax; }
    set {
        _skillMax = value;
        _skill = _skillMax; // Automatically initializes the initial value of Skill.
                            // At program start up you only need to set `SkillMax`.
    }
}

private static int _skill;
public static int Skill
{
    get { return _skill; }
    set { _skill = Math.Min(value, _skillMax); }
}

答案 1 :(得分:0)

创建方法以更新值

private static void UpdateSkill(int newValue)
{
  skill = newValue;
  skillMax = newValue > skillMax ? newValue : skillMax;
}