我有一个IEnumerable类型的可选参数< int>在我的C#方法中.我可以使用null来初始化它,例如固定的价值清单?
解决方法
不可以.您只能编译时间常数.您可以指定为null然后
void SomeMethod(IEnumerable<int> list = null) { if(list == null) list = new List<int>{1,2,3}; }
下一段代码片段摘自Jon Skeet着名的C#深度书.他建议使用null作为参数的未设置指标,它可能具有有意义的默认值.
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); } }
AppendTimestamp("utf8.txt","First message"); AppendTimestamp("ascii.txt","ASCII",Encoding.ASCII); AppendTimestamp("utf8.txt","Message in the future",null,new DateTime(2030,1,1));