c#结构体(值类型)
来源:互联网 发布:培训seo教程 编辑:程序博客网 时间:2024/06/09 01:24
结构体(值类型)
(非常像类的一种值类型,不具有面向对象的特征,通常用来封装小型相关变量组 )
System.Drawing.Point、Size、Color
注意:
结构使用时可以new,也可以不new。如果不new,则使用前必须为结构成员赋值。
在结构中不能为变量直接赋初值,除非const、static
结构可以实现接口,但不能继承。
结构的使用方法与类很相似。什么时候使用类?什么时候使用结构?
1.是否需要使用面向对象的特性:封装、继承、多态。,如果需要在某些情况下被继承或者使用多态等特性则只能用类。
当类型中(类或结构)的成员比较多的时候,则考虑使用类。
结构与类的详细区别见备注。使用结构时注意装箱、拆箱的性能差异。
结构是使用 struct 关键字定义的,例如:
C#
public struct PostalAddress { // Fields, properties, methods and events go here... }
结构与类共享大多数相同的语法,但结构比类受到的限制更多:
在结构声明中,除非字段被声明为 const 或 static,否则无法初始化。
结构不能声明默认构造函数(没有参数的构造函数)或析构函数。
结构可以声明带参数的构造函数。
结构不能从类或其他结构继承。
结构在赋值时进行复制。将结构赋值给新变量时,将复制所有数据,并且对新副本所做的任何修改不会更改原始副本的数据。
结构是值类型,而类是引用类型。
与类不同,结构的实例化可以不使用 new 运算符。
一个结构不能从另一个结构或类继承,而且不能作为一个类的基。所有结构都直接继承自 System.ValueType,后者继承自System.Object。
结构可以实现接口。
===============================================================
类和结构是 .NET Framework 中的通用类型系统的两种基本构造。两者在本质上都属于数据结构,封装着一组整体作为一个逻辑单位的数据和行为。数据和行为是该类或结构的“成员”,它们包含各自的方法、属性和事件等(本主题后面列出了这些内容)。
类或结构的声明类似于蓝图,用于在运行时创建实例或对象。如果定义一个名为 Person 的类或结构,则 Person 为类型名称。如果声明并初始化 Person 类型的变量 p,则 p 称为 Person 的对象或实例。可以创建同一 Person 类型的多个实例,每个实例在其属性和字段中具有不同的值。
类是一种引用类型。创建类的对象时,对象赋值到的变量只保存对该内存的引用。将对象引用赋给新变量时,新变量引用的是原始对象。通过一个变量做出的更改将反映在另一个变量中,因为两者引用同一数据。
结构是一种值类型。创建结构时,结构赋值到的变量保存该结构的实际数据。将结构赋给新变量时,将复制该结构。因此,新变量和原始变量包含同一数据的两个不同的副本。对一个副本的更改不影响另一个副本。
类通常用于对较为复杂的行为建模,或对要在创建类对象后进行修改的数据建模。结构最适合一些小型数据结构,这些数据结构包含的数据以创建结构后不修改的数据为主。
值类型:
基本数据类型 + 枚举、结构
System.Drawing.Point,,Size,,Color
引用类型:
类、接口、委托、string
- c#结构体(值类型)
- c#结构体(值类型)
- C# 结构体类型和类类型
- C#的结构类型
- c#结构类型
- C#数据类型-结构类型
- C# Struct 结构类型
- C#结构类型
- 随笔3 - C#下的结构体(值类型)与类(引用类型)
- 认识c#中结构类型
- C#中结构类型和类类型
- 结构体 (*) 值类型
- 黑马程序员——C#枚举 结构体 this关键字 base关键字 值类型 引用类型 装箱和拆箱
- C#基础学习笔记--数据类型,值类型,结构类型,枚举类型
- C#初级篇---类型转换、枚举、结构体、数组、函数、
- C#控制台基础 结构体与枚举类型连用示例
- C#的两种类据类型:类和结构体
- C# 之 结构体(struct)---复合类型的数据结构
- 将数字日期转换成汉字日期
- HDU 1108 最小公倍数
- C#重写
- Parse与Convert区别
- C#中空字符串各种定义及区别
- c#结构体(值类型)
- c# 封装
- C/C++陷阱与缺陷
- Java 反射机制 反射数组 wrong number of arguments 异常
- url中的汉字encode转换,为什么?
- c# 继承(一)
- 恢复win7任务栏到右侧的问题
- flex datagrid 添加树 flex 教程 flex培训 flex源码 flex实例
- 如何将Turnkey Redmine 虚拟机从Redmine 1.0.5 升级到1.2