扩展方法 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
学习小结:以上是我学习这个知识点时的笔记和心得。技术学习没有捷径,多写多练多踩坑,自然就掌握了。如果这篇笔记对你有帮助,欢迎继续看看其他文章。