编程和阅读如何预订的新手。问题是关于循环。我有以下代码:
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语句。
答案 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;
}
}