假设我有一个带有“private void Test(byte inputParam)
”签名的方法。我想将0,1和2传递给inputParam
。
那么如何使用这些值限制inputParam
?
当然我不想使用Enum,你提供更好的解决方案吗?
感谢...
答案 0 :(得分:3)
如果您需要编译时检查enum
是唯一的方法。
如果您对运行时检查没问题,可以在方法中轻松添加if
语句:
if(inputParam > 2)
throw new ArgumentException("inputParam");
答案 1 :(得分:3)
最接近的是使用C#4.0编写合同。这不是编译时分析而是静态分析。这非常接近,但仍然是运行时间。
private void Test(byte inputParam)
{
Contract.Assert(inputParam < 3, "Invalid inputParam");
...
}
您可以使用cccheck.exe
工具运行静态检查,作为项目CI(持续集成)的一部分,让您的同事在违反您添加的合同时了解CI失败。< / p>