日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

關于 C# 12 新增功能實操!

來源: 責編: 時間:2024-07-25 16:38:57 223觀看
導讀今天咱們一起來探索并實踐 C# 12 引入的全新功能!注意:使用這些功能需要使用最新的 Visual Studio 2022 版本或安裝 .NET 8 SDK 。主構造函數主構造函數允許你直接在類定義中聲明構造函數參數,并自動生成相應的屬性。主

今天咱們一起來探索并實踐 C# 12 引入的全新功能!kcK28資訊網——每日最新資訊28at.com

注意:使用這些功能需要使用最新的 Visual Studio 2022 版本或安裝 .NET 8 SDK 。kcK28資訊網——每日最新資訊28at.com

kcK28資訊網——每日最新資訊28at.com

主構造函數

主構造函數允許你直接在類定義中聲明構造函數參數,并自動生成相應的屬性。kcK28資訊網——每日最新資訊28at.com

主構造函數參數的最常見用途包括:kcK28資訊網——每日最新資訊28at.com

  • 作為 base() 構造函數調用的參數。
  • 初始化成員字段或屬性。
  • 引用實例成員中的構造函數參數。

代碼示例

將任何參數放在類型名稱后面的括號中:kcK28資訊網——每日最新資訊28at.com

    public class CSharp12GrammarExercise    {        public static void OutputPrint()        {            var person = new Person("追逐時光者", 30);            Console.WriteLine($"{person.Name}, {person.Age}");        }    }    public class Person(string name, int age)    {        public string Name => name;        public int Age => age;    }

以下代碼初始化從主構造函數參數計算的兩個只讀屬性:kcK28資訊網——每日最新資訊28at.com

    public class CSharp12GrammarExercise    {        public static void OutputPrint()        {            // 創建 Distance 結構體實例            Distance distance = new Distance(10, 55);            // 訪問 Magnitude 和 Direction 屬性            Console.WriteLine($"Magnitude: {distance.Magnitude},Direction: {distance.Direction}");        }    }    public readonly struct Distance(double dx, double dy)    {        public readonly double Magnitude { get; } = Math.Sqrt(dx * dx + dy * dy);        public readonly double Direction { get; } = Math.Atan2(dy, dx);    }

集合表達式

集合表達式引入了一種新的簡潔語法,用于創建常用集合值。可以使用展開運算符(..)將其他集合內聯到這些值中。kcK28資訊網——每日最新資訊28at.com

(1) 下面的示例展示了集合表達式的用法:kcK28資訊網——每日最新資訊28at.com

        public static void CollectionExpressions()        {            // 創建一個數組            int[] array = [55, 99, 100, 33];            // 創建一個列表            List<string> list = ["one", "two", "three", "five", "追逐時光者"];            // 創建一個 Span            Span<char> span = ['a', 'b', 'c', 'd', 'e', 'f', 'h', 'i', 'k'];            // 創建一個交錯二維數組            int[][] two2D = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [88, 8, 9]];        }

(2) 展開運算符(..)示例代碼:kcK28資訊網——每日最新資訊28at.com

展開運算符(集合表達式中的 ..)可將其參數替換為該集合中的元素。 參數必須是集合類型。 以下示例演示了展開運算符的工作原理:kcK28資訊網——每日最新資訊28at.com

            int[] item0 = [88, 2, 3];            int[] item1 = [22, 5, 6];            int[] item2 = [7, 99, 9];            int[] totalList = [.. item0, .. item1, .. item2];            foreach (var element in totalList)            {                Console.Write($"{element}, ");            }

沒有.. 會有異常:kcK28資訊網——每日最新資訊28at.com

kcK28資訊網——每日最新資訊28at.com

正常輸出:kcK28資訊網——每日最新資訊28at.com

kcK28資訊網——每日最新資訊28at.com

內聯數組

內聯數組用于提高應用程序性能,允許在結構體中創建固定大小的數組。雖然你可能不會自己聲明內聯數組,但當它們通過 System.Span<T> 或 System.ReadOnlySpan<T> 從運行時 API 暴露出來時,你可以透明地使用它們。內聯數組提供與不安全固定大小緩沖區類似的性能特性。kcK28資訊網——每日最新資訊28at.com

內聯數組的聲明與下面的結構類似:kcK28資訊網——每日最新資訊28at.com

    [System.Runtime.CompilerServices.InlineArray(20)]    public struct Buffer    {        private int _element0;    }

你可以像使用其他數組一樣使用它們:kcK28資訊網——每日最新資訊28at.com

        public static void InlineArrays()        {            var buffer = new Buffer();            for (int i = 0; i < 20; i++)            {                buffer[i] = i;            }            foreach (var i in buffer)            {                Console.WriteLine(i);            }        }

默認 lambda 參數

現在可以為 Lambda 表達式的參數定義默認值,語法和規則與將參數的默認值添加到任何方法或本地函數相同。kcK28資訊網——每日最新資訊28at.com

如果 lambda 表達式只有一個輸入參數,則括號是可選的:kcK28資訊網——每日最新資訊28at.com

Func<double, double> testcube = x => x * x * x;

兩個或更多輸入參數使用逗號加以分隔:kcK28資訊網——每日最新資訊28at.com

Func<int, int, bool> testForEquality = (x, y) => x == y;

可以顯式指定類型,如下面的示例所示:kcK28資訊網——每日最新資訊28at.com

注意:輸入參數類型必須全部為顯式或全部為隱式;否則,便會生成 CS0748 編譯器錯誤!!kcK28資訊網——每日最新資訊28at.com

Func<int, string, bool> isTooLong = (int x, string s) => s.Length > x;

任何類型的別名

可以使用 using 別名指令創建任何類型的別名,而不僅僅是命名類型。也就是說,你可以為元組類型、數組類型、指針類型或其他不安全類型創建語義別名。kcK28資訊網——每日最新資訊28at.com

使用 using 關鍵字為元組類型創建別名,并進行調用:kcK28資訊網——每日最新資訊28at.com

using PointTest = (int item1, int item2);namespace HelloDotNetGuide.CSharp語法{    public class CSharp12GrammarExercise    {        public static void OutputPrint()        {            //使用 using 關鍵字為元組類型創建別名,并進行調用:            PointTest point = (10, 20);            Console.WriteLine($"輸出:Item1={point.Item1}, Item2={point.Item2}");        }    }}

參考文章

  • 詳細功能介紹請閱讀微軟官方文檔:https://learn.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-12
  • 文章示例源碼地址:https://github.com/YSGStudyHards/DotNetGuide/blob/main/DotNetGuidePractice/HelloDotNetGuide/CSharp%E8%AF%AD%E6%B3%95/CSharp12GrammarExercise.cs

本文鏈接:http://www.www897cc.com/showinfo-26-103571-0.html關于 C# 12 新增功能實操!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 緩存框架 Caffeine 的可視化探索與實踐

下一篇: 干貨 | 攜程IT桌面全鏈路工具研發運營實踐

標簽:
  • 熱門焦點
  • 5月iOS設備好評榜:iPhone 14僅排第43?

    來到新的一月,安兔兔的各個榜單又重新匯總了數據,像安卓陣營的榜單都有著比較大的變動,不過iOS由于設備的更新換代并沒有那么快,所以相對來說變化并不大,特別是iOS好評榜,老款設
  • 從 Pulsar Client 的原理到它的監控面板

    背景前段時間業務團隊偶爾會碰到一些 Pulsar 使用的問題,比如消息阻塞不消費了、生產者消息發送緩慢等各種問題。雖然我們有個監控頁面可以根據 topic 維度查看他的發送狀態,
  • 三萬字盤點 Spring 九大核心基礎功能

    大家好,我是三友~~今天來跟大家聊一聊Spring的9大核心基礎功能。話不多說,先上目錄:圖片友情提示,本文過長,建議收藏,嘿嘿嘿!一、資源管理資源管理是Spring的一個核心的基礎功能,不
  • 19個 JavaScript 單行代碼技巧,讓你看起來像個專業人士

    今天這篇文章跟大家分享18個JS單行代碼,你只需花幾分鐘時間,即可幫助您了解一些您可能不知道的 JS 知識,如果您已經知道了,就當作復習一下,古人云,溫故而知新嘛。現在,我們就開始今
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會涉及各種各樣的安全任務,包括但不限于:開發某些安全工具的插件,滿足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • 10天營收超1億美元,《星鐵》比《原神》差在哪?

    來源:伯虎財經作者:陳平安即便你沒玩過《原神》,你一定聽說過的它的大名。恨它的人把《原神》開服那天稱作是中國游戲史上最黑暗的一天,有粉絲因為索尼在PS平臺上線《原神》,怒而
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風頭無兩。你可以說陳思誠的
  • 疑似小米14外觀設計圖曝光:后置相機模組變化不大

    下半年的大幕已經開啟,而誰將成為下半年手機圈的主角就成為了大家關注的焦點,其中被傳有望拿下新一代驍龍8 Gen3旗艦芯片的小米14系列更是備受大家矚
  • 三星推出Galaxy Tab S9系列平板電腦以及Galaxy Watch6系列智能手表

    2023年7月26日,三星電子正式發布了Galaxy Z Flip5與Galaxy Z Fold5。除此之外,Galaxy Tab S9系列平板電腦以及三星Galaxy Watch6系列智能手表也同期
Top 主站蜘蛛池模板: 博湖县| 赤水市| 扎鲁特旗| 喀什市| 临海市| 鹤壁市| 凭祥市| 金塔县| 宁陵县| 正蓝旗| 谷城县| 盐津县| 东宁县| 比如县| 文山县| 七台河市| 东山县| 嘉禾县| 盐源县| 安化县| 中西区| 涟水县| 隆昌县| 深水埗区| 靖安县| 宾阳县| 灌云县| 奉新县| 资溪县| 庆城县| 隆安县| 苏尼特左旗| 海晏县| 运城市| 类乌齐县| 宽城| 云安县| 呼和浩特市| 古蔺县| 怀集县| 石台县|