c#中设置属性 索引 接口 泛型 抽象类 委托 事件

类中的属性

给私有变量增加属性
public class Person{
	private string name="";
	public string Name{
		get {return name;}
		set {name=value;}
	}
}

//调用
Person tp =new Person();
tp.Name="zxl";
this.textbox1.text=tp.Name;

public class person{
	private string name="";
	public string Name{
		get {return name;}
		set {
			if(value.length >= 2)
				name=value;
			else
				name="zxl";
		}
	}
}


 c#中索引

 

public class Book{
	//成员变量
	public string temp="";
	//成员索引
	public string this [int index]{
		get { return temp; }
		set { temp= value; }
	}
}

Book tb = new Book();
tb [0]="helloworld";
this.textbox1.text=tb[0];


 扩展改写:

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            telephoneList theTelephoneList = new telephoneList();
            theTelephoneList.initialize();
            this.textBox1.Text = theTelephoneList["张1"].ToString();
            //this.textBox1.Text = theTelephoneList[12000];
        }
        public class Student
        {
            public string name;
            public int ID;
        }
        public class telephoneList
        {
            private Student[] Students;

            public void initialize()
            {

                Students = new Student[3];
                Students[0] = new Student();
                Students[0].name = "张1";
                Students[0].ID = 11000;

                Students[1] = new Student();
                Students[1].name = "张2";
                Students[1].ID = 12000;

                Students[2] = new Student();
                Students[2].name = "张3";
                Students[2].ID = 13000;
            }

            public string this[int theID]
            {
                get
                {
                    Student stu = null;
                    if (Students.Length > 0)
                    {
                        for (int i = 0; i < Students.Length; i++)
                        {
                            if (Students[i].ID == theID)
                            {
                                stu = Students[i];
                                break;
                            }
                        }
                    }
                    return stu.name;
                }

            }
            public int this[string theName]
            {
                get
                {
                    Student stu = null;
                    if (Students.Length > 0)
                    {
                        for (int i = 0; i < Students.Length; i++)
                        {
                            if (Students[i].name == theName)
                            {
                                stu = Students[i];
                                break;
                            }
                        }
                    }
                    return stu.ID;
                }
            }
        }
    }
}


 接口:

 

        private void Form1_Load(object sender, EventArgs e)
        {
            Iface z = new Person();
            z.ShowFace();
        }
        interface Iface {
            void ShowFace();
        }
        class Person : Iface {
            public void ShowFace() {
                MessageBox.Show("zxl hello world !");
            }
        }

 

泛型:  泛型类:带有参数的"类" 这里的参数是指 类型

 

        private void Form1_Load(object sender, EventArgs e)
        {
            Test<string, int> z = new Test<string, int>("ZXL", 20);
            z.SetValue();
        }

        public class Test<T, S> {
            private T name;
            private S age;
            public Test(T Name, S Age) {
                this.name = Name;
                this.age = Age;
            }
            public void SetValue() {

                MessageBox.Show("name is "+name.ToString());
                MessageBox.Show("age is "+age.ToString());
            }
        } 



抽象类: 不能实例化! (不想让类被实例化 可以用抽象类)

 

        private void Form1_Load(object sender, EventArgs e)
        {
            //Person tp = new Person(); //不能实例化
            Person ts = new Student();
            ts.SayHello();
            ts.a();
        }
        public abstract class Person {
            public abstract void SayHello();
            public void a() { MessageBox.Show("hello"); }
        }
        public class Student : Person {
            public override void SayHello()
            {
                MessageBox.Show("override hello");
            }
        }


 委托:

 委托是一种类型 但是委托应以了方法的类型 可以吧方法做为参数进行传递成为可能

声明: public delegate void GreetingDelegate(string name);

        private void Form1_Load(object sender, EventArgs e)
        {
            //GreetPeople("zxl", EnglishGreeting); //传递英文的方法
            //GreetPeople("张星星", ChineseGreeting); //传递中文的方法

            //GreetingDelegate delegate1 = new GreetingDelegate(); 错误例子 委托实例是需要传递参数 方法
            
            //创建委托调用chinese
            GreetingDelegate delegate1 = new GreetingDelegate(EnglishGreeting);
            delegate1 = ChineseGreeting;
            delegate1("张星星");

            //委托连
            //delegate1 += EnglishGreeting;
            //delegate1 += ChineseGreeting;
            

        }

        private void GreetPeople(string name,GreetingDelegate MakeGreeting) { //传入一个委托参数
            MakeGreeting(name);
        }
        private void EnglishGreeting(string name) {
            MessageBox.Show("Morning,"+name);
        }
        private void ChineseGreeting(string name){
            MessageBox.Show("你好," + name);
        }



 事件:热水器事件

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Delegate; //引入 命名空间

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Heater heater = new Heater();
            Alarm alarm = new Alarm();
            Display display = new Display();
            heater.BoilEvent += alarm.MakeAlert;//注册方法
            heater.BoilEvent += alarm.MakeAlert;//注册方法
            heater.BoilEvent += display.ShowMsg;//注册方法
            heater.BoilWater(); //烧水,温度懂啊99时触发
        }
        
    }
}


namespace Delegate {
    //热水器类
    public class Heater {
        private int temperature = 0; //声明成员变量
        public delegate void BoilHandler(int param); //声明委托
        public event BoilHandler BoilEvent;
        //烧水方法
        public void BoilWater() {
            for (int i = 1; i <= 100; i++) {
                temperature++;
                if (temperature >= 99 && BoilEvent != null) {
                    BoilEvent(temperature); //调用注册方法
                }
            }
        }
    }
    //报警器类
    public class Alarm {
        public void MakeAlert(int param) {
            MessageBox.Show("水开了 温度为:"+param.ToString());
        }
    }
    //显示器类
    public class Display{
        public void ShowMsg(int param) {
            MessageBox.Show("显示当前温度:"+param.ToString());
        }
    }
}


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值