2012-03-07 16 views
5

部分的なメソッドはvoid型の戻り値しか持たないという事実の背後にある理由/論理/障害は何ですか?なぜ部分メソッドはvoid型の戻り値を持つことができますか?

ありがとう

+1

[部分的なメソッドは何も返さないのですか?](http://stackoverflow.com/questions/6954572/why-cant-partial-methods-return-anything) – BoltClock

+0

部分メソッドvoid以外の戻り値の型を使用するとどうなりますか?彼らは 'default(T)'や何を返すべきですか? – CodesInChaos

答えて

9

部分的なメソッドは、それらの実装を提供しなかった場合は除外されるように設計されています。コンパイラは、実際に実装されていない部分メソッドへの呼び出しを削除します。

これはまた、何も返されない理由を強調しています。部分メソッドを実装せずに戻り値に頼った場合は、何ですか?あなたはコードが明確に割り当てられているにもかかわらず、何かが初期化されていないでしょう。

+0

あなたの投稿と最後に分かりました。他の場所で答えを見つけるのが難しかった。ありがとう! – ckv

0

実装されていない部分的なメソッドは、コンパイル時に削除されます。コンパイラは、既存のオブジェクトの状態のみを変更するため、voidメソッドの呼び出しを無視できます。コードを無効にするので、オブジェクトを返すメソッドを削除することはできません。

2

部分的な方法の実装はオプションとして意図されています。

実装が提供されていない場合でも、呼び出しは有効ですが、コンパイラによって黙って削除されます。デリゲートには、実装されている部分的なメソッドのみを割り当てることができます。

これは、効果的な戻り値も「出力」パラメータもない副作用がないことを意味します。仮想ではなく、常に非公開です。

さらにhere

関連する問題