认识c#中结构类型
2016-03-09 13:35
239 查看
结构类型的定义
结构类型是用户自定义的数据类型,可以说是一个简化版的类。在这个类型里可以包含属性还有方法。定义举例:Public struct people
{
String name;
Int age;
}
结构类型与类的区别:
1.结构是值类型,而类是引用类型;2.结构的实例化可以不使用new 运算符;
3.结构不具有类的继承特点;
类和结构类型试用场合的对比:
结构和类的适用场合分析:
1、当堆栈的空间很有限,且有大量的逻辑对象时,创建类要比创建结构好一些;2、对于点、矩形和颜色这样的轻量对象,使用结构的成本较低;
3、在表现抽象和多级别的对象层次时,类是最好的选择,因为结构不支持继承。
结构类型的使用例子
结构的定义
public structPeopleStruct
{
public
string Name;
public int Age;
}
类的定义
public classPeopleClass
{
public
string Name;
public int Age;
}
主函数
static void Main(string[] args){
PeopleStructp1, p2;
//与类一样,但可以不new
p1.Name = "小明";
p1. Age = 10;
p2 = p1; //将p1的值赋给p2 //由于是值类型,因此赋值等于将全部值全部复制到p2的栈空间
p2.Name = "小刚";
//然后修改p2的值看是否会影响p1
Console.WriteLine(p1.Name);
//输出小明
PeopleClassp3 =
new PeopleClass();
p3.Name = "小明";
PeopleClassp4 =
new PeopleClass();
p4 = p3; //将p3的值赋给p4
赋值后,由于是引用类型,因此两个对象指向的是同一个地址(堆空间)
p4.Name = "小刚";
//然后修改p4的值看是否会影响p3
Console.WriteLine(p3.Name);
//输出小刚
Console.ReadKey();
}
总结
总之,结构类型用的是栈存储,类用的堆存储。对于两个结构变量如果互相赋值,修改其中一个,不影响另外一个数值。但是如果对于两个类的实例化对象的互相赋值,吸怪其中一个,就会影响到另外一个了,因为两者用的是同一个引用,在堆里操作的是同一个对象。相关文章推荐
- C#第六节课
- C# 拆箱与装箱 要严格控制,数量多起来严重影响效率
- C#中的数据类型
- C# 静态扩展方法
- C#播报语音:检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败
- C# 非托管资源释放
- C# 两行代码实现 延迟加载的单例模式(线程安全)
- C# + Socket断线重连
- 使用C#和.NET 4编写的并行应用程序“多核并发编程的规则”
- 深入分析委托与事件_C#
- c# 闭包 小例
- c#自己总结的几个常用的小技巧
- C#父类强制转换成子类,子类隐式转换成父类
- C#第三方控件的使用
- C#匿名方法
- C#二进制数组的字符串形式转换为二进制Byte数组
- C#的Lambda表达式嵌套例子
- C# 新建excel
- C#读取、保存二进制数据文件
- C#读取文本文件