2012-04-20 73 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個參數錯誤

相關問題