为什么有人会在C#和VB .NET中使用String.Format
,而不是使用连接运算符( VB中的&
和C#中的+
)?
主要区别是什么?为什么每个人都对使用String.Format
如此感兴趣?我很好奇。
发布于 2011-01-13 01:31:56
除了更容易阅读和添加更多的运算符之外,如果您的应用程序是国际化的,这也是有益的。很多时候,变量是数字或关键字,它们在不同的语言中会有不同的顺序。通过使用String.Format,您的代码可以保持不变,而不同的字符串将进入资源文件。因此,代码最终会是
String.Format(resource.GetString("MyResourceString"), str1, str2, str3);
而您的资源字符串最终是
中文:"blah blah {0} blah blah {1} blah {2}"
俄语:"{0} blet blet blet {2} blet {1}"
俄语可能对如何处理事物有不同的规则,因此顺序不同或句子结构也不同。
发布于 2011-01-13 01:13:58
首先,我发现
string s = String.Format(
"Your order {0} will be delivered on {1:yyyy-MM-dd}. Your total cost is {2:C}.",
orderNumber,
orderDeliveryDate,
orderCost
);
更易于读取、写入和维护
string s = "Your order " +
orderNumber.ToString() +
" will be delivered on " +
orderDeliveryDate.ToString("yyyy-MM-dd") +
"." +
"Your total cost is " +
orderCost.ToString("C") +
".";
看看以下代码的可维护性有多高
string s = String.Format(
"Year = {0:yyyy}, Month = {0:MM}, Day = {0:dd}",
date
);
在另一种情况下,您必须重复date
三次。
其次,String.Format
提供的格式说明符在字符串输出方面为您提供了极大的灵活性,与仅使用普通的旧连接相比,这种方式更易于读取、写入和维护。此外,使用String.Format
可以更容易地解决文化问题。
第三,当性能确实很重要时,String.Format
将优于连接。在幕后,它使用StringBuilder
并避免使用Schlemiel the Painter problem。
发布于 2011-01-13 01:06:15
除了连接运算符之外,String.Format
还添加了许多选项,包括指定添加到字符串中的每个项目的特定格式的能力。
有关可能的详细信息,我建议阅读MSDN上标题为Composite Formatting的部分。它解释了String.Format
(以及xxx.WriteLine
和其他支持复合格式化的方法)相对于普通连接运算符的优势。
https://stackoverflow.com/questions/4671610
复制相似问题