0
点赞
收藏
分享

微信扫一扫

C#-拓展方法

吓死我了_1799 2024-11-08 阅读 25
c#

概念:为现有的非静态变量类型,添加方法

语法:

访问修饰符 static 返回值 函数名(this 拓展类名 参数名, 参数类型 参数名,参数类型 参数名....){}

public static void F(this Console()){ }是错的。Console是静态类不可以为静态类添加方法

注意:可以有返回值 和 n个参数,根据需求而定

成员方法是需要实例化对象后才能使用,第一个参数代表声明的该类型的对象。在调用拓展方法时,第一个参数不参与 参数赋值。(示例:为String类型书写拓展方法)

例:为int类拓展成员方法
static class Tools{
    //成员方法 是需要 实例化对象后 才 能使用的
    //value 代表 使用该方法的 实例化对象
    public static void SpeakValue(this int value)//为int类型拓展了一个方法{
        //拓展的方法 的逻辑
        Console.WriteLine("int拓展的方法" + value);
    }
}
----------------------------------
调用拓展方法
int i = 10;//这里的i就是value
i.SpeakValue();
例:为string类拓展成员方法
static class Tools{
    public static void SpeakStringInfo(this string value, string str2, string str3)
      //第一个参数是该类型在实例化是的对象,在调用拓展方法并传参时可以忽略,
    {
        Console.WriteLine("为string拓展的方法");
        Console.WriteLine("调用方法的对象" + value);
        Console.WriteLine("传的参数" + str2 + str3);
    }
}
----------------------------------
调用拓展方法
string str = "000";
str.SpeakStringInfo("小明", "111");
例:为自定义类拓展成员方法
//拓展方法的合集
static class Tools{
    //为自定义的类型拓展方法
    public static void Fun3(this Test t)//注意Test不可以是静态的
    {
        Console.WriteLine("为test拓展的方法");
    }
}
-----------------------
  调用拓展方法
Test t = new Test();//如果拓展方法与其成员方法重名,则只会调用成员方法
t.Fun2();
举报

相关推荐

0 条评论