作为函数参数的特定值
本文关键字:参数 函数 | 更新日期: 2023-09-27 18:02:45
我有一个函数,它有1个参数/参数类型为String:
public void foo(String myParam)
{
//do something
}
字符串的可能值受到限制(例如:"test","test2"answers"test3"),任何不同的myParam值都会导致错误。
是否可以限制myParam的可能值,而不需要检查myParam的值?
也可以将不同的对象传递给我的函数,该对象包装了我需要的实际值。
是否有一个标准/最好的解决方案?
可以创建一个enum
public enum MyParam
{
test,
test2,
test3
}
并使用ToString
来获得enum
的字符串表示
public void foo(MyParam myParam)
{
if(!Enum.IsDefined(typeof(MyParam),myParam))
throw new ArgumentException();
myParamString = myParam.ToString();
}
限制这些值的唯一方法是检查它们。
您可以使用直接字符串比较或正则表达式匹配-如果字符串失败匹配抛出一个InvalidArgumentException
。
另一种选择是创建一个包装字符串的类——在类的构造中(将包装的字符串作为构造函数参数传入),您将像上面那样进行测试。
考虑Regular Expressions
;.NET提供了命名空间System.Text.RegularExpressions
,其中有一个Regex
类:
public void foo(String myParam){
Regex regex = new Regex(@"test'd");
if(regex.IsMatch(myParam))
//myParam matches regex
}
请参阅MSDN,那里也有关于RegEx的信息