在 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”的用法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C# 新手编程对“命名空间“的理解与“用途“

C# 新手编程对“命名空间“的理解与“用途“

什么是 C# 中的透明类或透明方法?`

c#学习总结

C# 自定义特性(Attribute)详解

为啥我不能在 C# 中使用抽象静态方法?