我有兴趣知道C#
中的this
和base
对象之间的区别。使用它们时的最佳做法是什么?此和基地之间的区别
9
A
回答
24
0
this
指的是当前正在使用的任何对象。一般而言,Base
是指基类。
如果对象是base
那么在这种情况下this
也可以参考base
对象。
0
this
引用当前类实例。
base
引用当前实例的基类,即它从中派生的类。如果当前班级没有明确从任何派生base
将参考System.Object
类(我认为)。
7
这两个关键字是非常不同的。
this
指当前实例(不是“当前级”)。它只能用于非静态方法(因为在静态方法中没有当前实例)。调用this
上的方法将以与在包含相同实例的变量上调用该方法时相同的方式调用该方法。base
是一个关键字,允许继承方法调用,即即它从基类型调用指定的方法。它也只能用于非静态方法。它通常用于虚拟方法覆盖,但实际上可用于调用基本类型中的任何方法。它与常规方法调用非常不同,因为它绕开了正常的虚方法调度:即使它是虚拟的,它也直接调用基方法。
6
达林是对的。一个例子也可能有所帮助。 (有没有一个例子,当我最初公布。现在有。)
class Base {
protected virtual void SayHi() {
Console.WriteLine("Base says hi!");
}
}
class Derived : Base {
protected override void SayHi() {
Console.WriteLine("Derived says hi!");
}
public void DoIt() {
base.SayHi();
this.SayHi();
}
}
上面打印“基地说:嗨!”其次是“派生说你好!”
0
可以说你有一个这样
class B extends A {
public B() {
// this will refer to the current object of class B
// base will refer to class A
}
}
代码说明:代码的语法是Java编写,但它是自我解释。
0
基 - 用于将派生类
此内从访问基类的成员 - 指类的当前实例,并继承
class BaseClass
{
public string BaseAttr { get; set; }
}
class A : BaseClass
{
public string Attr { get; set; }
public void Method()
{
this.Attr = "ok";
this.BaseAttr = "base ok";
base.BaseAttr = "ok";
base.Attr = "unavailable"; //!
}
}
1
“this
”关键字指向当前对象的地址。我们可以使用“this
”关键字来表示当前对象(当前类)。
凡为“base
”关键字代表了“父类”
所以,如果你想使用/父类的通话功能,您可以使用“base
”关键字。
base
在函数覆盖父类的调用函数中非常有用。
相关问题
- 1. 地图和ImmutableMap之间的区别
- 2. 地标和注释之间的区别
- 3. 地图和字典之间的区别
- 4. (本地),'。'之间有区别吗?和localhost?
- 5. '+ ='和'= +'之间的区别?
- 6. {!!之间的区别!!}和{{}}
- 7. ==和case之间的区别?
- 8. '#','%'和'$'之间的区别
- 9. | =和^ = css之间的区别
- 10. “%〜dp0”和“。\”之间的区别?
- 11. .eq之间的区别。和==
- 12. ==和.equals()之间的区别?
- 13. `%in%`和`==`之间的区别
- 14. 此WHERE子句和此加入之间有什么区别?
- 15. mysql基本版和社区版本之间的区别
- 16. SPFile和PublishingPage类别之间的区别
- 17. System.Timers.Timer Enabled = true和.Start()之间的区别Enabled = true和.Start()之间的区别
- 18. 两张地图之间的区别
- 19. gdb地址和“真实”地址之间的区别?
- 20. 内部IP地址和外部IP地址之间的区别
- 21. NSthread和NStimer和NSNotifcation之间的区别?
- 22. Java和C#和.NET之间的区别
- 23. sys.log()和console.log()和console.error()之间的区别?
- 24. $ .ajax()和$ .get()和$ .load()之间的区别
- 25. 网络服务和基于文本的servlet之间的区别
- 26. 宽度和弹性基础之间的区别
- 27. 维基页面库和页面库之间的区别?
- 28. “?”之间的区别和“@”在视觉上基本
- 29. 基本名称(__ FILE__)和$ _SERVER ['SCRIPT_NAME']之间的区别?
- 30. ToString()和Convert.ToString()之间的基本区别是什么?
严格地说,这是指当前的类实例,而不是当前的类类型。 – 2010-09-17 07:00:58
@阿德里安,是的好点。更新我的帖子以考虑到。 – 2010-09-17 07:07:07