程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> C# struct / enum

C# struct / enum

編輯:C#基礎知識
 using System;
 
 namespace struct_enum
 {
     /// <枚舉類型enum>
     /// enum: 值類型
     ///     1.數據直接存儲在棧中
     ///     2.默認枚舉中的第一個變量被賦值為0,其他的變量的值按定義的順序來遞增(0,1,2,3,4...)
     ///     3.enum枚舉類型的變量的名字不能相同,但是值可以相同,
     ///     4.如果enum中的部分成員顯式定義了值,那麼沒有定義值的成員還是會按照上一個成員的值來遞增賦值.
     ///     5.enum枚舉成員可以用來作為位標志,同時支持位的操作(位與,位或等等)
     ///     enum CardDeckSettings : uint  
     ///     {  
     ///         SingleDeck = 0x01,         //Bit 0  
     ///         LargePictures = 0x02,       //Bit 1  
     ///         FancyNumbers = 0x04,      //Bit 2  
     ///         Animation = 0x08         //Bit 3      
     ///     }  
     /// </枚舉類型enum>
     public enum Gender
     {
         男,
         女
     }
 
     //=====================================================================================
 
     /// <struct>
     /// struct: 值類型(類是引用類型)
     ///     1.直接繼承自【System.ValueType】(繼承自【System.Object】),不需要顯示的指定;
     ///     2.結構可以聲明構造函數,但它們必須帶參數;不能包含顯式的無參數構造函數,
     ///     3.與類不同,結構的實例化可以不使用【new】運算符。;
     ///     4.結構的繼承列表中只允許有接口,結構可以實現接口,一個結構不能從另一個結構或類繼承,而且不能作為一個類的基;
     ///     5.結構在定義變量時不能給定初始值;     /// </struct>
     public struct Person
     {
         public string strName;
         public int nBirthday;
         public Gender gender;
     }
 
     public struct Person2
     {
         // 構造函數: 必須帶參數 且必須加上【:this()】
         public Person2(string name, Gender gd, int nBd) : this()
         {
             strName = name;
             nBirthday = nBd;
             gender = gd;
             
         }
 
         public string strName { get; private set; }
         public int nBirthday { get; private set;}
         public Gender gender { get; private set; }
 
         public void fnTestPerson2(Person2 ps2)
         {
             Console.Write("\n測試 Person2: ");
             Console.WriteLine("姓名: {0} , {1}, {2}", ps2.strName, ps2.gender, ps2.nBirthday);
             Console.WriteLine("\n---------------------------------------");
         }
 
     }
 
     public struct Person3
     {
         // 姓名
         private string name;
         public string strName
         {
             get     // 獲取私有成員name的值
             {
                 return this.name;
             }
 
             set     // 給私有成員name賦值
             {
                 this.name = value;      // this代表person3的實例化對象
             }
         }
 
         // 年齡
         //private int age;       // 私有
         public int nAge       // 對外公開
         {
             get; // 簡寫,相當於: get { return this.birthday; }
             set; // 簡寫,相當於: set { return this.birthday = value; }
         }
 
         // 性別
         //private Gender gender;
         public Gender GENDER
         {
             get;
             set;
         }
 
         public void fnTestPerson3(string strName, Gender gender, int nAge)
         {
             Console.Write("\n測試 Person3: ");
             Console.WriteLine("姓名: {0} , {1}, {2}", strName, gender, nAge);
         }
     }
 
     class Program
     {
         static void Main(string[] args)
         {
             // 測試Person
             fnTestPerson();
 
             // 測試Person2
             Person2 person2 = new Person2("小麗", Gender.女, DateTime.Now.Year - new DateTime(1980, 01, 06).Year);
             person2.fnTestPerson2(person2);
 
             // 測試Person3
             Person3 person3 = new Person3();
             person3.strName = "小王";         // 通過set訪問器給私有成員name賦值,通過get訪問器獲取name的值
             person3.GENDER = Gender.男;
             person3.nAge = 35;
             person3.fnTestPerson3(person3.strName, person3.GENDER, person3.nAge);
 
             Console.ReadLine();
 
         }
 
         // 測試Person
         public static void fnTestPerson()
         {
             Person person;
             person.strName = "小明";      // 對其成員賦值
             person.gender = Gender.男;
             person.nBirthday = DateTime.Now.Year - new DateTime(2010, 08, 09).Year;
 
             Console.Write("\n測試 Person: ");
             Console.WriteLine("姓名: {0} , {1}, {2}", person.strName, person.gender, person.nBirthday);
             Console.WriteLine("\n---------------------------------------");
         }
     }
 }

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