狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#中三種構(gòu)造函數(shù)的詳細(xì)指南和優(yōu)化方法

admin
2023年9月25日 12:20 本文熱度 1258

在C#中,構(gòu)造函數(shù)是一種特殊的方法,用于初始化新創(chuàng)建的對象。當(dāng)您使用關(guān)鍵字“new”創(chuàng)建一個(gè)新對象時(shí),構(gòu)造函數(shù)將被自動(dòng)調(diào)用。

構(gòu)造函數(shù)的名稱必須與類名相同,并且它沒有返回類型。構(gòu)造函數(shù)的執(zhí)行順序是在對象創(chuàng)建時(shí)進(jìn)行的,它用于初始化對象的狀態(tài)。C#中的構(gòu)造函數(shù)有三種:

第一種:實(shí)例構(gòu)造函數(shù)(Instance Constructor)

當(dāng)使用new關(guān)鍵字創(chuàng)建類的對象時(shí),可以使用實(shí)例構(gòu)造函數(shù)來初始化和創(chuàng)建類中的任意成員屬性。下面演示一個(gè)名為Man的類,以及類中的實(shí)例構(gòu)造函數(shù):

public class Man{

    public string Name { get; set; }

    public int Age { get; set; }

    public Man(stirng name,int age){

        Name =name;

        Age =age;

    }

}

只要?jiǎng)?chuàng)建Man的對象,就會調(diào)用類中的實(shí)例構(gòu)造函數(shù),在實(shí)例化對象時(shí)將具體的值傳遞給類中的構(gòu)造函數(shù)即可,如下代碼:

Man m=new Man("小沈子",25);

第二種:靜態(tài)構(gòu)造函數(shù)(Static Constructor)

靜態(tài)構(gòu)造函數(shù)用于初始化類中的靜態(tài)數(shù)據(jù)或執(zhí)行僅需一次的特定操作,靜態(tài)構(gòu)造函數(shù)將在創(chuàng)建第一個(gè)實(shí)例或引用類中的靜態(tài)成員之前自動(dòng)調(diào)用。

靜態(tài)構(gòu)造函數(shù)具有以下特點(diǎn)

.靜態(tài)構(gòu)造函數(shù)不使用訪問權(quán)限修飾符修飾或不具有參數(shù);

.類或結(jié)構(gòu)體中只能具有一個(gè)靜態(tài)構(gòu)造函數(shù);

.靜態(tài)構(gòu)造函數(shù)不能繼承或重載;

.靜態(tài)構(gòu)造函數(shù)不能直接調(diào)用,僅可以由公共語言運(yùn)行時(shí)調(diào)用;

.用戶無法控制程序中靜態(tài)構(gòu)造函數(shù)的執(zhí)行時(shí)間;

在創(chuàng)建第一個(gè)實(shí)例或引用任何靜態(tài)成員之前,將自動(dòng)調(diào)用靜態(tài)構(gòu)造函數(shù)以初始類化;

.靜態(tài)構(gòu)造函數(shù)會在實(shí)力構(gòu)造函數(shù)之前運(yùn)行;

實(shí)例如下:

public class MyClass{

    public static int num = 0;

    // 實(shí)例構(gòu)造函數(shù)

    public Example()

    {

        num=1;

        Console.WriteLine("實(shí)例構(gòu)造函數(shù)被調(diào)用。"+num);

    }

    // 靜態(tài)構(gòu)造函數(shù)

    static Example()

    {

        num=2;

        Console.WriteLine("靜態(tài)構(gòu)造函數(shù)被調(diào)用。"+num);

    }

    public static void CallStaticConstructor()

    {

        Console.WriteLine("調(diào)用靜態(tài)構(gòu)造函數(shù)。");

    }

    public static void Main()

    {

        // 靜態(tài)構(gòu)造函數(shù)被自動(dòng)調(diào)用

        Console.WriteLine("當(dāng)程序開始運(yùn)行時(shí),靜態(tài)構(gòu)造函數(shù)會被自動(dòng)調(diào)用。");

        // 調(diào)用靜態(tài)構(gòu)造函數(shù)

        Example.CallStaticConstructor();

        // 創(chuàng)建類的實(shí)例,調(diào)用實(shí)例構(gòu)造函數(shù)

        Example example = new Example();

    }

}

在這個(gè)示例中,靜態(tài)構(gòu)造函數(shù)被自動(dòng)調(diào)用一次,當(dāng)程序開始運(yùn)行時(shí)。當(dāng)你調(diào)用CallStaticConstructor方法時(shí),它不會再次調(diào)用靜態(tài)構(gòu)造函數(shù)。另外,每次你創(chuàng)建一個(gè)類的實(shí)例時(shí),實(shí)例構(gòu)造函數(shù)都會被調(diào)用。

第三種:受保護(hù)構(gòu)造函數(shù)(Protected Constructor)

受保護(hù)構(gòu)造函數(shù)允許子類訪問它,但不能從類的外部訪問。如果你希望一個(gè)類有多個(gè)層次結(jié)構(gòu)的實(shí)例,但不想從類的外部直接訪問這些實(shí)例,那么就可以使用受保護(hù)構(gòu)造函數(shù)。下面通過一個(gè)實(shí)例來展示私有構(gòu)造函數(shù)的使用:

