我正在使用默认参数,但我收到错误
'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;
}
}
答案 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