假设我有一个简单的功能:
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本身中正确输入值,从而在每秒多次调用方法时消除不必要的检查(并降低性能)。 p>
答案 0 :(得分:1)
我不相信这是可能的。考虑一下这种情况,
NewNumber(x, y);
x
和y
是什么?编译器不一定知道输入是什么(例如x = Int32.Parse(Console.ReadLine());
)。
您提供了硬编码示例,也许您可能只使用具有硬编码值的函数,但编译器只知道5
和-5
是整数,而整数可以是文字{ {1}}或变量5, -5, etc
答案 1 :(得分:0)
我认为没有与编译器相关的参数参数检查。但是最好让你的方法中的参数检查(方法负责处理参数)并更好地记录它,这样调用者就知道应该将哪些数据传递给你的方法。