簡體   English   中英

構造函數中“this”關鍵字的作用是什么?

[英]What is the function of the "this" keyword in a constructor?

我剛才正在查看來自 MSDN 的示例代碼並遇到:

namespace IListSourceCS
{
    public class Employee : BusinessObjectBase
    {
        private string      _id;
        private string      _name;
        private Decimal     parkingId;

        public Employee() : this(string.Empty, 0) {} // <<--- WHAT IS THIS???
        public Employee(string name) : this(name, 0) {}

它使用該簽名調用該類中的另一個構造函數。 它是根據其他構造函數實現構造函數的一種方式。 base也可以用來調用基類的構造函數。 您必須有一個與之匹配的簽名構造函數才能工作。

這使您可以使用 (string, int) 參數調用 Employee (current) 類的另一個構造函數。

這是一種初始化對象的技術,稱為構造函數鏈接

這個示例可能有助於一些不同的派生......第一個顯然在創建實例時有兩個構造函數方法......例如

FirstClass oTest1 = new FirstClass(); 或 FirstClass oTest1b = new FirstClass(2345);

SECOND 類派生自 FirstClass。 注意它也有多個構造函數,但一個是兩個參數......雙參數簽名調用(第二個類的)“this()”構造函數......這反過來又調用了BASE CLASS( FirstClass) 帶有整數參數的構造函數...

因此,在創建從其他類派生的類時,您可以引用其 OWN 類構造函數方法,或者其基類...類似地在代碼中,如果您 OVERRIDE 一個方法,您可以在 BASE() 方法之外執行一些操作...

是的,比您可能感興趣的要多,但也許這個澄清也可以幫助其他人......

   public class FirstClass
   {
      int SomeValue;

      public FirstClass()
      { }

      public FirstClass( int SomeDefaultValue )
      {
         SomeValue = SomeDefaultValue;
      }
   }


   public class SecondClass : FirstClass
   {
      int AnotherValue;
      string Test;

      public SecondClass() : base( 123 )
      {  Test = "testing"; }

      public SecondClass( int ParmValue1, int ParmValue2 ) : this()
      {
         AnotherValue = ParmValue2;
      }
   }

constructor是一種特殊的方法/函數,用於初始化基於類創建的對象。 這是您運行初始化的地方,因為設置默認值,以各種方式初始化成員。

this ”是一個特殊的詞,它指向您所在的對象。將其視為對象本身內的對象引用,用於訪問內部方法和成員。

查看以下鏈接:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM