5

string.Format在 C# 中向函数传递和额外参数是否有任何副作用?我正在查看string.FormatMSDN ( http://msdn.microsoft.com/en-us/library/b1csw23d.aspx ) 上的函数文档,但找不到答案。

例如:-

string str = string.Format("Hello_{0}", 255, 555);

现在,正如您所看到的,根据格式字符串,我们假设在它之后只传递一个参数,但我已经传递了两个。

编辑: 我已经尝试过了,对我来说一切都很好。由于我是 C# 和 C 背景的新手,我只想确保它不会在以后的运行中造成任何问题。

4

2 回答 2

8

查看反射器,它会为构建字符串分配更多内存,但传入额外的对象不会产生巨大的影响。

还有一个“副作用”,如果您不小心{n}在格式字符串中包含了n太大的 a ,然后添加了一些备用参数,您将不再得到异常,而是得到一个包含意外项目的字符串。

于 2012-11-30T12:54:07.970 回答
2

如果您查看为string.Format提供的链接的异常部分

“格式项的索引小于零,或大于或等于 args 数组的长度。”

微软没有表示如果你有太多参数它可以抛出,所以它不会。效果是由于一个无用的参数而造成的少量记忆损失

于 2012-11-30T13:00:15.740 回答