如何将这种易于编写(和读取)的字符串格式化例程转换为“正确的” String.Format等效代码?

Int32 power;
Single voltage;
Int32 kVA;
Double powerFactor;

powerFactor = power / kVA;

label1.Text =
      DateTime.Now.ToString() + ": " +
      power.ToString() + "W,  " +
      voltage.ToString() + "V "+
      "(pf "+(powerFactor*100.0).ToString()+"%)";

//label1.Text = String.Format("{g}: {0:g}W, {0:g}V (p.f. {0:0%}%)",
//      DateTime.Now, power, voltage, powerFactor);


我花了大约10分钟的时间尝试使用String.Format;记录该文件的人应被终止。

最佳答案

string.Format("{0}: {1}W,  {2}V (pf {3}%",DateTime.Now,power,voltage,powerFactor*100)


所以,这是我认为让您感到困惑的事情。每个{0}是您要传入的对象的索引。{0}是第一个对象,{1}是第二个对象,依此类推。您还可以指定格式,宽度和其他太多内容,无法在此处列出。我将SteveX string ref用于大多数需求。

label1.Text = String.Format("{0:g}: {1:g}W, {2:g}V (p.f. {3:0.0%})",
      DateTime.Now, power, voltage, powerFactor);

10-06 06:48