0

文字列を double に変換できるかどうかをテストする必要があるプログラムがありますが、変換された double 値は使用されません。

独自の NameSpace に独自の TryParse メソッドを作成することはできますが、出力パラメーターを持たない同じ名前空間にオーバーロードされた形式の関数を追加することはできませんか?

namespace System
{
    using System;

    /// <summary>
    /// TODO: Update summary.
    /// </summary>
    public class Double
    {
        public bool TryParse(string value)
        {
            double outDouble;
            return Double.TryParse(value, out outDouble);
        }
    }

}

次のエラーが表示されます。

Error   1   No overload for method 'TryParse' takes 2 arguments 

私のクラスは実際の Double クラスを隠しているためです。

アップデート:

これと同じエラー:

namespace System
{   
    /// <summary>
    /// TODO: Update summary.
    /// </summary>
    public static class Double
    {
        public static bool TryParse(string value)
        {
            double outDouble;
            return global::System.Double.TryParse(value, out outDouble);
        }
    }

}
4

2 に答える 2

2

拡張メソッドを作成します。静的Extensionメソッド(メソッドは静的メソッド)を作成できないため、TryParse別の場所に配置する必要があります。パラメータが単なる文字列であることがわかるのでstring、たとえば、という名前のに拡張メソッドを追加できますIsDouble

namespace MyNamespace
{
    public static class StringExtensions
    {
        public static bool IsDouble(this string value)
        {
            double outDouble;
            return Double.TryParse(value, out outDouble);
        }
    }
}
于 2012-10-18T17:56:43.167 に答える
1

ここでの問題は、自分のタイプを非表示にしていることです。これは、を呼び出そうとすると、コンパイラがクラスを調べていることを意味し、それが報告されているエラーです。System.Double System.DoubleSystem.Double.TryParse

名前空間またはクラス名を変更する必要があります。

于 2012-10-18T17:57:46.987 に答える