• C# 扩展运算符(...)的详细解析


    C#编程中,扩展运算符(…)是一种非常有用的特性,它可以将一个数组或集合转换成一个可迭代的序列。扩展运算符在C# 7.0及以后的版本中引入,提供了一种简洁的方式来创建数组、列表或集合的实例,尤其是在需要传递多个参数时。本文将详细介绍C#扩展运算符的概念、使用方法、不同类型的扩展运算符,并提供示例代码来加深理解。

    1.扩展运算符的概念

    扩展运算符是一种特殊的运算符,由三个点组成,即 …。它主要用于扩展数组或集合,将一个数组或集合转换成一个可迭代的序列。扩展运算符可以在数组初始化和集合扩展中使用,提供了一种简便的方式来创建集合实例。

    2. 扩展运算符的使用方法

    扩展运算符的使用方法主要取决于其在数组初始化和集合扩展中的应用场景。

    2.1 数组初始化

    在数组初始化中,扩展运算符可以将一对括号中的元素转换成一个数组。这在需要创建一个数组并立即填充其元素时非常有用。

    int[] numbers = new int[] { 1, 2, 3 };
    string[] words = new string[] { "Hello", "World" };
    
    // 传统的数组初始化
    int[] numbersTraditional = new int[] { 1, 2, 3, 4, 5 };
    
    // 使用扩展运算符
    int[] numbersNew = new[] { 1, 2, 3, 4, 5 };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.2 集合的扩展

    在集合的扩展中,扩展运算符可以将一个数组或集合转换成一个可迭代的序列,用于创建集合实例。

    string[] stringArray = { "apple", "banana", "cherry" };
    List<string> stringList = new List<string>(stringArray);
    
    // 使用扩展运算符
    List<string> stringListWithExtension = new List<string>(new[] { "apple", "banana", "cherry" });
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.不同类型的扩展运算符

    C#中的扩展运算符主要有两种类型:

    3.1 数组扩展运算符

    数组扩展运算符用于数组初始化,可以将一对括号中的元素转换成一个数组。

    int[] numbers = new[] { 1, 2, 3, 4, 5 };
    
    • 1

    3.2 集合扩展运算符

    集合扩展运算符用于集合的扩展,可以将一个数组或集合转换成一个可迭代的序列,用于创建集合实例。

    List<string> stringList = new List<string>(new[] { "apple", "banana", "cherry" });
    
    • 1

    3.3:方法调用中的扩展运算符

    void PrintNumbers(int first, int second, params int[] remaining)
    {
        Console.WriteLine($"First: {first}, Second: {second}");
        foreach (int number in remaining)
        {
            Console.WriteLine(number);
        }
    }
    
    // 调用方法时使用扩展运算符
    PrintNumbers(1, 2, 3, 4, 5);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这个例子中,PrintNumbers方法接受一个params参数和一个非params参数。我们首先传递了两个整数1和2,然后使用扩展运算符传递了剩余的三个整数3, 4, 5。

    3.4:LINQ中的扩展运算符

    using System.Linq;
    
    List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
    
    // 使用扩展运算符进行筛选
    var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
    
    // 使用扩展运算符进行投影
    var numberPairs = numbers.Select(n => new { Number = n, Square = n * n }).ToList();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这个例子中,我们使用了LINQ的Where和Select方法来筛选和投影集合。扩展运算符…用于将集合中的每个元素传递给Where和Select方法。

    4.示例代码及其解释

    以下是一些示例代码,用于说明扩展运算符的使用方法。

    示例1:数组初始化

    int[] numbers = new int[] { 1, 2, 3 };
    // 等同于
    int[] numbersNew = new[] { 1, 2, 3 };
    
    • 1
    • 2
    • 3

    示例2:集合扩展

    string[] stringArray = { "apple", "banana", "cherry" };
    List<string> stringList = new List<string>(stringArray);
    
    // 使用扩展运算符
    List<string> stringListWithExtension = new List<string>(new[] { "apple", "banana", "cherry" });
    
    • 1
    • 2
    • 3
    • 4
    • 5

    示例3:数组合并

    int[] numbers1 = new int[] { 1, 2, 3 };
    int[] numbers2 = new int[] { 4, 5, 6 };
    
    // 使用扩展运算符合并两个数组
    int[] numbersCombined = numbers1.Concat(numbers2).ToArray();
    
    • 1
    • 2
    • 3
    • 4
    • 5

    总结

    C#的扩展运算符(…)是一种非常有用的特性,它可以简化数组和集合的初始化,并提高代码的可读性和灵活性。通过使用扩展运算符,可以轻松地将一个数组或集合转换成一个可迭代的序列,用于创建集合实例。掌握扩展运算符的使用,可以使你的C#代码更加高效和简洁。

  • 相关阅读:
    [附源码]计算机毕业设计JAVA 宠物医院管理系统
    什么是 RENGA NFT?
    Linux操作系统的基础指令
    Linux james邮件服务器的搭建
    对于补码的个人理解
    算法竞赛进阶指南——链表学习笔记
    移动端的布局
    Java八股文
    【时间复杂度】定义与计算方法
    模救护车发声
  • 原文地址:https://blog.csdn.net/qq_35320456/article/details/137936085