最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中靜態(tài)構造函數(shù)的幾點說明介紹

 更新時間:2014年01月17日 10:04:39   作者:  
本篇文章主要是對C#中靜態(tài)構造函數(shù)的幾點說明進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助

靜態(tài)構造函數(shù)是C#的一個新特性,其實好像很少用到。不過當我們想初始化一些靜態(tài)變量的時候就需要用到它了。這個構造函數(shù)是屬于類的,而不是屬于哪里實例的,就是說這個構造函數(shù)只會被執(zhí)行一次。也就是在創(chuàng)建第一個實例或引用任何靜態(tài)成員之前,由.NET自動調用。

復制代碼 代碼如下:

class SimpleClass
{
// Static constructor
static SimpleClass()
{
//
}
}

在使用靜態(tài)構造函數(shù)的時候應該注意幾點:

1、靜態(tài)構造函數(shù)既沒有訪問修飾符,也沒有參數(shù)。因為是.NET調用的,所以像public和private等修飾符就沒有意義了。

2、是在創(chuàng)建第一個類實例或任何靜態(tài)成員被引用時,.NET將自動調用靜態(tài)構造函數(shù)來初始化類,也就是說我們無法直接調用靜態(tài)構造函數(shù),也就無法控制什么時候執(zhí)行靜態(tài)構造函數(shù)了。

3、一個類只能有一個靜態(tài)構造函數(shù)。

4、無參數(shù)的構造函數(shù)可以與靜態(tài)構造函數(shù)共存。盡管參數(shù)列表相同,但一個屬于類,一個屬于實例,所以不會沖突。

5、最多只運行一次。

6、靜態(tài)構造函數(shù)不可以被繼承。

7、如果沒有寫靜態(tài)構造函數(shù),而類中包含帶有初始值設定的靜態(tài)成員,那么編譯器會自動生成默認的靜態(tài)構造函數(shù)。
 

靜態(tài)構造函數(shù)趣談!
類的靜態(tài)構造函數(shù)也叫類型構造器,靜態(tài)構造器,他調用的時刻由CLR來控制:

CLR會選擇如下時間之一來調用靜態(tài)構造函數(shù):
 1,在類型的第一個實例創(chuàng)建之前,或類型的非繼承字段或成員第一次訪問之前。這里的“之前”,代表前后銜接的意思。這里的時刻是精確的!

 2,在非繼承的靜態(tài)字段或成員第一次訪問之前的某個時刻,具體時刻不定!

由于調用的時刻不確定,所以我們最好不要編寫依賴于特定的靜態(tài)構造函數(shù)的執(zhí)行順序的代碼,這樣很容易產生不可預料的后果!

下面大家看看以下的Demo,我們來更加深入的看看靜態(tài)構造函數(shù)的一些有趣的行為:

Demo1:

復制代碼 代碼如下:

static void Main(string[] args)
{
Console.WriteLine(B.strText); 
}
public class A
{
public static string strText;
static A()
{
strText = "aaaa"; 
}
}
public class B : A
{
static B()
{
strText = "bbbb";  
}
}

大家猜猜結果是什么,可能有人認為輸出的是bbbb,因為訪問B.strText需要調用B類的靜態(tài)構造函數(shù)static B()。實際上輸出的結果是aaaa,因為strText是類A的靜態(tài)字段,而類B只是繼承了這個字段,所以這里會調用類A的靜態(tài)構造函數(shù)static A(),所以輸出結果是aaaa。這也沒有什么真正可說的,相信大家都能看出這個結果的。

下面看看第二個Demo:

Demo2:

復制代碼 代碼如下:

static void Main(string[] args)
{
B b = new B(); 
A a = new A();

Console.WriteLine(B.strText); 

}
public class A
{
public static string strText;
static A()
{
strText = "aaaa";  
}
}
public class B : A
{
static B()
{
strText = "bbbb";  
}
}


大家猜猜輸出結果是什么,可能有人認為會輸出aaaa,理由是new B()之前會調用static B(),然后new A()之前需要調用static A,這樣結果是aaaa,但是實際情況并非如果,正確的結果是bbbb,原因如下:

在執(zhí)行  new B(); 之前,B類的靜態(tài)構造函數(shù)會調用,也就是會調用:
static B()
{
 strText="bbbb";
}

