如何使用 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"] 会抛出异常吗?
如何使用 String.Format 将布尔类型转换为“ON”“OFF”