在String.Format()中显式转换int的原因是什么

时间:2013-01-22 20:23:58

标签: c#

在我遇到的大多数代码中,他们在使用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!"(与显式转换相同)。那么为什么我看到的大多数编码器会这样做呢?

3 个答案:

答案 0 :(得分:7)

如果您使用隐式转化,则int首先会加object。这是微小的性能损失,但有些人似乎认为这很重要,并且可以解释代码。

事实上,杰弗里里希特通过C#在其他优秀的CLR中写到了这一点(鼓励使用这类东西)。我感到很烦恼,我blogged about it:)

当然在一些的地方,拳击可能是相关的 - 但鉴于string.Format需要走格式字符串并做各种其他事情,我不希望它在这里很重要...那就是在你考虑接下来要对字符串做什么之前:)

答案 1 :(得分:0)

我真的没有理由这样做。正如你所指出的那样String.Format()已经这样做了,如果你让String.Format()处理它,它会更紧凑,更易于阅读。

答案 2 :(得分:0)

因为我们习惯了规则,你最好也是。 String.Format()是一种聪明的方法,每种方法都不是。请记住String.Format()接受对象,因此您不需要转换,但是如果您这样做,则仍然会发送对象。