成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發
今天咱們一起來探索并實踐 C# 12 引入的全新功能!使用這些功能需要使用最新的 Visual Studio 2022 版本或安裝 .NET 8 SDK 。

今天咱們一起來探索并實踐 C# 12 引入的全新功能!

注意:使用這些功能需要使用最新的 Visual Studio 2022 版本或安裝 .NET 8 SDK 。

主構造函數

主構造函數允許你直接在類定義中聲明構造函數參數,并自動生成相應的屬性。

主構造函數參數的最常見用途包括:

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

代碼示例

將任何參數放在類型名稱后面的括號中:

    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;
    }

以下代碼初始化從主構造函數參數計算的兩個只讀屬性:

    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);
    }

集合表達式

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

(1) 下面的示例展示了集合表達式的用法:

        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) 展開運算符(..)示例代碼:

展開運算符(集合表達式中的 ..)可將其參數替換為該集合中的元素。 參數必須是集合類型。 以下示例演示了展開運算符的工作原理:

            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}, ");
            }

沒有.. 會有異常:

正常輸出:

內聯數組

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

內聯數組的聲明與下面的結構類似:

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

你可以像使用其他數組一樣使用它們:

        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 表達式的參數定義默認值,語法和規則與將參數的默認值添加到任何方法或本地函數相同。

如果 lambda 表達式只有一個輸入參數,則括號是可選的:

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

兩個或更多輸入參數使用逗號加以分隔:

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

可以顯式指定類型,如下面的示例所示:

注意:輸入參數類型必須全部為顯式或全部為隱式;否則,便會生成 CS0748 編譯器錯誤!!

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

任何類型的別名

可以使用 using 別名指令創建任何類型的別名,而不僅僅是命名類型。也就是說,你可以為元組類型、數組類型、指針類型或其他不安全類型創建語義別名。

使用 using 關鍵字為元組類型創建別名,并進行調用:

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
責任編輯:趙寧寧 來源: 追逐時光者
相關推薦

2010-04-16 11:22:08

Oracle存儲過程

2024-04-23 08:08:04

C#

2024-11-20 16:02:47

.NET 9LINQ開發

2010-05-14 17:56:16

SQL優化索引

2025-05-07 08:30:00

2025-03-10 05:00:00

JIT技術語言

2009-08-18 09:26:07

C#線程功能

2010-01-06 10:38:16

Linux安裝JDK

2010-04-12 09:36:29

Oacle merge

2010-04-09 10:13:13

Oracle數據字典

2010-04-15 14:18:30

Oracle創建

2010-05-10 17:00:53

Oracle死鎖進程

2021-09-22 15:36:31

勒索軟件攻擊數據泄露

2024-04-28 10:52:25

CentOS系統RHEL系統

2010-04-13 14:00:00

Oracle inse

2009-08-27 18:05:54

C#索引功能

2009-09-07 15:40:06

2009-09-02 17:29:10

C# TextBox換

2009-08-18 09:33:49

C#特有線程功能

2009-12-01 18:03:56

Linux版本
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品乱码久久久久久按摩 | 伊人久久综合 | 成年人免费在线视频 | 99久久精品国产麻豆演员表 | 欧美视频一区 | 国产精品亚洲成在人线 | 精品久久久久久18免费网站 | 精品电影 | 日韩第一页 | av黄色在线观看 | 日韩av免费在线观看 | 91精品午夜窝窝看片 | 亚洲国产精品一区二区三区 | 国产97久久 | 激情五月综合 | 亚洲欧美一区二区三区国产精品 | 亚洲激情在线视频 | 亚洲二区视频 | av天天干| 中文字字幕一区二区三区四区五区 | 国产精品久久av | 色综久久 | 精品国产一区二区国模嫣然 | 日本手机在线 | 欧美日韩视频在线播放 | 涩涩导航 | 三级免费网| 日本a∨精品中文字幕在线 亚洲91视频 | 亚洲一区二区在线 | 日本久久精品视频 | 国产精品久久久久久久7电影 | 国产精品夜色一区二区三区 | av黄在线观看 | 亚洲视频在线免费观看 | 亚洲精品视频在线看 | 欧美久久一区二区 | 91精品国产91久久久久游泳池 | 国产成人高清视频 | 亚洲欧美在线一区 | 日韩欧美精品在线 | www.99re5.com |