威尼斯人线上娱乐

枚举类型和结构体,语言基础

21 4月 , 2019  

小心:枚举类型和结构体都属于值类型。

专注:枚举类型和结构体都属于值类型。

C#枚举类型和结构体,

留神:枚举类型和结构体都属于值类型。

 

结构体:正是四个自定义的聚合,里面能够放各样类型的要素,用法大要跟集中同样。

壹、定义的章程:

struct student

{

public int nianling;

public int fenshu;

public string name;

public string sex;

public int sum;

}

如上的话语便是概念三个名称叫student的结构体,当中包括int类型的年纪、分数、总和,和string类型的真名、性别。

二、用法:

在main主函数外面定义了多个称谓为student的结构体,以便于main函数之中使用。

student st = new
student();//那句话是在main函数之中定义了三个名字为st的student类型的结构体。

上边开头为个中的各类成分赋值:(结构体名+点+结构体里面包车型客车变量名称=值)

枚举类型和结构体,语言基础。main函数下

{

st.nianling=22;

st.fenshu=80;

st.name=”小李”;

}

赋值实现之后能够打字与印刷出被赋值的项。

三、结构体类型里面包蕴结构体类型:

能够在在此以前的student的结构体中在概念3个结构体

public shuxing sx;//代表三个shuxing结构体变量组
}
public struct shuxing
{
public double tizhong;
public double shengao;
public int nianling;
public string hunfou;
}

那般就能够在用的时候省下再一次开端化结构体。

 

教师内容:
public struct
student//如果想让其余增进出来的类也能够运用此结构体,须求在后边加上public
{
public int nianling;//想让任何的类能够访问到里头的变量供给充足public
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 = “张3”;//初阶化出来的变量名可以用作一个类对象
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
}

 

 

 

枚举类型:
一.枚举类型只针对字符串,对于索引,无意义
二.常量的成团,那几个常量只好取值,无法赋值
三.用常量表示所引述的字符串,那样能够节约重复写入长字符串

练习:
二十二位投票,三个候选人,用switch case

//20人投票 switch case 枚举
//投票的时候输入1,二,叁,四,5
//利用12345来明显是哪三个候选人得票
//总结得票数
//得票最高的胜出
Console.WriteLine(“投投票大选班长!请输入1、2、3、四、5来分别表示张3、李四、王伍、赵陆、冯7”);
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(“赵6胜出!票数为” + zhaoliu);
}
else if (fengqi > lisi && fengqi > wangwu && fengqi > zhaoliu
&& fengqi > zhangsan)
{
Console.WriteLine(“冯7胜出!票数为” + fengqi);
}
Console.WriteLine(“作废的票数为:” + zuofei);
Console.ReadLine();

 

注意:枚举类型和结构体都属于值类型。
结构体:正是贰个自定义的汇合,里面能够放各个类型的因素,用法大意跟…

结构体和枚举类型

 

 

一、结构体(struct)

结构体:正是3个自定义的集纳,里面能够放种种类型的成分,用法大要跟聚焦同样。

结构体:便是1个自定义的会集,里面能够放各类别型的因素,用法概况跟聚集一样。

   
结构类型是用户自身定义的1种档期的顺序,它是由其余品类组合而成的,可含蓄构造函数、常数、字段、方法、属性、索引器、运算符、事件和嵌套类型的值类型。结构在几个重大方面不一致于类:结构为值类型而不是援引类型,并且组织不扶助传承。

1、定义的章程:

一、定义的艺术:

   
用结构的紧要思考是用来创立小型的目的,如Point和FileInfo等等。那足以省去内部存款和储蓄器,因为从没如类对象所需的那样有1贰分的引用发生。例如,当注解含有数不完个目标的数组时,那会挑起巨大的歧异。

struct student

struct student

结构体是2个变量组,将一组变量放在一块儿,其实正是3个自定义的聚合,里面能够涵盖各种类型的数额,用法和集中同样。

