0

当我ToString()在下面的方法中删除时,我没有收到错误,那为什么需要呢?

public string BuildEquation()
{
    switch (Choice)
    {
        case "A":
            return mNumber1.ToString() + "+" + mNumber2.ToString();
        case "S":
            return mNumber1.ToString() + "-" + mNumber2.ToString();
        case "M":
            return mNumber1.ToString() + "*" + mNumber2.ToString();
        default:
            return mNumber1.ToString() + "/" + mNumber2.ToString(); // corrected
    }
}
4

4 回答 4

7

来自 C# Language Specification 1.2,§7.7.4,加法运算符:

字符串连接:当一个或两个操作数都是字符串类型时,二元 + 运算符执行字符串连接。如果字符串连接的操作数为 null,则替换为空字符串。否则,通过调用从类型 object 继承的虚拟 ToString 方法,将任何非字符串参数转换为其字符串表示形式。如果 ToString 返回 null,则替换为空字符串。[...] 如果没有足够的可用内存来分配结果字符串,则可能会引发 System.OutOfMemoryException。

换句话说,+ 操作数将为您进行 ToString 转换。

于 2013-03-12T20:02:16.320 回答
6

那么为什么有必要呢?

这不是必需的。

有些人可能会主观地认为包含它更具可读性,但省略它不仅不会导致任何错误,而且还会产生完全相同的输出。ToString省略调用没有功能变化。

于 2013-03-12T20:01:05.660 回答
0

这是因为您已经与字符串连接(“+”、“-”等),这意味着表达式的其余部分被解析为字符串类型。如果您没有连接这些额外的字符串,那么您需要调用ToString().

于 2013-03-12T20:02:02.140 回答
0

连接doublestring一起为您转换它。

否则,您可以将其转换为.ToString()

或使用 Convert.ToString(double) 方法。http://msdn.microsoft.com/en-us/library/c309e6c9.aspx

于 2013-03-12T20:02:58.927 回答