将for和if循环组合在一起

时间:2013-01-25 15:02:43

标签: c# loops for-loop

编程和阅读如何预订的新手。问题是关于循环。我有以下代码:

public bool DoThisJob(string job, int numShift) {
        if (!string.IsNullOrEmpty(currentJob))
            return false;
        for (int i = 0; i < jobsICanDo.Length; i++) {
            if (jobsICanDo[i] == job) {
                currentJob = job;
                this.shiftsToWork = numberOfShifts;
                shiftsWorked = 0;
                return true;
            }
        return false;

如果currentJob字符串不为空,则返回false或返回true?没有 else 语句,那么如果它是真的,我们怎么知道怎么做?

接下来运行 for循环并再次运行for循环,因为它返回false或true?最后运行一个自我解释的if语句。

5 个答案:

答案 0 :(得分:1)

由于“返回”声明,没有别的。它立即中止函数的执行并返回调用函数。你可以用else写它,它的功能也一样。

答案 1 :(得分:0)

There is no else statement so how do we know what to do if it is true?.

if ... else(或经典称为if .. then .. else)构造else中,如果是可选的,如果没有,它将落入if块之外的下一个语句,这种情况下是for陈述

您的上述功能可以等同于

public bool DoThisJob(string job, int numShift) {
        if (!string.IsNullOrEmpty(currentJob))
            return false;
        else {
            for (int i = 0; i < jobsICanDo.Length; i++) {
                if (jobsICanDo[i] == job) {
                    currentJob = job;
                    this.shiftsToWork = numberOfShifts;
                    shiftsWorked = 0;
                    return true;
                }
            return false;
        }

答案 2 :(得分:0)

如果currentJob字符串为null,则不会运行if语句,并且它将进入for循环。

如果for循环中的条件触发它返回true,则该方法返回true,并且永远不会到达最后一个返回。

如果for循环没有返回true,它将落在最后一行,该方法将返回false。

答案 3 :(得分:0)

return语句在该点停止执行该函数并将控制返回给调用过程。

public bool DoThisJob(string job, int numShift) {
        if (!string.IsNullOrEmpty(currentJob))
            return false; // If it is not empty then function call returns from this statement

        // Else, flow control falls through and below code is executed
        for (int i = 0; i < jobsICanDo.Length; i++) {
            if (jobsICanDo[i] == job) {
                currentJob = job;
                this.shiftsToWork = numberOfShifts;
                shiftsWorked = 0;
                return true;
            }

        return false;
        }

我希望,这澄清了这个问题。

答案 4 :(得分:0)

您的功能可以简化如下,无需循环;

public bool DoThisJob(string job, int numShift) {

    if (!string.IsNullOrEmpty(currentJob) || !jobsICanDo.Contains<string>(job))
    {
       //if currentJob NOT null/empty OR 
       //job is not in the jobsICanDo[] array
       return false;
    }
    else
    {
        currentJob = job;
        this.shiftsToWork = numberOfShifts;
        shiftsWorked = 0;
        return true;
    }
}