将双打转换为字符串

时间:2013-03-12 19:56:12

标签: c# string

当我删除下面方法中的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 个答案:

答案 0 :(得分:7)

来自C#语言规范1.2,§7.7.4,加法运算符:

  

字符串连接:binary +运算符执行字符串   当一个或两个操作数是字符串类型时连接。如果   字符串连接的操作数为空,空字符串为   取代。否则,任何非字符串参数都将转换为其   通过调用虚拟ToString方法表示字符串   继承自类型对象。如果ToString返回null,则为空字符串   被取代。 [...]如果是,则可能抛出System.OutOfMemoryException   没有足够的内存可用于分配结果   字符串。

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

答案 1 :(得分:6)

  

为什么有必要?

没有必要。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

联接doublestring一起为您转换。

否则您可以使用.ToString()

进行转换

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