0

对于 C# 浮点类型,我知道一种“文化效应”是可以使用“,”而不是“。”,但对于整数类型,可能的影响是什么?

我问从

 Int32.TryParse() 

将接受 CultureInfo.InvariantCulture (IFormatProvider) 参数,但

 (T)Enum.Parse(typeof(T), enumString, true);

即使 Enum.Parse() 接受整数或枚举文字也不会。

示例:客户端将 Int32.ToString() 与一种文化一起使用,而服务器将 Enum.Parse() 与不同的文化一起使用(当前因为没有 arg)。

4

1 回答 1

1

文档不清楚实际行为是什么,所以我查看了Enum.Parse(在 .NET 4.5 中)的源代码。从输入字符串解析整数值时,它将始终使用不变的区域性(不是当前区域性)。具体来说,解析整数的行是:

temp = Convert.ChangeType(value, underlyingType, CultureInfo.InvariantCulture);

Char.IsDigit通过检查第一个字符是否为数字(使用)'+'、 或来识别数值'-'。因此,如果您在客户端使用不变区域性转换为字符串并Enum.Parse在服务器上使用并且它们都使用 .NET 4.5,那么您将是安全的。但是,我不确定这是旧版本框架的行为还是未来版本的保证。

于 2013-07-27T03:14:11.517 回答