作为函数参数的特定值

本文关键字:参数 函数 | 更新日期: 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的信息