C# 扩展方法允许你在不修改现有类型的源代码的情况下,为该类型添加新的方法。它是一种特殊的静态方法,但可以像实例方法一样调用。扩展方法为现有的类型(包括 .NET 框架中的内置类型、自定义类型等)添加功能提供了一种便捷的方式,同时又不会破坏类型的封装性和原有结构。
- 静态类:扩展方法必须定义在一个静态类中。
- 静态方法:扩展方法本身必须是静态的。
- 第一个参数:扩展方法的第一个参数必须使用
this
关键字,后面紧跟要扩展的类型。
using System;
// 定义一个静态类来包含扩展方法
public static class StringExtensions
{
// 定义一个扩展方法,用于判断字符串是否为回文
public static bool IsPalindrome(this string input)
{
if (string.IsNullOrEmpty(input))
{
return false;
}
int left = 0;
int right = input.Length - 1;
while (left < right)
{
if (input[left] != input[right])
{
return false;
}
left++;
right--;
}
return true;
}
}
class Program
{
static void Main()
{
string testString1 = "radar";
string testString2 = "hello";
// 调用扩展方法
bool isPalindrome1 = testString1.IsPalindrome();
bool isPalindrome2 = testString2.IsPalindrome();
Console.WriteLine($"{testString1} 是否为回文: {isPalindrome1}");
Console.WriteLine($"{testString2} 是否为回文: {isPalindrome2}");
}
}
- 静态类的定义:创建了一个名为
StringExtensions
的静态类,用于存放扩展方法。扩展方法必须定义在静态类中。
- 扩展方法的定义:在
StringExtensions
类中定义了一个名为 IsPalindrome
的静态方法,该方法的第一个参数使用 this
关键字修饰,并且类型为 string
,这表明该方法是对 string
类型的扩展。该方法用于判断一个字符串是否为回文。
- 扩展方法的调用:在
Main
方法中,创建了两个字符串变量 testString1
和 testString2
,然后像调用实例方法一样直接调用 IsPalindrome
扩展方法,而不需要显式地指定静态类。
通过这种方式,我们可以为现有的类型添加新的功能,而无需修改该类型的原始定义。需要注意的是,扩展方法的优先级低于类型本身定义的实例方法,如果类型本身已经定义了与扩展方法同名的方法,那么扩展方法将不会被调用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?