在Scope C之外更改变量#

0 c# scope

我是初学C#程序员,为了提高我的技能,我决定尝试使用Project Euler.网站上的第一个问题要求你找到1000和1000以下的所有倍数的总和.由于我基本上做了两次同样的事情,我做了一个方法来逐步增加一个基数,并添加总和所有的答案都是如此.

public static int SumOfMultiplication(int Base, int limit)
    {
        bool Escape = false;
        for (int mult = 1; Escape == true; mult++)
        {
            int Number = 0;
            int iSum = 0;
            Number = Base * mult;
            if (Number > limit)
                return iSum;
            else
                iSum = iSum + Number;

        }
Run Code Online (Sandbox Code Playgroud)

无论我为两个参数放入什么,它总是返回零.我99%肯定它与变量的范围有关,但我不知道如何解决它.所有帮助表示赞赏.

提前致谢,

山姆

Ed *_* S. 6

你的循环从未实际执行:

bool Escape = false;
for (int mult = 1; Escape == true; mult++)
Run Code Online (Sandbox Code Playgroud)

Escape最初设置为false,因此第一个测试失败(Escape == true返回false)并跳过循环体.

如果您尝试访问其定义范围之外的变量,编译器会告诉您,这不是问题所在.你也错过了一个返回声明,但这可能是一个错字.

我还要注意,你的代码永远不会检查要添加到总和的数字是否实际上是3或5的倍数.还有其他问题(例如,iSum在循环内部声明并0在每次迭代后初始化)但是我会让你解决这个问题,因为这是练习.在这样的情况下调试器是你的朋友:)

编辑:如果您需要实际逻辑方面的帮助,我很乐意提供帮助,但我想如果可能的话,您希望自己解决问题.