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

news2025/4/13 6:39:48

类型

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.coloradmin.cn/o/591263.html

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

相关文章

JavaEE HTTPS加密原理

HTTPS加密原理✿✿ヽ(▽)ノ✿ 文章目录 JavaEE & HTTPS加密原理1. 为什么要加密2. HTTPS加密原理2.1 初始想法2.2 引入非对称加密2.3 中间人攻击2.4 引入证书 JavaEE & HTTPS加密原理 1. 为什么要加密 例子&#xff1a;&#xff08;运营商劫持&#xff09; 你可能经常…

C语言system()函数

文章目录 C语言system()函数system(“pause”)system(“color num1num2”)system(“cls”)system(“title name”)system(“time /T”) & system(“date /T”) C语言system()函数 头文件&#xff1a; #include<stdlib.h>system(“pause”) 作用&#xff1a;暂停程序进…

AI Canon精选资源清单;带AI功能的PS安装文件与教程;讯飞星火10月对标 ChatGPT;直播换脸工具盘点 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; AI Canon&#xff1a;人工智能精选资源清单 思维导图 ShowMeAI知识星球资源编码&#xff1a;R106 AI Canon 是由美国著名的风投机构 …

【靶场实战】Vulnhub - JANGOW: 1.0.1 靶标实战

靶场地址&#xff1a;https://www.vulnhub.com/entry/jangow-101,754/ 靶场IP&#xff1a;192.168.160.215 信息收集 使用Nmap对目标进行扫描 Nmap -sV -O -p- 192.168.160.215 经过漫长的等待扫描完成&#xff0c;该靶标开启了21、80两个端口&#xff0c;21端口运行服务为f…

chatgpt赋能python:Python中按钮的位置摆放

Python中按钮的位置摆放 在Python应用程序中&#xff0c;按钮是常见的交互元素之一。按钮通常用于响应用户的操作&#xff0c;例如提交表单或执行某些功能。然而&#xff0c;在设计应用程序时&#xff0c;按钮的位置是一个重要的问题&#xff0c;因为它将直接影响用户体验和应…

chatgpt赋能python:Python中的画图——创建漂亮的可视化图像

Python中的画图——创建漂亮的可视化图像 Python是一个高度可编程的语言&#xff0c;因此它非常适合用于创建各种类型的可视化。 在本文中&#xff0c;我们将介绍Python中的画图。我们将讨论如何使用Python和一些流行的数据可视化库来创建漂亮的可视化图像。我们还将探讨如何…

【PWN · ret2libc】[2021 鹤城杯]babyof

Linux_64的经典ret2libc题目&#xff0c;有必要好好整理总结一下其中的流程和注意点 目录 前言 一、题目重述 二、exp&#xff08;思考与理解在注释&#xff09; 三、经验总结 攻击步骤: 注意要点 四、疑问 前言 64位Linux和32位Linux确乎有着关于参数传递上的不同&a…

chatgpt赋能python:Python中怎么转置矩阵

Python中怎么转置矩阵 在Python中&#xff0c;我们可以轻松地实现矩阵的转置操作。矩阵转置是指将矩阵的行列互换&#xff0c;即将矩阵的行转换为列&#xff0c;将列转换为行。这种操作在数据处理和科学计算中是很常见的&#xff0c;因此我们需要了解如何在Python中进行矩阵转…

人工智能粒子群优化三大算法

粒子群优化是以邻域原理&#xff08;neighborhood principle&#xff09;为基础进行操作的&#xff0c;该原理来源于社会网络结构研究中。驱动粒子群优化的特性是社会交互作用。群中的个体&#xff08;粒子&#xff09;相互学习&#xff0c;而且基于获得的知识移动到更相似于它…

6.S081——补充材料——RISC-V架构中的异常与中断详解

0.briefly speaking 我在阅读Xv6源码过程中对很多概念感到困惑&#xff0c;想到也许会有其他人对此秉持同样的困惑&#xff0c;所以我将我的研究和学习过程总结下来并编篡成如下的博客。本篇博客想对RISC-V标准中有关中断和异常的概念进行一个梳理&#xff0c;考虑RISC-V标准的…

root 密码破解(rd.break)

在Linux系统中&#xff0c;忘记root密码时&#xff0c;可以用此方法进行暴力修改root密码 示例&#xff1a; 设置一个新的记不住的密码 $ echo cnakdnvf | passwd --stdin root $ poweroff 1.启动此虚拟机&#xff0c;选中以下行&#xff0c;并按 【 e 】进入内核编辑页面 …

【Leetcode -746.使用最小花费爬楼梯 -747.至少是其他数字两倍的最大数】

Leetcode Leetcode -746.使用最小花费爬楼梯Leetcode -747.至少是其他数字两倍的最大数 Leetcode -746.使用最小花费爬楼梯 题目&#xff1a;给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择…

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

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

MySQL进阶 -存储引擎

目录 存储引擎MySQL的体系结构存储引擎简介InnoDB存储引擎MyISAM存储引擎Memory存储引擎InnoDB&#xff0c;MyISAM和Memory的区别存储引擎的选择小结 存储引擎 MySQL的体系结构 MySQL的体系结构图&#xff1a; MySQL服务端的体系结构&#xff08;MySQL Server&#xff09;&am…

自动化测试经典面试题-定位不到元素

元素定位常见的面试相关问题 一、元素定位1、Selenium/Appium定位方法有几种&#xff1f;分别是&#xff1f;2、如何通过子元素定位父元素 二、元素定位不到1、定位不到元素是什么原因导致的&#xff1f;2、如何定位动态元素3、有的元素就加载页面上&#xff0c;但是你却定位不…

Rust 笔记:有限状态机原理/状态模式 及其 在Rust 编程中的应用

Rust 笔记、设计模式 有限状态机原理及其在Rust 编程中的应用 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.ne…

chatgpt赋能python:Python中拷贝的介绍

Python 中拷贝的介绍 在 Python 中&#xff0c;拷贝是一个十分常见而且必要的操作。拷贝可以在许多情况下被使用&#xff0c;例如在创建测试数据、编写一个新的算法时&#xff0c;或者是在处理多维数据结构的程序中。由于 Python 中的对象是动态类型的&#xff0c;因此在拷贝时…

IDEA 安装配置步骤详解

引言 IntelliJ IDEA 是一款功能强大的集成开发环境&#xff0c;它具有许多优势&#xff0c;适用于各种开发过程。本文将介绍 IDEA 的主要优势&#xff0c;并提供详细的安装配置步骤。 介绍 IntelliJ IDEA&#xff08;以下简称 IDEA&#xff09;之所以被广泛使用&#xff0c;…

Linux系统下imx6ull QT编程—— C++基础(一)

Linux QT编程 文章目录 Linux QT编程前言一、 C的输入输出方式1.cout语法形式2.cin语法形式3.C之命名空间 namespace 前言 学习 C的面向对象编程&#xff0c;对学习 Qt 有很大的帮助 一、 C的输入输出方式 效率上&#xff0c;肯定是 C 语言的 scanf 和 printf 的效率高&#…

回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现SSA-CNN-GRU麻雀算法优…