我的IEnumerable<int>C#方法中有一个可选的类型参数.我可以用任何东西来初始化它null,例如固定的值列表吗?
Ily*_*nov 10
不可以.您只能编译时间常数.您可以指定为null然后
void SomeMethod(IEnumerable<int> list = null)
{
if(list == null)
list = new List<int>{1,2,3};
}
Run Code Online (Sandbox Code Playgroud)
下一个代码片段来自着名的C# in Depth书籍Jon Skeet.他建议使用null作为not set参数的一种指标,它可能具有有意义的默认值.
static void AppendTimestamp(string filename,
string message,
Encoding encoding = null,
DateTime? timestamp = null)
{
Encoding realEncoding = encoding ?? Encoding.UTF8;
DateTime realTimestamp = timestamp ?? DateTime.Now;
using (TextWriter writer = new StreamWriter(filename, true, realEncoding))
{
writer.WriteLine("{0:s}: {1}", realTimestamp, message);
}
}
Run Code Online (Sandbox Code Playgroud)
用法
AppendTimestamp("utf8.txt", "First message");
AppendTimestamp("ascii.txt", "ASCII", Encoding.ASCII);
AppendTimestamp("utf8.txt", "Message in the future", null, new DateTime(2030, 1, 1));
Run Code Online (Sandbox Code Playgroud)