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.mzph.cn/pingmian/15855.shtml

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

相关文章

Hive 常用指标分析

常用指标分析 用户留存率路径分析7日品牌复购率7天内连续三天登录每分钟在线人数 1. 用户留存率 在使用 Hive 统计用户留存率时,我们通常会涉及到两个主要日期:用户注册日期和用户在后续某天的活跃日期。留存率通常是指用户在注册后的某一天仍然活跃的…

重学java 45.多线程 下 总结 定时器_Timer

人开始反向思考 —— 24.5.26 定时器_Timer 1.概述:定时器 2.构造: Timer() 3.方法: void schedule(TimerTask task, Date firstTime, long period) task:抽象类,是Runnable的实现类 firstTime:从什么时间开始执行 period:每隔多长时间执行一次…

内蒙古包头师范学院体育学院车志宏教授

女,汉族,体育学院院长,承担学校体育学、篮球等课程教学工作,曾住持自治区3项科研项目,发表论文5篇,获奖2篇。 1992年天津体育学院体育教育专业,获学士学位; 1998年天津外国语大学体…

fpga问题整理

1、quartus联合modelsim仿真 无波形 问题: modelsim仿真无波形,打开transcript可以看到警告。 警告: # ** Warning: (vlog-2083) f:/program files/altera/ 13.1/quartus/ eda/sim_lib/ altera_lnsim.sv(22728): Carriage return (0x0D) is…

MySQL之Schema与数据类型优化(五)

Schema与数据类型优化 特殊类型数据 某些类型的数据并不直接与内置类型一致。低于秒级精度的时间戳就是一个例子。另外一个例子是一个IPv4地址。人们经常使用VARCHAR(15)列存储IP地址。然而,它们实际上是32位无符号整数。不是字符串。用小数点将地址分成四段的表示…

用AI比赛助手降维打击数学建模,比赛过程详细介绍,这保研不就稳了吗

数学建模是个小众的赛道,可能很多大学生不知道,简单来说:他能薅学分、保研加分、毕业好找工作(简历上写一辈子),尤其是基于GPT-4o模型,简直对他们是降维打击。 数学建模每年的比赛非常多,像国赛、美赛、深…

asrpro softspi SD卡读写

采样 50M 1M;采样时间足够长,采样频率1M 避免信息遗漏 引脚 cs pa2 mosi pa3 sck pa5 miso pa6 vcc ->5v gnd ->gnd ARDUINO SD库与移植(原本是打算移值tw ch32v103的sd库的,但没有对比,只能选择arduino ; …

Keras深度学习框架第二十六讲:使用KerasNLP上传模型

1、上传模型的概念 在机器学习和深度学习领域,"上传模型"通常指的是将训练好的模型保存到某个位置,以便后续使用或分享,而不是直接通过KerasNLP库进行上传操作。但在这里,我们可以理解为保存和分享模型。 当程序员使用…

Java进阶学习笔记22——泛型方法、通配符和上下限

泛型方法: package cn.ensource.d11_generics_method;public class Test {public static void main(String[] args) {// 泛型方法String res test("Java");System.out.println(res);Dog dog1 test(new Dog());System.out.println(dog1);}// 泛型方法pub…

手机上制作证件照

最近由于需要给老姐弄一组证件照,找了一通手机上的软件,找到一款性价比较高的,详细流程记录下来。vx小程序上搜索"泰世茂证件照",打开首页如下图所示∶ 单击"开始制作" ,选择一个证件照类别&#…

Paddle 傅里叶变换基础及领域应用

Paddle 傅里叶变换基础及领域应用 1. 傅里叶变换基础 1.1 傅里叶变换简介 傅里叶变换是一种重要的信号处理技术,它可以将一个信号从时域转换到频域。在频域中,信号的频率特性更加明显,有利于分析和处理。傅里叶变换的基本思想是将一个信号…

基于Rsoft的Fullwave仿真模块进行双芯波导能量耦合与波分复用

Rsoft中的Fullwave仿真模块可以更精确的仿真微小结构,按照建立模型,设置参数,监测能量,优化结构的思路对其进行仿真。图1是在Fullwave模块中建立的双芯波导仿真模型。在模型中设置好折射率、光源、光路、监测器等便可以进行仿真。…

Ubtuntu下安装配置SSH详解

在Ubuntu下安装SSH并配置远程连接,你可以遵循以下步骤: 安装OpenSSH Serve sudo apt update 安装OpenSSH Server: 使用以下命令安装OpenSSH服务器软件包: sudo apt install openssh-server 安装过程可能会要求你确认操作&#x…

Spring STOMP-STOMP客户端

Spring提供了一个基于WebSocket的STOMP客户端和一个基于TCP的STOMP客户端。 首先,你可以创建并配置WebSocketStompClient,如下所示: WebSocketClient webSocketClient new StandardWebSocketClient(); WebSocketStompClient stompClient …

【竞技宝】英超:滕哈格命真硬!足总杯夺冠获欧联资格

足总杯决赛结束,曼联爆冷2比1击败联赛冠军曼城夺冠,滕哈格再一次用顶级理解带队拿到杯赛冠军。赛前曼彻斯特当地有媒体爆料,曼联管理层已经决定要在足总杯决赛之后解雇滕哈格,这个消息让不少球迷都很担心滕哈格的状态。但是荷兰主帅凭借强大的内心,带领球队击败了不可一世的曼城…

如何在Java中创建不可变对象?

在Java中创建不可变对象是一个常见的编程实践,它有助于提高代码的可读性、可维护性和安全性。以下我将从技术难点、面试官关注点、回答吸引力和代码举例四个方面来详细阐述如何在Java中创建不可变对象。 一、技术难点 在Java中创建不可变对象时,主要的…

买房送户口!多城加入“抢人大战”

业内人士认为,近期,多地推出的购房落户政策已区别于此前的人才落户政策,更聚焦于住房消费,降低了落户门槛,体现了各地对导入人口的重视,有利于人才流动,推动新型城镇化建设。 千万人口城市“后…

民宿推荐系统-手把手调试搭建

民宿推荐系统-手把手调试搭建 民宿推荐系统-手把手调试搭建

echarts配置记录,一些已经废弃的写法

1、normal,4.0以后无需将样式写在normal中了 改前: 改后: DEPRECATED: normal hierarchy in labelLine has been removed since 4.0. All style properties are configured in labelLine directly now. 2、axisLabel中的文字样式无需使用te…