结构—C#基础回顾
2017-08-02 00:00
447 查看
3.5.cs
/* author:frank datetime:2017-8-2 16:59:00 结构: 1.结构是值类型,不是引用类型。它们存储在栈中或存储为内联(inline),其生存期的限制于简单的数据类型一样。 2.结构不支持继承,但是结构体是继承Object,也可以访问及重新Object里面的方法。结构的继承链是:每个结构派生自System.ValueType类,System.ValueType类又派生自System.Object。 3.对于结构,构造函数的工作方式有一些区别。尤其是编译器总是提供一个无参数的默认构造战术,它是不允许替换的。 由于结构是值类型,传递的时候是直接复制值,不使用的时候就会被立即删除,由于结构传递的时候是按值传递,所以数据较大的情况下传递就会影响性能,可以使用ref按引用传递,但是底层方法修改结构体中的数据也会影响到实际结构体中的值。 结构体默认会有一个无参的构造函数,而且不允许替换,所以自己不能定义无参构造函数。 */ using System; namespace Sample { public class Program { public static void Main(string[] args) { Dimensions point = new Dimensions();//跟类不一样,如果是类的话用new就会在堆内存中开辟内存空间,结构只是调用构造函数而已。 point.Length = 3; point.Width = 6; Console.WriteLine(point.Diagonal); Dimensions point2;//不用new也行,构造函数只是初始化字段值。 point2.Length = 2; point2.Width = 5; Console.WriteLine(point2.Diagonal); } } //默认构造函数把数值字段都初始化为0,把引用类型字段初始化为null,且总是隐式的给出,即使提供了其他带参数的构造函数,也是如此。提供字段的初始值也不能绕过默认构造函数。 //也可以向类一样提供Close()方式及Dispose()方法。 public struct Dimensions { public double Length; //public double Length = 1;//编译错误的,不能预定义自己的值 public double Width; public Dimensions(double length,double width) { Length = length; Width = width; } public double Diagonal { get { return Math.Sqrt(Length * Length + Width * Width); } } } }
相关文章推荐
- 循环语句—C#基础回顾
- C# 数据结构基础-实现循环队列
- C#基础-结构,部分类和Object 类
- C#基础知识之结构体(Struct)
- C#基础回顾之1——值类型与引用类型
- 黑马程序员-C#编程基础之结构-学习笔记
- C#基础之结构体(V客学院知识分享)
- c语言基础回顾-结构体
- C#基础知识整理:C#类和结构(3)
- 条件语句—C#基础回顾
- C#基础知识回顾--线程传参
- C#基础知识之循环结构
- c#基础概念之类和结构的区别
- C#基础回顾:用GDI+绘制验证码
- C#基础知识回顾:2.使用DbProviderFactory实现多数据库访问
- C#指南,重温基础,展望远方!(2)程序结构
- C#基础系列(8)-- 第三部分 面向对象相关 -- 类与结构(1)
- C#基础知识回顾-- 反射(1)
- C#基础概念再回顾
- C#控制台基础 int类型是结构