String.Format vs ToString并使用InvariantCulture

我在这里有点困惑。

我该怎么用

Console.WriteLine((val/1085).ToString("N")); VS Console.WriteLine(String.Format("{0:N}", (val/1085))); 

另外我如何适应InvariantCulture? 任何最好的做法:)?

其实我更喜欢第三种forms:

 Console.WriteLine("{0:N}", val / 1085); 

Console.WriteLine可以为你做String.Format

Console.WriteLine不允许您提供文化。 如果这是你想要的,你仍然必须使用String.Format 。 如:

 String.Format(CultureInfo.InvariantCulture, "{0:N}", 123456789); 

我建议不要使用它,因为国际用户在阅读时会遇到问题。 对我来说123,456,789.00看起来很奇怪。

对于格式化+文化,我更喜欢:

  .ToString("####0.00",CultureInfo.InvariantCulture) 

要么

 .ToString("N",CultureInfo.InvariantCulture) 

在日期时间,可以同时使用它们。 我更喜欢使用并看到第一个解决方案(当然缺少括号)。

当某些字符串与某些参数有间隙时,String.Format会更有用。 然后它是一种杀手级方法,它可以很好地帮助您组织代码。