刚刚碰到这行代码:
string sNumFormat = new string('0', Convert.ToString(totalCount).Length);
其中 totalCount 是一个整数。
它在这里使用:
kNewComp.Name
= baseName + string.Format("{0:" + sNumFormat + "}", 1 + componentIndex);
我很确定这只是一种确保数字用前导零填充的有趣方法,但我以前从未见过它像这样表达。
有没有更标准的方法来实现相同的效果?
NewComp.Name = baseName + string.Format("{0:" + sNumFormat + "}", 1 + componentIndex);
可以替换为
var s = (1 + componentIndex).ToString();
var digits = (int) (Math.Ceiling(Math.Log10(totalCount)));
Console.Write(s.PadLeft(digits, '0'));
然后你可以摆脱sNumFormat
.
请注意,转换为string
不是测量数字的好方法。请参阅:获取小数点前的位数