我有一个带有自定义 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 复制方法签名。
public void WriteLine(string text,params object[] args) {
this.StringList.Add(string.Format(text,args));
}
正如 ChaosPandion 所建议的,您还可以包含重载以防止创建数组
public void WriteLine(string text) {
this.StringList.Add(text);
}
public void WriteLine(string text,object arg0) {
this.StringList.Add(string.Format(text, arg0));
}
public void WriteLine(string text,object arg0, object arg1) {
this.StringList.Add(string.Format(text, arg0, arg1));
}
public void WriteLine(string text,object arg0, object arg1, object arg2) {
this.StringList.Add(string.Format(text, arg0, arg1, arg2));
}
我不会超过 arg2,因为 string.format 不会这样好处就消失了。
关于c# - 如何在自己的方法中模仿string.Format()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7422112/