(1)用於對靜態欄位、唯讀欄位等的初始化。 (2)添加static關鍵字,不能添加存取修飾詞,因為靜態建構函式都是私人的。 (3)類的靜態建構函式在給定應用程式定義域中至多執行一次:只有建立類的執行個體或者引用類的任何靜態成員才激發靜態建構函式 (4)靜態建構函式是不可繼承的,而且不能被直接調用。 (5)如果類中包含用來開始執行的 Main 方法,則該類的靜態建構函式將在調用 Main 方法之前執行。
今天花了一些時間把靜態建構函式的用法總結了一下,希望高手們指點。謝謝! 靜態建構函式既沒有存取修飾詞,也沒有參數。如果沒有編寫靜態建構函式,而這時類中包含帶有初始值設定的靜態欄位,那麼編譯器會自動產生預設的靜態建構函式。在建立第一個類執行個體或任何靜態成員被引用時,.NET將自動調用靜態建構函式來初始化類,也就是說我們無法直接調用靜態建構函式,也就無法控制什麼時候執行靜態建構函式了。如果類中包含用來開始執行的 Main 方法,則該類的靜態建構函式將在調用 Main
using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace ConsoleApplication3{ class Program { static void Main(string[] args) { ClassInfo c = new ClassInfo();
如下代碼所示:class mm { public void F() { Console.WriteLine("mm.F()\n"); } public virtual void G() //聲明了一個虛方法 { Console.WriteLine("mm.G()"); } } class nn : mm { new
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Diagnostics; public partial class Form1 : Form { public Form1()
public partial class Form1 : Form { public Form1() { InitializeComponent(); } [DllImport("USER32.DLL")] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
public AtmDataBase DeepClone() { MemoryStream ms = new MemoryStream(); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(ms, this); ms.Position = 0; return bf.Deserialize(ms) as AtmDataBase; }C# 支援兩種類型:“實值型別”和“參考型別”。實值型別(