繁体   English   中英

设置C#可选参数的默认值

[英]Setting the default value of a C# Optional Parameter

每当我尝试将可选参数的默认值设置为资源文件中的某些内容时,我得到的编译时错误为

'message'的默认参数值必须是编译时常量。

有什么办法可以改变资源文件的工作方式来实现这个目标吗?

public void ValidationError(string fieldName, 
                            string message = ValidationMessages.ContactNotFound)

在此, ValidationMessages是一个资源文件。

一种选择是将默认值设为null ,然后适当填充:

public void ValidationError(string fieldName, string message = null)
{
    string realMessage = message ?? ValidationMessages.ContactNotFound;
    ...
}

当然,这仅在您不希望将null作为真值时才有效。

另一个可能的选择是进行预构建步骤,根据资源创建一个充满const字符串的文件; 然后你可以引用那些争论。 但这会很尴尬。

不,您将无法直接在默认情况下使资源工作。 您需要做的是将默认值设置为null,然后在参数在方法体中具有默认值时执行资源查找。

另一个选择是将您的方法分成两个,并让一个重载调用另一个,如下所示:

public void ValidationError(string fieldName)
{ 
    ValidationError(fieldName, ValidationMessages.ContactNotFound);
}

public void ValidationError(string fieldName, string message)
{
    ...
}

这种方式还允许您将null作为message的值message ,以防它也是该参数的有效值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM