记录下学习C#的过程。
一、需求
下边的类(say)中有三个方法,需要给这三个方法统一的添加同一个条件语句。
想过在每一个方法内做判断,但是考虑这条太不“程序员”了,所以考虑用一个新的方法来代替,用委托的方式传递参数。
public class say {
public static void A()
{
Console.Write("我是A"+ "\n");
}
public static void B()
{
Console.Write("我是B" + "\n");
}
public static void C()
{
Console.Write("我是C" + "\n");
}
二、实现
考虑用委托的形式实现该功能,即新建一个判断的类(也可写成类库)
class Panduan
{
public static void panduan(bool a,Action act)//传递委托
{
if (a)
{
act();
}
else
{
Console.WriteLine("no!!");
}
}
}
三、完成代码
class Program
{
public static bool a = true;
static void Main(string[] args)
{
Panduan.panduan(a, say.A);
Panduan.panduan(a, say.B);
Panduan.panduan(a, say.C);
Console.Read();
}
}
class Panduan
{
public static void panduan(bool a,Action act)
{
if (a)
{
act();
}
else
{
Console.WriteLine("no!!");
}
}
}
public class say {
public static void A()
{
Console.Write("我是A"+ "\n");
}
public static void B()
{
Console.Write("我是B" + "\n");
}
public static void C()
{
Console.Write("我是C" + "\n");
}
}
总结
这类应用类似于python的装饰器,不过我查资料C#的装饰器比python的复杂多。
上边的例子相当于给方法运行前增加权限。
参考文件内详细讲解了action和func的委托应用,简单易懂,非常值得学习。
参考文件
https://blog.csdn.net/wf824284257/article/details/83661843
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)