C#【进阶】特殊语法

特殊语法、值和引用类型

特殊语法

在这里插入图片描述

文章目录

    • 特殊语法
      • 1、var隐式类型
      • 2、设置对象初始值
      • 3、设置集合初始值
      • 4、匿名类型
      • 5、可空类型
      • 6、空合并操作符
      • 7、内插字符串
      • 8、单句逻辑简略写法
    • 值和引用类型
      • 1、判断值和引用类型
      • 2、语句块
      • 3、变量的生命周期
      • 4、结构体中的值和引用
      • 5、类中的值和引用
      • 6、数组中的存储规则
      • 7、结构体继承接口

1、var隐式类型

var是一种特殊的变量类型
它可以用来表示任意类型的变量
注意:1、var不能作为类的成员,只是临时声明2、var必须初始化

2、设置对象初始值

声明对象时
可以通过直接写大括号的形式初始化公共成员变量和属性
作用:可以快速初始化小括号可以省略

3、设置集合初始值

声明集合对象时
可以通过大括号直接初始化内部属性

4、匿名类型

var可以声明为自定义的匿名类型var v = new { age = 18, money = 100};

5、可空类型

1、值类型是不能为空的int c = 3;
2、声明时,在值后面加?int? c = null;
3、判断是否为空if (c.HasValue){Console.WriteLine(c);Console.WriteLine(c.Value);}
4、安全获取可空类型值int? value = null;4-1、如果为空,默认返回值类型的默认值Console.WriteLine(value.GetValueOrDefault());4-2、指定一个默认值Console.WriteLine(value.GetValueOrDefault(-1));4-3?会自动判断是否为空object o = null;if (o!=null){o.ToString();}//?相当于语法糖o?.ToString();//数组判断非空简写int[] arrayInt = null;arrayInt?[0];//委托判断非空简写Action action = null;action?.Invoke;

6、空合并操作符

空合并操作符 ??
左边值 ?? 右边值
如果左边值为null 就返回右边值,否则返回左边值
只要是可以为null的类型都能用int? intV = null;//int intI = intV == null ? 100 : intV.Value;int intI = intV ?? 100;string str = null;str = str ?? "空";Console.WriteLine(str);

7、内插字符串

用$来构造字符串,让字符串可以拼接变量
int age = 18;
Console.WriteLine($"年龄{age}岁");

8、单句逻辑简略写法

当循环或者if语句只有一句代码时,大括号可以省略
方法只有一句代码时可以直接 =>

值和引用类型

1、判断值和引用类型

F12查看
class 是引用
struct 是值

2、语句块

命名空间↓
类、接口、结构体↓
函数、属性、索引器、运算符重载等(类、接口、结构体)↓
条件分支、循环上层语句块:类、结构体
中层语句块:函数
底层的语句块: 条件分支 循环等我们的逻辑代码写在哪里?
函数、条件分支、循环-中底层语句块中我们的变量可以申明在哪里?
上、中、底都能申明变量
上层语句块中:成员变量
中、底层语句块中:临时变量

3、变量的生命周期

编程时大部分都是 临时变量
在中底层申明的临时变量(函数、条件分支、循环语句块等)
语句块执行结束 
没有被记录的对象将被回收或变成垃圾值类型:被系统自动回收
引用类型:栈上用于存地址的房间被系统自动回收,堆中具体内容变成垃圾,待下次GC回收

4、结构体中的值和引用

结构体本身是值类型
前提:该结构体没有做为其它类的成员
在结构体中的值,栈中存储值具体的内容
在结构体中的引用,堆中存储引用具体的内容引用类型始终存储在堆中

5、类中的值和引用

类本身是引用类型
在类中的值,堆中存储具体的值
在类中的引用,堆中存储具体的值

6、数组中的存储规则

数组本身是引用类型
值类型数组,堆中房间存具体内容
引用类型数组,堆中房间存地址

7、结构体继承接口

利用里氏替换原则,用接口容器装载结构体存在装箱拆箱

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

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

相关文章

C++笔试强训day32

目录 1.素数回文 2.活动安排 3.合唱团 1.素数回文 链接https://www.nowcoder.com/practice/d638855898fb4d22bc0ae9314fed956f?tpId290&tqId39945&ru/exam/oj 现将其转化为回文数(这里用字符串存储比较方便转化),然后判断是否为…

ASP.NET Core Identity框架介绍与使用

1 ASP.NET Core Identity框架 Identity (标识)框架:采用的是基于角色的访问控制策略(Role-Based-Controll-Access),内置了对用户、角色等表的管理以及相关的接口,支持外部登录、2FA等。 Identit…

构建数字未来:探索Web3在物联网中的新视角

引言 随着Web3时代的来临,物联网技术正迎来一场新的变革。在这个数字化时代,Web3所带来的技术创新将为物联网的发展开辟新的视角。本文将深入探讨Web3在物联网领域的应用,揭示其在构建数字未来中的重要性和影响。 Web3与物联网的融合 区块链…

Golang项目代码组织架构实践

Golang在项目结构上没有强制性规范,虽然这给了开发者很大的自由度,但也需要自己沉淀一套可行的架构。本文介绍了一种项目布局,可以以此为参考设计适合自己的 Golang 项目组织模式。原文: Golang Project Layout Go 有很多强制的或是约定俗成的…

如何运用多媒体,打造企业实力展示厅?

