c#2.0中不允许使用默认参数说明符错误

时间:2013-07-10 17:51:35

标签: c# c#-2.0

我在以下程序代码块中收到此错误。我正在使用c#和.net 2.0。它在代码的第一行中的 decimals = 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]);
    }

3 个答案:

答案 0 :(得分:5)

默认参数在.Net 2中不可用。

它们只能在.Net 4.0中使用:

http://msdn.microsoft.com/en-us/library/dd264739.aspx

答案 1 :(得分:3)

如果您需要此功能,则必须恢复重载方法,因为在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]);
}

答案 2 :(得分:1)

C# 4.0中引入的默认参数更具体。但是,只要您在.Net framework 2.0中构建解决方案,就可以在VS2010中使用它们。从答案here -

  

自1.0以来CLR一直支持默认参数。语言   就像VB.Net从一开始就一直在使用它们。而第一个   支持它们的C#版本是4.0,它仍然可以生成有效的代码   对于2.0 CLR,实际上是这样做的。因此您可以使用默认值   2010年的参数如果您的目标是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