代码之家  ›  专栏  ›  技术社区  ›  Camilo Díaz Repka

toString()只对调试有用吗?

  •  10
  • Camilo Díaz Repka  · 技术社区  · 17 年前


    编辑 大量

    13 回复  |  直到 17 年前
        1
  •  12
  •   raimue    17 年前

    ToString() 这可能是将某物的价值输出回UI的好方法。

    一个简单的例子是,如果你有一个包含三个字符串(First、Middle、Last)的Name类。你可以有一个

    ToString() 得到“2*3=6”。

    然而 To<qualifier>String() DateTime ToShortDateString() , ToLongDateString() , ToLongTimeString() , ...)

    Object 同学们,这只是因为 ToString() 是的有效操作 任何事物 .

    此外,字符串可以是数据类型或数据消费者之间编组的好方法,因为它(实际上)保证是可解析的,不需要额外的编码或注意。

        2
  •  17
  •   lc.    17 年前

        3
  •  13
  •   Alex Miller    17 年前

    toString()在需要对象的字符串表示时非常有用。当然,这是为了调试目的而发生的,但也可以有效地将操作结果输出给用户。

    3+2i

    因此toString()也不是用于调试目的,而是获得对象一致字符串表示的好方法。

        4
  •  6
  •   TofuBeer    17 年前

    我想说的是,由于很多人认为toString用于调试(不管你认为它应该用于什么),因此利用它返回的值进行任何编程(如解析它)或向用户显示它都是有问题的。

        5
  •  4
  •   Robin    17 年前

    根据我的经验,toString()在调试和日志记录之外几乎没有价值。随着时间的推移,你不能依赖它的格式或内容,所以除了人类可读性之外,除了最简单的对象(如原始对象类型)之外,不要依赖它。如果有多个数据成员,预计它们的类型或数量可能会随着时间的推移而变化,toString()的输出也会随之变化。

    我想强烈强调的另一点。不要在toString()中调用其他方法。没有什么比在调试器中的断点上检查变量内容,然后由于toString()中的方法调用而执行更多代码更糟糕的了。

        6
  •  3
  •   JP Richardson    17 年前

    我认为重要的是要指出,回答提到“toString”的人注意到小写的“t”通常是指Java,而回答提到“toString”的人通常是指C#。当然,这并不适用于所有的回答。

        7
  •  2
  •   coobird    17 年前

    首先 toString

    Effective Java 像 转换为字符串 .

    Java API Specification Object.toString

    结果应该简洁明了,但 信息表示,即 易于阅读。

    除了调试,重写 转换为字符串 在将对象读入时,类的方法可能很有用 JList 或a JTable 转换为字符串 方法将对象显示为列表或表中的文本形式。

    转换为字符串 添加到对象的方法 列表框 从而用户将能够通过GUI在列表中看到关于项目的信息。

    转换为字符串 转换为字符串 方法返回的信息实际上对人们来说很有用,而不是默认值 Object.toString

        8
  •  1
  •   Avram    17 年前

    1. 数据绑定(这就是它的工作方式)

        9
  •  0
  •   Jeffrey Cameron    17 年前

    ToString()也被调用。NET Framework隐式地将任何对象打印为字符串。

    Console.WriteLine("My Object is" + object.ToString());
    

    等同于

    Console.WriteLine("My Object is" + object);
    

    我相信(虽然不确定)调试器会将其用于对象的“值”。这可能相当方便,尽管有限。在大多数情况下,编写自己的调试器可视化工具会是一个更好的主意。

        10
  •  0
  •   LiraNuna    17 年前

    var new1DArray:Array = the2DArray.toString().split(",");
    

        11
  •  0
  •   hunter    17 年前

    我经常使用ToString()来处理日期时间格式。

    http://hunterconcepts.com/content/tools/formats/

        12
  •  0
  •   Ed Swangren    17 年前

    除了其他人已经说过的,在使用调用ToString()的控件时,重写ToString(()也很有用。例如,组合框:

    myComboBox.Items.Add(new MyClass());
    // now, whatever ToString() returns is shown in the
    // ComboBox, but you can get the object back by through
    // the SlectedItem property.
    
        13
  •  -1
  •   Eric    17 年前

    这可能不是“有意”使用,但我已经将其用于数据序列化

    storeToHardDrive(studentList.ToString());