中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#字段、屬性、方法、委托

發布時間:2020-07-28 10:15:17 來源:網絡 閱讀:846 作者:jackeyone 欄目:編程語言

 

 在 C#中,類包含若干個組成成員,這些組成成員包括

字段、屬性、方法事件等,

這些組成成員能 夠彼此協調用于對象的深入描述。

    1.字段 “字段”是包含在類中的對象的值, 字段使類可以封裝數據, 字段的存儲可以滿足類設計中所需要描述。

    例如在 Animal 類中的字段 color,就是用來描述動物的顏色。當然, Animal 的特性不只顏色, 可以聲明多個字段描述 Animal 類的對象,示例代碼如下所示。

class Animal { public string color; //聲明顏色字段
               public bool haveFeather; //聲明是否含有羽毛字段
               public int age; //年齡字段
              }

上述代碼中,對 Animal 類聲明了另外兩個字段,用來描述是否有羽毛和年齡。當需要訪問該類的字 段的時候,需要聲明對象,并使用點“.”操作符實現,Visual Studio 2008 中對“.”操作符有智能提示功 能,示例代碼如下所示。

   Animal bird = new Animal(); //創建對象
   bird.haveFeather = true; //鳥有羽毛
   bird.color = "black"; //這是一只黑色的鳥

