【C#/笔记】数据类型

数据类型

C#中所有的类型最终都派生自基类System.Object

  • 值类型
    1. 值类型最终派生自基类System.ValueType。
    2. 值类型主要包括结构枚举两类。
      常用结构类型:Int32(int),Single(float),Double(double),Boolean(bool)及自定义结构类型等。
      枚举类型如:FontStyle.
  • 引用类型
    1. 所有称为类的类型都是引用类型。
    2. 常用这几个关键字来声明:Class,Interface,Delegate
    3. String是引用类型而非值类型。
  • 预定义值类型与引用类型

    注:在C#中几种基本声明类型和对应的实际类命名并不相同。

    C#关键字.NetCTS类型类型位数值范围
    sbyteSystem.SByte整数8位-128~127
    byteSystem.Byte整数8位0~255
    shortSystem.Int16整数16位-32768~32767
    ushortSystem.UInt16整数16位0~65535
    intSystem.Int32整数32位-2^31~(2^31)-1
    uintSystem.UInt32整数32位0~2^32
    longSystem.Int64整数64位-2^63~(2^63)-1
    ulongSystem.UInt64整数64位0~2^64
    floatSystem.Single浮点32位±1.5 × 10^-45 ~ ±3.4 × 10^38 精度为7位
    doubleSystem.Double浮点64位±5.0 × 10^-324 ~ ±1.7 × 10^308 精度为15~16位
    decimalSystem.Decimal高精度128位±1.0 × 10^-28 ~ ±7.9 × 10^28 精度为28~29位
    boolSystem.Boolean布尔1位true或false
    charSystem.Char整数16位16位Unicode字符
    objectSystem.Object对象
    stringSystem.String字符串
  • 区别

    1. 存储值类型的变量直接包含值,而引用类型则是包含一个对象实例的引用。
      因此在使用变量赋值给另一个变量时,值类型会复制包含的值,引用类型则复制引用。
    2. 值类型是隐式密封的,不能派生其他类型。
    3. 内存分配不同。
  • 内存分配
    引用类型使用new操作符创建。
    创建过程:

    1. 计算目标类及其父类实例所需字节数和一些额外信息(如对象指针、同步索引块等)
    2. 在托管堆上分配内存空间
    3. 初始化对象的类型对象指针及同步索引块
    4. 调用当前类型的实例构造器及基类构造器
    5. 返回新建类型的引用

    值类型一般分配在线程栈上,根据一些特殊需要,值类型也可能分配在托管堆上
    如以下几种情况:

    1. 数组中的元素
    2. 引用类型中的值类型字段
    3. 迭代器块中的局部变量
    4. 闭包情况下匿名函数的局部变量
    5. 其他
  • Unity中几个重要的类

    1. UnityEngine.Object:C#脚本最基本的类。
    2. UnityEngine.Component:所有能添加到游戏对象上的组件的基类。
    3. UnityEngine.MonoBehaviour:派生自Behaviour类,也是Unity中所有C#脚本默认显式继承的父类。脚本中的生命周期函数只有在继承MonoBehaviour并挂在到游戏对象上时才会生效。
    4. UnityEngine.GameObject:所有场景中实例的基类,获取游戏对象信息的主要手段。
    5. UnityEngine.Transform:处理游戏对象位置,大小,旋转角度相关信息,且常用于处理游戏对象父子级关系。
    6. UnityEngine.Rigidbody:物理模拟相关的效果处理。
    7. UnityEngine.Collider:所有碰撞器的基类。
    8. 其他如Time、Renderer、ParticleEmitter等等包括其他命名空间的就不一一列举了。

    凡是继承MonoBehaviour及MonoBehaviour本身都无法通过new关键字来实例化。一般通过AddComponent()创建脚本实例,使用GetComponent()访问脚本组件

  • Unity中几个重要的值类型

    1. UnityEngine.Vector2、Vector3、Vector4:用来表示向量,可以进行点乘(Dot)和差乘(Cross)计算,来直接或间接获取一些常用信息,且提供了一些常用向量。
    2. UnityEngine.Mathf:包含大量常用数学计算公式。
    3. UnityEngine.Color:包含许多常用颜色,可以通过new创建任意颜色的实例。
    4. System.DateTime:用于日期读取和计算,虽然不是Unity自带的结构,但也比较常用。
    5. 其他:如Ray、RaycastHit、Touch、Rect …等等

    关于值类型与引用类型的其他知识放在各个相关部分笔记中再详述。

    参考资料:

    1. 《Unity3d脚本编程》—陈嘉栋
    2. 官方文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值