【C#图解教程】第四章 类型、存储和变量 学习笔记总结

news/2024/5/18 14:17:41 标签: c#, 学习, 笔记, 游戏引擎, 游戏程序

类型

C#是一组类型声明,这个与第三章:命名空间就是一组类型声明可以一起理解。类型是一个用来创建数据结构的模板:
在这里插入图片描述

使用这个模板创建对象的过程叫做实例化,所以创建的对象也叫实例
在这里插入图片描述

类型成员

在这里插入图片描述
简单类型可能只包含一个数据成员,例如int short long这些类型
其他的类型可能包含多个数据成员,如数组,还可能包含函数成员

预定义类型

在这里插入图片描述
C#共有16种预定义类型,特殊的以红框框出:

  1. sbyte和byte是比short范围更小的类型
  2. decimal是高精度小数类型,可以精确表示分数,常用于货币计算
  3. object是所有其他类型的基类
  4. dynamic,使用动态语言编写的程序集使用
  5. char是Unicode字符类型,string是Unicode字符数组
    在这里插入图片描述

自定义类型

用户可以创建六种自定义类型

在这里插入图片描述预定义类型与自定义类型的区别是,自定义类型需要进行声明,声明包含1.要创建6种类型中的哪一种;2.类型的名字;3.类型种成员的声明(array和delegate除外)
在这里插入图片描述

堆栈

程序运行时的数据必须储存在内存中的两个区域:堆和栈

栈:先入后出

在这里插入图片描述

堆是一块内存区域,可以分配大块的内存用于存储,堆的进出没有限制。
堆虽然可以保存数据,但是不能显式地删除数据,只能由CLR的GC(垃圾回收)判断进行回收:

在这里插入图片描述

值类型和引用类型

类型决定了数据项在内存的位置——堆或栈
在这里插入图片描述上图中引用类型的数据并不是成员对象,当其为成员对象时会有所不同。
对于引用类型的任何对象,其数据成员全部都在堆里,无论它是值类型还是引用类型:
在这里插入图片描述

变量

在这里插入图片描述
(float不是引用类型吗?)

变量初始化

初始化就是用等号赋值,没有初始化的局部变量无法直接使用。

自动初始化

一些类型的变量即使不初始化也会自动初始化:
在这里插入图片描述

多变量声明

多变量声明类型必须相同,并且用逗号隔开
在这里插入图片描述

静态类型和dynamic关键字

编译器通过类型名来确定分配多少内存,以及哪些放在堆里哪些放在栈里,这样变量的类型在编译时就确定下来并且不能在运行时修改就叫做静态类型

使用dynamic关键字后,编译器就不会解析变量类型,反而会将其所有内容打包,在运行时一并检查,确保与变量实际类型一致。

深入理解C# 静态类与非静态类、静态成员的区别

可空类型

C# 提供了一个特殊的数据类型,nullable 类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值。

例如,Nullable< Int32 >,读作"可空的 Int32",可以被赋值为 -2,147,483,648 到 2,147,483,647 之间的任意值,也可以被赋值为 null 值。

声明一个 nullable 类型(可空类型)的语法如下:

< data_type> ? <variable_name> = null;

int i; //默认值0
int? ii; //默认值null

设置可空类型就可以在使用变量前确定其有效性。


http://www.niftyadmin.cn/n/378041.html

相关文章

Python篇——数据结构与算法(第四部分:希尔排序及其讨论、计数排序、桶排序、基数排序)

1、希尔排序 希尔排序&#xff08;shell sort&#xff09;是一种分组插入排序算法首先取一个整数d1n/2&#xff0c;将元素分为d1个组&#xff0c;每组相邻两元素之间距离为d1&#xff0c;在各组内进行直接插入排序取第二个整数d2d1/2&#xff0c;重复上述分组排序过程&#xf…

chatgpt赋能python:Python中累乘的作用和用法

Python中累乘的作用和用法 在Python编程语言中&#xff0c;累乘指的是连续乘法&#xff0c;或者说是一系列数字的乘积。累乘的概念非常简单&#xff0c;但是实际上它在编程中有着广泛的应用。 累乘在Python中的实现方式 Python中&#xff0c;累乘可以通过多种方式来实现&…

【Windows设置篇】字符集-简繁体的切换

【Windows设置篇】字符集-简繁体的切换 微软自带键盘&#xff0c;有次傻啦吧唧的一直找繁体切换简体的方法&#xff0c;进设置里面切换地区&#xff0c;更换地址也不行&#xff0c;后面才发现是在"字符集"里面切换—【蘇小沐】 文章目录 【Windows设置篇】字符集-简…

C++11 -- 包装器

文章目录 function包装器function包装器的概念function的运用function实例化使用function解决逆波兰表达式 bind包装器bind包装器相关介绍bind绑定函数固定参数 function包装器 function包装器的概念 function包装器,也叫做适配器,它的本质是一个类模板. 例如: 1 template&l…

SAP-MM-发票校验基本功能详解

一、MIRO抬头数据 1、基本数据 发票日期&#xff1a;一般是指凭证日期&#xff0c;对应FI中的凭证日期&#xff1b; 过账日期&#xff1a;发票和FI凭证的过账日期&#xff1b;这两个日期都可以作为付款条件的计算日期&#xff1b; 金额、税额&#xff1a;这个是指实际发票的…

四轴姿态解算-imu算法

理论篇 欧拉角四元数方向余弦矩阵 强调三者描述的是坐标系A,A之间的变换关系 欧拉角&#xff0c;四元数&#xff0c;方向余弦矩阵都可以描述四轴的姿态变换 注意这里强调的是变换 三者转换公式 一阶龙格库塔法 核心要点简介: 假设一阶函数随时间关系如: y a * T1b 则,在经…

关于linux的ssh(出现的问题以及ubuntu的ssh配置和ssh连接超时问题)

目录 Ubuntu进行ssh连接 关于ssh报错排错 备注&#xff1a;防火墙和selinux可能对ssh连接存在限制&#xff0c;但是我在操作的时候并没对我照成影响 查看selinux状态 ssh_config和sshd_config的区别 Ubuntu进行ssh连接 1.首先需要安装SSH服务器&#xff0c;在ubuntu终端输…

easyX实践上手操作小项目

easyX实践上手操作小项目 效果展示主菜单的装饰玩法介绍界面开始游戏界面制作团队界面排行榜界面注&#xff1a;main()函数拓展数据库小结 这里我们学习过easyX的基础知识后&#xff0c;看看是否能实践操作一下&#xff0c;制作一个属于自己的游戏界面呢&#xff1f; 基础知识…