2

パラメータをそのまま呼び出すだけではありませんか?

4

4 に答える 4

27

フィールドを意味する場合は、いいえ。コンパイラは、明示的に (this.foo) 使用するか暗黙的に (foo) 使用するかにかかわらず、「this」 ( ldarg.0 ) を挿入します。

ただし、ソース コードにはさらに 5 文字必要です。つまり、開発用のハード ディスクに数バイトが必要です。コンパイルされた IL または実行時の違いはまったくありません。

「this」を使用すると状況が変化するシナリオが 2 つあります。

  • 同名の変数・パラメータがある場合(this.foo = foo;
  • 拡張メソッドの解決時 ( this.SomeMethod();)
于 2008-12-09T13:40:58.563 に答える
1

あなたの質問は曖昧すぎて明確に答えることができませんが、それでも私は圧倒的なNoから始めます

次に、パラメーターとは正確に何を意味するのか知りたいですか?通常は「メソッドへの引数」と解釈しますが、スコープ内の「this」に関連付けられていないため、フィールド、プロパティ、メソッドなどの「メンバー」を意味していた可能性があります。

あなたの質問をどのように解釈するかについての私の仮定がすべて正しい場合、私は以前の「いいえ」を支持します。

しかし、私はあなたがそのアイデアをどこから得たのか知りたい.

于 2008-12-09T13:42:38.717 に答える
0

それがより多くのメモリを使用するかどうかはわかりませんが、そうは思わない.

于 2008-12-09T13:41:24.150 に答える
0

変数名の前のことを意味していると思いますか?より多くのメモリを使用する理由がわかりません。CLR は、パフォーマンスに影響を与えない方法で変数を参照するために、構文が何であれ最適化する必要があります (検証後、this が追加されます...)。いいえ、そうではありません。

于 2008-12-09T13:42:01.167 に答える