菜单

初识C#扩大方法

2019年5月8日 - 皇家赌场系统

3)对于扩大方法的下结论

一.增添方法所在的类必须是静态类,也便是被static修饰的类

二.恢宏方法的首先个参数类型是被扩展的花色,类型前边标注this

三.应用扩大方法的代码必须增添对扩张方法所在类的namespace的using

四.扩充方法最终骨子里依然被编写翻译器管理成一般静态方法的调用了

五.扩张方法由于精神上大概静态方法的调用,所以无法访问类外部访问不了的分子

陆.该文章只是对扩充方法的初叶驾驭,互连网对此扩大方法的好影像更加多来自Linq的选取。但因为自身对扩张方法接触还不太深,因而说声抱歉。

一)扩张方法是如何?

扩展方法能够在不改换原有类的代码前提下,给类“扩大”贰个艺术。扩大方法纵然属于静态方法,但调用的语法却和目的调用类似。直接用1个事例来演示扩张方法。

1.筹划实体类

图片 1图片 2

public class Person
    {
        public Person(string name, int age)
        {
            this.Name = name;
            this.Age = age;
        }
        public int Age { get; set; }
        public string Name { get; set; }
    }

Person实体类代码

2.计划1个静态类和一个静态方法

图片 3图片 4

public static class MyTest
    {
        public static void SayHello(this Person per1, string flag)
        {
            Console.WriteLine("你好,我是{0},年龄{1},{2}", per1.Name, per1.Age, flag);
        }
    }

View
Code

3.主函数代码如下

图片 5图片 6

class Program
    {
        static void Main(string[] args)
        {
            Person per1 = new Person("per1", 21);
            per1.SayHello("握手");
            Console.ReadKey();
        }
    }

View
Code

在此番实验里,MyTest静态类里的SayHello()便是扩充方法。定义扩大方法的正统是:第三个参数类型是被增加的花色,类型前边标注this。扩大方法其实也足以被当成普通的静态方法使用,比方下面的主函数代码修改成如下情况也能健康使用,当然只是重申一下罢了,既然已经写成扩大方法,这最佳依旧当成扩大方法应用才便宜:

图片 7图片 8

class Program
    {
        static void Main(string[] args)
        {
            Person per1 = new Person("per1", 21);
            MyTest.SayHello(per1, "握手");
            Console.ReadKey();
        }
    }

View
Code

②)为啥接纳扩张方法?

字面意思,似乎给二个类又追加了二个措施。在上头演示中,用Person对象去调用的SayHello()方法就象是是Person类内部的法子,不过这一个办法却属于MyTest静态类。恐怕会以为很奇异,为何不直接在Person类内部加叁个public
void SayHello(string
flag)方法就马到成功。实际上扩大方法的便宜在于,对于已经封装好的类,不用再去修改类内部代码便能到位对类扩展三个情势,那提升了对类的扩张性。比方在Winform窗体程序中,对于TextBox的三个指标,要去看清Text属性值是还是不是为a1贰三,直接写3个恢宏方法并让这么些指标去调用,部分代码如下:

一.在窗体程序上扩张一个TextBox文本框,一个Button开关

二.扩大贰个静态类

图片 9图片 10

static class Check
    {
        public static bool CheckTest(this TextBox txt1)
        {
            return txt1.Text == "a123";
        }
    }

View
Code

3.给Button开关新建单击事件,代码如下

图片 11图片 12

private void button1_Click(object sender, EventArgs e)
        {
            bool a = textBox1.CheckTest();
            MessageBox.Show(a.ToString());
        }

View
Code

4.运维测试

图片 13

 

在上头演示中,TextBox类是微软已经封装好的类,但却足以完结在当中加多了三个CheckTest()方法的意义。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图