日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#8.0,9.0,10.0常见新语法学习

發(fā)布時(shí)間:2025/5/22 C# 24 如意码农
生活随笔 收集整理的這篇文章主要介紹了 C#8.0,9.0,10.0常见新语法学习 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

頂級(jí)語句

(1)一個(gè)項(xiàng)目最多只能有一個(gè)文件具有頂級(jí)語句,就是直接寫代碼,如果存在多個(gè),則會(huì)報(bào)錯(cuò),





(2)如果頂級(jí)語句和Main共存,則只調(diào)用頂級(jí)語句







(3)如果沒有頂級(jí)語句,則必須有Main



簡(jiǎn)化using聲明

簡(jiǎn)化using聲明省去了大括號(hào),使用“using聲明”的變量是在離開變量作用域的時(shí)候,進(jìn)行資源回收,但需要注意一些問題:

// 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在方法執(zhí)行后,才被釋放資源,因此,用File來ReadAllText時(shí)候,文件仍然占用,拋出“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);

人為加一個(gè)作用域塊,當(dāng)outStream脫離作用域塊時(shí)候,調(diào)用DisPose方法,釋放資源即可。

可為空的引用類型



原因是csproj中,有:



,如果改為false,則沒有該警告。



Record



異步編程

async方法中,沒有await,則該方法被調(diào)用時(shí),前面加個(gè)await,會(huì)發(fā)生什么

如果在異步方法中沒有使用 await,則該方法將被視為同步方法,并且在調(diào)用它時(shí)將按照普通的同步方法進(jìn)行執(zhí)行,且編譯器會(huì)警告。這意味著在沒有 await 的情況下,方法將在執(zhí)行完所有的代碼后返回其結(jié)果,而不會(huì)等待任何異步操作完成。

如果在調(diào)用該方法時(shí)添加了 await,則當(dāng)前線程將暫停等待該方法的執(zhí)行,直到異步操作完成并返回結(jié)果。在這種情況下,使用 await 的主要目的是將異步方法的執(zhí)行交還給調(diào)用方,以便調(diào)用方可以繼續(xù)執(zhí)行其他操作,而不需要等待異步方法完成。

需要注意的是,如果異步方法沒有使用 await,則使用 await 調(diào)用該方法可能會(huì)導(dǎo)致死鎖或阻塞線程,因?yàn)檎{(diào)用方線程將一直等待方法的返回,而方法本身不會(huì)執(zhí)行異步操作或釋放線程,這將導(dǎo)致線程阻塞。因此,應(yīng)該僅在確保異步方法中包含異步操作的情況下使用 await 調(diào)用該方法。

總結(jié)

以上是生活随笔為你收集整理的C#8.0,9.0,10.0常见新语法学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。