C#中的枚舉和結構體
枚舉:
1.枚舉的聲明
用enum關鍵字修飾,加枚舉名
enum 枚舉名
{
值1,
值2,
值3,
````
}
2.什麼時候使用枚舉
在確定值的數量和值的時候使用枚舉,規範程序的開發
3.枚舉的賦值
枚舉名 變量名=枚舉名.值;
Day nowDay = Day.星期一;
結構體:
結構體的聲明 用struct關鍵字修飾,加結構體名
結構體的使用:
結構體中可以存儲不同類型的數據,一般都是每個個體共同擁有一些屬性時使用結構體
struct Student
{
變量類型 變量名;
變量類型 變量名;
}
結構體中的方法:
結構體中的方法
<1>如果方法是靜態的那麼不能使用結構體中非靜態的屬性
<2>如果方法是非靜態的那麼可以使結構體中的靜態和非靜態的屬性
<3>調用靜態方法需要用 "結構體名.方法名" 來調用,非靜態方法直接用變量名調用
<4>調用靜態屬性需要用 "結構體名.屬性名" 來調用,非靜態屬性直接用變量名調用
代碼示例
using System;
using System.Reflection;
namespace 第十章枚舉和結構體
{
#region 枚舉
//枚舉的聲明 用enum關鍵字修飾,加枚舉名
//枚舉類型中默認存儲的是int類型的,並且後面的值總是前一個值加一;
enum Day : int //枚舉名後面可以加上限制,但是限制的類型只能是整形 int ,long ,short 等;
{
星期一 =0,
星期二 =1, //枚舉中的值可以通過等號改變
星期三,
星期四,
星期五,
星期六,
星期日
}
#endregion
#region 結構體
//結構體的聲明 用struct關鍵字修飾,加結構體名
//結構體中可以存儲不同類型的數據,一般都是
struct Student
{
public string name;
public Xingb xingbie; //結構體可以和枚舉連用
public int age;
public string banji;
public bool youden;
}
enum Xingb
{
男,
女
}
#endregion
class Program
{
#region 結構體中的方法
//定義一個結構體
struct Teacher
{
public static string name;
public int age;
//非靜態方法可以使用靜態的屬性
public void Jieshao()
{
Console.WriteLine("你好,我是:"+name+"我今年"+age);
}
//靜態方法方法中不能使用非靜態的屬性
public static void Kecheng()
{
Console.WriteLine("我教你們語文課程"+name);
}
}
#endregion
static void Main(string[] args)
{
#region 枚舉
//小飛經常出去旅遊,但是每次出去對日期總是很糾結,
//用使用枚舉幫小飛隨機選擇出去旅遊的日子
Random _ran = new Random();
//因爲枚舉時從0開始,後面是前面數字加1,所以取值爲 0到7,但不包括7.
int _numDay = _ran.Next(0,7);
#region 枚舉與int類型的相互轉換
Day nowDay = Day.星期一;
//枚舉類型可以轉換成int類型
int num = (int)nowDay;
//因爲枚舉類型默認是整數類型,並且第一個值從0開始,所以星期一轉換成int 類型值就是0
Console.WriteLine(num);
//int轉換爲枚舉類型(在這我們用隨機數來確定小飛的出遊時間)
Day _nowDay1 = (Day)_numDay; //int轉換枚舉時要注意枚舉中的值是否存在
//打印小飛出遊的時間
Console.WriteLine(_nowDay1 );
#endregion
#region 枚舉類型與string類型之間的轉換
//將枚舉轉換成字符串
Day strDay = Day.星期三;
//枚舉可以使用.ToString();方法
string _strDay1 = strDay.ToString();
Console.WriteLine(_strDay1);
//將string類型轉換爲枚舉
//在這我們用上面的隨機數,先將隨機數轉換爲string,方便學習string轉換爲枚舉
string _strDay2 = _numDay.ToString();
//string中有個Parse方法可以將string轉換爲枚舉
// 該方法需要兩個參數,一個是類型,一個是string類型的變量
//我們需要獲取這個枚舉類型 這裏使用 typeof(類型)方法獲取枚舉類型
//後面的代碼只是將類型轉換爲枚舉,但是我們需要轉換爲Day類型使用
//所以加了一個強轉
Day str3NowDay = (Day)Enum.Parse(typeof(Day),_strDay2);
//上面代碼中的字符串可以是枚舉中的字符串值 如"星期一",如果字符串是數字值,枚舉中沒有
//該數字值那麼不會報錯,但是如果是 "星期一"這種類型的值,枚舉中沒有的話會報異常
//打印出的結果跟上述一樣
Console.WriteLine(str3NowDay);
#endregion
#endregion
#region 結構體
//使用結構體首先要聲明一個結構體類型
Student stu1;
//爲結構體賦值,在結構體外賦值結構體中的變量必須是 Public(公開的)修飾的
stu1.name = "張三";
stu1.age = 16;
stu1.xingbie = Xingb.男;
stu1.banji = "六年級一班";
stu1.youden = false;
Student stu2;
stu2.name = "李紅";
stu2.age = 15;
stu2.xingbie = Xingb.女;
stu2.banji = "六年級一班";
stu2.youden = true;
//打印李紅的信息
Console.WriteLine("姓名:"+ stu2.name+"\n年齡:" +
""+ stu2.age+"\n性別:"+ stu2.xingbie+"\n優等生:"
+ stu2.youden+"\n班級:"+ stu2.banji);
#region 結構體中方法的使用
Teacher ter1;
//靜態屬性和靜態方法一樣都需要用結構體名調用
Teacher.name = "楊雪";
//非靜態屬性和方法直接使用變量名調用
ter1.age = 21;
ter1.Jieshao();
Teacher.Kecheng();
#endregion
#endregion
}
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.