C#笔记[ 五 ]:结构体,枚举
Evernote Export
.................................. 结构体 -- struct [ si 抓 si t ] ..................................
|
结构体
|
密封类
|
|
成员
|
1.变量不能赋初值
2.构造函数只能带参数且必须给结构体中的所有变量赋值
|
|
使用
|
|
|
什么时候使用结构体,什么时候使用类:
当对象全部为值类型组成的时候,使用结构体 [结构体是值类型,全部存储在栈中,存储速度快]
|
|
|
作用
|
创建一种新数据类型;比如: 圆(半径),矩形(长,宽),书(作者,标题);实例一个就相当于画一个圆,矩形
|
|
结构体和类的区别
a:结构体是值类型,类是引用类型
b:结构体声明字段的同时不能赋初值
[其实从本质上来说,类和结构体都 只能直接定义类的成员,只能定义.比如定义成员字段,属性方法构造函数等等,字段都是不能有初始值的.
只不过微软在语法上允许我们在定义类的字段的时候为其赋值.
但是背后微软其实是把赋值的执行代码放到构造函数中去执行的. 而结构体微软却不帮我们这样做]
[privatestringname; // 定义
name = "jack"; // 执行代码]
[不管在类和结构中,执行代码一定要写在方法中.不能直接写在结构或者类的下面.
因为当执行代码写在方法中了,那么这些执行代码的执行时机才可以确定,就是这个方法被调用的时候了]
c:构造函数
隐式构造函数在结构体中无论如何都是存在的;
隐式构造函数作用:对结构体中所有的字段赋值,包括自动属性生成的字段,值类型赋值为0,引用类型赋值为NULL
d:创建结构体对象的方式
创建结构体对象可以不使用new关键字,直接声明一个变量就可以了,但是在使用字段之前必须为这个字段赋值,因为没有调用构造函数
e:继承关系中,结构体是密封类,不能被继承;且只能继承于接口
|
|
结构体中没有构造函数,所以实例化对象后,需要对实例变量进行赋值才能使用
structBooks
{
privatestringtitle;
privatestringauthor;
privatestringsubject;
privateintbook_id;
publicstingTitle
{
get{return title;}
set{title = value;}
}
publicstingAuthor
{
get{return title;}
set{title = value;}
}
}
publicclasstestStructure//.................................
{
publicstaticvoidMain(string[] args)
{
Books Book1 = newBooks(); // 实例化“书”结构体,相当于创建具体某一本书
Books Book2 ;// 允许不用 new 关键字创建对象
/* book 1 详述 */
Book1.Title = "C Programming";
Book1.Author = "Nuha Ali";
Book1.Subject = "C Programming Tutorial";
Book1.Book_id = 6495407;
}
}
----------------------------------------------------
结构体中有构造函数,所以实例化对象的时候已经给变量赋初始值
publicstructstudent
{
privatestringname;
privateintage;
publicstudent(string name, int age) // 有参构造函数必须初始化所有变量
{
this.name = name;
this.age = age;
}
publicvoidPrintStudent()
{
Console.WriteLine("姓名:" + name);
Console.WriteLine("年龄:" + age);
}
}
classProgram
{
staticvoidMain(string[] args)
{
student stu = newstudent("李四",25);
stu.PrintStudent();
}
}
.................................. 枚举类 -- enum .................................
定义:
访问修饰符 enum变量名:数据类型[可以省略,默认是 int; byte,short,int,unit,long,ulong 各种整形数据类型 ]
{
标识符1,
标识符2
}
作用:固定数据类型为整形的常量;跟 数组一样,将一组整形变量存储到一个变量名下,系统会自动赋值为 0,1,....
获取枚举类型中的值:枚举是数据类型,枚举下的变量,其实就是枚举类型的变量,要输出/赋值,进行类型转换就可以了
classProgram
{
enumnum { a=3, b, c, d };
enumDays {
Mon=71,
tue=61,
Wed=51,
thu=41,
Fri=51,
Sat=61,
Sun=71
};
staticvoidMain(string[] args)
{
int num1 = (int)num.b; // 将枚举类型显示转换为int
Console.WriteLine(num1);
Console.ReadLine();
}
}
作者:大李子
邮箱:1185241994@qq.com
本文版权归作者所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利

浙公网安备 33010602011771号