在 String.Format() 中显式转换 int 的原因是什么?
本文关键字:是什么 int 显式转换 Format String | 更新日期: 2023-09-27 17:55:22
在我遇到的大多数代码中,它们在使用 String.Format() 时显式地将 int 或其他数字转换为字符串,尽管据我所知,这不是必需的。我是否缺少一些东西,需要在将其用作字符串之前将数字显式转换为字符串?
明确:
int i = 13;
string example = String.Format("If a Friday lands on the {0}th of the month, it is generally considered to be an unlucky day!",
i.ToString());
产生example
:"If a Friday lands on the 13th of the month, it is generally considered to be an unlucky day!"
非显式:
int i = 13;
string example = String.Format("If a Friday lands on the {0}th of the month, it is generally considered to be an unlucky day!",
i);
生成example
为:"If a Friday lands on the 13th of the month, it is generally considered to be an unlucky day!"
(与显式转换相同)。那么为什么我看到的大多数程序员都这样做呢?
如果使用隐式转换,则int
将框在object
。这是一个很小的性能影响,但有些人似乎认为它很重要,并且可能会解释代码。
事实上,Jeffrey Richter 在他通过 C# 的优秀 CLR 中写到了这一点(鼓励使用这种东西)。这让我很恼火,以至于我在博客上写了:)
当然,在某些地方,拳击可能是相关的 - 但考虑到string.Format
需要走格式字符串并做各种其他事情,我不希望它在这里很重要......这是在您考虑接下来要如何处理字符串之前:)
我真的看不出这样做的理由。正如您所指出的,由于String.Format()
已经这样做了,因此如果您只是让String.Format()
照顾它,它会更紧凑且 IMO 更容易阅读。
因为我们习惯了规则,你最好也习惯了。 String.Format()
是一个聪明的方法,但不是每个方法。 请记住,String.Format()
会获取对象,因此您不需要转换,但是如果您这样做,您仍然会发送对象。