【发布时间】:2017-11-26 02:11:19
【问题描述】:
这是我目前的代码 - 我只是遍历一些列表并返回字符串。
public string CreateCharacterName (int category) {
string name = "";
if(category == 0) {
int r = Random.Range(0, Names(Roots("Characters", "CharacterNames"), 0).Count);
name = Names(Roots("Characters", "CharacterNames"), 0)[r];
}
return name;
}
我已经删掉了一堆类似的 if 语句,但是我想知道在得到结果之后是否应该将“返回名称”部分放入每个 if 语句中,或者这样就可以了是?两者都有效,我只是认为该方法将继续检查每个后续 if 语句对“类别”,然后返回字符串,这是正确的,是否有成本?
谢谢!
【问题讨论】:
-
如果其他语句实际上是普通的 if 语句而不是 else if 的一部分,那么您是正确的。但至于成本,除非比较往往变得超级复杂,否则可能可以忽略不计。
-
它们不会更复杂,但会有很多这类方法。是的,他们不是 else/if。
-
在得到结果后就调用
return通常被称为“提前输出”,这是一种通常用于避免不必要的计算/操作的优化技术。 -
Jon,如果它们是互斥的检查,那么它们也可能是 else,这样就不会发生不必要的检查。此外,如果超过 4 或 5 个,请考虑使用 switch 语句。既然你在这个方法中只是一个任务,你没有理由不能早点回来。
-
如果你把你的 if 变成 else-if,那么它就和在每个 if 中添加 return 一样。但是,在每个语句中添加返回行也使阅读变得更加困难