在C#中向string.Format()函数传递额外的参数

6
string.Format函数在C#中传递额外的参数是否会有副作用?我查看了MSDN上的string.Format函数文档(http://msdn.microsoft.com/en-us/library/b1csw23d.aspx),但无法找到答案。
例如:
string str = string.Format("Hello_{0}", 255, 555);

现在,根据格式字符串,我们只需要传递一个参数,但是我传递了两个参数。

编辑: 我已经在我的端上尝试过,对我来说一切看起来都很好。由于我是C语言背景的新手,我只是想确保它在以后的运行中不会出问题。


2
“副作用”和“额外参数”是什么意思?举个例子可以帮助我们理解你的问题。 - kol
我认为这取决于它是如何实现的 - 如果实现逐个通过“params”,那么列表越长,无论格式字符串中有多少格式选项,它都需要花费更长的时间。 - Oded
@Oded:是的,我试过了,一切看起来都很好。由于我是C#的新手,而且来自C背景,所以我只是想确认一下。 - Ravi Gupta
2个回答

9

在Reflector中查看,它将分配更多的内存来构建字符串,但是传入额外的对象并没有太大的影响。

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


2

如果您查看您提供的string.Format链接的异常部分,您会发现:

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

微软没有指出当您有太多参数时会抛出异常,因此它不会抛出异常。影响是由于无用参数导致的轻微内存损失。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接