当我删除下面方法中的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
}
}
答案 0 :(得分:7)
来自C#语言规范1.2,§7.7.4,加法运算符:
字符串连接:binary +运算符执行字符串 当一个或两个操作数是字符串类型时连接。如果 字符串连接的操作数为空,空字符串为 取代。否则,任何非字符串参数都将转换为其 通过调用虚拟ToString方法表示字符串 继承自类型对象。如果ToString返回null,则为空字符串 被取代。 [...]如果是,则可能抛出System.OutOfMemoryException 没有足够的内存可用于分配结果 字符串。
换句话说,+操作数将为您执行ToString转换。
答案 1 :(得分:6)
为什么有必要?
没有必要。
有些人可能会主观地认为包含它更具可读性,但省略它不仅不会导致任何错误,而且还会产生完全相同的输出。省略ToString
电话时没有任何功能变化。
答案 2 :(得分:0)
这是因为你已经连接了一个字符串(“+”,“ - ”等),这意味着表达式的其余部分被解析为字符串类型。如果你没有连接那些额外的字符串,那么你需要调用ToString()
。
答案 3 :(得分:0)
联接double
和string
一起为您转换。
否则您可以使用.ToString()
或者使用Convert.ToString(double)方法。 http://msdn.microsoft.com/en-us/library/c309e6c9.aspx