Maybe Eric Lippert still has the design notes on that but apart from that I don't think this can be accurately answered.
Still, as a workaround, if you desperately need this, then you can write an extension method:
public static string Format(this string fmt, params object[] args) {
return string.Format(fmt, args);
}
My guess is that most string methods actually operate on the string, transforming it in a straightforward and foreseeable manner, such as Substring
, Replace
and PadLeft
. With Format
the core string is just a pattern that is applied to integrate the operands into. Conceptually most instance methods on string
can be seen as manipulating a string
(I know, this isn't what happens, I'm just painting a picture here), while the static methods just work with it.
As noted, just a guess. In the end it probably was just a decision and the reason was lost in time.