C #: Что это за форма String.Format? - PullRequest
1 голос
/ 05 октября 2010

Как эту простую для записи (и чтения) процедуру форматирования строки можно преобразовать в "правильный" 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;лицо, которое задокументировало это, должно быть прекращено.

1 Ответ

9 голосов
/ 05 октября 2010
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);
...