【发布时间】:2018-06-06 17:36:24
【问题描述】:
假设我有一个简单的函数:
public static int NewNumber(int lowestValue, int highiestValue) {}
我想让编译器检查参数是否正确。例如,在这种情况下,开发人员可能会错误地(或故意)像这样调用方法:
NewNumber(5, -5);
在这种情况下这是错误的 - 开发人员撒了谎。
当然我可以在方法内部做一个简单的检查:
public static int NewNumber(int lowestValue, int highiestValue) {
if (highiestValue <= lowestValue) {
//Error
}
}
...它会完美地工作。但是,我很好奇开发人员在这种情况下是否可以做任何事情来限制这种行为,而无需额外检查方法本身。
编辑:找到了解决方案,但与 C# 无关
由于我在 Unity 中工作,我最终编写了自定义检查器,以便可以在 Unity Inspector 本身中正确输入值,从而在每秒多次调用该方法时消除不必要的检查(并降低性能)。
【问题讨论】:
-
你看过这个问题吗? stackoverflow.com/questions/6510171/…
-
The developer lied哈哈 -
你无法真正阻止开发人员撒谎。我们很擅长。
-
编译器现在应该解释变量名的含义吗?
-
@LarsTech 为什么不呢?如果函数每秒被调用 40、50、60 次或更多次,如果参数值从不改变,则所有变量检查都是完全不必要的。如果可以以不同的方式处理,为什么会浪费宝贵的 CPU 时间?而且我不是在谈论上述案例中的简单检查。
标签: c#