如何控制变量的最大值



正如标题所说,我想将技能、斯塔姆和运气整数的最大值设置为相关的 *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# 的了解仍处于起步阶段,因此我没有尝试太多。但是,我已经在互联网上广泛搜索了,除了最小值和最大值字段以及这段没有解释的代码之外,找不到任何东西:

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

提前感谢您给我的任何建议!

代码说明: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;

属性有助于实现信息隐藏原则。


您可以轻松地将此示例调整为变量。通常,类级变量(字段(前面加上_以将它们与局部变量(即在方法中声明的变量(区分开来。属性是用 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); }
}

创建更新值的方法

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

相关内容

  • 没有找到相关文章

最新更新