欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c#對象初始化順序?qū)嵗治?/h1>
 更新時間:2015年06月09日 16:21:28   作者:McJeremy&Fan  
這篇文章主要介紹了c#對象初始化順序,實例分析了C#對象初始化的相關(guān)使用技巧與調(diào)用順序,需要的朋友可以參考下

本文實例分析了c#對象初始化順序。分享給大家供大家參考。具體如下:

using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1 {
  class Program {
    static void Main(string[] args) {
      A a = new B();
      Console.ReadLine();
    }
  }
  class A {
    //調(diào)用到這個構(gòu)造函數(shù)時:x=1,y=0
    public A() {
      //該函數(shù)在B類中被重載,因此輸出 x=1,y=0
      Console.WriteLine("在A類的構(gòu)造函數(shù)中");
      PrintFields();
    }
    public virtual void PrintFields() { }
  }
  class B : A {
    //派生類變量/靜態(tài)成員的執(zhí)行順序優(yōu)于基類
    //先變量,因此,x=1,y=0
    int x = 1;
    int y;
    //后構(gòu)造函數(shù),此時,先調(diào)用基類構(gòu)造函數(shù)
    public B() {
      //運行到這里時,A類構(gòu)造函數(shù)已經(jīng)執(zhí)行完畢
      y = -1;
      Console.WriteLine("在B類的構(gòu)造函數(shù)中");
      //此時 x=1,y=-1
      PrintFields();
    }
    public override void PrintFields() {
      Console.WriteLine("x={0},y={1}", x, y);
    }
  }
}

這里備忘一下c#對象初始化順序及C++對象初始化順序:

C#對象初始化

1. 先變量后構(gòu)造函數(shù)。變量先被初始化,然后構(gòu)造函數(shù)被執(zhí)行

2. 先靜態(tài)化后實例化。當一個類被訪問時,靜態(tài)變量和構(gòu)造函數(shù)最先被初始化.接著是對象的實例化變量和構(gòu)造函數(shù)被初始化

3. 先派生類后基類。對于變量和靜態(tài)構(gòu)造函數(shù),派生對象在基對象之前被初始化.比如C類派生自B類,B類派生自A類,那么變量和靜態(tài)構(gòu)造函數(shù)被初始化次序是C-B-A.

4. 除了實例構(gòu)造函數(shù)。對于實例構(gòu)造函數(shù),基類構(gòu)造函數(shù)在派生類構(gòu)造函數(shù)之前執(zhí)行,實例構(gòu)造函數(shù)被執(zhí)行次序是A-B-C.

5. 不要假定變量的次序。Fields依據(jù)它們在源文件中的聲明的順序依次初始化.然而,自從程序員和工具可以隨意安排變量的聲明后,你不應該在依靠變量任何特別的次序初始化

6. 對虛方法用兩個階段的構(gòu)建。避免從一個構(gòu)造器調(diào)用虛方法. 如果在初始化一個對象時需要調(diào)用一些虛方法,應在完整構(gòu)造該對象的地方使用兩階段的構(gòu)建,并隨后調(diào)用已構(gòu)造對象的初始化方法。

C++構(gòu)造函數(shù)調(diào)用順序

1. 如果類里面有成員類,成員類的構(gòu)造函數(shù)優(yōu)先被調(diào)用;

2. 創(chuàng)建派生類的對象,基類的構(gòu)造函數(shù)優(yōu)先被調(diào)用(也優(yōu)先于派生類里的成員類);

3. 基類構(gòu)造函數(shù)如果有多個基類,則構(gòu)造函數(shù)的調(diào)用順序是某類在類派生表中出現(xiàn)的順序而不是它們在成員初始化表中的順序;

4. 成員類對象構(gòu)造函數(shù)如果有多個成員類對象,則構(gòu)造函數(shù)的調(diào)用順序是對象在類中被聲明的順序而不是它們出現(xiàn)在成員初始化表中的順序;

5. 派生類構(gòu)造函數(shù),作為一般規(guī)則派生類構(gòu)造函數(shù)應該不能直接向一個基類數(shù)據(jù)成員賦值而是把值傳遞給適當?shù)幕悩?gòu)造函數(shù),否則兩個類的實現(xiàn)變成緊耦合的(tightly coupled)將更加難于正確地修改或擴展基類的實現(xiàn)。(基類設計者的責任是提供一組適當?shù)幕悩?gòu)造函數(shù))

希望本文所述對大家的C#程序設計有所幫助。

相關(guān)文章

  • C#?微信支付回調(diào)驗簽處理的實現(xiàn)

    C#?微信支付回調(diào)驗簽處理的實現(xiàn)

    在微信支付中,當用戶支付成功后,微信會把相關(guān)支付結(jié)果和用戶信息發(fā)送給商戶,本文就詳細的介紹了C#?微信支付回調(diào)驗簽處理,具有一定的參考價值,感興趣的可以了解一下
    2021-12-12
  • c#定時器使用示例詳解

    c#定時器使用示例詳解

    這篇文章主要介紹了c#定時器的使用示例,大家參考使用吧
    2014-01-01
  • c# 幾個常見的TAP異步操作

    c# 幾個常見的TAP異步操作

    這篇文章主要介紹了c# 幾個常見的TAP異步操作,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-04-04
  • C#調(diào)用OpenCV開發(fā)簡易版美圖工具【推薦】

    C#調(diào)用OpenCV開發(fā)簡易版美圖工具【推薦】

    本文主要介紹在WPF項目中使用OpenCVSharp3-AnyCPU開源類庫處理圖片,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧
    2019-10-10
  • C#程序員最易犯的編程錯誤

    C#程序員最易犯的編程錯誤

    這篇文章主要介紹了C#程序員最易犯的10個編程錯誤,了解這些錯誤能夠更好地學習C#程序設計,感興趣的小伙伴們可以參考一下
    2015-11-11
  • C#中的in參數(shù)與性能分析詳解

    C#中的in參數(shù)與性能分析詳解

    這篇文章主要給大家介紹了關(guān)于C#中in參數(shù)與性能分析的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • C#實現(xiàn)屏幕抓圖并保存的示例代碼

    C#實現(xiàn)屏幕抓圖并保存的示例代碼

    這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)屏幕抓圖并保存的功能,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以了解一下
    2022-12-12
  • C# 整數(shù)轉(zhuǎn)二進制字符串方式

    C# 整數(shù)轉(zhuǎn)二進制字符串方式

    這篇文章主要介紹了C# 整數(shù)轉(zhuǎn)二進制字符串方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Unity實現(xiàn)卡牌翻動效果

    Unity實現(xiàn)卡牌翻動效果

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)卡牌翻動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C#中異步Socket通信編程代碼實例

    C#中異步Socket通信編程代碼實例

    這篇文章主要介紹了C#中異步Socket通信編程代碼實例,本文講解了什么是Socket編程的異步是實現(xiàn)、如何實現(xiàn)Socket異步通信并給出了代碼實例,需要的朋友可以參考下
    2015-03-03

最新評論