namespace ExpandingMethodDemo
{
class Program
{
static void Main(string[] args)
{
Phone ph = new Phone();
//现在调用Phone的无参拓展方法——网上冲浪
ph.surfingTheInternet();
//现在调用Phone的有参拓展方法——发短信查话费
string hf = ph.SendMessage("HFCX");
Console.WriteLine(hf);
Console.Read();
}
}
//定义一个类手机
public class Phone
{
//型号
public string model { get; set; }
//地域
public string area { get; set; }
//系统
public string os { get; set; }
//原始手机有一个计算机的功能,举例用加法计算器
public int calculate(int a,int b)
{
return a + b;
}
//还打电话等等功能
}
//假设Phone已经封装好了不可更改了(模拟C#自带的类库中的类),
//现在我们定义一个Phone使用的工具类,PhoneHelper去做Phone方法的调用和拓展
public static class UsePhoneHelper
{
//常规的调用
public static int getAllCount(int a,int b)
{
return new Phone().calculate(a, b);
}
//假设新出的手机有了上网的功能,此时我不能改原有Phone的封装(模拟的C#自带的类库),怎么让手机拓展这个功能呢
//这里就需要我们使用拓展方法
//前提条件:1、静态类,2、定义静态方法 3、将要拓展的类作为第一个参数
//无参拓展方法:上网
public static void surfingTheInternet(this Phone phone)
{
Console.WriteLine("我在上网看新闻,小说,视频");
}
//有参拓展方法——发短信查话费(发送一个消息给运营商,得到一个剩余话费信息)
public static string SendMessage(this Phone phone,string s)
{
//.....话费的计算
return " 您的当前剩余话费是125";
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?