在 C# 中,我遇到了一个我不理解的关键字“this”的用法[重复]
Posted
技术标签:
【中文标题】在 C# 中,我遇到了一个我不理解的关键字“this”的用法[重复]【英文标题】:In C#, I came across a use of the key word "this" that I did not understand [duplicate] 【发布时间】:2018-01-25 20:18:46 【问题描述】:我正在查看树结构,并找到了一个构造函数 (在 Tree 类中)如下所示:
public Tree(T value, params Tree<T>[] children)
: this(value)
foreach (Tree<T> child in children)
this.root.AddChild(child.root);
谁能给我解释一下“:this(value)”是什么意思?
【问题讨论】:
这是对Tree
的构造函数重载 的调用,它只接受value
作为参数。
见:***.com/questions/6270774/…
谢谢先生。现在我记得我已经看过了,我会再读一遍。很抱歉浪费了你的时间。
一般来说,this
指的是你当前所在的同一个班级。你看不到很多,因为它是隐含的......例如你看不到 person 类中的方法说this.Name = "Nikolai"
,因为Name = "Nikolai"
就可以了。方法也一样:当你的类中的一个方法想要调用同一个类中的另一个方法时,它可能会说this.DoSomething()
,但你更有可能简单地写DoSomething()
.. 那么为什么将它与构造函数一起使用呢?好吧..没有任何方法可以通过名称引用构造函数,因为它们没有方法或属性具有名称的相同方式,因此..
..约定是使用this(arguments to constructor here)
【参考方案1】:
这里this
的用法是在类上调用另一个构造函数重载并将value
作为参数传递。
【讨论】:
【参考方案2】:它叫做constructor chaining。在该构造函数之前调用该类的另一个构造函数。基本上它是base
,但使用的是当前类的构造函数而不是基类。
【讨论】:
以上是关于在 C# 中,我遇到了一个我不理解的关键字“this”的用法[重复]的主要内容,如果未能解决你的问题,请参考以下文章