我想重写bool
的TryParse
方法来接受“是”和“否”。我知道我想要使用的方法(下面),但我不知道如何覆盖bool
的方法。如何覆盖TryParse?
... 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);
}
}
个人而言,我喜欢我的Parse方法返回'Nullable <>',如果字符串不能被解析,返回值为'null'。这消除了对out参数的需要,并且提供了很好的调用语法。 例如'bool a =“blah”.ParseBool()? false;' – Greg 2010-06-11 14:54:15
'Nullables'确实很方便解析,但我试图覆盖现有的'TryParse'方法。现在我正在写我自己的东西,我可能会这样做。此外,我正在使用'StringComparison.OrdinalIgnoreCase',但没有把它放在我的例子中,只是为了让它看起来更干净。最后,当你的输出类型是“bool”时,为什么要将你的方法标记为“TryParseBoolean”? (虽然我想如果你改用'Nullables',你需要这个命名。) – dlras2 2010-06-11 14:59:46
@ cyclotis04 - 好的电话。由于out参数,名称TryParse确实足够。 – Greg 2010-06-11 15:09:55