使用此的 C# 构造函数 [重复]

Posted

技术标签:

【中文标题】使用此的 C# 构造函数 [重复]【英文标题】:C# constructor using this [duplicate] 【发布时间】:2013-10-31 19:58:42 【问题描述】:

有人可以解释构造函数中: this(123) 的含义吗?

public class MyObject
      
    public MyObject(): this(123)
    
    
    ............

【问题讨论】:

你是否有MyObject(int variable) 构造函数? 你可以阅读构造函数here 为什么不用调试器单步调试代码,看看它做了什么? 你search了吗?我们已经有了一些可能对您有用的答案。 参见底部附近的Using Constructors,其中写道:构造函数可以使用this 关键字调用同一对象中的另一个构造函数。 ... 【参考方案1】:

因为你的类有另一个构造函数,它接受和int 作为参数。

public class MyObject

    public MyObject()
        : this(123)
    
    

    public MyObject(int x) //something like this
    
    

见:Using Constructors (C# Programming Guide)

构造函数可以调用同一个对象中的另一个构造函数 使用this 关键字。

【讨论】:

【参考方案2】:

这意味着,您正在调用另一个具有固定值“123”的构造函数:

public class MyObject
      
    public MyObject(): this(123)
    

    

    public MyObject(int number)
    

    
   

意思是:无论何时调用new MyObject(),不带任何参数,就等于调用new MyObject(123);

【讨论】:

“它等于调用 new MyObject(123);” 不是真的.. 默认构造函数中可能有其他构造函数中未执行的内容跨度> 【参考方案3】:

这意味着 “在执行大括号之间的内容之前,执行带有参数123的合适构造函数”

【讨论】:

【参考方案4】:

提供的语法用于“构造函数链接”,即在当前构造函数的主体之前调用指定的构造函数(接受整数参数)。

【讨论】:

【参考方案5】:

this 用于从同一类中的另一个构造函数调用一个构造函数。 请参阅这篇文章以获得更好的理解。

http://www.codeproject.com/Articles/7011/An-Intro-to-Constructors-in-C

【讨论】:

【参考方案6】:

您有另一个接受 int 的构造函数(认为它可以是 long 或 double,或者任何其他 int 可以隐式转换为的)

    public class MyObject
          
       public MyObject(): this(123)
       
       

       public MyObject(int num)
       
          //do something with the num
       
   

【讨论】:

以上是关于使用此的 C# 构造函数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中使用自定义构造函数创建异常 [重复]

C# - 在一些计算后从另一个构造函数调用构造函数[重复]

在 C# 中的类构造函数中调用异步方法 [重复]

为啥我必须将道具传递给构造函数和超级[重复]

C# base() 构造函数顺序[重复]

在 C# 中调用基本构造函数 [重复]