0

我有一个程序需要测试是否可以将字符串转换为双精度值,但对转换后的双精度值没有用处。

我可以在自己的 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

我会创建一个扩展方法。由于您无法创建静态扩展方法(该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 回答