2012-04-20 80 views
1

我对C#相当陌生,遇到了一个我不知道如何解决的错误。正如标题所述,我得到了No重载方法'ToString'需要1个参数错误。我已经看过这里的其他问题,但他们比我想要做的更复杂。我有我试图在消息框中显示一个简单的等式,它看起来如下:C#没有超载方法'ToString'需要1个参数 - 简单

Y = C + I + E + G; 

MessageBox.Show(ToString(Y)); 

所有公式中的变量都是整数,存储为int和从文本框拍摄。我一直在YouTube上从新波士顿的教程学习C#,我还没有看到这个问题,然后C#上有200多个视频,但我还没有看到。任何关于错误调试的建议都将不胜感激。

+0

FWIW,我通常使用'“”+ Y'而不是'Y.ToString()',因为如果'Y'为空,前者将导致''“'与'Exception'。当然,这可能是不正确的(或不是必需的)语义,所以选择适当的... – 2012-04-20 19:48:56

+0

@pst这对我很有趣,难道你不想尽快知道你正在使用的对象是虽然?也许'Y? “NULL VALUE”'? – NominSim 2012-04-20 19:56:34

+0

@NominSim“这取决于”应该发生什么。我通常会发现自己合并为“”,除非我明确表示否则。另外'Y?只有'Y'已经是字符串时,“foo”才有效。有些人更喜欢显式:'Y!= null? Y.ToString():“”'。只是要记住的事情。 – 2012-04-20 20:18:48

回答

4

你试过

MessageBox.Show(Y.ToString()); 
+0

/facepalm那里。这解决了我的问题,我不知道为什么我混合起来,可能用不同的语言思考。 – 2012-04-20 19:46:14

13

正确的语法是:

MessageBox.Show(Y.ToString()); 
+0

非常感谢 – 2012-04-20 19:46:49

3

的ToString不是operator.It的对象类的方法。

+6

对于正在努力以正确的方式调用'ToString()'的人来说,你的解释是完全不透明的。 – 2012-04-20 19:46:54

+0

它是*实例方法*,所以它被当作'MessageBox.Show(this.ToString(Y))'处理,这可能会更好地解释它。 – 2012-04-20 19:47:30

3

提供一点解释:在C#中,所有东西都有一个ToString()方法,您可以调用该方法给出Object的字符串表示形式。既然你打电话给ToString(Y),它会抱怨说ToString方法使用了错误的参数个数。一般情况下,正如其他人所指出的,将对象表示为String的方法是致电Y.ToString()

值得注意的是,您可以覆盖您创建的任何类中的ToString()方法,因此对该类ToString()方法的调用将返回更有用的String

2

上面的帖子几乎涵盖了您的问题的解决方案。关于您遇到的错误: 当您在不引用变量的情况下调用ToString(Y)时,编译器会查看当前上下文,对于您的情况,该类是默认从Object继承的类,请参阅此link以了解详细信息。所以,当你做ToString编译器将看Object.ToString()(如果未覆盖),它不带参数,这就是为什么你会得到:

无重载方法“的ToString”需要1个参数错误

相关问题