Как реализовать MyMethod () с подписью Format ("blah {0}", someValue), например string.format - PullRequest
9 голосов
/ 28 апреля 2011

String.Format и StringBuilder (через метод AppendFormat) позволяют вызывающим объектам перекачивать значения в подготовленную ими строку, например:

string temp = string.Format("Item {0} of {1}, Record Id: {2} started...",
  itemCounter.ToString(),
  totalItemsToProcess.ToString(),
  myRecord.RecordId);
MyMethod(temp);

Но вместо того, чтобы построить строку и передать ее в "MyMethod) "Я бы предпочел перегрузку, которую люди называли так:

MyMethod("Item {0} of {1}, Record Id: {2} started...",
  itemCounter.ToString(),
  totalItemsToProcess.ToString(),
  myRecord.RecordId);

Как бы вы это реализовали?Есть ли что-то, что я могу использовать или мне нужно написать кучу нестандартного кода?

Ответы [ 5 ]

14 голосов
/ 28 апреля 2011

Это довольно тривиально, но есть менее тривиальное использование параметров:

static string MyMethod( string format, params object[] paramList )
{
    return string.Format(format, paramList);
}
3 голосов
/ 28 апреля 2011
2 голосов
/ 28 апреля 2011

Просмотр параметров

1 голос
/ 28 апреля 2011

Я не вижу причины, по которой вы хотите написать свой метод в этом случае, но вот как вы можете это сделать

public string MyMethod(string s, params object[] args)
{
     return string.Format(s,args);
}
1 голос
/ 28 апреля 2011

Вы можете создать метод и использовать String.Format внутри, возможно, что-то вроде этого:

private void MyMethod(string separator, params string[] strings)
{
      string concatenatedString = String.Format(separator, strings);

      //More processing
}
...