我想提供一个int
参数的函数,该参数必须在预定范围内(例如10-20)。我希望它在编译时中生效,理想情况是在智能感知时间 - 这意味着每当用户键入MyFunction(30)
时,30
都会突出显示为编译错误。
我意识到编译器无法知道编译时的值是什么 - 例如MyFunction(new Random().Next(100))
。因此,我还应该在运行时和throw ArgumentOutOfRangeException
检查参数。但是,我确实希望编译器/ IDE突出显示已知的超出范围的编译时值。
我试过了:
void MyFunction([System.ComponentModel.DataAnnotations.Range(10,20)] int param)
但这并没有在任何地方强制执行。
回应评论:
MyFunc(fileSize:1000000)
时,他会收到编译错误。显然,枚举不适合这种模式。