我有一个程序需要测试以查看字符串是否可以转换为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);
}
}
}
答案 0 :(得分:2)
我会创建一个extension method。由于您无法创建静态扩展方法(TryParse
方法是静态方法),因此您必须将其放在其他位置。我看到您的参数只是一个字符串,您可以将扩展方法添加到string
,例如名为IsDouble
。
namespace MyNamespace
{
public static class StringExtensions
{
public static bool IsDouble(this string value)
{
double outDouble;
return Double.TryParse(value, out outDouble);
}
}
}
答案 1 :(得分:1)
此处的问题是,您隐藏 {em>拥有 System.Double
类型的System.Double
类型。这意味着当您尝试调用System.Double.TryParse
时,编译器会查看您的类,这就是报告的错误。
您需要更改名称空间或类名。