第四节 详解类型、变量与对象(上,下)

视频链接:刘铁猛老师的《C#语言入门详解》
https://www.youtube.com/watch?v=EgIbwCnQ680&list=PLZX6sKChTg8GQxnABqxYGX2zLs4Hfa4Ca

什么是类型(Type)?#

  • 又名数据类型(Data Type)
    • 是数据在内存中存储的“型号”
    • 小内存容纳大尺寸数据会丢失精确度、发生错误
    • 大内存容纳小内存数据会导致浪费
    • 编程语言的数据类型与数学的数据类型不完全相同
  • 强类型语言与弱类型语言的比较(dynamic 模仿JavaScript的弱类型)
dynamic myVar=100;
Console.WriteLine(myVar); // 100
myVar="Hello,Ok!";
Console.WriteLine(myVar); // Hello,Ok!

类型在C#语言中的作用#

  • 一个C#类型中所包含的信息有:
    • 存储此类型变量所需的内存空间大小
    • 此类型的值可表示的最大、最小值范围
    • 此类型所包含的成员(如方法、属性、事件等) PropertyInfo MethodInfo
    • 此类型由何基类派生而来 Type myType=typeof(Form); myType.BaseType.Name
    • 程序运行的时候,此类型的变量在分配在内存的什么位置
      • Stack简介 方法调用,很小,可能会爆掉——>栈溢出
      • Stack overflow
      • Heap简介 存储对象,很大,不回收内存可能浪费——>内存泄漏
      • 使用Performance Monitor查看进程的堆内存使用量
      • 关于内存泄漏
    • 此类型所允许的操作(运算)

常见数据类型#

image.pngimage.png

C#语言的类型系统#

  • C#语言的五大类型
    • 类(Classes):如Windows,Form,Console,String
    • 结构体(Structures):如Int32,Int64,Single,Double
    • 枚举(Enumerations):如HorizontalAlignment,Visiblity
    • 接口(Interface)
    • 委托(Delegates)
  • C#类型的派生谱系

image.png

变量、对象与内存#

  • 什么是变量
    • 表面上来看,变量的用途是存储数据
    • 实际上,变量表示了存储位置,并且每个变量都有一个类型,以决定什么样的值能存入变量
    • 变量一共有7种(静态变量,实例变量--成员变量和字段,数组元素,值参数,引用参数,输出形参,局部变量)
    • 变量的声明
      • 有效的修饰符组合 类型 变量名 初始化器
  • 值类型的变量
    • 以byte/sbyte/short/ushort
    • 值类型没有实例,所谓的“实例”与变量合而为一image.png
  • 引用类型的变量与实例
    • 引用类型变量与实例的关系:引用类型变量里存储的数据是对象的内存地址
  • 局部变量是在Stack上分配内存,实例是在Heap上
  • 变量的默认值
  • 常量(const,值不可改变的变量)
  • 装箱与拆箱(Boxing & Unboxing)
int x=100;
Object obj=x; // 装箱(首先在Heap上创建值为x的内存区域,然后obj存储的值是该堆区域的地址)
int y=(int)obj; // 拆箱(先发现obj的存储的值为堆地址,然后把该堆地址上的存储值赋值给y)
// 由于装箱和拆箱经过了堆的相应转换,所以性能上有损耗
posted @   不爱菠萝的菠萝君  阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
主题色彩
点击右上角即可分享
微信分享提示