标签:
1.结构体的语法
定义的时候需要使用关键字struct
[public] struct 结构名
{
public 类型名 变量名;
…
}
我们常见的结构体:System.Drawing.Point、Size、Color
注意:
1.结构使用时可以new,也可以不new。如果不new,则使用前必须为结构成员赋值。
2.在结构中不能为变量直接赋初值,除非const(常量)、static(静态变量)
2.结构体与类
它们是 .NET Framework 中的通用类型系统的两种基本构造。两者在本质上都属于数据结构,封装着一组整体作为一个逻辑单位的数据和行为。数据和行为是该类或结构的“成员”,它们包含各自的方法、属性和事件等。它们共享着大多数相同的语法。
结构的使用方法与类很相似。什么时候使用类?什么时候使用结构?
1.是否需要使用面向对象的特性:封装、继承、多态。,如果需要在某些情况下被继承或者使用多态等特性则只能用类。
2.当类型中(类或结构)的成员比较多的时候,则考虑使用类。
3.结构体与类的详细区别
1. 在语法上结构体受到的限制要比类更多:
(1)在声明结构体的时候,如果要对字段赋值,那么这些字段必须声明为 const 或 static,否则无法初始化。
在声明类的时候,可以对类中的所有字段赋值。
(2)结构不能声明默认构造函数(没有参数的构造函数)或析构函数,如果要声明构造函数,必须声明带参数的构造函数。
结构体的构造函数也可以重载,在构造函数中必须对结构体所有的成员进行初始化。
(3)在结构体中不能定义析构函数
(4)结构体不具备面向对象的特征,结构体不能从类或其他结构继承。所有结构都直接继承自System.ValueType,所有的类都继承自 System.Object。
2. 结构体是值类型,类是引用类型:
结构体在栈中创建,类在堆中创建。
将结构体赋值给新变量:
将类赋值给新变量:
3. 结构体实现接口:
结构体也可以实现接口,进行这样的操作后,获得的变量是引用类型。
有结构体Struct1实现了接口Interface1 ,Interface1 face = new Struct1();
这里我们获得的变量face是引用类型。
4. 结构体和类用途不同:
类通常用于对较为复杂的行为建模,或对要在创建类对象后进行修改的数据建模。结构最适合一些小型数据结构,这些数据结构包含的数据以创建结构后不修改的数据为主。
结构体使用的例子:
1 //结构体班级 2 struct StructClass : IClass 3 { 4 public int Count;//人数 5 public void AddStudent() 6 { 7 Count++; 8 } 9 10 public void ShowCount() 11 { 12 Console.WriteLine(Count); 13 } 14 15 } 16 //接口 17 interface IClass 18 { 19 void AddStudent();//添加学生 20 void ShowCount();//显示学生人数 21 } 22 class Program 23 { 24 static void Main(string[] args) 25 { 26 StructClass s1 = new StructClass(); 27 StructClass s2 = s1; 28 s1.AddStudent(); 29 s1.ShowCount(); //输出1 30 s2.ShowCount(); //输出0 31 //说明s2和s1不指向同一个对象,s2=s1是创建了一个s1的副本 32 //这是值类型很显著的标志 33 34 IClass ic1 = new StructClass(); 35 IClass ic2 = ic1; 36 ic1.AddStudent(); 37 ic1.ShowCount();//输出1 38 ic2.ShowCount();//输出1 39 //说明ic2和ic1指向同一个对象,ic2=ic1是将ic1的引用赋给ic2 40 //这是引用类型很显著的标志 41 } 42 }
标签:
原文地址:http://www.cnblogs.com/lcxBlog/p/4501301.html