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

news/2024/11/28 5:40:01/

类型

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.ppmy.cn/news/109810.html

相关文章

深度剖析 Vue.js 经典知识点之:SPA、SSR与MVVM

SPA 更多精彩内容&#xff0c;请微信搜索“前端爱好者“&#xff0c; 戳我 查看 。‘ 谈一谈你对 SPA 单⻚面的理解&#xff0c;它的优缺点分别是什么 SPA&#xff08; single-page application &#xff09;仅在 Web ⻚面初始化时加载相应的 HTML、JavaScript 和 CSS。 一旦…

mongdb常用查询

mongdb数据库和关系型数据库完全不同&#xff0c; 主要在数据结构存储和查询语法方面。mongdb是把数据存在文档里面&#xff0c;文档里面是一种bson格式的数据(类似json格式)&#xff0c;再通过mongdb的javascript语法取读取符合条件的文档内容用表的形式展示给我们。查询语句为…

数电/数字电子技术期末考前突击复习(小白稳过,看这一篇就够了)

博主&#xff1a;命运之光 专栏&#xff1a;期末考试必过and不挂科and争高分&#x1f636;‍&#x1f32b;️还有其他科目的考试突击日后会陆续更新 ✨✨✨✨✨点赞&#xff0c;关注&#xff0c;收藏不迷路✨✨✨✨✨ &#x1f984;前言&#xff1a;总结了期末数电大概率可能…

基于Html5的在线资料库的设计与实现(asp.NET,SQLServer)

在线资料库系统采用.NET开发平台进行开发&#xff0c;开发工具采用Microsoft Visual Studio 2010集成开发环境&#xff0c;后台编程语言采用C#编程语言来进行编程开发&#xff0c;数据库我们采用当下流行的SQL Server 2008数据库管理系统来存放平台中的数据信息&#xff0c;整个…

微服务-Elasticsearch基础篇【内含思维导图】

Elasticsearch官网&#xff1a;欢迎来到 Elastic — Elasticsearch 和 Kibana 的开发者 | Elastic 注意&#xff1a;Elasticsearch官网访问和加载的耗时很长&#xff01;&#xff01;&#xff01; Lucene官网&#xff1a;Apache Lucene - Welcome to Apache Lucene 目录 一、E…

数据挖掘——关联分析算法

系列文章目录 数据挖掘当中的时间序列分析——不等权平滑分析 文章目录 一、关联分析介绍 二、关联分析算法实现以及相关的语句解释 2.1、 关联分析算法的C语言代码 2.2、相关解释 总结 前言 本文主要介绍关联分析算法简介以及相关的案例举例说明与代码解释 一、关联分…

2023/5/30总结

内部类&#xff08;1&#xff09; 类的五大成员&#xff1a;属性、方法、构造方法、代码块、内部类 内部类就是在一个类里面&#xff0c;再定义一个类 比如&#xff0c;在A类的内部定义B类&#xff0c;B类就被称为内部类 例&#xff1a; 汽车的发动机、ArrayList的迭代器、人…

【测试基础01】

本期参考文献: 链接 一、安装mysql 1、安装mysql可以参考链接: 文章 2、安装mysql与python的工具 进行校验&#xff0c;查看是否安装成功 二、创建库 mycursor mydb.cursor() mycursor.execute("CREATE DATABASE ck") 执行语句创建库在mysql库里可以看到…