声明方法的默认参数时出错

时间:2016-09-07 11:47:03

标签: c# function methods default-parameters

我正在使用默认参数,但我收到错误

  

'regularExpression'的默认参数值必须是编译时   恒定

以下是方法签名:

public static PIPE.DataTypes.BuyFlow.Entities.Question GetEmailAddressQuestion(string regularExpression = RegularExpressions.EmailAddressRegex, int rank = 1, bool isRequired = true)
{
}

以下是财产:

public static string EmailAddressRegex
{
    get {
            string emailAddressRegex = @"^[A-Za-z0-9\._%\+\-]+@([A-Za-z0-9\-]{1,40}\.)+([A-Za-z0-9]{2,4}|museum)$";
            return emailAddressRegex;
        }
}

2 个答案:

答案 0 :(得分:4)

就像错误信息所说的那样。默认参数必须是常量(在编译时)。

EmailAddressRegex的Getter可以在运行时返回不同的值。编译器不知道它始终是相同的值。

所以将EmailAddressRegex更改为const string比编译器错误消失。

E.g。

public const string EmailAddressRegex = @"^[A-Za-z0-9\._%\+\-]+@([A-Za-z0-9\-]{1,40}\.)+([A-Za-z0-9]{2,4}|museum)$";

答案 1 :(得分:1)

可选参数的默认值必须是编译时常量。

在您的情况下,解决方法是:

public const string EmailAddressRegex = @"^[A-Za-z0-9\._%\+\-]+@([A-Za-z0-9\-]{1,40}\.)+([A-Za-z0-9]{2,4}|museum)$";                 

更多细节.. MSDN