{

{

1、定义

public int nianling;

public int nianling;

结构体一般定义在Main函数下边,位于Class上面,作为二个类;一般景色Struct定义在Main函数后面,Main函数里面包车型大巴地点都能够行使,参数前边加上public代表公用变量。

public int fenshu;

public int fenshu;

格式:

public string name;

public string name;

struct +结构体的名目

public string sex;

public string sex;

{

public int sum;

public int sum;

public int+变量名;

}

}

public string+变量名;

以上的说话就是概念八个称号为student的结构体,个中含有int类型的年纪、分数、总和,和string类型的全名、性别。

上述的言辞正是概念多少个称号为student的结构体,在那之中富含int类型的岁数、分数、总和,和string类型的真名、性别。

public int+变量名;

二、用法:

二、用法:

}

在main主函数外面定义了三个称号为student的结构体,以便于main函数之中使用。

在main主函数外面定义了贰个名号为student的结构体,以便于main函数之中使用。

   
以上就是概念二个结构体的格式,里面富含众两种数据类型,如整形int,字符串string,带小数点decimal等;

student st = new
student();//这句话是在main函数之中定义了2个名称叫st的student类型的结构体。

student st = new
student();//那句话是在main函数之中定义了二个名字为st的student类型的结构体。

假使组织体定义在Main函数中,再能在Main函数中选用,一般看情形来定义在Main函数前面,Main函数里面包车型地铁全体地点都能够选取,参数前边加上public代表公用变量。

上边开头为内部的各样元素赋值:(结构体名+点+结构体里面包车型客车变量名称=值)

上面初叶为当中的各样成分赋值:(结构体名+点+结构体里面包车型大巴变量名称=值)

格式:

main函数下

main函数下

 struct student

{

{

{

st.nianling=22;

st.nianling=22;

public int no;

st.fenshu=80;

st.fenshu=80;

public string name;

st.name=”小李”;

st.name=”小李”;

public int Csharp;

}

}

public int web;

赋值达成之后能够打印出被赋值的项。

赋值完结现在能够打字与印刷出被赋值的项。

public int database;

三、结构体类型里面含有结构体类型:

3、结构体类型里面包涵结构体类型:

public int sum;

可以在从前的student的结构体中在概念2个结构体

能够在在此从前的student的结构体中在概念2个结构体

}

public shuxing sx;//代表五个shuxing结构体变量组
}
public struct shuxing
{
public double tizhong;
public double shengao;
public int nianling;
public string hunfou;
}

public shuxing sx;//代表三个shuxing结构体变量组
}
public struct shuxing
{
public double tizhong;
public double shengao;
public int nianling;
public string hunfou;
}

2、用法

诸如此类就可以在用的时候省下再也伊始化结构体。

这么就足以在用的时候省下重新开端化结构体。

(一)在Main函数外面定义了一个student类型的结构体,在Main主函数中接纳:

 

 

(2)然后为在那之中的各样成分赋值,结构体名+点+结构体里面变量名称=值。

