2024-02-26 · C# 基础 · 学习笔记

扩展方法 Extension Method

扩展方法允许在不修改原类、不继承的情况下,给现有类型"添加"方法。LINQ 的 Where、Select、FirstOrDefault 其实都是 IEnumerable<T> 的扩展方法。

写法要求:1) 必须在静态类里;2) 第一个参数用 this 修饰;3) 编译后调用方式和实例方法一样。自己写一个字符串截断的扩展方法特别顺手。

注意事项:1) 扩展方法不能访问原类的私有成员;2) 如果原类有同名方法,优先调用原方法;3) 扩展方法不是真的修改了类型,只是语法糖。

代码示例

// 定义扩展方法
public static class StringExtensions
{
    public static string Cut(this string text, int maxLen)
    {
        if (string.IsNullOrEmpty(text)) return text;
        return text.Length <= maxLen ? text : text.Substring(0, maxLen) + "...";
    }

    public static bool IsEmail(this string text)
    {
        return text.Contains("@") && text.Contains(".");
    }
}

// 使用扩展方法(像实例方法一样调用)
string longText = "这是一段很长的文字需要截断";
Console.WriteLine(longText.Cut(10));

string email = "test@example.com";
Console.WriteLine(email.IsEmail()); // True
学习小结:以上是我学习这个知识点时的笔记和心得。技术学习没有捷径,多写多练多踩坑,自然就掌握了。如果这篇笔记对你有帮助,欢迎继续看看其他文章。