C#委托。
2021-06-11 09:03
标签:static 大写 data- ons value 封装 ring rgs i++ 什么是委托。 委托是一种数据类型。 委托的作用。 把变化的东西封装起来。 委托是引用变量,声明后不赋值为null 所以使用前校验非空。 目前来看,委托没啥毛用,直接调用M1不就得了? 下面程序的作用是,传入一个字符串,把每个人名都加上* 但是现在需求变了,把每个人名都换成大写。 就需要改变代码。 而代码部分,只有str[i] = "*" + str[i] + "*"; 是变化的。 就可以把这段代码封装起来。 C#委托。 标签:static 大写 data- ons value 封装 ring rgs i++ 原文地址:https://www.cnblogs.com/zhangyuhao/p/10567252.htmlclass Program
{
static void Main(string[] args)
{
//2、使用委托。
// 先new一个委托类型的对象,并传递方法进去。即md委托保存了M1方法。
MyDelegate md = new MyDelegate(M1);
//调用md委托就是调用M1方法
md();
}
static void M1()
{
Console.WriteLine("一个没有参数没有返回值的方法");
}
}
//1、定义委托类型
//定义一个委托类型,用来保存无参数,无返回值的方法。
public delegate void MyDelegate();
class Program
{
static void Main(string[] args)
{
string[] name = new string[] { "Sam", "Jill", "Penny" };
MyClass mc = new MyClass();
mc.Change(name);
for (int i = 0; i )
{
Console.WriteLine(name[i]);
}
}
}
public class MyClass
{
public void Change(string[] str)
{
for (int i = 0; i )
{
str[i] = "*" + str[i] + "*";
}
}
}
class Program
{
static void Main(string[] args)
{
string[] name = new string[] { "Sam", "Jill", "Penny" };
MyClass mc = new MyClass();
mc.Change(name,ChangeValue);
for (int i = 0; i )
{
Console.WriteLine(name[i]);
}
}
static string ChangeValue(string str)
{
return str.ToUpper();
}
}
public class MyClass
{
public void Change(string[] str,ChangeDelegate ChangeValue)
{
for (int i = 0; i )
{
str[i] = ChangeValue(str[i]);
}
}
}
public delegate string ChangeDelegate(string str);