枚举
枚举的声明
用enum关键字修饰,加枚举名
enum 枚举名
{
值1,
值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
}
}
}总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论