C#中的枚舉和結構體用法解讀
更新時間:2025年08月08日 09:13:54 作者:夢回大唐敲代碼
這篇文章主要介紹了C#中的枚舉和結構體用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
枚舉
枚舉的聲明
用enum關鍵字修飾,加枚舉名
enum 枚舉名
{
值1,
值2,
值3,
````
}什么時候使用枚舉
在確定值的數(shù)量和值的時候使用枚舉,規(guī)范程序的開發(fā)
枚舉的賦值
枚舉名 變量名=枚舉名.值; Day nowDay = Day.星期一;
結構體
結構體的聲明 用struct關鍵字修飾,加結構體名
結構體的使用
結構體中可以存儲不同類型的數(shù)據(jù),一般都是每個個體共同擁有一些屬性時使用結構體
struct Student
{
變量類型 變量名;
變量類型 變量名;
}結構體中的方法
- <1>如果方法是靜態(tài)的那么不能使用結構體中非靜態(tài)的屬性
- <2>如果方法是非靜態(tài)的那么可以使結構體中的靜態(tài)和非靜態(tài)的屬性
- <3>調用靜態(tài)方法需要用 "結構體名.方法名" 來調用,非靜態(tài)方法直接用變量名調用
- <4>調用靜態(tài)屬性需要用 "結構體名.屬性名" 來調用,非靜態(tài)屬性直接用變量名調用
代碼示例:
using System;
using System.Reflection;
namespace 第十章枚舉和結構體
{
#region 枚舉
//枚舉的聲明 用enum關鍵字修飾,加枚舉名
//枚舉類型中默認存儲的是int類型的,并且后面的值總是前一個值加一;
enum Day : int //枚舉名后面可以加上限制,但是限制的類型只能是整形 int ,long ,short 等;
{
星期一 =0,
星期二 =1, //枚舉中的值可以通過等號改變
星期三,
星期四,
星期五,
星期六,
星期日
}
#endregion
#region 結構體
//結構體的聲明 用struct關鍵字修飾,加結構體名
//結構體中可以存儲不同類型的數(shù)據(jù),一般都是
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;
//非靜態(tài)方法可以使用靜態(tài)的屬性
public void Jieshao()
{
Console.WriteLine("你好,我是:"+name+"我今年"+age);
}
//靜態(tài)方法方法中不能使用非靜態(tài)的屬性
public static void Kecheng()
{
Console.WriteLine("我教你們語文課程"+name);
}
}
#endregion
static void Main(string[] args)
{
#region 枚舉
//小飛經(jīng)常出去旅游,但是每次出去對日期總是很糾結,
//用使用枚舉幫小飛隨機選擇出去旅游的日子
Random _ran = new Random();
//因為枚舉時從0開始,后面是前面數(shù)字加1,所以取值為 0到7,但不包括7.
int _numDay = _ran.Next(0,7);
#region 枚舉與int類型的相互轉換
Day nowDay = Day.星期一;
//枚舉類型可以轉換成int類型
int num = (int)nowDay;
//因為枚舉類型默認是整數(shù)類型,并且第一個值從0開始,所以星期一轉換成int 類型值就是0
Console.WriteLine(num);
//int轉換為枚舉類型(在這我們用隨機數(shù)來確定小飛的出游時間)
Day _nowDay1 = (Day)_numDay; //int轉換枚舉時要注意枚舉中的值是否存在
//打印小飛出游的時間
Console.WriteLine(_nowDay1 );
#endregion
#region 枚舉類型與string類型之間的轉換
//將枚舉轉換成字符串
Day strDay = Day.星期三;
//枚舉可以使用.ToString();方法
string _strDay1 = strDay.ToString();
Console.WriteLine(_strDay1);
//將string類型轉換為枚舉
//在這我們用上面的隨機數(shù),先將隨機數(shù)轉換為string,方便學習string轉換為枚舉
string _strDay2 = _numDay.ToString();
//string中有個Parse方法可以將string轉換為枚舉
// 該方法需要兩個參數(shù),一個是類型,一個是string類型的變量
//我們需要獲取這個枚舉類型 這里使用 typeof(類型)方法獲取枚舉類型
//后面的代碼只是將類型轉換為枚舉,但是我們需要轉換為Day類型使用
//所以加了一個強轉
Day str3NowDay = (Day)Enum.Parse(typeof(Day),_strDay2);
//上面代碼中的字符串可以是枚舉中的字符串值 如"星期一",如果字符串是數(shù)字值,枚舉中沒有
//該數(shù)字值那么不會報錯,但是如果是 "星期一"這種類型的值,枚舉中沒有的話會報異常
//打印出的結果跟上述一樣
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優(yōu)等生:"
+ stu2.youden+"\n班級:"+ stu2.banji);
#region 結構體中方法的使用
Teacher ter1;
//靜態(tài)屬性和靜態(tài)方法一樣都需要用結構體名調用
Teacher.name = "楊雪";
//非靜態(tài)屬性和方法直接使用變量名調用
ter1.age = 21;
ter1.Jieshao();
Teacher.Kecheng();
#endregion
#endregion
}
}
}總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
基于mvc5+ef6+Bootstrap框架實現(xiàn)身份驗證和權限管理
最近剛做完一個項目,項目架構師使用mvc5+ef6+Bootstrap,用的是vs2015,數(shù)據(jù)庫是sql server2014。下面小編把mvc5+ef6+Bootstrap項目心得之身份驗證和權限管理模塊的實現(xiàn)思路分享給大家,需要的朋友可以參考下2016-06-06
C#實現(xiàn)Struct結構體與IntPtr轉換的示例詳解
在 C# 編程的世界里,我們常常會遇到需要與非托管代碼交互,或者進行一些底層內存操作的場景,下面小編就來分享兩段非常實用的 C# 擴展方法代碼,它們實現(xiàn)了結構體與IntPtr之間的轉換等功能2025-06-06
C#(WinForm) ComboBox和ListBox添加項及設置默認選擇項
這篇文章主要介紹了C#(WinForm) ComboBox和ListBox添加項及設置默認選擇項的的相關資料,需要的朋友可以參考下2014-07-07

