在我遇到的大多数代码中,它们使用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中写了这个(鼓励使用这种东西)。我很生气,以至于我blogged about it :)

当然,在某些地方,装箱可能是有意义的-但考虑到string.Format需要遍历格式字符串并执行其他所有操作,因此我不希望它在这里有重要意义……那是在您考虑什么之前您将使用下一个字符串:)

关于c# - 在String.Format()中显式转换int的原因是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14467349/

10-09 13:34