Convert.ToBool(string,IFormatProvider)忽略IFormatProvider

时间:2017-02-07 08:08:47

标签: c# .net base-class-library

所以it appears Convert.ToBoolean(string, IFormatProvider)完全忽略了给定的IFormatProvider

ReferenceSource似乎同意:

public static bool ToBoolean(String value, IFormatProvider provider) {
    if (value == null)
        return false;
    Boolean.Parse(value);
}

但是,尽管如此, documentation会宣传人们期望的行为不,这不是真的:正如@tyranid指出的那样,我会失明。

进一步挖掘,存在Convert.ToBoolean(object, IFormatProvider)重载,它在给定值上调用IConvertible.ToBoolean(IFormatProvider)。宾果,对吧?只需加上价值,你就变得金黄了。

可悲的是,System.String该方法的实施如下:

bool IConvertible.ToBoolean(IFormatProvider provider) {
    return Convert.ToBoolean(this, provider);
}

所以我们回到我们开始的地方。

这似乎是一个框架中的巨大疏忽,否则通常是连贯的。

也许这是一个人们想象的难题?

更重要的是:你们中的任何人都知道一种解决方法吗?是否应该用巨大的switch来处理所有不同的可能和虚假的价值?

奇怪的是,要么我的谷歌生锈了,要么这个问题没有多少争论。

0 个答案:

没有答案