企业文化、产品是其长期发展的根本所在,为此越来越多的企业开始选择运用多媒体互动,来打造企业多媒体展厅的方式,对企业文化、品牌形象、产品进行推广宣传,并在多媒体互动装置的支持下,能让客户能够快速且全面的了解企…

【设计模式】JAVA Design Patterns——Converter(转换器模式)

🔍目的 转换器模式的目的是提供相应类型之间双向转换的通用方法,允许进行干净的实现,而类型之间无需相互了解。此外,Converter模式引入了双向集合映射,从而将样板代码减少到最少 🔍解释 真实世界例子 在真实…

cocos 写 连连看 小游戏主要逻辑(Ts编写)算法总结

cocos官方文档:节点系统事件 | Cocos Creator 游戏界面展示 一、在cocos编译器随便画个页面 展示页面 二、连连看元素生成 2.1、准备单个方块元素,我这里就是直接使用一张图片,图片大小为100x100,锚点为(0&#xff0…

【Linux-驱动开发】

Linux-驱动开发 ■ Linux-应用程序对驱动程序的调用流程■ Linux-file_operations 结构体■ Linux-驱动模块的加载和卸载■ 1. 驱动编译进 Linux 内核中■ 2. 驱动编译成模块(Linux 下模块扩展名为.ko) ■ Linux-■ Linux-■ Linux-设备号■ Linux-设备号-分配■ 静态分配设备号…

Unity Physics入门

概述 在unity中物理属性是非常重要的,它可以模拟真实物理的效果在unity中,其中的组件是非常多的,让我们来学习一下这部分的内容吧。 Unity组件入门篇总目录----------点击导航 Character Controller(角色控制) 说明:组件是Unity提…

运算符重载(上)

目录 运算符重载日期类的比较判断日期是否相等判断日期大小 赋值运算符重载赋值运算符重载格式赋值运算符只能重载成类的成员函数不能重载成全局函数用户没有显式实现时,编译器会生成一个默认赋值运算符重载,以值的方式逐字节拷贝 感谢各位大佬对我的支持…

微信小程序反编译/解包

微信小程序反编译/解包 环境与工具 操作系统:Windows 11 23H2 微信版本:3.9.10.19 Q:如何找到小程序文件位置? A:在微信的设置找到文件路径,小程序文件位于 \WeChat Files\Applet\。 Q:小程…

web前端的路径和Servlet注解开发

目录 在web前端的两种路径 绝对路径的两种写法 相对路径 相对路径进阶 使用注解开发Servlet 使用注解开发Servlet的注意事项 使用idea创建servlet模板 在web前端的两种路径 绝对路径的两种写法 1.带网络三要素 http://ip地址:端口号/资源路径 2.不带网络三要素 /资源路…

Ps:消失点滤镜 - 选区操作

Ps菜单:滤镜/消失点 Filter/Vanishing Point 快捷键:Ctrl Alt V 当在“消失点”滤镜中进行绘画或修饰以校正缺陷、添加元素或改进图像时,可使用选区提供帮助。 通过建立选区,可在图像中绘制或填充特定区域的同时采用图像中的平面…

Linux之单机项目部署

1、虚拟机(VMware)创建Linux系统 1.1、创建虚拟机 1.2、配置虚拟机IOS映射文件 1.3、虚拟机内部相关配置 等待加载即可,加载完后会弹出图形化界面,如图: 注意:一般我们做为管理员使用ROOT账号来操作&#x…

利用sql注入对某非法网站的渗透

本文仅用于技术讨论,切勿用于违法途径,且行且珍惜, 所有非经授权的渗透,都是违法行为 前言 这段时间一直在捣鼓sql注入,最近又通过一个sql注入点,成功进入某个非法网站的后台,拿到整个网站的…

力扣654. 最大二叉树

Problem: 654. 最大二叉树 文章目录 题目描述思路复杂度Code 题目描述 思路 对于构造二叉树这类问题一般都是利用先、中、后序遍历,再将原始问题分解得出结果 1.定义递归函数build,每次将一个数组中的最大值作为当前子树的根节点构造二叉树;…

动静态库

说明:使用动静态库,一般直接安装即可,其他使用方法了解即可 静态库 静态库(Static Library)是一种将代码和数据打包成一个单独的文件的库文件,主要用于编译时的链接,而不是运行时。静态库通常…

手撕算法|斯坦福大学教授用60页PPT搞定了八大神经网络

人工智能领域深度学习的八大神经网络常见的是以下几种 1.卷积神经网络(CNN): 卷积神经网络是用于图像和空间数据处理的神经网络,通过卷积层和池化层来捕捉图像的局部特征,广泛应用于图像分类、物体检测等领域。 2.循…

springcloud第4季 springcloud-gateway网关predict案例场景

一 predict案例场景 1.1 说明 本博客所有案例操作,都在上篇博客的基础上进行: springcloud第4季 springcloud-gateway网关的功能作用_cloud gateway干嘛的-CSDN博客 1.2 案例前提准备 1. 启动zipkin服务 2.启动consul服务 3.启动3个应用服务 二 …

【产品经理】如何培养对市场的洞察力

引言:        在最近频繁的产品管理职位面试中,我深刻体会到了作为产品经理需要的不仅仅是对市场和技术的敏锐洞察,更多的是在复杂多变的环境中,如何运用沟通、领导力和决策能力来引导产品从概念走向市场。这一系列博客将分享…