我有一个函数,它有一个String类型的参数/参数:
public void foo(String myParam)
{
//do something
}
字符串的可能值受到限制(例如“test”,“test2”和“test3”),myParam的任何不同值都会导致错误。
是否可以在没有检查myParam值的switch case的情况下限制myParam的可能值?
也可以将不同的对象传递给我的函数,它包含了我需要的真正价值。
是否有标准/最佳解决方案?
答案 0 :(得分:10)
您可以创建枚举
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();
}
答案 1 :(得分:1)
限制此类值的唯一方法是检查它们。
您可以使用直接字符串比较或正则表达式匹配 - 如果字符串失败,则匹配会引发InvalidArgumentException
。
另一种选择是创建一个包装字符串的类 - 在构造类时(将包装的字符串作为构造函数参数传递),您将按上述方式进行测试。
答案 2 :(得分:0)
考虑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的信息。