我想知道为什么ReSharper会警告我,当我尝试将字符串转换为字符串而不提供特定的文化信息时。
是否存在可以在两个系统上进行不同转换的情况?
示例:
var str = ' '.ToString();
默认情况下会弹出以下ReSharper警告:
明确指定字符串转换中的文化。
答案 0 :(得分:10)
这是因为ReSharper看到该类型实现了IConvertible
ToString(IFormatProvider)
。
System.Char
本身不会公开带有该签名的公共方法,即使documentation指示它也是如此:
如果您使用IFormatProvider
参数查看重载,您会看到此通知:
实现
IConvertible.ToString(IFormatProvider)
和这句话:
忽略提供程序参数;它不参与此操作。
ReSharper只是注意到该方法的存在,并且在没有ToString
的情况下调用IFormatProvider
并因此抱怨,在这种情况下,您可以放心地忽略它。
答案 1 :(得分:-2)
我发现了http://csharpindepth.com/Articles/General/Strings.aspx
Unicode的一些奇怪之处导致字符串和字符串的奇怪 字符处理。许多字符串方法都是文化敏感的 - 换句话说,他们所做的事情取决于当前的文化 线。 例如,您希望“i”.toUpper()返回什么? 大多数人会说“我”,但在土耳其语中,正确答案是“İ” (Unicode U + 0130,“拉丁语大写我上面有点”)