限制C#方法中参数的值

时间:2014-01-11 07:25:44

标签: c# parameters

假设我有一个带有“private void Test(byte inputParam)”签名的方法。我想将0,1和2传递给inputParam

那么如何使用这些值限制inputParam? 当然我不想使用Enum,你提供更好的解决方案吗?

感谢...

2 个答案:

答案 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>