⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 12-3.cs

📁 这是学习java基础的好的源代码的学习资料
💻 CS
字号:
//程序12-3
using System;
public delegate string Delegt1(int i);
public delegate void Delegt2();
public delegate void Delegt3(int j);
public class ClasA
{	
	int privt;	//私有数据
	protected string [] Ary; 
	public int getPri
	{
		get
		{
			return privt;
		}
	}
	public Delegt2  FromClasB;   //在类中声明委托
	public Delegt3  ChangeA;     //在类中声明委托
	public ClasA(){}
	public ClasA(int k,string [] a) //构造函数
	{
		privt=k;
		Ary=a;
	}
	public string MethodA(int i)
	{
		return Ary[i]+" is in ClasA.";	
	}
}
public class ClasB
{
	int privt;
	public int getPri
	{
		get
		{
			return privt;
		}
	}
	public  void ChangePri(int jj)
	{
		privt=jj;
	}
	public string MethodB(int i)
	{ 
		return i.ToString()+" is in ClasB.";
	}
	public void WhoTell()
	{
		Console.WriteLine("Who can tell me?");	
	}
	public static void WhatDelegt()     //静态方法
	{
		Console.WriteLine("What is the delegate?");
	}
}
public class Test
{
	public static void CalDelegts(Delegt1 dg,int i)    //委托可以作为方法的参数
	{
		Console.WriteLine(dg(i));
	}
		
	public static void Main()
	{
		string [] Ss={"aa","bb","cc"};
		ClasA CA=new ClasA(0,Ss);
		ClasB CB=new ClasB();	
		Delegt1 gfunc = new Delegt1(CA.MethodA); //创建委托,与ClasA中方法关联
		Console.WriteLine(gfunc(1));             
		Delegt2 g2func=new Delegt2(ClasB.WhatDelegt); //创建委托,与静态方法关联
		g2func();                                 
		CA.FromClasB=new Delegt2(CB.WhoTell); //ClasA中的委托与ClasB中的方法关联
		CA.FromClasB();  //调用该委托
		CA.FromClasB=new Delegt2(ClasB.WhatDelegt); //ClasA中的委托与ClasB中静态方法关联
		CA.FromClasB();                        
		Delegt1 [] Mydlgt =new Delegt1[2];   //利用数组依次调用委托
		Mydlgt[0]=new Delegt1(CA.MethodA);
		Mydlgt[1]=new Delegt1(CB.MethodB);
		foreach(Delegt1 dl in Mydlgt) CalDelegts(dl,2);	
		CA.ChangeA=new Delegt3(CB.ChangePri); //ClasA的委托与ClasB中方法关联
		CA.ChangeA(7);                 //方法试图改变私有数据
		Console.WriteLine(CA.getPri);  //改变了ClasA对象的私有数据?
		Console.WriteLine(CB.getPri);  //改变了ClasB对象的私有数据?改变了,虽然可以动态地决定哪个方法被调用,但是方法的代码是在编译时就被确定的。
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -