C#說話基本——構造體和列舉類型周全解析。本站提示廣大學習愛好者:(C#說話基本——構造體和列舉類型周全解析)文章只能為提供參考,不一定能成為您想要的結果。以下是C#說話基本——構造體和列舉類型周全解析正文
1、構造體(struct)
構造類型是用戶本身界說的一品種型,它是由其他類型組合而成的,可包括結構函數、常數、字段、辦法、屬性、索引器、運算符、事宜和嵌套類型的值類型。構造在幾個主要方面分歧於類:構造為值類型而不是援用類型,而且構造不支撐繼續。
用構造的重要思惟是用於創立小型的對象,如Point和FileInfo等等。這可以節儉內存,由於沒有如類對象所需的那樣有額定的援用發生。例如,當聲明含有不計其數個對象的數組時,這會惹起極年夜的差別。
構造體是一個變量組,將一組變量放在一路,其實就是一個自界說的聚集,外面可以包括各類類型的數據,用法和聚集一樣。
1、界說
構造體普通界說在Main函數下面,位於Class上面,作為一個類;普通情形Struct界說在Main函數後面,Main函數外面的處所都可使用,參數後面加上public代表公用變量。
格局:
struct +構造體的稱號 { public int+變量名; public string+變量名; public int+變量名; }
以上就是界說一個構造體的格局,外面包括很多種數據類型,如整形int,字符串string,帶小數點decimal等;
假如構造體界說在Main函數中,再能在Main函數中應用,普通看情形來界說在Main函數後面,Main函數外面的一切處所都可使用,參數後面加上public代表公用變量。
格局:
struct student { public int no; public string name; public int Csharp; public int web; public int database; public int sum; }
2、用法
(1)在Main函數裡面界說了一個student類型的構造體,在Main主函數中應用:
(2)然後為外面的每一個元素賦值,構造體名+點+構造體外面變量稱號=值。
(3)賦值以後完成以後停止打印。
Student lch=new student();//這句是在Main函數裡界說了一個名為lch的student 類型的構造體。 { lch.no=1; lch.name=”李昌輝”; lch.Cshap=88; lch.web=90; lch.database=98; lch.sum=lch.Cshap+lch.web+lch.database; } Console.WriteLine(lch.no,lch.name,lch.Cshap,lch.web,lch.database,lch.sum );
【案例1】界說一個jiegouti類型的構造體,輸入類型中的構造體變量,法式運轉後顯示的成果以下圖:
【技巧要點】界說一個jiegouti類型的構造體,有3個構造變量,fenshu,name,kecheng,在主函數中界說一個參數吸收構造變量,然後輸入name,前往一個字符串。
3、構造體類型元素包括構造體類型
//假如想讓其他添加出來的類也可以或許應用此構造體,須要在後面加上public
public struct student
{
//想讓其他的類可以拜訪到個中的變量須要加上public
public int nianling;
public string name;
public string sex;
//可以構造體中包括另外一個構造體
public One qq;
//可以直接界說一個數組,然則沒有開拓空間
public string[] shuzu;
}
public struct One
{
public string nb;
public string abc;
}
static void Main(string[] args)
{
#region
//為外面的每一個元素賦值:(構造體名+點+構造體外面的變量稱號=值)
//應用之前須要先初始化一下
student st = new student();
//初始化出來的變量名可以看作一個類對象
st.name = "張三";
//類對象的稱號是不克不及雷同的
st.nianling = 21;
st.sex = "男";
st.name = "王五";
//應用的時刻應用變量名點出來個中的變量停止應用
Console.WriteLine(st.name);
//構造體中包括另外一個構造體類型,可以直接點出來一以下的變量
st.qq.abc="qsqs";
//應用之前須要先開拓空間
st.shuzu = new string [9];
//數組元素賦值方法
st.shuzu[0] = "趙六";
//可以屢次初始化類,留意分歧的變量名
student st1 = new student();
st1.name = "李四";
st1.nianling = 22;
st1.sex = "女";
#endregion
}
【案例2】在下面jiegouti類型的構造體元素還可以包括別的一個構造體,再界說一個變量public int[] shuzu,輸入新界說的數組變量。運轉成果以下圖:
【技巧要點】界說jiegouti類型的構造體,原有3個構造變量,fenshu,name,kecheng,新增一個變量public int[] shuzu,而這個構造元素還可以包括一個新構造體,在主函數中從新(new 初始化)界說一個參數吸收這個新的構造變量,然後輸入name,前往一個字符串。
【案例3】在下面jiegouti類型的構造體元素還可以包括別的一個構造體,再界說一個變量public int[] shuzu,輸入新界說的數組變量。輸入的變量可以多個,用“+”銜接便可。
【技巧要點】界說jiegouti類型的構造體,原有3個構造變量,fenshu,name,kecheng,新增一個變量public int[] shuzu,而這個構造元素還可以包括一個新構造體,在主函數中從新(new 初始化)界說一個參數吸收這個新的構造變量,然後輸入name,前往一個字符串。
綜合演習:應用構造體,將學號、姓名和分數放入聚集,然後掏出並打印出來
2、列舉類型
列舉(enum)是值類型的一種特別情勢,它從System.Enum繼續而來,並為基本類型的值供給替換稱號。列舉類型著名稱、基本類型和一組字段。基本類型必需是一個除char 類型外的內置的有符號(或無符號)整數類型(如Byte、Int32或UInt64)。也能夠說,列舉類型是一組常量的聚集。
1、界說:Enum....{E}
列舉元素的默許基本類型為int。默許情形下,第一個列舉數的值為0,前面每一個列舉數的值順次遞增1。例如:
//列舉是常量的聚集,普通冒號前面不指定命據類型
enum meiju:
{
//列舉外面有默許的索引,也能夠指定;如索引3,但在掌握台中不起感化;
//用逗號離隔
one=3,
two=6,
three,
//假如等於之前的一個常量,那末就等於這個常量;最初一行的逗號可省略
four=two
}
static void Main(string[] args)
{
Console.WriteLine(meiju.one);
Console.ReadLine();
2、用法
列舉也能夠指定命據類型,普通不指定。
在界說列舉類型時,可以選擇基類型,但可使用的基類型僅限於long、int、short和byte。例如:
如: enum meiju:int
【案例1】界說一個列舉類型,輸入列舉類型某個常量,法式運轉後顯示的成果,以下圖:
【技巧要點】界說一個int列舉類型,內有4個列舉常量,再界說一個辦法,該辦法有一個參數用來接收一個列舉類型的值,然後前往的是一個int類型的值。
3、留意:數字不克不及零丁放在列舉外面履行,體系會判錯,重要是束縛字符串;
如:6;
【案例2】界說一個列舉類型,內有6個列舉類型,下圖圖2是法式運轉後的成果。
【技巧要點】固然列舉是一個常量的聚集,但不克不及直接在列舉類型外面放置數字,體系不運轉。
綜合演習:20人投票,五個候選人,用switch case
//20人投票 switch case 列舉 //投票的時刻輸出1,2,3,4,5 //應用12345來肯定是哪個候選人得票 //盤算得票數 //得票最高的勝出 Console.WriteLine("投票選班長!請輸出1、2、3、4、5來分離代表張3、李4、王5、趙6、馮七"); int[] shuzu = new int[20]; for (int i = 1; i <= 20; i++) { Console.Write("請第" + i + "位同窗來停止投票:"); shuzu[i - 1] = int.Parse(Console.ReadLine()); } Console.WriteLine("投票停止!按下回車開端統計票數!"); Console.ReadLine(); int zhangsan = 0, lisi = 0, wangwu = 0, zhaoliu = 0, fengqi = 0, zuofei = 0; for (int i = 0; i < 20; i++) { switch (shuzu[i]) { case (int)Houxuanren.one: zhangsan++; break; case (int)Houxuanren.two: lisi++; break; case (int)Houxuanren.three: wangwu++; break; case (int)Houxuanren.four: zhaoliu++; break; case (int)Houxuanren.five: fengqi++; break; default: zuofei++; break; } } if (zhangsan > lisi && zhangsan > wangwu && zhangsan > zhaoliu && zhangsan > fengqi) { Console.WriteLine("張三勝出!票數為" + zhangsan); } else if (lisi > zhangsan && lisi > wangwu && lisi > zhaoliu && lisi > fengqi) { Console.WriteLine("李四勝出!票數為" + lisi); } else if (wangwu > lisi && wangwu > zhangsan && wangwu > zhaoliu && wangwu > fengqi) { Console.WriteLine("王五勝出!票數為" + wangwu); } else if (zhaoliu > lisi && zhaoliu > wangwu && zhaoliu > zhangsan && zhaoliu > fengqi) { Console.WriteLine("趙六勝出!票數為" + zhaoliu); } else if (fengqi > lisi && fengqi > wangwu && fengqi > zhaoliu && fengqi > zhangsan) { Console.WriteLine("馮七勝出!票數為" + fengqi); } Console.WriteLine("作廢的票數為:" + zuofei); Console.ReadLine();
以上這篇C#說話基本——構造體和列舉類型周全解析就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。