Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么.net中有String.Format(fmt,args,…)函数;“共享”;_C#_.net_Vb.net - Fatal编程技术网

C# 为什么.net中有String.Format(fmt,args,…)函数;“共享”;

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.这只是一个设计决策-它真的可以双向工作。我认为他们之所以决定将其设置为静态/共享

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.

这只是一个设计决策-它真的可以双向工作。我认为他们之所以决定将其设置为静态/共享,是因为(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)并不是那么容易。我没有运行库的设计说明,只是语言,对不起。