String.Format不起作用

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)


Fel*_*ani 5

如果要在单个结果中附加大量字符串,则应使用命名空间中的StringBuilderSystem.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