c#结构体(值类型)

结构体(值类型)

(非常像类的一种值类型,不具有面向对象的特征,通常用来封装小型相关变量组 )

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值