美文网首页关于C#的那些年
C#——类的定义与使用(2)

C#——类的定义与使用(2)

作者: 大鱼鱼 | 来源:发表于2020-01-06 16:33 被阅读0次

值类型和引用类型

  • 从数据存储的角度,C#的数据类型可以分为值类型(value type)和引用类型(reference type),其中值类型用于存储数据的值,引用类型用于存储对实际数据的引用。
  1. 值类型
    值类型变量直接包含其本身的数据,前面提到的简单类型(int、bool、char、float、double、decimal)、结构类型(struct)、枚举类型(enum)等都是值类型。对于值类型变量,程序在运行时一旦遇到其定义语句(如int x;),系统将直接为该变量分配内存空间,因此之后可以直接赋值和引用。如:“int x;x=100;”
    2.引用类型
    与值类型不同,引用类型本身并不包含数据,只是存储对数据的引用,数据保存在其他位置,数组、字符串、类和接口、委托等属于引用类型。引用型变量在定义时系统并不会为它分配空间,只有当它实例化之后才能获得真正的存储空间。

装箱和拆箱

值类型允许隐式地或显式地转换数据结构。在C#中也允许将任何类型的数据转换为对象,或者将任何类型的对象转换为与之兼容的值类型。
C#把值类型转换为对象的操作称之为装箱,而把对象转换为兼容的值类型的操作称为拆箱。C#的这种装箱和拆箱操作类似于收发邮政包裹,发送包裹之前先装箱打包,收到包裹之后再拆箱解包。
装箱意味着把一个值类型的数据转换为一个对象类型的数据,装箱是隐式的转换过程,由系统自动完成,C#中object类是所有类的最终基类,因此可以将一个值类型变量直接赋值给object对象。
例如:

int i = 100;
object x = i;//表示先创建一个object型的变量x,然后再把值类型变量i赋给它

拆箱意味着把一个对象转换为一个值类型数据,拆箱过程必须是显式转换过程。拆箱时先检查对象所引用的数据的类型,确保拆箱前后的数据类型相同,再复制数据值。
例如:

int i = 100;
object x = i;//装箱正确
int j = x;//拆箱错误,拆箱操作只能显式转换
int k = (int)x;//拆箱正确
long c = (long)x;//拆箱错误,拆箱前后的数据类型应相同

相关文章

  • C#——类的定义与使用(2)

    值类型和引用类型 从数据存储的角度,C#的数据类型可以分为值类型(value type)和引用类型(referen...

  • C#——类的定义与使用

    类的实例 (1)对象的定义与创建对象名 = new 类名();例如:Student a = new Studen...

  • C++ 模板与泛型

    一、概述 二、模板定义与使用  1. 函数模板的定义与使用 2. 类模板的定义与使用 三、typename 的特殊...

  • C# 抽象类

    抽象类 1. 在c#中使用关键字abstract来定义的抽象类和抽象方法。 2.不能初始化的类被叫做抽象类,他们只...

  • 10面向对象

    一.面向对象基础 #类的定义与调用 #定义类使用chass关键字,然后继承至object类、 #2.在类中定义方法...

  • 四、Groovy语法(四)面向对象

    Groovy面向对象 一、groovy中类,接口等的定义和使用 类的定义与使用 接口的定义与使用 Trait的定义...

  • Gradle 自我学习四-Groovy 语法之面向对象

    Groovy面向对象 一、groovy中类,接口等的定义和使用 类的定义与使用 接口的定义与使用 Trait的定义...

  • C#结构体定义的详解

    C#结构体定义的情况: C#结构体定义也可以象类一样可以单独定义. class a{}; struct a{}; ...

  • 反序列化

    JsonSerialize与 JsonDeserialize使用 1、已注解方式使用 2、自定义实现类

  • Lua与C#的交互实现

    lua与C#交互使用LuaInterface实现定义变量:1,Lua lua = new Lua() --定义一个...

网友评论

    本文标题:C#——类的定义与使用(2)

    本文链接:https://www.haomeiwen.com/subject/whskactx.html