我遇到了一个很奇怪的问题。我的c#交互给了我:
> string.Format("{0:P1}", 0, CultureInfo.InvariantCulture)
"0.0%"
但是,在调试器中,相同的表达式会产生其他结果:
> string.Format("{0:P1}", 0, CultureInfo.InvariantCulture)
"0.0 %"
有人知道这是怎么发生的吗?
好吧,看来我把参数顺序弄乱了。我应该有
string.Format(CultureInfo.InvariantCulture, "{0:P1}", 0)
显然,编译器和运行时可以接受多余的格式参数,并且很乐意为您丢弃它们。
OP中的表达式将使用当前文化,正如@JeroenMostert所建议的那样,当前文化在框架和核心之间可能确实具有不同的语义。