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

news2024/11/24 0:08:34

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

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

相关文章

mysql 转pg 两者不同的地方

因项目数据库(原来是MySQL)要改成PostgreSQL。 项目里面的sql要做一些调整。 1,写法上的区别: 1,数据准备: 新建表格: CREATE TABLE property_config ( CODE VARCHAR(50) NULL…

PHP一句话木马

一句话木马 PHP 的一句话木马是一种用于 Web 应用程序漏洞利用的代码片段。它通常是一小段 PHP 代码,能够在目标服务器上执行任意命令。一句话木马的工作原理是利用 Web 应用程序中的安全漏洞,将恶意代码注入到服务器端的 PHP 脚本中。一旦执行&#xf…

免费ssl通配符证书申请教程

在互联网安全日益受到重视的今天,启用HTTPS已经成为网站运营的基本要求。它不仅保障用户数据传输的安全,提升搜索引擎排名,还能增强用户对网站的信任。通配符证书是一种SSL/TLS证书,用于同时保护一个域名及其所有下一级子域名的安…

【Qt】:界面优化(一:基本语法)

界面优化 一.基本语法1.设置指定控件样式2.设置全局控件样式3.从文件加载样式表4.使⽤Qt Designer编辑样式(最常用) 二.选择器1.概述2.子控件选择器3.伪类型选择器 三.盒模型 在网页前端开发领域中,CSS是一个至关重要的部分.描述了一个网页的"样式&…

基于JavaWeb开发的springboot网约车智能接单规划小程序[附源码]

基于JavaWeb开发的springboot网约车智能接单规划小程序[附源码] 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种…

Weakly Supervised Audio-Visual Violence Detection 论文阅读

Weakly Supervised Audio-Visual Violence Detection 论文阅读 摘要III. METHODOLOGYA. Multimodal FusionB. Relation Modeling ModuleC. Training and Inference IV. EXPERIMENTSV. CONCLUSION阅读总结 文章信息: 发表于:IEEE TRANSACTIONS ON MULTIME…

上海亚商投顾:沪指低开低走跌 两市逾千股跌超10%

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 三大指数昨日低开低走,沪指跌超1.6%,深成指、创业板指尾盘跌逾2%,微盘股指…

【c 语言】结构体指针

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:C语言 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步&…

2024年4月最新版GPT

2024年4月最新版ChatGPT/GPT4, 附上最新的使用教程。 随着人工智能技术的不断发展,ChatGPT和GPT4已经成为了人们日常生活中不可或缺的助手。2024年4月,OpenAI公司推出了最新版本的GPT4,带来了更加强大的功能和更加友好的用户体验。本文将为大家带来最新版GPT4的实用…

外网如何访问内网数据库?

企业和个人常常需要在外部网络环境中访问内部的数据库资源。这也是为了实现更大范围的资源共享和便捷的工作模式。由于网络安全和防火墙的限制,外网访问内网数据库并不是一件容易的事情。 在解决这个问题的过程中,天联组网应运而生。天联组网是一款异地组…

AIGC实战——VQ-GAN(Vector Quantized Generative Adversarial Network)

AIGC实战——VQ-GAN 0. 前言1. VQ-GAN2. ViT VQ-GAN小结系列链接 0. 前言 本节中,我们将介绍 VQ-GAN (Vector Quantized Generative Adversarial Network) 和 ViT VQ-GAN,它们融合了变分自编码器 (Variational Autoencoder, VAE)、Transformer 和生成对…

科技驱动未来,提升AI算力,GPU扩展正当时

要说这两年最火的科技是什么?我想“AI人工智能”肯定是最有资格上榜的,尤其ChatGPT推出后迅速在社交媒体上走红,短短5天,注册用户数就超过100万,2023年一月末,ChatGPT的月活用户更是突破1亿,成为…

内网kift私有网盘如何实现在外网公网访问?快解析映射方案

KIFT是一款面向个人、团队、小型组织的网盘服务器系统,安装运行比较简单,开箱即用,下载解压,双击jar文件即可启动。因为是开源的,不少人选择使用KIFT做开源私有网盘,有能力的大佬还可以对它进行定制开发。 …

python 列表对象函数

对象函数必须通过一个对象调用。 列表名.函数名() append() 将某一个元素对象添加在列表的表尾 如果添加的是其他的序列,该序列也会被看成是一个数据对象 count() 统计列表当中 某一个元素出现的次数 extend() 在当前列表中 将传入的其他序列的元素添加在表尾…

养猫必看!毛发护理秘籍,猫粮选择大揭秘!

亲爱的猫友们,我们都知道,猫咪的毛发是它们健康与美丽的象征。选择一款合适的猫粮,对于猫咪的毛发健康至关重要。那么,如何根据猫咪的毛发情况来选择合适的猫粮呢?接下来,就让我来为你详细解答吧&#xff0…

5.前后端分离

目录 一、前后端分离上传文件 1.在yml中设置port和localhost 2.如何使用postman测试上传文件的接口 二、如何导出excel文件 ​编辑1.在pom.xml中导包 2.在实体类中给每个字段添加注解,导出表格时,列名将会改为对应的中文 3.controller中方法的具体…

Swoole 实践篇之结合 WebRTC 实现音视频实时通信方案

原文首发链接:Swoole 实践篇之结合 WebRTC 实现音视频实时通信方案 大家好,我是码农先森。 引言 这次实现音视频实时通信的方案是基于 WebRTC 技术的,它是一种点对点的通信技术,通过浏览器之间建立对等连接,实现音频…

4.Labview簇、变体与类(上)

在Labview中,何为簇与变体,何为类?应该如何理解?具体有什么应用场景? 本文基于Labview软件,独到的讲解了簇与变体与类函数的使用方法和场景,从理论上讲解其数据流的底层概念,从实践上…

CSS基础之伪元素选择器(如果想知道CSS的伪元素选择器知识点,那么只看这一篇就足够了!)

前言:我们已经知道了在CSS中,选择器有基本选择器、复合选择器、伪类选择器、那么选择器学习完了吗?显然是没有的,这篇文章讲解最后一种选择器——伪元素选择器。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我…

如何把npm切换成yarn管理项目

1.删掉项目中package-lock.json和依赖包 这一步手动删掉就好 2.全局安装yarn npm install -g yarn 3.可以开始执行yarn install安装依赖 1)执行yarn init 这一步是修改npm生成的package.json文件,可能会遇到这个问题: 这个查了一下是有…