类与结构区别
a) 类中字段可以有初始值,结构中字段不可以有初始值。
b) 类中可以包含默认构造函数,结构中不能有显示定义的默认构造函数,结构体中带参数构造函数,但是构造函数中的参数必须为所有字段赋值。
c) 类属于引用类型,结构属于值类型。
d) 类可以被继承,结构不能被继承。
e) 类必须实例化,结构可以实例化也可以不实例化
代码示例
完整代码:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { public class 类与结构区别 { /// <summary> /// 程序入口执行 /// </summary> /// <param name="age"></param> public static void Main(string[] age) { People p = new People("人类", "男", 100); Console.WriteLine("姓名:{0},性别:{1},年龄:{2}",p.name,p.sex,p.age); Student p1 = new Student(); Console.WriteLine("学生姓名:{0},性别:{1},年龄:{2}", p1.name, p1.Sex, p1.age); Console.ReadLine(); } } /// <summary> /// 定义一个结构 /// 特点:1、关键字Struct;2、理解成一个不能初始化字段值对象;3、值类型占栈容易释放内存;4、结构不能被继承;5、结构使用赋值直接=就好。 /// </summary> struct People { public string name; public string sex; public int age; /// <summary> /// 结构的构造函数是的带参构造函数(并且是必须完全字段赋值) /// </summary> public People(string name,string sex,int age) { this.name = name; this.sex = sex; this.age = age; } } /// <summary> /// 定义一个类 /// 特点:1、类包含构造函数、字段可以实例化、引用类型、可以被继承 /// </summary> public class Student { public string name; public string sex; public int age; public string Name{get;set;} public string Sex{get;set;} public int Age { get; set; } //类字段初始化值 public Student() { this.name="小明"; this.sex = "男"; this.age = 10; } } }
错误一、结构字段不能初始化,编译错误
但是很奇怪,可以定义方法给字段初始化值,竟没报错还能赋值上了,这会不会违反什么不?不懂了!!
错误二、结构的构造函数参数不完整及不完全赋值编译错误
错误三、类字段定义未赋值,后面直接字段赋值错误
可以在定义是直接赋值初始化时才是正确初始化写法。
结构与类如何选择
- 类和结构作用很相似,根据以下几点特点选择
- 结构是存放在栈空间,存放小,还可以自动释放内存。如果你使用的数据较小使用结构