C# 字面量null对于引用类型变量✓和值类型变量×

2fa758bc1a934b0987c1da829a9de303.jpg

794c65995ada4f0eb24b86afe4a47723.jpg 

32310de370484359aec5cde9b73d284a.jpg编译器让相同的字符串字面量共享堆中的同一内存位置以节约内存。 

在C#中,字面量(literal)是指直接表示固定值的符号,比如数字、字符串或者布尔值。而关键字(keyword)则是由编程语言定义的具有特殊含义的标识符,用于表示语言的结构和语义。简而言之,字面量是值的表达方式,而关键字是语言的组成部分,用于定义语法和行为。

c3766686a2c7460ca8e87e3e76a05c58.jpg

c48ffd4169cd4e2ca45baa93550f93cf.jpg 

a5ce17b5355b4768a565bdfc46b29231.jpg

当我们谈到C#中的字面量时,我们指的是直接表示固定值的符号或文本。例如:

- 整数字面量:`10`, `1000`, `-5`
- 浮点数字面量:`3.14`, `2.718`, `-0.5`
- 字符串字面量:`"hello"`, `"world"`, `"123"`
- 布尔值字面量:`true`, `false`

这些字面量直接表示它们所代表的值,不需要进一步解释或计算。

而关键字是C#语言中具有特殊含义的标识符,用于表示语言的结构和语义。这些关键字是编程语言的一部分,有着固定的含义和用法。例如:

- `class`:用于定义类。
- `if`、`else`:用于条件语句。
- `for`、`while`:用于循环语句。
- `public`、`private`:用于定义成员的可访问性。
- `static`:用于定义静态成员。

这些关键字在编写代码时具有特殊的含义和作用,它们用于定义程序的结构和行为,而不是直接表示值。

 

引用类型变量和字面量之间的联系在于变量可以指向字面量所代表的值。

在C#中,引用类型变量是指向对象的引用,而对象可以是在堆上分配的实例,比如类实例。当你使用一个引用类型变量时,你实际上是在操作该变量所引用的对象,而不是直接操作对象本身。

例如,假设有一个字符串类型的引用类型变量:

```csharp
string str;
```

你可以将该变量指向一个字符串字面量:

```csharp
str = "hello";
```

在这种情况下,变量 `str` 引用了一个存储在内存中的字符串对象,该字符串对象的值为 `"hello"`。因此,引用类型变量允许我们引用字面量所代表的值。

C#中的 `string` 是一个引用类型,而不是值类型。所以 `string str;` 定义的是一个引用类型变量 `str`,它可以引用(或指向)一个字符串对象。

在C#中,所有的类都是引用类型,包括 `string` 类。因此,当你声明 `string str;` 时,你在声明一个引用类型变量 `str`,它可以引用一个字符串对象。而这个字符串对象可以是一个字符串字面量,比如 `"hello"`。

对于值类型(value types)来说,如 `int`、`float` 等基本类型,它们的变量直接存储值,而不是引用。因此,区分引用类型和值类型的一个简单方法是,引用类型的变量存储的是对象的引用,而值类型的变量存储的是值本身。

 在C#中,以下是一些常见的值类型:

1. 整数类型:

   - `int`:32 位有符号整数。

   - `long`:64 位有符号整数。

   - `short`:16 位有符号整数。

   - `byte`:8 位无符号整数。

   - 等等...

 

2. 浮点数类型:

   - `float`:32 位浮点数。

   - `double`:64 位浮点数。

   - `decimal`:128 位高精度十进制数。

   

3. 字符类型:

   - `char`:16 位 Unicode 字符。

 

4. 布尔类型:

   - `bool`:表示真或假。

 

5. 枚举类型:

   - `enum`:用于定义枚举类型。

 

6. 结构体类型(Structs):

   - 自定义的值类型,可以包含多个字段。

 

这些值类型的变量直接存储值本身,而不是引用,与引用类型相比,它们在内存中的存储方式和处理方式不同。

   看到一个值类型/引用类型之辨较好注解:fa4acabbc0894cdd96384b6ea69fe947.jpg

 

【扩展概念】

看这个图产生疑问:

问了问chatgpt

值类型为什么都是seal的?(国产ai回答蛮好:6d48d2de61d248e6bac5506c50c818e8.jpg

41a929514042464992b807c15b67f365.jpg 

 

 关于"所有值类型都是密封的吗?"这个问题:

【seal】建议先看最后俩图总结 不然有点子绕

 

chatgpt似乎对于sealed和中文概称密封强行理解了

【chatgpt迷惑行为】99dc7be043604147b5db9aae076cb412.jpg

7139b83542eb489abcc7a73a5ada79ca.jpg

 

起源: bd018d29ce1147e6a214e93285a56965.jpg

可以为空的值类型nullable value types

e2d33be4a9e34e3aa5963712b23b270c.jpg691c472c36294121b5518b298f49b920.jpg

237bede134584044b1ec797ff1a58f57.jpg

 36309f292fd146ae91b2a45cf41a073c.jpg

 65d916fefe9f4dffb7c1ec3c1ba93e87.jpg

029f004e9ccd44eea7e848e4147f7b8b.jpg 

d897045e91964f5faaba9b13b5ef2916.jpg 

e71ea64b391d482194d1d7e472a53fce.jpg

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/1728.shtml

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

相关文章

微信小程序实现腾讯地图

1、// map.js Page({ data: { latitude: 0, // 初始纬度值 longitude: 0, // 初始经度值 markers: [] }, onReady: function (e) { this.getLocation(); // 主动获取用户地理位置信息 }, getLocation: function () { wx.getLocation({ type: gcj02, success: (res) > { thi…

羊大师解读,春季羊奶VS夏季羊奶

羊大师解读,春季羊奶VS夏季羊奶 夏季的羊奶和春季的羊奶在营养成分上并没有本质的区别,都含有丰富的蛋白质、矿物质和维生素等。然而,由于季节和气候的变化,人们饮用羊奶的需求和效果可能会有所不同。 在夏季,天气炎热…

C语言 | Leetcode C语言题解之第35题搜索插入位置

题目&#xff1a; 题解&#xff1a; int searchInsert(int* nums, int numsSize, int target) {int left 0, right numsSize - 1, ans numsSize;while (left < right) {int mid ((right - left) >> 1) left;if (target < nums[mid]) {ans mid;right mid - …

R语言 数据的整理与清洗(第一篇)

《Cookbook for R》 Manipulating Data ~ General Sorting 排序 1、vectors 向量 # 先随机生成一组向量 v <- sample(101:110)# 排序sort() sort(v) #> [1] 101 102 103 104 105 106 107 108 109 110# 反向排序 sort(v, decreasingTRUE) #> [1] 110 109 108 107 1…

Docker容器的使用与操作

1、什么是容器 镜像和容器的关系&#xff0c;就像是面向对象程序设计中的类和实例一样&#xff0c;镜像是静态的定义&#xff0c;容器是镜像运行时的实体&#xff0c;基于同一镜像可以创建若干个不同的容器。 每个容器都有一个软件镜像。可以将容器看作一个将应用程序及其依赖环…

使用vue3+ts+vite从零开始搭建bolg(二)

二、全局变量 2.1element-ui集成 pnpm i element-plus pnpm i element-plus element-plus/icons-vue main.ts配置文件 import ElementPlus from element-plus import element-plus/dist/index.css //ts-ignore import zhCn from element-plus/dist/locale/zh-cn.mjsapp.use…

浅说深度优先搜索(中)——回溯

写在最前 相信在你们不懈的努力之下&#xff0c;基本的递归一定可以写出来了&#xff0c;那么我们现在就来看看递归的升级版——回溯怎么写吧&#xff01; 简说回溯 递归是一种特别重要的解题策略。大部分题目需要找到最优解&#xff0c;而这个求解过程可能存在一定的规律性…

用单片机的矩阵键盘选择显示什么图像

注意行数据不能二进制 #include "reg51.h"typedef unsigned int u16; //对系统默认数据类型进行重定义 typedef unsigned char u8;//定义74HC595控制管脚 sbit SRCLKP3^6; //移位寄存器时钟输入 sbit RCLKP3^5; //存储寄存器时钟输入 sbit SERP3^4; //串行数据输入…

UE5(基础动作)多人游戏制作蹲伏

1.创建输入操作&#xff0c;IA_Crouch 在输入映射中添加 IA_Crouch,在触发器中创建两个索引&#xff0c;已按下已松开来创建蹲伏输入。 蹲伏操作必须要勾选角色-角色移动-crouch勾选可蹲伏否则你的人物无法真正蹲下。 为蹲伏创建函数&#xff0c;创建布尔来判断是否蹲伏。 通过…

CodeGemma初探

什么是 CodeGemma CodeGemma是一系列强大而轻量级的模型的集合&#xff0c;可以执行各种编码任务&#xff0c;包括填充中间代码补全、代码生成、自然语言理解、数学推理和指令跟随。 版本&#xff1a; instruct&#xff1a;7B, 这个版本专门针对自然语言到代码聊天和指令跟随…

day83 AJAX

1什么是AJAX AJAX语法 AJAX Asynchronous JavaScript and XML 异步js和XML 实现页面某一部份更新&#xff0c;无需服务器转发或重定向 1 $.ajax() 语法: $.ajax( { "url" : "url&qu…

数据库主从复制

一、主从复制概述 1、介绍&#xff1a; 主从复制是指将主数据库的 DDL 和 DML 操作写入到二进制日志中&#xff0c;将二进制日志传送到从库服务器&#xff0c;然后在从库上对这些日志重新执行&#xff08;重做&#xff09;&#xff0c;从而使得从库和主库的数据保持同步。 M…

百面算法工程师 | 分类网络总结

欢迎大家订阅我的专栏一起学习共同进步&#xff0c;主要针对25届应届毕业生 祝大家早日拿到offer&#xff01; lets go http://t.csdnimg.cn/dfcH3 目录 4. 经典分类网络与发展 4.1 AlexNet 4.2 VGGNet 4.3 GoogLeNet Inception 4.4 ResNet 4.5 DenseNet 4.6 MobileN…

C#中的浅拷贝(Shallow Copy)和深拷贝(Deep Copy),深拷贝的集中实现方式,浅拷贝深拷贝的案例

C#中的浅拷贝&#xff08;Shallow Copy&#xff09;和深拷贝&#xff08;Deep Copy&#xff09; 拷贝就是创建一个对象&#xff0c;这个对象有着原始对象数据&#xff08;属性和字段&#xff09;的一份精确拷贝&#xff08;只针对Object和Array这样的引用数据类型&#xff09;…

mysql面试题七(集群)

目录 1.mySQL 中有哪些常见日志 错误日志&#xff08;Error Log&#xff09; 二进制日志&#xff08;Binary Log, Binlog&#xff09; 重做日志&#xff08;Redo Log&#xff09; 回滚日志&#xff08;Undo Log&#xff09; 慢查询日志&#xff08;Slow Query Log&#xf…

截断堆积柱状图

本教程原文链接&#xff1a;截断堆积柱状图绘制教程 欢迎大家转载&#xff01;&#xff01;&#xff01;&#xff01; 本期教程 写在前面 堆积柱状图是柱状图的常见类型之一&#xff0c;也是平时使用概率较高的图形之一。我们前期发布了很多个柱状图的绘制教程&#xff0c;若你…

java学习笔记4

7. 二维数组 7.1 定义 二维数组及就是数组的嵌套,数组的元素还是数组; 二维数组是一个 元素为一维数组 的一维数组; 语法上Java支持多维数组,但从内存分配原理的角度看,Java中只有一维数组,没有多维数组; 7.2 二维数组的初始化和赋值 7.2.1 长度已知 数据类型[][] 数…

【工厂模式】简单工厂模式-简单例子

目录 一、简单介绍 二、未使用工厂模式之前 三、简单工厂模式 初始 优化 总结 一、简单介绍 工厂模式是一种软件设计模式&#xff0c;用于创建对象的方法。在工厂模式中&#xff0c;创建对象的逻辑被封装在一个单独的类中&#xff0c;该类负责根据特定条件或参数创建合适…

windows下使用命令uvicorn启动fastapi程序有乱码,方框形状奇怪字符

问题简述 执行命令uvicorn main:app --reload后出现的问题如图所示 这个问题非常容易解决&#xff01; 原因是windows控制台 默认未开启 ANSI颜色的支持 那么我们只需要开启就可以了 轻松解决 1 按下winR 打开运行 2 输入regedit 点击确定编辑注册表 3 新建值 值的名称为…

探索PostCSS:打造定制化、前瞻性的现代CSS开发工作流

PostCSS&#xff0c;作为一个高度可扩展的CSS处理器&#xff0c;以其强大的插件系统和对CSS未来特性的前瞻支持&#xff0c;已经成为现代前端开发中的重要工具。本篇文章将深入探讨PostCSS的核心概念、工作原理、主要优势&#xff0c;以及如何利用它来提升CSS开发效率与代码质量…