2

不仅仅是按原样调用参数?

4

4 回答 4

27

如果您的意思是字段,那么没有。无论您是显式(this.foo)还是隐式(foo) ,编译器都会注入“this”(ldarg.0)。

但是,它确实在您的源代码中多占用了 5 个字符……所以在您的开发硬盘上占用了少量字节。它将在编译的 IL 或运行时产生完全零差异。

有两种情况使用“this”会改变事情:

  • 当存在同名的变量/参数时 ( this.foo = foo;)
  • 解析扩展方法时 ( this.SomeMethod();)
于 2008-12-09T13:40:58.563 回答
1

你的问题太含糊了,无法明确回答,但我仍然会以响亮的“否”开始

那么我想知道你的参数到底是什么意思?我通常会将其解释为“方法的参数”,但它们与范围内的“this”无关,因此您可能指的是“成员”,例如字段、属性和/或方法。

如果我关于如何解释你的问题的所有假设都是正确的,我支持我以前的“不”。

但我想知道你从哪里得到这个想法。

于 2008-12-09T13:42:38.717 回答
0

我不知道,如果它使用更多内存,但我不这么认为,它只是一个明确的参考,编译器也会在后台完成。

于 2008-12-09T13:41:24.150 回答
0

我猜你的意思是在变量名之前?我不明白为什么它会使用更多内存。无论语法是什么,CLR 都必须优化,以不影响性能的方式引用变量(验证后,它将添加 this...)。所以不,它没有。

于 2008-12-09T13:42:01.167 回答