如何使用方法添加多个不断变化的值

Tec*_*Cat 2 c# methods field winforms

我正在为一位朋友做个人项目,并且遇到了一些障碍.我可以像我一样继续编写一些非常冗余的代码,但我觉得必须有一种更有效的方法.

我要做的是编写一个方法,它将添加三个值并将结果显示在"Skill Modifier"标题下的文本框中(参见屏幕截图).我需要获得方法或一系列方法来为每项技能做到这一点.它需要获得Balance,Climb,Escape Artist等的Skill Modifier值...

技能屏幕的屏幕截图

该方法类似于"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...
    }
Run Code Online (Sandbox Code Playgroud)

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

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

mti*_*ijn 5

使用这样的字段不是非常面向对象的.你可能想要引入一个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();
Run Code Online (Sandbox Code Playgroud)

另外,想一想将技能与用户控制联系起来的巧妙方法.除了一点名字之外,你不会喜欢最后的50个文本框.例如,第一步可能是将它们连接到同一个事件处理程序.