任课内容:
public struct
student//如若想让任何拉长出来的类也能够使用此结构体,需求在前头加上public
{
public int nianling;//想让别的的类能够访问到中间的变量要求加上public
public string name;
public string sex;
public One qq;//能够结构体中包涵另1个结构体
public string[] shuzu;//能够一直定义叁个数组,可是并未有开辟空间
}
public struct One
{
public string nb;
public string abc;
}
static void Main(string[] args)
{

讲明内容:
public struct
student//假诺想让别的拉长出来的类也能够利用此结构体,供给在头里加上public
{
public int nianling;//想让其余的类能够访问到个中的变量需求丰硕public
public string name;
public string sex;
public One qq;//能够结构体中带有另三个结构体
public string[] shuzu;//可以一直定义2个数组,不过没有开辟空间
}
public struct One
{
public string nb;
public string abc;
}
static void Main(string[] args)
{

(三)赋值之后变成之后举办打字与印刷。

#region
//为个中的种种成分赋值:(结构体名+点+结构体里面的变量名称=值)
student st = new student();//使用在此之前要求先初叶化一下
st.name = “张三”;//起始化出来的变量名能够当作二个类对象
st.nianling = 2一;//类对象的称呼是不可能平等的
st.sex = “男”;
st.name = “王五”;
//使用的时候使用变量名点出来当中的变量进行利用
Console.WriteLine(st.name);
st.qq.abc=”qsqs”;//结构体中含有另贰个布局体类型,能够直接点出来一之下的变量
st.shuzu = new string [9];//使用在此以前须要先开垦空间
st.shuzu[0] = “赵6”;//数组成分赋值方式

#region
//为内部的种种成分赋值:(结构体名+点+结构体里面包车型地铁变量名称=值)
student st = new student();//使用此前须求先起始化一下
st.name = “张3”;//开始化出来的变量名能够看成3个类对象
st.nianling = 二1;//类对象的名称是不可能同1的
st.sex = “男”;
st.name = “王五”;
//使用的时候利用变量名点出来此中的变量举行利用
Console.WriteLine(st.name);
st.qq.abc=”qsqs”;//结构体中包涵另1个构造体类型,可以直接点出来一之下的变量
st.shuzu = new string [9];//使用在此之前须要先开辟空间
st.shuzu[0] = “赵陆”;//数组成分赋值格局

Student lch=new student();//那句是在Main函数里定义了二个名字为lch的student
类型的结构体。

student st1 = new student();//能够屡屡先导化类,注意不一样的变量名
st1.name = “李四”;
st1.nianling = 22;
st1.sex = “女”;
#endregion
}

student st一 = new student();//能够频仍开首化类,注意差异的变量名
st1.name = “李四”;
st1.nianling = 22;
st1.sex = “女”;
#endregion
}

