0

我对 C# 相当陌生,并试图找出字符串插入(即"some {0} string", toInsert),并遇到了一个我没想到的问题......

如果您有两个构造函数:

public MyClass(String arg1) { ... }

public MyClass(String arg1, String arg2) { ... }

我可以使用带有字符串插入的第一个构造函数吗?

...
toInsert = "def"
myClass = new MyClass("abc{0}ghi", toInsert)
...

还是 C# 会将其解释为第二个构造函数并将文字"abc{0}ghi"作为第一个参数传递?

4

3 回答 3

9

是的,这将被解释为只是第二个参数。

您描述的行为称为字符串格式,并且接受这种样式的字符串的所有内容都在后台使用 string.Format() 。有关详细信息,请参阅该方法的文档。

要获得所需的行为,请使用以下代码:

myClass = new MyClass(string.Format("abc{0}ghi", toInsert));
于 2009-05-18T13:46:51.183 回答
5

做就是了:

public MyClass(string format, params object[] args)
{
  this.FormattedValue = string.Format(format, args);
}
于 2009-05-18T13:47:12.213 回答
2

还是 C# 会将其解释为第二个构造函数并将文字“abc{0}ghi”作为第一个参数传递?

这是正确的答案。我认为如果您使用 String.Format("abc{0}ghi", toInsert) 那么它将采用第一个构造函数

于 2009-05-18T13:47:57.203 回答