为什么.net中的String.Format(fmt,args,..)函数"共享"

Dan*_*lAt 2 .net c# vb.net

有什么理由为什么.net中的函数String.Format(至少对于C#和VB.net)共享而不是像.split,.substring或者普通函数那样.

会有什么不好的

Dim a as String = "1+2={0}".format(1+2) (会很好)

Dim a as String = String.Format("1+2={0}",1+2) (它的工作方式)

使用这个功能时总是让我感到烦恼 - 我经常这样做.

谢谢.

Joe*_*oey 5

也许Eric Lippert仍然有设计说明,但除此之外我不认为这可以准确回答.

不过,作为一种解决方法,如果您迫切需要这个,那么您可以编写一个扩展方法:

public static string Format(this string fmt, params object[] args) {
    return string.Format(fmt, args);
}
Run Code Online (Sandbox Code Playgroud)

我的猜测是大多数字符串方法实际上对字符串进行操作,以简单和可预见的方式对其进行转换,例如Substring,ReplacePadLeft.随着Format核心字符串仅仅是被应用到操作数集成到一个模式.从概念上大多数实例方法string可以被看作是操纵string(我知道,这是不是发生什么事,我只是画一幅画在这里),而静态方法只是使用它.

如上所述,只是一个猜测.最后,它可能只是一个决定,原因是及时丢失.