當執(zhí)行到strText=“bbbb"的時候,這時需要訪問strText字段,而B的strText字段是從A類繼承的,所以這里需要會先調用:
static A()
{
 strText="aaaa";
}

執(zhí)行這個函數(shù)以后strText的值是aaaa

然后代碼又回到static B()中,這時才執(zhí)行static B()中的strText="bbbb"這行,所以strText這時的值是bbbb

當執(zhí)行A a=new A();的時候,不會在調用A的靜態(tài)構造函數(shù)了,因為前面已經調用過了,靜態(tài)函數(shù)在整個應用程序域的生命周期中只會調用一次!

請大家多指教??!

相關文章

  • C#中實現(xiàn)CAN通信的使用

    C#中實現(xiàn)CAN通信的使用

    本文主要介紹了C#中實現(xiàn)CAN通信的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-04-04
  • C#模擬瀏覽器實現(xiàn)自動操作

    C#模擬瀏覽器實現(xiàn)自動操作

    這篇文章主要為大家詳細介紹了如何使用C#實現(xiàn)模擬瀏覽器實現(xiàn)自動操作,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-11-11
  • C#實現(xiàn)的SQL備份與還原功能示例

    C#實現(xiàn)的SQL備份與還原功能示例

    這篇文章主要介紹了C#實現(xiàn)的SQL備份與還原功能,結合具體實例形式分析了C#操作數(shù)據(jù)庫實現(xiàn)SQL備份與還原相關的控件、SQL連接、文件等操作技巧,需要的朋友可以參考下
    2017-06-06
  • 解決Unity無限滾動復用列表的問題

    解決Unity無限滾動復用列表的問題

    這篇文章主要介紹了Unity無限滾動復用列表,無限滾動復用ScrollView就是解決這種問題,還可以用來做朋友圈,聊天等,需要的朋友可以參考下
    2022-04-04
  • C#簡單發(fā)送email的方法

    C#簡單發(fā)送email的方法

    這篇文章主要介紹了C#簡單發(fā)送email的方法,涉及C#發(fā)送Email的相關技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • C#定義簡單的反射工廠實例分析

    C#定義簡單的反射工廠實例分析

    這篇文章主要介紹了C#定義簡單的反射工廠的用法,實例分析了反射工廠的原理與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • C#實現(xiàn)偽裝文件夾功能

    C#實現(xiàn)偽裝文件夾功能

    這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)偽裝文件夾的功能,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C#中Array的存儲結構簡單介紹

    C#中Array的存儲結構簡單介紹

    本文將從一個數(shù)組的基礎操作開始,逐步來推導數(shù)組的在C#基礎操作、數(shù)組在CoreCLR的維護策略,數(shù)組在C++的內存分配等階段具體是如何實現(xiàn)的,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • 基于c#用Socket做一個局域網聊天工具

    基于c#用Socket做一個局域網聊天工具

    目前基于Internet的即時聊天工具已經做的非常完美,本文介紹了基于c#用Socket做一個局域網聊天工具,有需要的朋友可以看一下。
    2016-10-10
  • C#儀器數(shù)據(jù)文件解析Excel文件的方法淺析(xls、xlsx)

    C#儀器數(shù)據(jù)文件解析Excel文件的方法淺析(xls、xlsx)

    這篇文章主要給大家介紹了關于C#儀器數(shù)據(jù)文件如何解析Excel文件的方法,包括解析xls、xlsx兩種格式,文中介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-10-10

最新評論

尚义县| 舒兰市| 尼勒克县| 凌源市| 林周县| 鄂尔多斯市| 旅游| 开封市| 庄浪县| 芮城县| 大安市| 仲巴县| 中宁县| 昂仁县| 黑水县| 咸阳市| 吐鲁番市| 黄骅市| 兴海县| 栖霞市| 黄石市| 抚宁县| 吉林省| 潞城市| 双桥区| 清徐县| 天水市| 中西区| 特克斯县| 鹤壁市| 望谟县| 伊金霍洛旗| 通河县| 遵化市| 思茅市| 东港市| 巫溪县| 阳信县| 固安县| 垣曲县| 泊头市|