Win*_*der 0 .net c# string.format
public override string ToString()
{
string token = "something";
foreach (something item in this)
{
something = something + "Some_Point({0},{1}),";
string.Format(something, item.X, item.Y);
}
return something+= "anything";
}
Run Code Online (Sandbox Code Playgroud)
这是ToString()自定义集合的重写方法.这里的问题String.Format是不替换X和Y的值.每当我添加return之前它都会替换String.Format.我刚刚开始学习C#并且不知道是什么导致了这种奇怪的行为.
Zbi*_*iew 11
string.Format 返回格式化字符串,您必须将其分配回您的变量:
something = string.Format("Some_Point({0},{1}),", item.X, item.Y);
Run Code Online (Sandbox Code Playgroud)
如果要在单个结果中附加大量字符串,则应使用命名空间中的StringBuilder类System.Text.这是一个很好的实践,因为string对象是不可变的,每次更改某些内容时,都会在堆上创建一个新实例.尝试做这样的事情:
using System.Text;
...
public override string ToString()
{
StringBuilder s = new StringBuilder("something initial if you need");
foreach (something item in this)
{
s.AppendFormat("Some_Point({0},{1}),", item.X, item.Y);
}
s.Append("something else");
return s.ToString();
}
Run Code Online (Sandbox Code Playgroud)
如果你想了解更多关于为什么要避免字符串连接,请查看这篇文章:http: //msdn.microsoft.com/en-us/library/ms182272(v = vs.80).aspx
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |