【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://xiahunao.cn/news/255362.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python中的%怎么用

Python中的%怎么用 Python中的%是一个非常重要的运算符&#xff0c;也称为格式化运算符。它用于将一个值插入到另一个字符串中。在本文中&#xff0c;我们将深入了解Python中的%运算符的使用。 %运算符的语法 先看下%运算符的语法&#xff1a; string % values其中&#xf…

Mongo帮助文档

来自&#xff1a;http://xiaoshan5634.iteye.com/blog/1117702 Mongo 适合场景&#xff1a; 网站数据&#xff1a;适合实时的插入&#xff0c;更新与查询&#xff0c;并具备网站实时数据存储所需的复制 及高度伸缩性。 缓存&#xff1a;适合作为信息基础设施的缓存层。在系…

Erlang/OTP设计原则(文档翻译)

http://erlang.org/doc/design_principles/des_princ.html 图和代码皆源自以上链接中Erlang官方文档&#xff0c;翻译时的版本为20.1。 这个设计原则&#xff0c;其实是说用户在设计系统的时候应遵循的标准和规范。阅读前我一直以为写的是作者在设计 Erlang/OTP 框架时的一些原…

Spring Cloud Alibaba 参考文档-2021.0.4.0

Spring Cloud Alibaba 简介依赖管理Spring Cloud Alibaba Nacos Discovery3.1 服务注册/发现&#xff1a;Nacos Discovery3.2 如何引入Nacos Discovery进行服务注册/发现3.3 使用Nacos Discovery进行服务注册/发现和调用的示例3.3.1 Nacos 服务器启动3.3.2. 启动供应商申请3.3.…

autojs 开发文档集合

加入我们的QQ群553908361,和各作者同群交流 教程会优先发布于收费脚本v群。 该代码选自于aj开发者的文档,群里有人反馈开发文档打开慢.所以做了这个.方便搜索.如有侵权,请私信我进行删除 同时也上传了一份源码到点击网站,供大家更快的查询代码 Auto.js Pro-8.1.0 文档 索引 | …

云网络安全与数据中心安全

近年来&#xff0c;许多云架构师宣称随着公共云的采用&#xff0c;网络安全性将消亡。然而&#xff0c;网络安全仍然是最大的安全市场之一&#xff0c;并且是每个主要云服务提供商 (CSP) 在过去几年中推出重要新产品的领域。 网络对安全仍然至关重要&#xff0c;即使在云中也是…

Python中的导入模块

1&#xff0c;导入模块的的几种方式 模块是什么&#xff1f; 模块实际上就是 以.py为结尾的文件 注意点&#xff1a;自定义的模块尽量不要和系统模块重名 模块内部封装了很多实用的功能&#xff0c;有时在模块外部调用就需要将其导入&#xff0c;导入模块简单划分&#xff…

python导入模块错误-No module named XXX-图文解决方案

问题描述&#xff1a; 使用python ide执行脚本正常&#xff0c;使用python直接执行报错&#xff0c;报错“不存在对应模块” 问题原因分析&#xff1a; Q1: 等同于python脚本在ide和console中执行的区别 Q2: 因为在ide里执行脚本的时候&#xff0c;不仅会导入path环境变量中的…

python中导入模块使用哪个关键字_关于python导入模块的关键字介绍

关于python导入模块的关键字介绍 发布时间&#xff1a;2020-04-17 10:13:26 来源&#xff1a;亿速云 阅读&#xff1a;101 作者&#xff1a;小新 今天小编给大家分享的是关于python导入模块的关键字介绍&#xff0c;很多人都不太了解&#xff0c;今天小编为了让大家更加了解pyt…

【Python问题】Python 导入模块的三种方式ModuleNotFoundError: No module named ‘模块名‘

Python 导入模块的三种方式ModuleNotFoundError: No module named 模块名 问题一、Python解释器查找模块文件的过程。二、解决方法记录一下 大家可以参考这个文档的解释很清楚&#xff1a;python导入模块的三种方式超详细http://c.biancheng.net/view/4645.html 问题 写程序i…

