MST

星途 面试题库

面试题:C#扩展方法的基本定义与调用

请简述C#扩展方法的定义规则,并编写一个示例,定义一个针对`string`类型的扩展方法,该方法用于判断字符串是否只包含数字字符,并演示如何调用这个扩展方法。
10.7万 热度难度
编程语言C#

知识考点

AI 面试

面试题答案

一键面试

C#扩展方法定义规则

  1. 静态类:扩展方法必须定义在一个非泛型的静态类中。
  2. 静态方法:扩展方法本身必须是静态方法。
  3. 第一个参数:方法的第一个参数指定了这个扩展方法是为哪个类型扩展的,并且需要使用 this 关键字修饰。
  4. 命名空间:扩展方法所在的静态类需要位于一个命名空间中,调用时要确保该命名空间被引入。

示例代码

using System;

// 定义静态类
public static class StringExtensions
{
    // 定义扩展方法
    public static bool IsAllDigits(this string str)
    {
        foreach (char c in str)
        {
            if (!char.IsDigit(c))
            {
                return false;
            }
        }
        return true;
    }
}

class Program
{
    static void Main()
    {
        string test1 = "123";
        string test2 = "abc";

        // 调用扩展方法
        bool result1 = test1.IsAllDigits(); 
        bool result2 = test2.IsAllDigits(); 

        Console.WriteLine($"字符串 \"{test1}\" 是否只包含数字字符: {result1}");
        Console.WriteLine($"字符串 \"{test2}\" 是否只包含数字字符: {result2}");
    }
}

解释

  1. 定义扩展方法:在 StringExtensions 静态类中定义了 IsAllDigits 静态方法,第一个参数 this string str 表示这是为 string 类型扩展的方法。方法逻辑是遍历字符串中的每个字符,判断是否都是数字字符。
  2. 调用扩展方法:在 Main 方法中,通过 string 实例 test1test2 直接调用 IsAllDigits 扩展方法,就像调用其自身的实例方法一样。最后输出判断结果。