值类型

类型可以分为两类:引用类型和值类型。

值类型:

  值类型直接包含值,变量引用位置就是值在内存中实际存储的位置。需要的内存会在编译时固定下来,不会在运行时改变。因为大小是固定的,所以值类型可以存储在称为stack的内存区域。

引用类型:

  引用类型和引用它们的变量指向数据存储位置,引用类型存储的是对一个内存位置的引用(内存地址),要去那个位置才能找到真正的数据。引用类型指向内存的区域称为堆(heap)。

两者比较:引用类型比值类型速度慢,利用率好,更有效。

在C#中除了string和object所有的类型都是值类型。

struct的初始化

  struct可以包含属性、字段、方法和构造器,不能包含默认(无参数)的构造器。

  C#禁止用户显式定义默认构造器。

  C#禁止在声明时对实例字段进行赋值。如下:声明的同时初始化struct的一个字段会造成错误

struct Angle
{
  int _Hours = 42;      
}

  C#支持带参数的构造器,但必须对struct中的所有字段进行初始化。

  struct不支持终结器

 

default运算符的使用

  指定一个特定类型的默认值。

//用default运算符来获取某个类型的默认值
struct Angle
{
   public Angle(int hours, int minutes)      
        :this(hours, minutes, default(int))
   {}   
}

值类型的继承和接口

装箱

  定义:从一个值类型转换成它实现的某个接口或者它的根基类object,这样的转型过程称为装箱。

  装箱过程, 涉及以下几个步骤:

  (1)在堆中分配好内存;

  (2)接着发生一次内存复制动作,栈上的值类型数据复制到堆上分配好的位置;

  (3)最后,对象或接口引用得到更新,指向堆上的位置;

枚举

   枚举不能是char类型

     枚举转换为基础类型以及从基础类型转换为枚举类型都涉及显式转型,而不是隐式转型。(存在从0到任何枚举的隐式转换)

转载于:https://www.cnblogs.com/AngelAI/p/3928358.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值