响应式网站建设资讯,全国工程信息平台,制作网站在本机运行,上海知名网站推广概念#xff1a;为现有的非静态变量类型#xff0c;添加方法
语法#xff1a;
访问修饰符 static 返回值 函数名(this 拓展类名 参数名, 参数类型 参数名,参数类型 参数名....){}
而public static void F(this Console()){ }是错的。Console是静态类不可以为静态类添加方…概念为现有的非静态变量类型添加方法
语法
访问修饰符 static 返回值 函数名(this 拓展类名 参数名, 参数类型 参数名,参数类型 参数名....){}
而public static void F(this Console()){ }是错的。Console是静态类不可以为静态类添加方法 作用 提升程序拓展性 不需要继承来添加方法 为别人封装的类型写额外的方法 不需要在对象中重新写方法特点 静态类中的静态方法 第一个参数代表拓展的目标类 第一个参数前面一定要加 this 注意可以有返回值 和 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();