<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      [畢業生的商業軟件開發之路]C#類型成員

      近期開始接觸到在校學生、高校實習生和畢業生,在此說一下筆者對這些徘徊在職場門口的學生一些建議,希望能給這些初學者進入軟件開發行業帶來一些幫助,使得畢業生能更順利的進入軟件開發公司開始職場生涯,人生來一個完美的轉彎。
      --------------------------------------------------------------------------------

      C#類型成員

      類型、接口和結構體都包含若干個類型成員,類型成員有多種。

      例如以下代碼定義了一個類。

       1 public class PeopleClass
       2 {
       3     /// <summary>
       4     /// 靜態構造函數
       5     /// </summary>
       6     static PeopleClass()
       7     {
       8         System.Console.WriteLine("Start");
       9     }
      10 
      11     /// <summary>
      12     /// 無參數的構造函數
      13     /// </summary>
      14     public PeopleClass()
      15     {
      16     }
      17 
      18     /// <summary>
      19     /// 有參數的構造函數
      20     /// </summary>
      21     /// <param name="code"></param>
      22     /// <param name="name"></param>
      23     public PeopleClass(string code, string name)
      24     {
      25         _Code = code;
      26         _Name = name;
      27     }
      28 
      29     /// <summary>
      30     /// 字段
      31     /// </summary>
      32     private string _Code = null;
      33     /// <summary>
      34     /// 屬性
      35     /// </summary>
      36     public string Code
      37     {
      38         get
      39         {
      40             return _Code;
      41         }
      42         set
      43         {
      44             _Code = value;
      45         }
      46     }
      47 
      48     /// <summary>
      49     /// 字段
      50     /// </summary>
      51     private string _Name = null;
      52     /// <summary>
      53     /// 屬性
      54     /// </summary>
      55     public string Name
      56     {
      57         get
      58         {
      59             return _Name;
      60         }
      61         set
      62         {
      63             _Name = value;
      64         }
      65     }
      66     /// <summary>
      67     /// 方法
      68     /// </summary>
      69     /// <returns></returns>
      70     public override string ToString()
      71     {
      72         return _Code + " " + _Name;
      73     }
      74         
      75     private void RaiseNameChangedEvent()
      76     {
      77         if (NameChanged != null)
      78         {
      79             NameChanged(thisnull);
      80         }
      81     }
      82     /// <summary>
      83     /// 事件
      84     /// </summary>
      85     public event EventHandler NameChanged = null;
      86 }

       

      這個類就包含了以下成員類型。

      構造函數

      在代碼中定義了兩個名為“PeopleClass”的方法,這種和類型同名的方法稱為類型的構造函數。構造函數沒有任何返回值,構造函數可以帶參數,可以定義可用范圍。

      若在代碼中沒有定義任何構造函數,則系統會默認定義了一個無參數的公開的構造函數。

      字段

      在代碼中使用“private string _Code = null;”定義了一個字段。在這里關鍵字“private”定義了該字段的引用范圍為私有的,代碼“string”說明了字段的數據類型,代碼“_Code”為字段的名稱,“=null”為字段的默認值。

      屬性

      以下代碼定義了一個屬性。

      public string Name
      {
          
      get
          {
              
      return _Name;
          }
          
      set
          {
              _Name 
      = value;
          }
      }

       

       

      在這里“public”定義了該屬性的引用范圍為公開的,代碼“string”說明了屬性的數據類型,“Name”說明了屬性的名稱,“get”代碼塊定義了如何獲得屬性值,“set”代碼塊定義了如何保存屬性值,在“set”代碼塊中,關鍵字“value”是一個默認的參數,代表從外界傳入的需要保存的數值。在C#中,只有屬性的“set”代碼塊中,關鍵字“value”才有效,其他地方出現的“value”必定是某個標識符,而不是關鍵字。

      方法

      以下代碼定義了一個方法

       

      public override string ToString( )
      {
         
      return _Code + " " + _Name;
      }

       

        在這里“public”定義了該方法的為公開的;代碼“override”說明該方法是重載了基類的相同簽名的方法;“string”就是方法的返回值類型;“ToString”為方法名稱;圓括號“()”列表就是列出方法的參數,這里內容為空表示該函數沒有任何參數。

      方法開頭后面就是方法體了,在里面使用“return”就是退出本函數并返回一個字符串值。

      方法有返回值和參數列表,返回值可以為任意數據類型,若函數沒有返回值,則使用關鍵字void來定義方法,比如“public void MyMethod( )”。有種說法,具有返回值的方法稱為函數,沒有返回值的方法稱為方法。在本書中沒有這種說法,統一稱為對象成員方法。

      若定義方法具有返回值時,在方法體內的函數必須使用return語句返回運算結果,否則會編譯錯誤,這點和VB是不同的。在VB中若沒有使用return語句返回運算結果,則會自動的返回參數數據類型對應的默認值。

      方法具有若干個參數,對于值類型的參數,C#默認是按照值傳遞的,但可以使用關鍵字outref來實現按引用傳遞;對于引用類型的參數,永遠是按照引用傳遞的。例如“public void MyMethod( ref int parameter )

      參數修飾符

      說明

      無修飾

      對于值類型的參數按值傳遞,方法體內修改參數值不會影響方法體外的參數變量的值。

      out

      說明該參數包含了方法的運算結果,此時參數是按引用傳遞的,而且在方法體內必須設置好參數值,否則編譯錯誤,方法體內修改參數值會傳導到方法體外用作方法產生的變量的值。

      ref

      參數是按引用傳遞的。方法體內修改參數值會傳導到方法體外用作方法參數的變量的值。但方法體內不強制修改參數值,可以修改也可以不修改。

       

      事件

      以下代碼定義了一個事件

      public event EventHandler NameChanged = null;

      在這里“public”定義該事件為公開的;代碼“event”說明這是定義一個事件;代碼“EventHandler”就是事件采用的委托類型;代碼“NameChanged”就是事件的名稱;代碼“=null”設置該事件的初始值為空。

      本類型還定義了一個函數來觸發這個事件,該函數的代碼如下

      private void RaiseNameChangedEvent()
      {
          
      if (NameChanged != null)
          {
              NameChanged(
      thisnull);
          }
      }

       

      在這里使用代碼“if NameChanged != null )”用于判斷事件是否有效,而代碼“NameChanged( this , null )”就是調用該事件綁定的方法。

      從便于理解的角度上看,事件可以說是一種比較特殊的字段,它是一種列表,能存儲若干個委托對象,從而能動態的綁定了若干個方法。

      索引器

      索引器允許類或者結構體的實例就像數組一樣進行索引,索引器類似一個帶有參數的屬性。以下代碼定義了一個索引器

      /// <summary>
      /// 索引器的范例
      /// </summary>
      public class PeopleList
      {
          
      public PeopleList()
          {
          }

          
      private ArrayList _Values = new ArrayList() ;
          
      /// <summary>
          
      /// 添加對象
          
      /// </summary>
          
      /// <param name="people"></param>
          public void AddPeople(PeopleClass people)
          {
              _Values.Add(people);
          }

          
      /// <summary>
          
      /// 參數為序號的索引器
          
      /// </summary>
          
      /// <param name="index"></param>
          
      /// <returns></returns>
          public PeopleClass this[int index]
          {
              
      get 
              {
                  
      return ( PeopleClass ) _Values[index]; 
              }
              
      set
              {
                  _Values[index] 
      = value; 
              }
          }

          
      /// <summary>
          
      /// 參數為人員姓名的索引器
          
      /// </summary>
          
      /// <param name="name"></param>
          
      /// <returns></returns>
          public PeopleClass this[string name]
          {
              
      get
              {
                  
      foreach (PeopleClass people in _Values)
                  {
                      
      if (people.Name == name)
                      {
                          
      return people;
                      }
                  }
                  
      return null ;
              }
      }
          
      /// <summary>
          
      /// 根據生日計算年齡
          
      /// </summary>
          
      /// <param name="birthday"></param>
          
      /// <returns></returns>
          public static int CalculateAge( DateTime birthday )
          {
              
      return DateTime.Now.Subtract(birthday).Days / 365;
          }
      }

       

      在代碼“public PeopleClass this[int index]”中,“public”說明該索引器是公開的,“PeopleClass”定義了改索引器使用的數據類型,“this[ ]”說明這是在定義一個索引器,“int index”就是說明該索引器有個名為“index”類型為“int”的參數。

      在代碼“public PeopleClass this[string name]”中,“string name”說明該索引器使用的是一個字符串類型的參數,這個索引器可以按照人員姓名來獲得人員信息對象。[袁永福版權所有]

      在索引器的“get”代碼塊中,程序根據“index”參數值獲得返回值;在“set”代碼塊中,程序根據“index”參數值和默認存在的“value”參數值來設置內部數值。

      若索引器只有“get”代碼塊而沒有“set”代碼塊,則該索引器是只讀的,不能通過它來修改數據;若只有“set”代碼塊而無“get”代碼塊,則該索引器只能用于修改數據而不能用于獲得數據。

       

      以下的C#代碼就演示了如何使用索引器,

      //創建對象
      PeopleList list = new PeopleList();
      // 向對象添加內容
      list.AddPeople(new PeopleClass("1""張三"));
      list.AddPeople(
      new PeopleClass("2""李四"));
      list.AddPeople(
      new PeopleClass("3""王五"));
      list.AddPeople(
      new PeopleClass("4""陳六"));
      list.AddPeople(
      new PeopleClass("5""趙七"));
      list.AddPeople(
      new PeopleClass("6""錢八"));
                  
      // 使用索引器獲得數據
      PeopleClass people = list[0];
                  
      people 
      = list["趙七"];

      從這段代碼中可以看到,帶有索引器的類型的對象實例可以當做數組來使用,可以使用下標來訪問它的數據。[袁永福版權所有]

      索引器比數組更為靈活,因為數組只能使用整數作為下標值,而索引器可以使用任何數據類型作為下標值。比如在這里使用代碼“public PeopleClass this[string name]”定義的索引器就可以使用字符串作為下標值。而且索引器可以有多個參數來支持多個下標值。

      此外索引器可以被重載,可以定義抽象索引器或虛擬索引器。[袁永福版權所有]

      posted on 2011-08-03 16:15  袁永福 電子病歷,醫療信息化  閱讀(630)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 91老肥熟女九色老女人| 免费人成视频在线| 无码人妻精品一区二区三区夜夜嗨 | 久久精品国产亚洲av麻豆不卡| 亚洲av永久无码天堂影院| 久爱无码精品免费视频在线观看| 精品人妻码一区二区三区| AV区无码字幕中文色| 女人被狂躁到高潮视频免费软件| 亚洲精品无码av天堂| 日韩激情一区二区三区| 亚洲欧洲色图片网站| 黑人玩弄人妻中文在线| 女同精品女同系列在线观看| 真实国产乱啪福利露脸| 高清中文字幕国产精品| 中文字幕av无码免费一区| 亚洲天堂激情av在线| 张家口市| 国产高清在线精品一本大道| 四虎永久免费精品视频| 亚洲综合天堂av网站在线观看| 天天躁夜夜躁狠狠喷水| 一区二区三区四区国产综合| 1精品啪国产在线观看免费牛牛| 精品国产女同疯狂摩擦2| 中文字幕va一区二区三区| 欧美成人性色一区欧美成人性色区| 亚洲欧洲日韩国内精品| 99网友自拍视频在线| 久久精品免视看国产成人| 水蜜桃av导航| 精品国产中文字幕在线看| 激情综合色综合啪啪开心| av在线中文字幕不卡电影网| 国产学生裸体无遮挡免费| 99精品国产中文字幕| 色综合中文综合网| 国产揄拍国产精品| 国精品午夜福利视频| 国产精品亚洲中文字幕|