String.Format不起作用

时间:2012-12-21 16:15:13

标签: c# .net 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";
}

这是自定义集合的重写ToString()方法。这里的问题是String.Format没有替换X和Y的值。只要我在String.Format之前添加return,它就会替换它。我刚刚开始学习C#,并且不知道是什么导致了这种奇怪的行为。

3 个答案:

答案 0 :(得分:11)

string.Format返回格式化字符串,您必须将其分配回您的变量:

something = string.Format("Some_Point({0},{1}),", item.X, item.Y);

答案 1 :(得分:5)

如果要在单个结果中附加大量字符串,则应使用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();
}

如果您想了解更多有关避免字符串连接的原因,请查看以下文章: http://msdn.microsoft.com/en-us/library/ms182272(v=vs.80).aspx

答案 2 :(得分:1)

string.Format返回一个字符串,所以:

something = string.Format(something, item.X, item.Y);