为方法声明默认参数时出错
Error in declaring default parameters for method
我正在使用默认参数,但出现错误
Default parameter value for 'regularExpression' must be a compile time
constant
这里是方法签名:
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;
}
}
就像错误信息所说的那样。默认参数必须是常量(在编译时)。
EmailAddressRegex
的 Getter 在运行时可以 return 不同的值。编译器不知道这始终是相同的值。
因此将 EmailAddressRegex
更改为 const string
编译器错误将消失。
例如
public const string EmailAddressRegex = @"^[A-Za-z0-9\._%\+\-]+@([A-Za-z0-9\-]{1,40}\.)+([A-Za-z0-9]{2,4}|museum)$";
可选参数的默认值必须是编译时常量。
对于您的情况,解决方法是:
public const string EmailAddressRegex = @"^[A-Za-z0-9\._%\+\-]+@([A-Za-z0-9\-]{1,40}\.)+([A-Za-z0-9]{2,4}|museum)$";
这里有更多详细信息.. MSDN
我正在使用默认参数,但出现错误
Default parameter value for 'regularExpression' must be a compile time constant
这里是方法签名:
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;
}
}
就像错误信息所说的那样。默认参数必须是常量(在编译时)。
EmailAddressRegex
的 Getter 在运行时可以 return 不同的值。编译器不知道这始终是相同的值。
因此将 EmailAddressRegex
更改为 const string
编译器错误将消失。
例如
public const string EmailAddressRegex = @"^[A-Za-z0-9\._%\+\-]+@([A-Za-z0-9\-]{1,40}\.)+([A-Za-z0-9]{2,4}|museum)$";
可选参数的默认值必须是编译时常量。
对于您的情况,解决方法是:
public const string EmailAddressRegex = @"^[A-Za-z0-9\._%\+\-]+@([A-Za-z0-9\-]{1,40}\.)+([A-Za-z0-9]{2,4}|museum)$";
这里有更多详细信息.. MSDN