c# - 如何使用方法添加多个变化的值

标签 c# winforms methods field

我正在为一个 friend 做一个个人项目,但遇到了一些障碍。我可以像现在这样继续写一些真正冗余的代码,但我觉得必须有一种更有效的方法来做到这一点。

我想做的是编写一个方法,将添加三个值并将结果显示到“技能修改器”标题下的文本框中(参见屏幕截图)。我需要获取方法或一系列方法来为每项技能执行此操作。它需要获取 Balance、Climb、Escape Artist 等的 Skill Modifier 值...

Screenshot of Skills Screen

该方法类似于“CalculateSM”

我目前拥有的:

        private void btnUpdate_Click(object sender, EventArgs e)
    {
        //AM + R + MM =SM
        //AM = Ability Modifier
        //R = Rank
        //MM = Misc Modifier
        //SM = Skill Modifier

        decimal balanceMod = balanceAM.Value + balanceR.Value + balanceMM.Value;
        balanceSM.Text = balanceMod.ToString();

        decimal climbMod = climbAM.Value + climbR.Value + climbMM.Value;
        climbSM.Text = climbMod.ToString();

        //etc...
    }

对我来说,本质上最大的问题是弄清楚如何设计一种方法来处理这么多不同的字段名称并以相同的方式添加它们。我想避免为每项技能复制和粘贴相同的两行代码五十次。

任何想法将不胜感激!谢谢。

最佳答案

像这样使用字段不是很面向对象。您可能想要引入一个 Skills 类,该类实现了计算最终技能分数的方法,然后将一些 Skills 对象用于不同的技能。

public class Skill
{
    int ability, rank, misc;

    public Skill(int ability, int rank, int misc)
    {
        this.ability = ability;
        this.rank = rank;
        this.misc = misc;
    }

    public int Score { get { return ability + rank + misc; }
}

Skill balance = new Skill(10, 1, 1);
textBalance.Text = balance.Score.ToString();

Skill programming = new Skill(10, 100, 0);
textProgramming.Text = programming.Score.ToString();

另外,想出一种巧妙的方法将技能与您的用户控件联系起来。您不会喜欢最终得到 50 个除了名称不同外都相似的文本框。例如,第一步可能是将它们全部连接到同一个事件处理程序。

关于c# - 如何使用方法添加多个变化的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7569751/

相关文章:

c# - 默认情况下,子窗体是否在主窗体的同一线程上运行?

methods - 具有相同名称和数量但类型不同的 Golang 方法

java从字符串中提取

c# - 如何在 linq where 子句中使用函数的返回值?

c# - 方法重载中的 Expression<Func<T,bool>> 与 Func<T,bool>

c# - 如何在 View 模型中的 View 上使用路由命令

java - 尝试在字符串中的每个元音之前添加一个字符

c# - 使用命令行获取进程 ID

python - 在 python 中使用 menuStrip 及其项目

c# - 如何创建一个保持在应用程序前台的 C# Windows 窗体