1

プログラムの次のコード ブロックでこのエラーが発生します。.net 2.0 で c# を使用しています。このエラーは、コードの最初の行で10 進数 =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]);
    }
4

3 に答える 3

5

デフォルト パラメータは .Net 2 では使用できませんでした。

それらは.Net 4.0でのみ利用可能になりました:

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

于 2013-07-10T17:54:51.417 に答える
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]);
}
于 2013-07-10T17:58:07.347 に答える
1

C# 4.0より具体的にするために、デフォルト パラメータが導入されました。ただし.Net framework 2.0、ソリューションを で構築している限り、それらを で使用することもできますVS2010ここの答えから-

CLR では、1.0 以降、既定のパラメーターがサポートされています。VB.Net のような言語は、最初からそれらを使用しています。それらをサポートする C# の最初のバージョンは 4.0 ですが、それでも 2.0 CLR の有効なコードを生成できます。したがって、3.5 CLR (または 2.0、3.0 など) をターゲットにしている場合は、2010 で既定のパラメーターを使用できます。

このタイプのサポートは、デフォルト パラメータに限定されません。多くの新しい C# 機能は、CLR の変更に依存しないため、古いバージョンのフレームワークでも使用できます。CLR バージョン 2.0 以降でサポートされているものをいくつか次に示します。

名前付き引数: C# 4.0 を追加

ラムダ式: C# 3.0 を追加

自動プロパティ: C# 3.0 を追加

拡張メソッド: C# 3.0 を追加

Co/ContraVariance: C# 4.0 を追加

于 2013-07-10T18:42:21.570 に答える