结构体与类有很多相似之处,也是某些题目中容易出现的陷阱,下面根据网上的各种资料总结下它们之间的区别。
- 结构体中的变量是不能赋初始值的,类的变量成员可以。
- 主动定义结构体的构造函数不能是无参数的,且必须为结构体中的所有变量赋值。
- 创建结构体对象可以不使用new关键字.直接声明1个变量就可以.但是这样的话,结构体对象中的字段是没有初始值的。如果用new来创建,则值类型的字段赋值0,给引用类型的字段赋值null。
- 结构体不能从另外1个结构或者类继承,但是可以实现接口.
- 结构体是值类型,储存在栈空间中,类是引用类型,储存在堆空间中。
struct Student{
public int age;
public string name;
public Student(int age,string name){
this.age=age;
this.name=name;
}
}
public class Test{
static void Mian(){
Student stu1= new Student(18,"小方");
Student stu2= new Student(24,"小刚");
stu2=stu1;//在c#中 结构体是值类型,在这里赋值只会赋值其中变量的值
stu1.age=30;
stu1.name="小燕";
Console.WriteLine(stu2.age);
Console.WriteLine(st2.name);
}
}
上面代码的输出是18 小方,如果换成类则输出应该是30 小燕。