我有一串这样的文字:
var foo = "FooBar";
Run Code Online (Sandbox Code Playgroud)
我想声明第二个字符串,bar并使其等于我的第一个和第四个字符foo,所以我这样做:
var bar = foo[0].ToString() + foo[3].ToString();
Run Code Online (Sandbox Code Playgroud)
这可以按预期工作,但ReSharper建议我把它Culture.InvariantCulture放在我的括号内,所以这一行最终如下:
var bar = foo[0].ToString(CultureInfo.InvariantCulture)
+ foo[3].ToString(CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
这是什么意思,它会影响我的程序运行方式吗?
我正在尝试编写一个函数,它基本上将字符串数组转换为字符串数组,其中数组中的所有双精度数都舍入为我设置的小数位数.数组中也可以有字符串,它们根本没有双重值.
string[,] values = new string[1, 3];
values[0, 0] = "hello";
values[0, 1] = "0.123";
values[0, 2] = "0,123";
int decimalPlaces = 2;
double tmp;
string format = "F" + decimalPlaces.ToString();
IFormatProvider provider = CultureInfo.InvariantCulture;
for (int i = 0; i < values.GetLength(0); i++)
{
for (int j = 0; j < values.GetLength(1); j++)
{
if (double.TryParse(values[i, j], out tmp))
{
values[i, j] = tmp.ToString(format, provider);
}
}
}
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
结果必须是:"你好","0.12","0.12",但它是"你好","123.00","0.12"将以错误的方式对待逗号.有没有人有一个简单而有效的解决方案?