黑马程序员_类与结构的区别

------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

相信我们学完面向对象都曾迷糊过,结构到底是什么?有什么用?结构与类有什么不同?
其实随着面向对象的思想的出现,我们慢慢的越来越多的用到面向对象,对于结构相对的减少使用。
现在我来谈谈结构与类的区别:
1、结构是一种值类型正如我们平时最常用的基本数据类型(int、char、double、bool等),结构是值类型在栈上分配(虽然栈的访问速度比较堆要快,但栈的资
源有限放),结构的赋值将分配产生一个新的对象。而像string、数组、基本类等都是引用类型变量,引用类型在堆上分配,类的实例进行赋值只是复制了引用,
都指向同一段实际对象分配的内存。
2、类可以被继承和继承。而结构不能被继承,但是可以像类一样继承自接口。
3、结构不能包含显示的无参构造函数,而且结构的有参构造函数必须对其所有的字段进行初始化,当我们自己写结构体有参构造函数,其无参构造函数依然存在。
类可以包含有参构造函数也可以包含无参构造函数,当类中没有写构造函数时,会默认有一个无参构造函数。但是当我们自己写了有参构造函数后,无参构造函数
就会消失,如果想要无参构造函数就要自己写无参构造函数,且有参构造函数不要求对所有字段进行初始化。
下面我来举个例子:
struct Person{
public string name;
public int age;
public char gender;
//对结构中的字段进行初始化,所有的字段都必须进行初始化,尽管自己写了有参构造函数,但是结构中的无参默认构造函数依然在
public Person(string name,int age,char gender){
this.name=name;
this.age=age;
this.gender=gender;
}
}
class Person{
public string name;
public int age;
public char gender;
//对类中的字段进行初始化,当自己写构造函数后,原先的无参构造函数就会消失,需要自己写
public Person(string name,int age,char gender){
this.name=name;
this.age=age;
this.gender=gender;
}
//这里可以对类中某个字段初始化
public Person(string name){
this.name=name;
}
}

根据以上比较,我们可以得出一些轻量级的对象最好使用结构,但数据量大或有复杂处理逻辑对象最好使用类。

------- Windows Phone 7手机开发.Net培训、期待与您交流! -------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值