{

 

 

lch.no=1;         

 

 

lch.name=”李昌辉”;

 

 

lch.Cshap=88;

枚举类型:
1.枚举类型只针对字符串,对于索引,无意义
二.常量的聚众,那几个常量只好取值,不可能赋值
三.用常量表示所引述的字符串,那样能够节省重复写入长字符串

枚举类型:
一.枚举类型只针对字符串,对于索引,无意义
二.常量的聚众,这几个常量只能取值,无法赋值
3.用常量表示所引述的字符串,那样能够节约重复写入长字符串

lch.web=90;

练习:
212人投票,七个候选人,用switch case

练习:
十七人投票,多个候选人,用switch case

lch.database=98;

//20人投票 switch case 枚举
//投票的时候输入一,2,叁,四,伍
//利用123肆5来规定是哪3个候选人得票
//计算得票数
//得票最高的胜出
Console.WriteLine(“投投票大选班长!请输入1、2、叁、四、5来分别表示张3、李4、王5、赵陆、冯7”);
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();

//20人投票 switch case 枚举
//投票的时候输入一,2,三,肆,五
//利用12345来鲜明是哪2个候选人得票
//总括得票数
//得票最高的胜出
Console.WriteLine(“投投票大选班长!请输入1、贰、叁、4、五来分别表示张三、李四、王5、赵6、冯7”);
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(“张3胜出!票数为” + 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(“王5胜出!票数为” + 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();

lch.sum=lch.Cshap+lch.web+lch.database;

 

 

}

Console.WriteLine(lch.no,lch.name,lch.Cshap,lch.web,lch.database,lch.sum
);

【案例一】定义三个jiegouti类型的结构体,输出类型中的结构体变量,程序运行后显得的结果如下图:

 威尼斯人线上娱乐 1

【工夫核心】定义多少个jiegouti类型的结构体,有三个结构变量,fenshu,name,kecheng,在主函数中定义多个参数接收结构变量,然后输出name,再次回到四个字符串。

叁、结构体类型成分包罗结构体类型

//若是想让其余拉长出来的类也能够利用此结构体,须求在日前加上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 = “张三”;

//类对象的名目是不能够1如既往的

            st.nianling = 21;

            st.sex = “男”;

            st.name = “王五”;

//使用的时候使用变量名点出来在这之中的变量举办利用

            Console.WriteLine(st.name);

//结构体中带有另叁个组织体类型,能够直接点出来1以下的变量

            st.qq.abc=”qsqs”;

//使用以前须要先开采空间

            st.shuzu = new string [9];

//数组成分赋值格局

            st.shuzu[0] = “赵六”;

//能够频仍开首化类,注意分裂的变量名

            student st1 = new student();

            st1.name = “李四”;

            st1.nianling = 22;

            st1.sex = “女”;

            #endregion

        }

【案例二】在下边jiegouti类型的结构体成分还足以分包其余一个结构体,再定义一个变量public
int[] shuzu,输出新定义的数组变量。运营结果如下图:

 威尼斯人线上娱乐 2

【本领宗旨】定义jiegouti类型的结构体,原有二个布局变量,fenshu,name,kecheng,新添一个变量public
int[] shuzu,而这几个结构成分还足以分包二个新结构体,在主函数中重复(new
初叶化)定义八个参数接收那几个新的布局变量,然后输出name,重返二个字符串。

【案例3】在上头jiegouti类型的布局体成分仍是能够涵盖其余3个结构体,再定义1个变量public
int[] shuzu,输出新定义的数组变量。输出的变量能够四个,用“+”连接就能够。

 威尼斯人线上娱乐 3

【才能宗旨】定义jiegouti类型的结构体,原有3个组织变量,fenshu,name,kecheng,新添2个变量public
int[] shuzu,而这么些布局成分还足以包罗叁个新结构体,在主函数中重复(new
起头化)定义三个参数接收那个新的布局变量,然后输出name,再次回到三个字符串。

综述练习:运用结构体,将学号、姓名和分数放入会集,然后收取并打字与印刷出来

 威尼斯人线上娱乐 4

二、枚举类型

枚举(enum)是值类型的壹种独特殊形体式,它从System.Enum承袭而来,并为基础项目标值提供取代名称。枚举类型著名称、基础项目和一组字段。基础项目必须是3个除char
类型外的松开的有暗号(或无符号)整数类型(如Byte、Int3贰或UInt6四)。也得以说,枚举类型是1组常量的聚众。

1、定义:Enum….{E}

枚举成分的暗许基础项目为int。默许情形下,第二个枚举数的值为0,前面每一种枚举数的值依次递增1。比如:

//枚举是常量的集结,一般冒号前面不钦命数据类型

  enum meiju:

        {

//枚举里面有私下认可的目录,也可以钦点;如索引三,但在调整奥兰多不起作用;

//用逗号隔开分离

        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】定义1个枚举类型,输出枚举类型有个别常量,程序运营后出示的结果,如下图:

 威尼斯人线上娱乐 5

【手艺宗旨】定义叁个int枚举类型,内有伍个枚举常量,再定义二个主意,该方法有三个参数用来经受2个枚举类型的值,然后回来的是贰个int类型的值。

三、注意:数字不可能独立放在枚举里面实施,系统会判错,首要是约束字符串;

如:6;

【案例二】定义三个枚举类型,内有五个枚举类型,下图图二是程序运维后的结果。

 威尼斯人线上娱乐 6

【才具主旨】尽管枚举是二个常量的集中,但不能够一向在枚举类型里面放置数字,系统不运营。

综述练习:十几人投票,八个候选人,用switch  case

//20人投票    switch  case   枚举

            //投票的时候输入一,二,叁,四,5

            //利用123四伍来规定是哪贰个候选人得票

            //总括得票数

            //得票最高的胜出

           
Console.WriteLine(“投投票选举班长!请输入一、二、三、四、5来分别表示张三、李4、王伍、赵陆、冯7”);

            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(“张3胜出!票数为” + 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();

 


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图