2012-04-20 30 views
1

私はC#をかなり新しくしており、修正方法がわからないというエラーが出ました。タイトルが述べるように、私はNo overloadメソッドを取得します。 'ToString'は1つの引数エラーをとります。私はここで他の質問を見てきましたが、私がしようとしているものはもっと複雑です。私は私がメッセージボックスに表示しようとしている簡単な式を持っており、次のようになります。C#オーバーロードの方法がありません 'ToString'は引数が1つしかありません -

Y = C + I + E + G; 

MessageBox.Show(ToString(Y)); 

式中の変数はすべて、intとして保存され、整数、であり、テキストボックスから取得されます。私はYouTubeでtheewbostonのチュートリアルからC#を学んできましたが、私はこの問題をそこに見ていませんでした。そして、C#で200以上のビデオがありました。エラーのデバッグに関する提案は非常に高く評価されます。

+0

FWIWをとり、 '' Y''がnullの場合は '' ''と '' Exception''となるため、通常は '' Y.ToString()の代わりに '' + Y''を使用します。もちろん、これは誤った(または必須ではない)セマンティクスなので、適切に選択してください... –

+0

@pstそれは私にとって興味深いです、あなたが作業しているオブジェクトがしかし、ヌル?たぶん 'Y? "NULL VALUE" '? – NominSim

+0

@ NominSim何が起こるべきかに「依存する」。私は通常、他に明白に望む場合を除いて、自分自身が ""に合体しているのがわかります。また 'Y? "foo"は、 'Y'が既に文字列である場合にのみ動作します。いくつかの人々は明示的に好む: 'Y!= null? Y.ToString(): ""心に留めておくだけのこと。 –

答えて

4

あなたはToStringメソッドは、オブジェクトクラスのoperator.Itの方法ではありません

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

/facepalmありがとうございます。それは私の問題を解決した、なぜ私はそれを混ぜた、おそらく別の言語で考えているのか分からない。 –

13

正しい構文は次のとおりです。

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

ありがとうございました –

3

を試してみました。

+6

あなたの説明は、ToString()を呼び出す正しい方法で苦労している人にとっては完全に不透明です。 –

+0

これは*インスタンスメソッド*なので、 'MessageBox.Show(this.ToString(Y))'として扱われます。 –

3

説明を少し提供する:C#ではすべてToString()というメソッドがあり、これを呼び出してObjectの文字列表現を与えることができます。 ToString(Y)を呼び出しているため、ToStringメソッドに間違った数の引数を使用していると不平を言います。一般に、他の人が指摘しているように、Stringとしてオブジェクトを表現する方法は、Y.ToString()を呼び出すことです。

ToString()メソッドをどのクラスでもオーバーライドすることができるので、そのクラスToString()メソッドを呼び出すと便利なStringが返されることに注意してください。

2

上記の記事は、あなたの問題の解決方法をかなりカバーしていました。エラーが発生しました: 変数を参照せずにToString(Y)を呼び出すと、コンパイラは現在のコンテキストを調べます。現在のコンテキストは、デフォルトでObjectから継承するクラスです。詳細はlinkを参照してください。あなたがToStringを行うときに、コンパイラは何のパラメータを受け取りませんし、あなたが得る理由がある(オーバーライドされない場合)Object.ToString()を見てみましょう:

ませんオーバーロードメソッド「ToStringメソッドは、」1つの引数エラー

関連する問題