我在程序的以下代码块中收到了这个错误。我正在将c#与.net 2.0一起使用。它在代码的第一行显示了小数=2中的错误。请帮助
private string formatSizeBinary(Int64 size, Int32 decimals = 2)
{
string[] sizes = { "Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };
double formattedSize = size;
Int32 sizeIndex = 0;
while (formattedSize >= 1024 & sizeIndex < sizes.Length)
{
formattedSize /= 1024;
sizeIndex += 1;
}
return string.Format("{0} {1}", Math.Round(formattedSize, decimals).ToString(), sizes[sizeIndex]);
}
默认参数在.Net 2中不可用。
它们仅在.Net 4.0:中可用
http://msdn.microsoft.com/en-us/library/dd264739.aspx
如果您想要此功能,则必须恢复重载该方法,因为在C#2.0中"不允许使用默认参数说明符"。
private string formatSizeBinary(Int64 size)
{
return formatSizeBinary(size, 2);
}
private string formatSizeBinary(Int64 size, Int32 decimals)
{
string[] sizes = { "Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };
double formattedSize = size;
Int32 sizeIndex = 0;
while (formattedSize >= 1024 & sizeIndex < sizes.Length)
{
formattedSize /= 1024;
sizeIndex += 1;
}
return string.Format("{0} {1}", Math.Round(formattedSize, decimals).ToString(), sizes[sizeIndex]);
}
C# 4.0
中引入了更具体的默认参数。但是,只要您在VS2010
中构建解决方案,就可以在.Net framework 2.0
中使用它们。从这里的答案-
自1.0以来,CLR中一直支持默认参数。语言像VB.Net从一开始就一直在使用它们。而第一个支持它们的C#版本是4.0,它仍然可以生成有效的代码对于2.0 CLR,实际上是这样做的。因此,您可以使用默认值如果您的目标是3.5 CLR(或2.0、3.0等…)
这种类型的支持不限于默认参数。许多新的C#功能可以在旧版本的框架上使用,因为它们确实不依赖CLR更改。以下是上支持的其他一些CLR 2.0版及以上
命名参数:添加C#4.0
Lambda表达式:添加C#3.0
自动属性:添加C#3.0
扩展方法:添加C#3.0
Co/ContraVariance:添加C#4.0