程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 深入解析C#編程中的事件(3)

深入解析C#編程中的事件(3)

編輯:關於C語言

實例變量初始化函數

當一個構造函數沒有構造初始化函數或一個形式為base(...)的構造函數初始化函數,構造函數就就隱含的執行被類中聲明的實例域的變量初始化函數指定的初始化。這與賦值序列相關,這些賦值在直接基類構造函數的隱式調用前,在構造函數的入口被直接執行。變量初始化函數按照它們在類聲明中出現的文字順序執行。

構造函數執行

可以把一個實例變量初始化函數和一個構造函數初始化函數,看作是自動插在構造函數主體中的第一條語句前。例子

using System.Collections;
class A
{
 int x = 1, y = -1, count;
 public A() {
  count = 0;
 }
 public A(int n) {
  count = n;
 }
}
class B: A
{
 double sqrt2 = Math.Sqrt(2.0);
 ArrayList items = new ArrayList(100);
 int max;
 public B(): this(100) {
  items.Add("default");
 }
 public B(int n): base(n - 1) {
  max = n;
 }
}

包含了許多變量初始化函數,並且也包含了每個形式(base和this)的構造函數初始化函數。這個例子與下面介紹的例子相關,在那裡,每條注釋指明了一個自動插入的語句(自動插入構造函數調用所使用的語法不是有效的,至少用來演示這個機制)。

using System.Collections;
class A
{
 int x, y, count;
 public A() {
  x = 1; // Variable initializer
  y = -1; // Variable initializer
  object(); // Invoke object() constructor
  count = 0;
 }
 public A(int n) {
  x = 1; // Variable initializer
  y = -1; // Variable initializer
  object(); // Invoke object() constructor
  count = n;
 }
}
class B: A
{
 double sqrt2;
 ArrayList items;
 int max;
 public B(): this(100) {
  B(100); // Invoke B(int) constructor
  items.Add("default");
 }
 public B(int n): base(n - 1) {
  sqrt2 = Math.Sqrt(2.0); // Variable initializer
  items = new ArrayList(100); // Variable initializer
  A(n - 1); // Invoke A(int) constructor
  max = n;
 }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved