国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C# 12 預覽版的新功能

這篇具有很好參考價值的文章主要介紹了C# 12 預覽版的新功能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

作者:Kathleen Dollard
排版:Alan Wang

Visual Studio 17.7 Preview 3 和 .NET 8 Preview 6 的發(fā)布推進了 C# 12的發(fā)展。此預覽版包含的功能為將來的性能增強奠定了基礎(chǔ)?,F(xiàn)在,您能夠在庫中更方便的使用內(nèi)聯(lián)函數(shù)。此預覽版首次推出了一項實驗性功能:攔截器。該功能允許生成器重新路由代碼,例如提供特定于上下文的優(yōu)化。最后,nameof 功能得到增強,您可以在更多的地方使用它。

安裝最新的 Visual Studio 預覽版或最新版本的 .NET SDK 來使用 C# 12 。將項目的語言版本設置為 preview,就可查看 C# 12 的功能:

<PropertyGroup>
   <LangVersion>preview</LangVersion>
</PropertyGroup>

由于這是實驗性的功能,所以攔截器需要在項目文件中添加一個附加標志。

nameof 訪問實例成員

nameof 關(guān)鍵字現(xiàn)在可用于成員名稱,如初始化器、靜態(tài)成員以及屬性:

internal class NameOf
{
    public string S { get; } = "";
    public static int StaticField;
    public string NameOfLength { get; } = nameof(S.Length);
    public static void NameOfExamples()
    {
        Console.WriteLine(nameof(S.Length));
        Console.WriteLine(nameof(StaticField.MinValue));
    }
    [Description($"String {nameof(S.Length)}")]
    public int StringLength(string s)
    { return s.Length; }
}

您可以在 C# 12 的新增功能中了解更多信息。

內(nèi)聯(lián)數(shù)組

InlineArrayAttribute 是在以前的 .NET 8 預覽版中引入到運行時的。 這是一項高級功能,主要由編譯器、.NET 庫和其他一些庫使用。 該屬性標識了一種可被視為連續(xù)基元序列的類型,以實現(xiàn)高效、類型安全、越界安全的可索引/可切分內(nèi)聯(lián)數(shù)據(jù)。 .NET 庫使用內(nèi)聯(lián)數(shù)組提高應用程序和工具的性能。

編譯器創(chuàng)建不同的 IL 來訪問內(nèi)聯(lián)數(shù)組。 這會導致一些限制,例如不支持列表模式。 在大多數(shù)情況下,您可以像訪問其他數(shù)組一樣訪問內(nèi)聯(lián)數(shù)組。 不同的 IL 可以在不更改代碼的情況下提高性能:

private static void InlineArrayAccess(Buffer10<int> inlineArray)
{
    for (int i = 0; i < 10; i++)
    {
        inlineArray[i] = i * i;
    }
    foreach (int i in inlineArray)
    {
        Console.WriteLine(i);
    }
}

對于內(nèi)聯(lián)數(shù)組,大多數(shù)人傾向于使用,而不是創(chuàng)建。 但是,了解事物的運作方式大有裨益。 內(nèi)聯(lián)數(shù)組速度很快,因為它們依賴于指定長度的精確布局。 內(nèi)聯(lián)數(shù)組是一種具有單個字段的類型,并用指定數(shù)組長度的 InlineArrayAttribute 進行標記。 在上一個示例中使用的類型中,由于屬性參數(shù),運行時會在 Buffer10<T> 中為10個元素創(chuàng)建存儲空間:

[System.Runtime.CompilerServices.InlineArray(10)]
public struct Buffer10<T>
{
    private T _element0;
}

您可以在 C# 12的新增功能中了解更多信息。

攔截器

此預覽版引入了一項名為攔截器的實驗性功能。它適用于一些高級場景,特別是允許更好的提前編譯(AOT)。作為 .NET 8 的實驗部分,在未來版本中它可能會被更改或刪除。因此,先不要在生產(chǎn)中使用這項功能。

攔截器允許將特定方法調(diào)用重新路由到不同的代碼。屬性指定實際的源代碼位置,因此攔截器通常僅適用于源生成器。您可以閱讀攔截器提案以了解有關(guān)攔截器如何工作的更多信息。

由于攔截器是一項實驗性功能,因此您需要在項目文件中顯式啟用它們:

<PropertyGroup>
   <Features>InterceptorsPreview</Features>
</PropertyGroup>

攔截器可以實現(xiàn)絕佳的代碼模式。以下是一些例子:

  • 可以攔截編譯時已知的調(diào)用,例如具有常量模式的 Regex.IsMatch(@"a+b+"),并使用靜態(tài)生成的代碼進行優(yōu)化,以便更好地適用于提前編譯(AOT)環(huán)境 。
  • 可以攔截諸如 app.MapGet("/products", handler: (int? page, int? pageLength, MyDb db) => { ... }) 之類的 ASP.NET Minimal API 調(diào)用來注冊一個靜態(tài)生成的 thunk,該 thunk 會直接調(diào)用用戶的處理程序,從而跳過分配和間接。
  • 在矢量化中,foreach 循環(huán)包含對用戶方法的調(diào)用,編譯器可以重寫代碼以在運行時檢查和使用相關(guān)的內(nèi)部函數(shù),但如果這些內(nèi)部函數(shù)不可用,則返回到原始代碼。
  • 依賴注入的靜態(tài)依賴圖解析,其中 provider.Register<MyService>() 可以被攔截。
  • 可以攔截對查詢提供程序的調(diào)用,以在編譯時提供對另一種語言(例如 SQL)的翻譯,而不是評估表達式樹以在運行時進行翻譯。
  • 序列化器可以根據(jù)具體的調(diào)用類型(如 Serialize<MyType>())生成特定于類型的(反)序列化,所有這些都在編譯時進行。

雖然大多數(shù)程序員不會直接使用攔截器,但我們?nèi)韵M軌蛟陂_發(fā)中發(fā)揮重要作用,使您的應用程序更快運行并更易部署。攔截器預計在 C# 12/.NET 8 版本中仍保持實驗階段,并可能包含在 C# 的后續(xù)版本中。

總結(jié)

您可以在 Microsoft Learn 的 C# 12 新增功能頁面上找到有關(guān)迄今為止引入的所有功能的更多信息,并在 Roslyn 功能狀態(tài)頁面上跟蹤 C# 12 功能的演變。

您可以通過下載最新的 Visual Studio 預覽版或最新版本的 .NET SDK 并在您的項目文件中將 LangVersion 設置 preview 來查看最新的 C# 12 功能。

請讓我們知道您的想法!文章來源地址http://www.zghlxwxcb.cn/news/detail-628035.html

到了這里,關(guān)于C# 12 預覽版的新功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • C#12新功能主構(gòu)造函數(shù):實用,簡潔利落

    大家還記得記錄(record)類型嗎?記錄類型很像一個構(gòu)造函數(shù),那么類可以像record類型一樣使用嗎?C#12就推出了這樣的功能,這就是主構(gòu)造函數(shù)?!艾F(xiàn)在可以在任何 class 和 struct 中創(chuàng)建主構(gòu)造函數(shù)。主構(gòu)造函數(shù)不再局限于 record 類型。主構(gòu)造函數(shù)參數(shù)都在類的整個主體的范圍內(nèi)

    2024年02月03日
    瀏覽(25)
  • 12、【裝飾器模式】動態(tài)地為對象添加新功能

    12、【裝飾器模式】動態(tài)地為對象添加新功能

    你好,我是程序員雪球。 今天我們來聊聊 23 種設計模式中,一種常見的結(jié)構(gòu)型模式,裝飾器模式。聊聊它的設計思想、實現(xiàn)原理,應用場景,以及如何使用。 ? ? 裝飾器模式(Decorator Pattern)是一種結(jié)構(gòu)型設計模式,它允許在不改變原始類的基礎(chǔ)上,動態(tài)地為對象添加新的

    2024年04月29日
    瀏覽(23)
  • 今天新發(fā)布的nova12手機都有哪些新功能?

    今天新發(fā)布的nova12手機都有哪些新功能?

    12月26日,華為召開問界M9及華為冬季全場景發(fā)布會,正式推出了華為nova 12系列新品,并宣布新的三款nova產(chǎn)品正式加入先鋒計劃~我們一起看下這次華為nova12系列有那些看點亮點呢?首先這次nova12 ultra 配置很高啊,智能可變光圈,雙向北斗衛(wèi)星消息,智感支付、智能快充10分鐘快

    2024年02月03日
    瀏覽(28)
  • 三星泄露微軟 Copilot 新功能:用自然語言操控各種功能

    三星泄露微軟 Copilot 新功能:用自然語言操控各種功能

    3 月 11 日消息,微軟計劃本月晚些時候發(fā)布新款 Surface 電腦和適用于?Windows 11?的 Copilot 新功能,但三星似乎等不及了,在其即將推出的 Galaxy Book4 系列產(chǎn)品宣傳材料中泄露了一些即將到來的 Copilot 功能。 三星官網(wǎng)上發(fā)布的圖片證實了此前關(guān)于微軟正為其人工智能助手 Copilo

    2024年04月09日
    瀏覽(30)
  • Visual Studio 2022的一個驚艷新功能開發(fā)隧道

    在visual studio開發(fā)H5網(wǎng)站的調(diào)試時候,需要在多環(huán)境調(diào)試,比如在不同瀏覽器和不同分辨率的電腦、不同的手機瀏覽器測試?;蛘唔椖勘容^著急,需要邊測試邊開發(fā),可不可以不發(fā)布讓測試人員來測試呢?visual studio 2022在17.5版本推出了開發(fā)隧道(Dev Tunnels)的功能,就是可以解

    2024年02月06日
    瀏覽(20)
  • 借助生成式 AI 提升鴻蒙 APP 開發(fā)體驗?試試 AutoDev 新功能

    借助生成式 AI 提升鴻蒙 APP 開發(fā)體驗?試試 AutoDev 新功能

    生成式 AI 在軟件研發(fā)和知識管理上,有著非常大的潛力,也因此這項技術(shù)被越來越多的企業(yè)所采用。而在一些新興的技術(shù)上,諸如于鴻蒙操作系統(tǒng),它帶來了一些新 的理念、開發(fā)工具 DevEco Studio、新的語言 ArkTS、新的 UI 框架 ArkUI 等等。從模式上來說,它與生成式 AI 結(jié)合企業(yè)

    2024年04月25日
    瀏覽(20)
  • Python網(wǎng)頁應用開發(fā)神器fac 0.2.6版本重要新功能一覽

    Python網(wǎng)頁應用開發(fā)神器fac 0.2.6版本重要新功能一覽

    fac項目地址:https://github.com/CNFeffery/feffery-antd-components ,歡迎star支持 大家好我是費老師,距離我的開源 Python 網(wǎng)頁應用通用組件庫 fac 的 0.2.0 版本發(fā)布已過去半個多月的時間,在國內(nèi)外眾多 fac 用戶的反饋建議下,經(jīng)過高強度的優(yōu)化和功能更新,目前 fac 已經(jīng)更新到 0.2.6 版本

    2024年02月02日
    瀏覽(24)
  • 前端食堂技術(shù)周刊第 93 期:7 月登陸 Web 平臺的新功能、Node.js 工具箱、Nuxt3 開發(fā)技巧、MF 重構(gòu)方案

    前端食堂技術(shù)周刊第 93 期:7 月登陸 Web 平臺的新功能、Node.js 工具箱、Nuxt3 開發(fā)技巧、MF 重構(gòu)方案

    美味值:?????????? 口味:橙橙冰萃美式 食堂技術(shù)周刊倉庫地址:https://github.com/Geekhyt/weekly 大家好,我是童歐巴。歡迎來到前端食堂技術(shù)周刊,我們先來看下上周的技術(shù)資訊。 Deno 八月更新 Deno 1.36 更靈活的權(quán)限控制、Deno Deploy 可過濾、搜索的持久化日志、Fresh 1.3 路由

    2024年02月13日
    瀏覽(29)
  • C++11 新功能

    C++11 新功能

    在2003年C++標準委員會曾經(jīng)提交了一份技術(shù)勘誤表(簡稱TC1),使得C++03這個名字已經(jīng)取代了C++98稱為 C++11之前的最新C++標準名稱。不過由于TC1主要是對C++98標準中的漏洞進行修復,語言的核心部分則沒 有改動,因此人們習慣性的把兩個標準合并稱為C++98/03標準。從C++0x到C++11,C+

    2023年04月12日
    瀏覽(29)
  • Java 20 新功能介紹

    Java 20 共帶來 7 個新特性功能 ,其中三個是孵化提案,孵化也就是說尚在征求意見階段,未來可能會刪除此功能。 JEP 描述 分類 429 作用域值(孵化器) Project Loom,Java 開發(fā)相關(guān) 432 Record 模式匹配(第二次預覽) Project Amber,新的語言特性 433 switch 的模式匹配(第四次預覽)

    2024年02月03日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包