2

我有一个函数,它有 1 个字符串类型的参数/参数:

        public void foo(String myParam)
        {
           //do something
        }

字符串的可能值受到限制(例如“test”、“test2”和“test3”),任何不同的 myParam 值都会导致错误。

是否可以在没有检查 myParam 值的 switch case 的情况下限制 myParam 的可能值?

也可以将不同的对象传递给我的函数,该函数包含我需要的真实值。

是否有标准/最佳方式解决方案?

4

3 回答 3

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();
}
于 2013-03-06T12:46:14.330 回答
1

限制这些值的唯一方法是检查它们。

您可以使用直接字符串比较或正则表达式匹配 - 如果字符串失败,匹配会抛出InvalidArgumentException.

另一种选择是创建一个包装字符串的类 - 在构造类时(将包装的字符串作为构造函数参数传递),您将按上述方式进行测试。

于 2013-03-06T12:45:54.710 回答
0

考虑Regular Expressions;.NET 提供了System.Text.RegularExpressions存在Regex-class 的命名空间:

public void foo(String myParam){

Regex regex = new Regex(@"test\d");
if(regex.IsMatch(myParam))
   //myParam matches regex
}

请参阅MSDN,其中还有关于 RegEx 的信息。

于 2013-03-06T12:47:38.917 回答