2.屬性 C#中,屬性是類中可以像類的字段一樣訪問的方法。屬性可以為字段提供保護,避免字段在用戶創建的對象不知情的情況下下被更改。屬性機制非常靈活,提供了讀取、編寫或計算私有字段的值, 可以像公共數據成員一樣使用屬性。

    在 C#中,它們被稱為“訪問器”,為 C#應用程序中類的成員的訪問提供安全性保障。當一個字段的 權限為私有(private)時,不能通過對象的“.”操作來訪問,但是可以通過“訪問器”來訪問,示例代碼 如下所示。

    public class Animal { private int _age; //定義私有變量
    public int Age {

                     get { return _age; }
                     set { _age = value; }

                    } //賦值屬性 }

上述代碼中為 Animal 類聲明了一個屬性 Age,在主程序中,同樣可以通過“.”操作符來訪問屬性,示 例代碼如下所示。

     Animal bird = new Animal(); //創建對象
     bird.Age = 1; //Age 訪問了_age

    在 Visual Studio 2008 中,屬性的聲明被簡化,不再需要冗長的聲明,示例代碼如下所示。

public class Animal //創建類

   { public int Age
      { get; set; } //簡便的屬性編寫
    }

注意:雖然在 VS2008 中,簡化了代碼,但是實現的過程依舊沒有改變。

    3.方法 方法用來執行類的操作,方法是一段小的代碼塊。在 C#中,方法接收輸入的數據參數,并通過參數 執行函數體,返回所需的函數值,方法的語法如下所示。

私有級別 返回類型 方法名稱(參數 1,參數 2) { 方法代碼塊。 }

    方法在類中聲明。對方法的聲明,需要指定訪問級別、返回值、方法名稱以及任何必要的參數。參 數在方法名稱后的括號中,多個參數用逗號分割,空括號表示無參數,示例代碼如下所示。 public string output() //一個無參數傳遞的方法
   { return "沒有任何參數"; //返回字符串值 }

public string out_put(string output) //一個有參數傳遞的方法
{ return output; //返回參數的值 }

    上述代碼中,創建了兩個方法,一個是無參數傳遞方法 output 和一個參數傳遞的方out_put,在 主函數中可以調用該方法,調用代碼如下所示。

    Animal bird = new Animal(); //創建對象
    bird.out_put(); //使用無參數的方法
    string str = "我是一只鳥"; //創建字符串用于參數傳遞
    bird.out_put(str); //使用有參數的方法

    如上述代碼所示,主函數調用了一個方法 out_put,并傳遞了參數“我是一只鳥”。在使用類中的方法 前,將“我是一只鳥”賦值給變量 str,傳遞給 out_put 函數。在上述代碼中,“我是一只鳥”或者 str 都 可以作為參數。 在應用程序開發中,方法和方法之間也可以互相傳遞參數,一個方法可以作為另一個方法的參數, 方法的參數還可以作為另一個方法的返回值,示例代碼如下所示。

public string output() //一個無參數傳遞的方法
{ return "沒有任何參數"; //返回字符串 }
public string out_put() //使用其他方法返回值的方法
{ string str = output(); //使用另一個方法的返回值
return str; //返回方法的返回值 }

    如上述代碼所示,out_put 使用了 output 方法,output 返回一個字符串“沒有任何參數”。在 out_put 方法中,使用了 output 方法,并將 output 方法的返回值賦給 str 局部變量,并返回局部變量。在方 法的編寫中,方法和方法之間可以使用同一個變量而互不影響,因為方法內部的變量是局部變量, 示例代碼如下所示。

public string output() //一個無參數傳遞的方法
{ string str = "沒有任何參數"; //聲明局部變量 str return str; //使用局部變量 str } public string out_put() //一個無參數傳遞的方法
{ string str = "還是沒有任何參數"; //聲明局部變量
str return str; //使用局部變量 str}

    如上述代碼所示,output 和 out_put 方法都沒有任何參數,但是卻使用了同一個變量 str。str 是局部 變量,str 的作用范圍都在該變量聲明的方法內,稱作“作用域”。創建了一個方法,就必須指定該方 法是否有返回值。如果有返回值,則必須指定返回值的類型,示例代碼如下所示。

public int sum(int number1, int number2) //必須返回 int 類型的值
{ return number1 + number2; //返回一個 int 類型的值 }
public void newsum(int number1, int number2) //void 表示無返回值
{ int sum = number1 + number2; //沒有返回值則不能返回值 }

    上述代碼中,聲明了兩個方法,分別為 sum 和 newsum。sum 方法中,聲明了該方法是共有的返回 值為 int 的方法,而 newsum 方法聲明了是共有的無返回值方法。

    4.事件 事件是一個對象向其他對象提供有關事件發生的通知的一種方式。在 C#中,事件是使用委托來定義 和觸發的。類或對象可以通過事件向其他類或對象通知發生的相關事情。發送或引發事件的類稱為 “發行者”, 接收或處理事件的類稱為“訂閱者”。 例如在 Web Form 中雙擊按鈕的過程, 就是一個事件, 控件并不對過程做描述,只是負責通知一個事件是否發生。事件具有以下特點: 事件通常使用委托事件處理程序進行聲明。 事件始終通知對象消息并指示需要執行某種操作的一種方式。 發行者確定何時引發事件,訂閱者確定執行何種操作來響應該事件。 一個事件可以有多個訂閱者。一個訂閱者可處理來自多個發行者的多個事件。 沒有訂閱者的事件永遠不會被調用。 事件通常用于通知用戶操作,例如,圖形用戶界面中的按鈕單擊或菜單選擇操作。 如果一個事件有多個訂閱者,當引發該事件時,會同步調用多個事件處理程序,也可以使用異步處 理多個事件。 聲明委托和事件的示例代碼如下所示。

public delegate void AnimalEventHandler(); //聲明委托
public class Animal//創建類
{ public event AnimalEventHandler OnFly; //聲明事件
public void Fly() //創建類的方法
{ OnFly(); //使用事件 }
}

    上述代碼定義了一個委托,并針對相關委托聲明了一個方法。關于委托和事件,會在后面的章節中 講到,上述代碼在主函數調用代碼如下所示。

Animal bird = new Animal(); //創建對象
bird.OnFly += new AnimalEventHandler(TestAnimal); //注冊事件
bird.Fly(); //使用方法

 

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贵南县| 云和县| 阳泉市| 二连浩特市| 安新县| 碌曲县| 华宁县| 邵阳市| 拜泉县| 马尔康县| 滦平县| 麻城市| 疏附县| 徐汇区| 凯里市| 麻栗坡县| 红桥区| 泽州县| 土默特左旗| 萍乡市| 铜陵市| 南丹县| 全南县| 双鸭山市| 岫岩| 思茅市| 瑞金市| 松滋市| 平原县| 紫云| 阳信县| 临城县| 苍梧县| 铁岭县| 长顺县| 浮山县| 旺苍县| 达拉特旗| 班玛县| 中阳县| 临安市|