类中的静态成员则会跟随其他事例改变

2021-07-03  本文已影响0人  GoodTekken

在Student类中创建static int ID,在新建事例时,static 类型会跟随改变,输出结果如下:

Student:LiMing,ID:2,Say:I am Chinese
Student:XiaoHong,ID:2,Say:I am English
Hello World!

其中声明了委托类型:SaySomething。
使用步骤:
1,声明委托类型:
delegate void SaySomething(string str);
2,声明兼容的委托方法(返回值、参数类型和个数一样):
public void SayHello(string str);
3,创建委托事例:
SaySomething LiMingSay;
SaySomething XiaoHongSay;
LiMingSay = new SaySomething(LiMing.SayHello);
XiaoHongSay = new SaySomething(XiaoHong.SayHello);

4,调用委托事例:
LiMingSay("I am Chinese"); //隐式调用
XiaoHongSay.Invoke("I am English");//显式调用

源码如下:

class Program
{
    delegate void SaySomething(string str);
    static void Main(string[] args)
    {
        Student LiMing = new Student("LiMing", 1);
        Student XiaoHong = new Student("XiaoHong", 2);
        SaySomething LiMingSay;
        SaySomething XiaoHongSay;

        LiMingSay = new SaySomething(LiMing.SayHello);
        XiaoHongSay = new SaySomething(XiaoHong.SayHello);

        LiMingSay("I am Chinese");
        XiaoHongSay.Invoke("I am English");


        Console.WriteLine("Hello World!");

        //Console.ReadLine();
    }
}

class Student
{
    public static int ID;
    public string Name;

    public Student(string name, int id)
    {
        Name = name;
        ID = id;
    }

    public void SayHello(string str)
    {
        Console.WriteLine($"Student:{Name},ID:{ID},Say:{str}");
    }

}
上一篇 下一篇

猜你喜欢

热点阅读