即使该项目仅适用于Windows,我还是尽可能地选择Environment.NewLine
胜过"\r\n"
。我想知道是否有一种方法可以将其用作可选参数的默认值。
考虑扩展方法
public static string ToSummaryString<T>(
this IEnumerable<T> items,
string delimiter = Environment.NewLine)
和编译时错误
“定界符”的默认参数值必须为编译时常量
我也尝试过使用参数属性,命运也很相似
public static string ToSummaryString<T>(
this IEnumerable<T> items,
[Optional, DefaultParameterValue(Environment.NewLine)] string delimiter)
属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式
那么有什么解决方法吗?还是我唯一的选择将其硬编码为"\r\n"
还是要求它?
答案 0 :(得分:0)
您可以用Null
替换默认值,然后在方法内部使用null-coalescing operator。像这样:
public static string ToSummaryString<T>(this IEnumerable<T> items, string delimiter = null)
{
var realDelimiter = delimiter ?? Environment.NewLine;
}
您也可以使用Method-Overloading,如@Dennis_E所述:编写2种方法;一个带有定界符,另一个没有定界符。
答案 1 :(得分:0)
在我看来,最好的方法是将默认值设置为null,然后在方法中检查该值。如果参数为null,则将默认值设置为“ \ r \ n”。更好的是,将该默认值放在资源文件中,以便您可以根据需要进行更改,而不必重新编译应用程序。 (当然,将值放在配置文件中也可以)