特定值作为函数的参数

时间:2013-03-06 12:43:49

标签: c# asp.net

我有一个函数,它有一个String类型的参数/参数:

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

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

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

也可以将不同的对象传递给我的函数,它包含了我需要的真正价值。

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

3 个答案:

答案 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的信息。