public class BaseClass{    // 受保護(hù)構(gòu)造函數(shù)    protected BaseClass(string message)    {        Console.WriteLine("BaseClass構(gòu)造函數(shù)被調(diào)用,消息是:" + message);    }}
public class DerivedClass : BaseClass{    // 公共構(gòu)造函數(shù)    public DerivedClass() : base("從派生類調(diào)用")    {        Console.WriteLine("DerivedClass構(gòu)造函數(shù)被調(diào)用");    }}
public class Program{    public static void Main()    {        DerivedClass derived = new DerivedClass(); // 創(chuàng)建DerivedClass實(shí)例    }}

在上面的代碼中,BaseClass有一個(gè)受保護(hù)構(gòu)造函數(shù),它接受一個(gè)字符串參數(shù)。DerivedClass繼承自BaseClass,并且在其公共構(gòu)造函數(shù)中使用受保護(hù)構(gòu)造函數(shù)來調(diào)用BaseClass的構(gòu)造函數(shù),同時(shí)還輸出了一個(gè)消息。在Main方法中,我們創(chuàng)建了一個(gè)DerivedClass的實(shí)例。在這種情況下,將首先調(diào)用DerivedClass的構(gòu)造函數(shù),然后在其中調(diào)用BaseClass的受保護(hù)構(gòu)造函數(shù)。

從上面的示例中可以看出,構(gòu)造函數(shù)還可以分為:默認(rèn)構(gòu)造函數(shù)(無參構(gòu)造函數(shù))、帶有參數(shù)的構(gòu)造函數(shù)和重載構(gòu)造函數(shù)三種。

下面是對這三種構(gòu)造函數(shù)的詳細(xì)指南和優(yōu)化方法:

1、默認(rèn)構(gòu)造函數(shù)(無參構(gòu)造函數(shù)):

    1. 指南:當(dāng)創(chuàng)建類時(shí),如果沒有定義任何構(gòu)造函數(shù),編譯器會自動(dòng)為這個(gè)類生成一個(gè)默認(rèn)的無參構(gòu)造函數(shù)。這個(gè)構(gòu)造函數(shù)不接受任何參數(shù),它的作用是初始化類的所有成員變量。

    2. 優(yōu)化方法:如果你需要為類的成員變量設(shè)置初始值,可以在無參構(gòu)造函數(shù)中實(shí)現(xiàn)。例如:

    public class MyClass {

        public int MyVariable { get; set; }

        public MyClass()

        {

            MyVariable = 0// 設(shè)置初始值

        }

    }


2、帶有參數(shù)的構(gòu)造函數(shù)

    1. 指南:當(dāng)創(chuàng)建類時(shí),如果定義了帶有參數(shù)的構(gòu)造函數(shù),編譯器就不會自動(dòng)生成無參構(gòu)造函數(shù)。你必須顯式地定義帶有參數(shù)的構(gòu)造函數(shù)來初始化類的成員變量。

    2. 優(yōu)化方法:在定義帶有參數(shù)的構(gòu)造函數(shù)時(shí),需要考慮以下幾點(diǎn):

      1. 參數(shù)的數(shù)量和類型:根據(jù)類的需要,確定需要多少個(gè)參數(shù)以及每個(gè)參數(shù)的類型。

      2. 默認(rèn)值:可以為參數(shù)設(shè)置默認(rèn)值,這樣在調(diào)用構(gòu)造函數(shù)時(shí)如果沒有提供這些參數(shù)的值,它們就會使用默認(rèn)值。例如:

      public class MyClass {

          public int MyVariable { get; set; }

          public MyClass(int myVariable = 0)

          {

              MyVariable = myVariable;  // 使用參數(shù)值初始化成員變量

          }

      }


3、重載構(gòu)造函數(shù)

    1. 指南:當(dāng)需要在同一個(gè)類中定義多個(gè)構(gòu)造函數(shù)時(shí),可以使用重載構(gòu)造函數(shù)。每個(gè)重載構(gòu)造函數(shù)可以有不同的參數(shù)列表,以實(shí)現(xiàn)不同的初始化邏輯。

    2. 優(yōu)化方法:在定義重載構(gòu)造函數(shù)時(shí),需要考慮以下幾點(diǎn):

      1. 減少重復(fù)代碼:每個(gè)重載構(gòu)造函數(shù)應(yīng)該只包含一次重復(fù)的代碼部分。其他不重復(fù)的代碼部分應(yīng)該放在一個(gè)共同的私有構(gòu)造函數(shù)中,并由所有重載構(gòu)造函數(shù)調(diào)用。

      2. 傳遞參數(shù):如果一個(gè)重載構(gòu)造函數(shù)沒有參數(shù),但其他重載構(gòu)造函數(shù)有參數(shù),那么沒有參數(shù)的重載構(gòu)造函數(shù)應(yīng)該調(diào)用具有最少參數(shù)的重載構(gòu)造函數(shù)。例如:

      public class MyClass {

      public int MyVariable { get; set; }

       

          public MyClass() : this(0)

      {  }  // 無參構(gòu)造函數(shù)調(diào)用有參構(gòu)造函數(shù)

       

          public MyClass(int myVariable)

          {

              MyVariable = myVariable;  // 使用參數(shù)值初始化成員變量

          }

      }


該文章在 2023/9/25 12:20:05 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved