您需要了解的有关 C# 12 集合表达式的所有信息

作者:微信公众号:【架构师老卢】
7-12 20:28
28

概述:C# 12 确实引入了一个名为“集合表达式”的功能,旨在简化集合的初始化。它使我们能够以更简洁和富有表现力的方式直接指定集合的元素。集合表达式提供了一种简洁的语法,用于创建常见的集合实例。通过使用扩展运算符,可以将其他集合中的元素合并到这些实例中......可以实例化多个类似集合的类型,而无需依赖外部基类库 (BCL) 帮助。这些类型包括:数组类型,如 int[]、string[]、char[]。System.Span 和 System.ReadOnlySpan。认可集合初始值设定项的类型,例如 System.Collections.Generic.List。后续示例演示了定义数组、跨度和列表

C# 12 确实引入了一个名为“集合表达式”的功能,旨在简化集合的初始化。它使我们能够以更简洁和富有表现力的方式直接指定集合的元素。

集合表达式提供了一种简洁的语法,用于创建常见的集合实例。通过使用扩展运算符,可以将其他集合中的元素合并到这些实例中......

可以实例化多个类似集合的类型,而无需依赖外部基类库 (BCL) 帮助。这些类型包括:

  • 数组类型,如 int[]、string[]、char[]。
  • System.Span 和 System.ReadOnlySpan
  • 认可集合初始值设定项的类型,例如 System.Collections.Generic.List

后续示例演示了定义数组、跨度和列表的传统方法:

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        // Define an array
        int[] array = { 1, 2, 3, 4, 5 };

        // Define a span (from the array)
        Span<int> span = new Span<int>(array);

        // Define a list
        List<int> list = new List<int> { 6, 7, 8, 9, 10 };

        // Print array values
        Console.WriteLine("Array values:");
        foreach (var item in array)
        {
            Console.WriteLine(item);
        }

        // Print span values
        Console.WriteLine("\nSpan values:");
        foreach (var item in span)
        {
            Console.WriteLine(item);
        }

        // Print list values
        Console.WriteLine("\nList values:");
        foreach (var item in list)
        {
            Console.WriteLine(item);
        }
    }
}

以下示例演示了新的 c# 12 集合表达式的用法

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        // Create an array:
        int[] a = [1, 2, 3, 4, 5, 6, 7, 8];

        // Create a list:
        List<string> b = ["one", "two", "three"];

        // Create a span
        Span<char> c = ['a', 'b', 'c', 'd', 'e', 'f', 'h', 'i'];

        // Create a jagged 2D array:
        int[][] twoD = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];

        // Create a jagged 2D array from variables:
        int[] row0 = [1, 2, 3];
        int[] row1 = [4, 5, 6];
        int[] row2 = [7, 8, 9];
        int[][] twoDFromVariables = [row0, row1, row2];

        // Printing values
        Console.WriteLine("Array a:");
        foreach (var item in a)
        {
            Console.WriteLine(item);
        }

        Console.WriteLine("\nList b:");
        foreach (var item in b)
        {
            Console.WriteLine(item);
        }

        Console.WriteLine("\nSpan c:");
        foreach (var item in c)
        {
            Console.WriteLine(item);
        }

        Console.WriteLine("\n2D array twoD:");
        foreach (var row in twoD)
        {
            foreach (var item in row)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
        }

        Console.WriteLine("\n2D array twoDFromVariables:");
        foreach (var row in twoDFromVariables)
        {
            foreach (var item in row)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
        }
    }
}

集合表达式中的 spread 运算符用该集合中的元素替换其参数。它用于将一个集合的元素扩展到另一个集合。spread 运算符的参数必须是集合类型。以下是一些示例,演示了点差操作员的工作原理。..

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {

        // Create a array:
        int[] row0 = [1, 2, 3];
        int[] row1 = [4, 5, 6];
        int[] row2 = [7, 8, 9];
        int[] single = [.. row0, .. row1, .. row2];

        // Printing values
        foreach (var element in single)
        {
            Console.Write($"{element}, ");
        }
    }
}

每当需要处理元素集合时,都可以使用集合表达式。它们对于初始化集合或将它们作为参数传递给处理集合的方法非常有用。

阅读排行