【发布时间】:2011-11-17 08:06:19
【问题描述】:
我有一个带有自定义 WriteLine(string) 方法的对象。像这样的:
public void WriteLine(string text)
{
this.StringList.Add(text);
}
用这种方法复制string.Format() 的功能的最简单方法是什么?例如:我目前经常发现自己在做的是:
myObj.WriteLine(string.Format("Hello, {0}", name));
如果您创建一个新的控制台应用程序,他们的 WriteLine() 方法版本完全符合我的意愿:
Console.WriteLine("Hello, {0}", name);
他们无需致电string.Format()。以某种方式让您的方法接受这一点很容易吗?或者我将不得不创建一千个方法重载?像这样的:
public void WriteLine() { ... }
public void WriteLine(string text) { ... }
public void WriteLine(string text, object arg0) { ... }
public void WriteLine(string text, object arg0, object arg1) { ... }
public void WriteLine(string text, object arg0, object arg1, object arg2)
{
this.StringList.Add(string.Format(text, arg0, arg1, arg2));
}
// etc etc etc
这是唯一合乎逻辑的方法吗?欢迎任何建议:)
【问题讨论】:
-
为什么不直接委托给
string.Format?你真的要写分词器吗? -
C#有一个你不知道的特性,你需要知道。 msdn.microsoft.com/en-us/library/w5zay9db(v=VS.100).aspx
-
@Oded 这是我的问题...我不知道
params关键字,也不知道我什至可以委派给@ 987654332@. -
很公平,亚历克斯 - 我没有意识到这是问题所在 :)
-
注意参数;如果“params”方法适用于其普通形式,则不会以其扩展形式调用。例如,"WriteLine("", null)" 使用空数组调用 WriteLine。 "WriteLine("", (object)null)" 使用包含单个 null 的数组调用 WriteLine。
标签: c# .net asp.net string methods