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

 

 

 

 

 

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

阿里云服务器怎么更换暴露的IP

很多客户阿里云服务器被攻击IP暴露,又不想迁移数据换服务器,其实阿里云服务器可以更换IP,今天就来和大家说说流程,云服务器创建成功后6小时内可以免费更换公网IP地址三次,超过6小时候就只能通过换绑弹性公网IP的方式来…

第二部分 Python提高—GUI图形用户界面编程(六)

其他组件学习 文章目录 OptionMenu 选择项Scale 移动滑块颜色选择框文件对话框简单输入对话框通用消息框ttk 子模块控件 OptionMenu 选择项 OptionMenu(选择项)用来做多选一,选中的项在顶部显示。显示效果如下: from tkinter import * root Tk();ro…

栈和队列OJ(面试高频题 - 看完包!!!拿捏)

目录 题目一:括号匹配问题(来源) 题目描述 题目思路及实现 题目二:用队列实现栈(来源) 题目描述 题目思路及实现 题目三:用栈实现队列(来源) 题目描述 题目思路及实现 …

C# 窗体应用程序 Chart控件显示实时曲线

IDE: VS2019 项目模板:C# windows 窗体应用(.NET Framework) 【参考】 B站上教程C#Chart控件画折线图的使用,关于Chart控件的属性,介绍得非常详细。B站上教程C#上位机Chart控件实时曲线终极讲解,对鼠标滚轮事件等,多…

数据结构初阶-二叉树

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 二叉树 树概念和结构 树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限节点组成的一个具有层次关系的集合,把它叫做树…

在H5开发App应用程序过程中的一些常见问题

哈喽,大家好呀,淼淼又来和大家见面啦,H5开发是一种可以跨平台、跨设备、且可以在各种设备上运行,无需安装额外的应用程序。最近有许多小伙伴跟我聊到在h5开发App应用程序的过程中遇到了一些问题,今天我们就这些问题来做…

赫克Hurco触摸屏维修工控机显示屏G190EG01

美国赫克Hurco工控机控制器维修C5SH11 Hurco工控机电脑维修 主要适用范围是:石油和石油化学工业、灶矿、油田、化学工业、化纤工业、油漆工业、肥料工业、各种制造工业。石油轮和车辆、飞机、仓库、电解车间、通讯机装配车间、要求工具不生锈、抗磁的场所等。 hurc…

SQL连接查询

连接查询: 同时涉及多个表的查询称为连接查询。 SQL中连接查询的主要类型 (1) 交叉连接(广义笛卡尔积) (2) 等值连接 (3) 自身连接 (4) 内连接 (5) 外连接 1.交叉连接 使用笛卡尔积运算的连接方式 笛卡尔积运算:设A&#xff…

Java 的注释

文章目录 java 的注释共有三种形式单行注释多行注释文档注释文档注释的文档需要命令进行生成GBK 不可映射问题 与大多数的编程语言一样,Java 中的注释也不会出现在可执行程序中。 因此我们可以在源程序中根据需要添加任意多的注释,而不必担心可执行代码受…

LeetCode:203.移除链表元素

🏝1.问题描述: 🏝2.实现代码: typedef struct ListNode ListNode; struct ListNode* removeElements(struct ListNode* head, int val) {if(headNULL)return head;ListNode *NewHead,*NewTail;ListNode *pcurhead;NewHeadNewTail…

揭秘七星创客模式:如何轻松实现财富增长

亲爱的朋友们,我是微三云的周丽,一名专注于私域电商模式创新的探索者。 在当今商业社会,随着科技的飞速发展和互联网的普及,商业模式的创新和变革成为企业发展的关键。其中,七星创客模式以其独特的魅力和gao效的yun营…

这就是酷雷曼500位合作商成功的底气

你只管赚钱,其它交给总部! 敢做出这样的承诺,酷雷曼凭的就是“保姆式”的帮扶政策。酷雷曼致力于建立一个可持续良效发展的合作商运营体系,无论是落地扶持还是培训服务,全方位为合作商保驾护航! 陪跑式落…

注意力机制基本思想(一)

​🌈 个人主页:十二月的猫-CSDN博客🔥 系列专栏: 🏀《深度学习基础知识》 相关专栏: ⚽《机器学习基础知识》 🏐《机器学习项目实战》 🥎《深度学习项目实战…

超详细Web程序设计基础知识,新手设计师快收藏!

Web 程序设计是现代计算机科学的核心领域之一。它涉及到开发各种不同类型的网站和应用程序,从基本的静态页面到复杂的动态应用程序。本文将介绍 Web 程序设计的基础知识,包括 JavaScript、HTML、CSS 等方面的内容。 1、JavaScript JavaScript 是一种脚…

【Web】Dest0g3 520迎新赛 题解(全)

目录 phpdest EasyPHP SimpleRCE funny_upload EasySSTI middle PharPOP ezip NodeSoEasy Really Easy SQL&easysql EzSerial ljctr phpdest 尝试打pearcmd,但似乎没有写文件的权限 ?config-create/&file/usr/local/lib/php/pearcmd.php&a…

C++学习————第七天(初始化列表、static,友元,内部类)

今天已经是C学习第七天,希望这篇文章能够给大家带来更多的帮助,相应文章都放在C学习专栏里面。 C学习————第五天(构造函数 析构函数 拷贝构造函数)-CSDN博客 C学习————第六天 (运算符重载 const成员 取地址&…

[渗透测试学习] Monitored-HackTheBox

Monitored-HackTheBox 信息搜集 nmap扫描一下端口 nmap -sV -sC -v --min-rate 1000 10.10.11.248扫描结果如下 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u3 (protocol 2.0) 80/tcp open http Apache httpd …

阿里巴巴拍立淘API让购物更智能:图片搜索商品,信息快速呈现,个性化推荐更精准

随着互联网的不断发展,电子商务已经成为人们日常生活中不可或缺的一部分。然而,传统的文本搜索方式在购物过程中往往存在信息不匹配、效率低下等问题。为了解决这些问题,阿里巴巴推出了拍立淘API,通过图片搜索商品的方式&#xff…

graphviz使用

安装 brew install graphviz测试 https://github.com/martisak/dotnets?tabreadme-ov-file

德鲁伊参数踩坑之路

上文说到 Druid德鲁伊参数调优实战,也正因此次优化,为后续问题埋下了伏笔 背景 2024/04/16日,业务反馈某个定时统计的数据未出来,大清早排查定位是其统计任务跑批失败,下面给一段伪代码 // 无事务执行 public void …