C#8.0,9.0,10.0常见新语法学习
顶级语句
(1)一个项目最多只能有一个文件具有顶级语句,就是直接写代码,如果存在多个,则会报错,



(2)如果顶级语句和Main共存,则只调用顶级语句



(3)如果没有顶级语句,则必须有Main


简化using声明
简化using声明省去了大括号,使用“using声明”的变量是在离开变量作用域的时候,进行资源回收,但需要注意一些问题:
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
using var outStream = File.OpenWrite("sample.txt");
using var writer = new StreamWriter(outStream);
writer.WriteLine("hello,tonight");
string s = File.ReadAllText("sample.txt");
Console.WriteLine(s);
由于outStream和writer在方法执行后,才被释放资源,因此,用File来ReadAllText时候,文件仍然占用,抛出“System.IO.IOException:“The process cannot access the file 'G:\CSharpLeannings\DOTNETCORE\samples\CSharp9Learn\bin\Debug\net6.0\sample.txt' because it is being used by another process.”异常
解决方法是:
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
{
using var outStream = File.OpenWrite("sample.txt");
using var writer = new StreamWriter(outStream);
writer.WriteLine("hello,tonight");
}
string s = File.ReadAllText("sample.txt");
Console.WriteLine(s);
人为加一个作用域块,当outStream脱离作用域块时候,调用DisPose方法,释放资源即可。
可为空的引用类型

原因是csproj中,有:

,如果改为false,则没有该警告。


Record


异步编程
async方法中,没有await,则该方法被调用时,前面加个await,会发生什么
如果在异步方法中没有使用 await,则该方法将被视为同步方法,并且在调用它时将按照普通的同步方法进行执行,且编译器会警告。这意味着在没有 await 的情况下,方法将在执行完所有的代码后返回其结果,而不会等待任何异步操作完成。

如果在调用该方法时添加了 await,则当前线程将暂停等待该方法的执行,直到异步操作完成并返回结果。在这种情况下,使用 await 的主要目的是将异步方法的执行交还给调用方,以便调用方可以继续执行其他操作,而不需要等待异步方法完成。
需要注意的是,如果异步方法没有使用 await,则使用 await 调用该方法可能会导致死锁或阻塞线程,因为调用方线程将一直等待方法的返回,而方法本身不会执行异步操作或释放线程,这将导致线程阻塞。因此,应该仅在确保异步方法中包含异步操作的情况下使用 await 调用该方法。
C#8.0,9.0,10.0常见新语法学习的更多相关文章
- Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Trident (又称为MSHTML),是微软的窗口操作系统(Windows)搭载的网页浏览器—Internet Explorer的排版引擎的名称. 它的第一个版本随着1997年10月Internet ...
- kafka_2.11-0.10.0.0安装步骤
Kafka安装配置 我们使用5台机器搭建Kafka集群: 1. cluster-1-namenode-1-001 172.16.0.147 2. cluster-1-datanode-1- ...
- iOS 10.0之前和之后的Local Notification有神马不同
在iOS 10.0之前apple还没有将通知功能单独拿出来自成一系.而从10.0开始原来的本地通知仍然可用,只是被标记为过时.于是乎我们可以使用10.0全新的通知功能.别急-让我们慢慢来,先从iOS ...
- Logstash grok解析IIS 10.0 日志实例
Logstash解析IIS日志的核心在于logstash配置文件 IIS 日志位置和格式如下: #Software: Microsoft Internet Information Services 1 ...
- Zabbix4.0安装与入门及常见配置
1.安装zabbix-server 环境: 10.0.0.50 zabbix-server 10.0.0.51 zabbix-web 10.0.0.52 zabbix-agent yum -y ins ...
- python中,a=10.0 b=10.0 a is b 为什么输出是false
>>>a=10.0>>>b=10.0>>>a is bFalse为什么当a=10,b=10时,a is b输出的是True呢? >>& ...
- Qt 5.0+ 中 connect 新语法与重载函数不兼容问题的解决方法,以及个人看法
Qt 5.0+ 版本提供了 connect 的新语法,相比之前的语法新语法可以提供编译期检查,使用也更方便.可是使用过程中发现一个小问题——当某个 signal 和成员函数是重载关系的时候,qmake ...
- 解决 Ubuntu 18.10 使用较新的独立显卡输出无法初始化图形界面并配置深度学习开发环境
原文地址:解决 Ubuntu 18.10 使用较新的独立显卡输出无法初始化图形界面并配置深度学习开发环境 0x00 配置 硬件 OS: Ubuntu 18.10 Base Board: ASUS WS ...
- Galera 10.0.20 on CentOS 6.6
Galera 10.0.20 on CentOS 6.6 0.使用场景 数据库软件:mariadb-galera-10.0.20-linux-x86_64.tar.gz 集群管理:galera-3-2 ...
- ArcGIS Server 10.0 安装及使用完整攻略
引言 ArcGIS Server 10.0在使用和安装的过程中,需要进行比较全面的学习,才能正确使用.缺乏正确的指引,用户很容易在安装及使用中遇到问题.所以笔者在此总结Server 10.0的安装及使 ...
随机推荐
- SSM - 狂神的项目示例
出于对狂神的崇拜,总结SSM项目. 基本介绍 项目分层 基本介绍 项目名称:ssmbuild 介绍:通过书籍管理系统实现一个简单的SSM项目,可以作为其他Java Web项目的借鉴. 主要功能模块:查 ...
- 关于我在使用Steamlit中碰到的问题及解决方案总结
Steamlit 并不支持一个可以预览本地文件的路径选择器(并不上传文件) 解决方案:使用 Python 自带的 tkinter 来完成 参考:[Streamlit 选择文件夹的曲折方案]Stream ...
- ITSS 运维2.0 实践
最近公司在评审itss 2.0,参与了一部分工作,对工作过程中的问题梳理如下: 大的背景:评审itss 2.0会有评审 为什么公司会申请各种资质 首次申请资质后,公司可以申请一笔费用(x万元)! 申请 ...
- Chrome 134 版本新特性
Chrome 134 版本新特性 一.Chrome 134 版本浏览器更新 1. 在桌面和 iOS 设备上使用 Google Lens 进行屏幕搜索 Chrome 版本 适用平台 发布进度 Chrom ...
- DBeaver连接mysql时Public Key Retrieval is not allowed错误
前言 DBeaver 连接 mysql 时,报错:Public Key Retrieval is not allowed 解决 在新建连接的时候,驱动属性里设置 allowPublicKeyRetri ...
- GPU的硬件组成及运行原理
GPU的硬件组成 GPU 是一种专门为图形处理而设计的处理器,它的设计目标是在处理大规模.高并发的图形数据时提供高效的计算能力.与 CPU 相比,GPU 的处理器数量更多,每个处理器的计算能力相对较弱 ...
- codelite常用快捷键积累
博客地址:https://www.cnblogs.com/zylyehuo/ 编译整个工作空间 workplace Ctrl+shift+B 编译当前文件 file Ctrl+F7 编译项目 proj ...
- 一文搞懂MCP协议与Function Call的区别
一.前言 大家好,我是六哥! 今天咱们聊聊编程里两个听起来有点复杂的概念--MCP协议和函数调用(function call),其实用大白话来讲,它们就是两种不同的"沟通方式",就 ...
- C++文件读写常用操作
C++文件读写常用操作 最近的毕设工作要使用C++保存读取一些矩阵,此篇博文记录比较好用的C++文件读写操作. 写 #include <iostream> #include <fst ...
- 【SpringCloud】Gateway新一代网关
Gateway新一代网关 概述简介 官网 上一代zuul 1.x https://github.com/Netflix/zuul/wiki 当前gateway https://cloud.spring ...