我想重写bool的TryParse方法以接受"yes“和”no“。我知道我想使用的方法(如下所示),但我不知道如何重写bool的方法。
... bool TryParse(string value, out bool result)
{
if (value == "yes")
{
result = true;
return true;
}
else if (value == "no")
{
result = false;
return true;
}
else
{
return bool.TryParse(value, result);
}
}发布于 2010-06-11 22:42:00
您不能重写静态方法。但是,您可以创建一个扩展方法。
public static bool TryParse(this string value, out bool result)
{
// For a case-insensitive compare, I recommend using
// "yes".Equals(value, StringComparison.OrdinalIgnoreCase);
if (value == "yes")
{
result = true;
return true;
}
if (value == "no")
{
result = false;
return true;
}
return bool.TryParse(value, out result);
}将其放在一个静态类中,并像这样调用代码:
string a = "yes";
bool isTrue;
bool canParse = a.TryParse(out isTrue);发布于 2010-06-11 22:40:15
TryParse是一种静态方法。您不能重写静态方法。
发布于 2010-06-11 22:43:19
TryParse是一个静态方法,你不能覆盖静态方法。
您可以始终尝试为字符串创建一个扩展方法来执行您想要的操作:
public static bool ParseYesNo(this string str, out bool val)
{
if(str.ToLowerInvariant() == "yes")
{
val = true;
return true;
}
else if (str.ToLowerInvariant() == "no")
{
val = false;
return true;
}
return bool.TryParse(str, out val);
}https://stackoverflow.com/questions/3023681
复制相似问题