c# - 如何在自己的方法中模仿string.Format()?

标签 c# .net asp.net string methods

我有一个带有自定义 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/

相关文章:

asp.net - 有奇怪的 {"d":null} in JSON response

c# - 解密 HTTPS 实例上生成的 WebResource.axd URL

c# - 子 web.config 是否有忽略父 web.config 的命令或设置

c# - 定制的 Bootstrap btn 不适用于 chrome

C# 绑定(bind)库方法不接受实现参数

c# - 这个 C# 语法叫什么,它有什么作用?

c# - 将数据从文本框插入到 Postgresql

c# - 为什么我的 Type.GetFields(BindingFlags.Instance|BindingFlags.Public) 不工作?

c# - 学习 ASP.NET MVC 2.0 的资源

c# - 尝试从 .NET 字典中提取键列表