今天在看到有人提出方法中用过this的问题, 然后感觉自己也需要在这里作个记录. 顺便提一下其用法与细节,注意:在2.0下面使用会出现引用错误.因为这个是3.0后的产物
扩展方法的作用:
可以直接对.netFrame类库进行扩展,减少代码量.
使用时应注意的问题:
1、所在类的类名在用做扩展方法的时候无效
2、扩展方法必须是在静态类中的静态方法,静态方法的格式有特殊要求
3、扩展方法也可以当作普通的静态方法使用
当我们看到有“小标箭头”的方法就是扩展方法了,请输入下面代码,然后他细看一下,方法与扩展方法的图标.
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace Csharp.Test
{
public class Program
{
public static void Main(string[] args)
{
//代码调用
Student student = new Student { Name = "BBB", Age = 20 };
Console.WriteLine(student.IsValue("BBB"));
//输出true
Console.WriteLine(student.TrueName("BBB"));
//输出true
Console.ReadLine();
}
}
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
}
public static class test
{
public static bool IsValue(this Student student, object o)
{
if (student.Name == o)
{
return true;
}
return false;
}
}
public static class EooPoo
{
public static string TrueName(this Student student, object o)
{
if (student.Name == o)
{
return student.Name = "AAA";
}
else
{
return student.Name;
}
}
}
}
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace Csharp.Test
{
public class Program
{
public static void Main(string[] args)
{
//代码调用
Student student = new Student { Name = "BBB", Age = 20 };
Console.WriteLine(student.IsValue("BBB"));
//输出true
Console.WriteLine(student.TrueName("BBB"));
//输出true
Console.ReadLine();
}
}
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
}
public static class test
{
public static bool IsValue(this Student student, object o)
{
if (student.Name == o)
{
return true;
}
return false;
}
}
public static class EooPoo
{
public static string TrueName(this Student student, object o)
{
if (student.Name == o)
{
return student.Name = "AAA";
}
else
{
return student.Name;
}
}
}
}
其实按上面的意思,最简单的一句话就是,类的方法可以扩展在别的类上面通过参数this来做扩展方法.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?