C# 为什么.net中有String.Format(fmt,args,…)函数;“共享”;
net中的函数String.Format(至少对于C#和VB.net)共享而不像.split、.substring或任何普通函数,这有什么合理的原因吗 有什么不好的C# 为什么.net中有String.Format(fmt,args,…)函数;“共享”;,c#,.net,vb.net,C#,.net,Vb.net,net中的函数String.Format(至少对于C#和VB.net)共享而不像.split、.substring或任何普通函数,这有什么合理的原因吗 有什么不好的 Dim a as String=“1+2={0}”。格式(1+2)(最好) vs Dim a as String=String.Format(“1+2={0}”,1+2)(它的工作方式) 当我使用这个函数时,它总是让我感到不舒服——我经常这样做 Thx.这只是一个设计决策-它真的可以双向工作。我认为他们之所以决定将其设置为静态/共享
Dim a as String=“1+2={0}”。格式(1+2)
(最好)
vs
Dim a as String=String.Format(“1+2={0}”,1+2)
(它的工作方式)
当我使用这个函数时,它总是让我感到不舒服——我经常这样做
Thx.这只是一个设计决策-它真的可以双向工作。我认为他们之所以决定将其设置为静态/共享,是因为(1)历史原因,使其更类似于C/C++(2)因为你可以说格式字符串不是“真实”文本,在大多数情况下,人们使用一些内联常量,如果这是一个函数的参数,读起来会更好。可能还有关于这个的设计说明,但除此之外,我认为这不能准确回答 不过,作为一种解决方法,如果您迫切需要此功能,那么您可以编写一个扩展方法:
public static string Format(this string fmt, params object[] args) {
return string.Format(fmt, args);
}
我的猜测是,大多数字符串方法实际上是对字符串进行操作的,以一种简单且可预见的方式对其进行转换,例如子字符串
、替换
和PadLeft
。使用Format
时,核心字符串只是用于将操作数集成到中的一种模式。从概念上讲,string
上的大多数实例方法都可以被视为操纵字符串(我知道,这不是发生的事情,我只是在这里画一幅图),而静态方法只是处理它
如前所述,这只是一个猜测。最后,这可能只是一个决定,原因没有及时解释。比较
,Concat
和加入
也被分享。这些不会打扰你吗?是的-特别是Join,但这并没有改变我的问题…我知道-已经编写了这样的函数,结果发现它至少需要.net3.5-我们的技术前沿公司仍然在运行。net2.0扩展方法只需要C#3编译器,生成的代码只在.NET 2上运行良好。是的,但是对于asp.NET来说,更改编译器(afaik)并不是那么容易。我没有运行库的设计说明,只是语言,对不起。