C# 学习之路——基础数据类型

最近刚刚换了一分工作,在找工作的途中发现自己的基础十分薄弱,好几个面试官都认为我基础薄弱,本人从事游戏开发工作,决定重新学习一下基础知识,顺便也学习一下新的技术知识。好记性不如烂笔头,写下来以便日后查阅(知识点来源于菜鸟编程菜鸟编程
C#的变量类型分两种值类型和引用类型,其区别如下:

  • 值类型在内存的同一个地方存储它们自己和它们的内容。
  • 引用类型存储只想内存中的某个其他位置(称为堆)的引用,实际内容存在这个地址下的内存空间。
  • 值类型和引用类型的一个主要区别:值类型总包含一个值,而引用类型可以是null,表示它们不包含值。
  • 只有string和object类型是简单的引用类型,数组也是隐式的引用类型。我们创建的每一个类都是引用类型。
  • 结构类型和类的重要区别:结构类型(struct)是值类型,类是引用类型。

值类型(Value types)

  • 声明类型时,系统分配内存来存储值
    常用的数据类型以及相关说明:
类型描述范围默认值
bool布尔值true or falsefalse
byte8位无符号整数0~2550
char16位Unicode字符U +0000 到 U +ffff‘\0’
byte8位无符号整数0~2550
double64位双精度浮点型(+/-)5.0 * 10-324~(+/-)1.7 * 103080.0D
float32位单精度浮点型-3.4 * 1038~3.4 * 10380.0f
int32位有符号整数-231~231-10
long64位有符号整数-263~263-10
sbyte8位有符号整数-128~1270
short16位有符号整数-32768~327670
uint32位无符号整数0~232-10
ulong64位无符号整数0~264-10
ushort16位无符号整数0~216-10

在实际工作中int、bool、float使用最频繁,在定义一些唯一ID时会采用long,在设计配置表时常常会用uint或者ushort。
枚举类型是特有的值类型。
如需得到一个类型或一个变量在特定平台上的准确尺寸,可以使用 sizeof 方法。表达式 sizeof(type) 产生以字节为单位存储对象或类型的存储尺寸。

引用类型(Reference types)

引用了类型不包含存储在变量中的实际数据,单它们包含对变量的引用。它们指的是一个内存位置。内置的引用类型

  • object 对象类型
  • Dynamic 动态类型
  • String 字符串类型
    C# string 字符串的前面可以加 @(称作"逐字字符串")将转义字符(\)当作普通字符对待:
string str = @"C:\Windows";

等价于:string str = "C:\\Windows";

C#类型转换

  • 隐式类型转换:C# 默认的以安全的方式进行转换,不会导致数据丢失。如:从小的整数转为大的整数类型,从派生类转换为基类;
  • 显示类型转换:强制类型转换。(会造成数据丢失);

C#的装箱和拆箱

int x=2;
object y=(object) x;//装箱
x=(int)y;//拆箱

描述的通俗点:

  • 装箱 将值类型转换成引用类型
    C#中为了让一个值类型转换成一个引用类型,需要进行一次装箱操作,下面看一下装箱操作具体:
    1.在托管堆上分配内存
    2.值类型的所有字段复制到新分配托管堆内存上
    3.返回对象的地址(这个地址是对一个对象的引用,值类型现在是一个引用类型)
    注:旧的point对象不变,值类型转换成引用类型的本质是重新建立了一个已装箱的Point对象(引用类型)
  • 拆箱 将引用类型转换成值类型
    拆箱的过程:
    1.获取已装箱Point对象中的字段地址
    2.将这些字段的值从托管堆中复制声明的Point对象实例pFirst中(pFirst是值类型,在线程栈中分配内存)

C#中提供了List 泛型类,参数是什么类型就存什么类型,与ArrayList比起来可以免去装箱和拆箱的过程,挺高性能

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值