如何使用 Format("blah 0", someValue) 签名(如 string.format)实现 MyMethod()

Posted

技术标签:

【中文标题】如何使用 Format("blah 0", someValue) 签名(如 string.format)实现 MyMethod()【英文标题】:How to implement MyMethod() with Format("blah 0", someValue) signature like string.format如何使用 Format("blah 0", someValue) 签名(如 string.format)实现 MyMethod() 【发布时间】:2011-08-14 10:12:47 【问题描述】:

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);

您将如何实现它? 有什么我可以利用的还是我必须编写一堆自定义代码?

【问题讨论】:

为什么需要 MyMethod?我认为 string.format 更清晰... 为什么要重新发明***? #ArsenMkrt, MyMethod() 是纯伪代码。我需要提供一种方法来接受基本上是字符串的内容,但很多时候会有各种信息可以注入其中。允许调用者使用 string.format 类型重载使使用更容易,其余代码更干净。 #V4Vendetta,便于使用并保持代码更简洁。顺便说一句,我认为它与 StringBuilder 上的 AppendFormat() 方法并不太相似——我猜(非常尊重)你不会称之为 reinvention? 有趣的观察:在问题代码中我从来没有说过 MyMethod() 返回任何东西 - 但所有代码示例都有 MyMethod 返回一个字符串。不是批评——只是有趣:) 【参考方案1】:

这很简单,但参数的使用较少:

static string MyMethod( string format, params object[] paramList )

    return string.Format(format, paramList);

【讨论】:

感谢您的示例。参数是它;我感谢提供链接的其他人:)【参考方案2】:

参数呢? http://msdn.microsoft.com/en-us/library/w5zay9db.aspx

【讨论】:

啊——恰到好处。我知道有一个简单的方法。【参考方案3】:

查看params

【讨论】:

对不起 RedDeckWins - CharithJ 赌你 2 分钟。 我在 44 分钟前回答,这意味着我的回答早于 38 或 42 分钟前的回答...如果您将鼠标悬停在“x 分钟前”上,您可以看到它发布的时间。 【参考方案4】:

你可以创建一个方法并在里面使用String.Format,大概是这样的:

private void MyMethod(string separator, params string[] strings)

      string concatenatedString = String.Format(separator, strings);

      //More processing

【讨论】:

【参考方案5】:

我不明白你为什么要在这种情况下编写你的方法,但是在这里你可以如何做到这一点

public string MyMethod(string s, params object[] args)

     return string.Format(s,args);

【讨论】:

以上是关于如何使用 Format("blah 0", someValue) 签名(如 string.format)实现 MyMethod()的主要内容,如果未能解决你的问题,请参考以下文章

如果 "blah" 不存在,ConfigurationManager.AppSettings["blah"] 会抛出异常吗?

.net(C#)中String.Format如何使用

如何使用 String.Format 将布尔类型转换为“ON”“OFF”

托管 C++ 中的逐字字面量? (就像 C# 的 @"blah")

c# format 格式化如何理解?

Spark Regexp:根据日期拆分列