關於靜態建構函式,及相關問題

2022-03-13 02:07:26 字數 913 閱讀 9580

前言:

談起建構函式,從c++開始,就開始接觸了。然而前幾天見到c#中的靜態建構函式問題,還是感覺相對陌生,遂再來看一看。

解析:

先看**,演示建構函式的使用情況:

//description: 演示靜態建構函式的相關

////notes: 用一具體例項演示之

public

class

apublic

a()}

class

program

",a.a );}}

對於除錯結果,居然為:

為什麼呢?中間肯定有問題,或者所不曾清晰地規律。原來問題在於 靜態建構函式 上。

解析:

原來靜態建構函式,只在載入類時執行一次,即使例項化多個物件,其也至多執行一次,且是在例項化物件,或類使用其中成員前執行。見下述**:(由前述**,稍微修改)

//description: 演示靜態建構函式的相關

////notes: 用一具體例項演示之

public

class

apublic

a()}

class

program

}而結果為:

即驗證了上述的解釋。然而對於靜態建構函式,還有幾點需要說明,見附:

附:

綜述之,通過對靜態建構函式的相關應用,加深了對這一特殊建構函式的理解,也理解了其功效。呵呵~

關於靜態建構函式

關於靜態建構函式一直有些不特別明白,現在上一次例項,僅供參考。1public class teststaticconstructor211 12public teststaticconstructor 1317 下面是測試 第一種情況 只宣告 static void main string args...

關於c 靜態建構函式

在百科上看到c 的新特性靜態建構函式,其中提到靜態建構函式 不能繼承 今天做了個試驗,發現實際上靜態建構函式是可以繼承的,如下 using system using system.collections.generic using system.linq using system.text usin...

關於靜態建構函式和BeforeFieldInit

生魚片大神的博文 1.看下面的例子 public static class myclass class program 結果如下 getnow execute getnow execute main execute int 2009 9 8 15 34 31 string 2009 9 8 15 3...