python怎么导入数学模块_python怎么导入模块

python中的模块即.py文件,模块的导入方式通常有两种:1是直接使用import语句导入;2是使用from..import..结构引入。 使用 import 导入模块的语法,但实际上 import 还有更多详细的用法,主要有以下两种:import 模块名1 [as 别名1], 模块名2 [as 别名2],…: 导入整个模块。…

python如何导入模块中的类_python导入模块中类的方法

自定义标题 python导入模块中类的方法 1、导入模块中的单类 2、一个模块中存储多个类时导入的方法 3、导入模块中所有类的方法 4、导入模块中的类时把类使用as取一个别名 python导入模块中类的方法 1、导入模块中的单类 》创建模块 #file:person.py class Person(): def __init…

python之模块导入及模块导入路径

一、从模块导入对象 1、import 模块名 [as 别名]。 也可以一次导入多个模块&#xff0c;多个模块之间用逗号隔开 &#xff08;1&#xff09;导入格式&#xff1a; import 模块名 [as 别名] &#xff08;2&#xff09;使用方法&#xff1a;使用时要在对象前面加上模块名作为前…

python无法导入模块_python导入模块失败的原因是什么

py执行文件和模块同属于同个目录(父级目录),才能直接import模块:如果不在同一目录,可以在python环境下使用sys.path.append(path)添加相关的路径,但在退出python环境后自己添加的路径就会自动消失! 模块 1、模块的定义: 为了编写可维护的代码,我们把很多函数分组,…

测绘——AutoCAD教育版打印戳去除

我们在使用CAD和Cass进行画图的时候&#xff0c;有时会参照一些老图&#xff0c;一些老图数据是使用教育版CAD绘制的&#xff0c;复制或插入均会导致我们的数据在每次打开是都会提醒检测到教育版打印戳记 &#xff08;Fig. 1&#xff09;&#xff0c;以及在打印时也会看到。当我…

AutoCAD LT 2022下载及教程

资源地址&#xff1a;AutoCAD LT 2022 Autodesk AutoCAD LT 2022是一款功能强大的专业计算机辅助软件&#xff0c;有了该软件用户可以更快更精准的创建2D模型&#xff0c;该软件拥有完整的2D命令并允许用户创建工程图&#xff0c;对其进行修改并发布项目的工作文件。同时还提供…

教育版AutoCAD下载开启,你知道吗?

你知道&#xff0c;学生和教师可以免费获取AutoCAD吗&#xff1f;只要符合条件&#xff0c;学生和教师就可免费获得 Autodesk 产品和服务的一年期教育版访问权限。那你知道该如何获取和下载吗&#xff1f; 以下就是教育版AutoCAD下载需要注意的事项&#xff0c;本篇将会从安装…

国产在线三维云CAD:CrownCAD (在线建模CAD软件)

云CAD就是在线建模CAD软件&#xff0c;即打开浏览器就可以进行建模的软件。云CAD可以部署在公有云&#xff0c;也可以部署在私有云。 尤其是可以在国产芯片和国产操作系统上运行&#xff0c;所以非常适合于自主可控要求高的领域。具备云存储、云计算、多终端、多人协同设计等优…

【去除教育】去除打印教育戳记插件

添加公众号&#xff1a;“第一设计群” 去教育打印戳记插件 去除教育版戳记插件&#xff0c;可以避免在打印时候图纸出现这个戳记&#xff0c;对图纸造成一些美观的影响。相信很多朋友都遇到过这个问题&#xff1a; 使用方法 1、下载插件到电脑任意位置 2、打开CAD、新建空白文…

【Windows驱动篇】解决Windows驱动更新导致AMD Software软件无法正常启动问题

【Windows驱动篇】解决Windows驱动更新导致AMD Software软件无法正常启动问题 【操作前先备份好电脑数据&#xff01;&#xff01;&#xff01;设置系统还原点等&#xff0c;防止系统出现问题&#xff01;&#xff01;&#xff01;谨慎请操作&#xff01;】 【操作前先备份好…