C#之委托(函数参数传递)

简介:

         在学委托这块儿的时候,函数参数这块不是很理解,于是针对一个例子做了深入的理解,和大家分享一下。

        首先,先说一下我对委托的理解,委托就是一个可以执行多种同类功能的变量,之所以它是执行同类功能的变量,是因为它只能接受一个函数,而一个函数只能执行一种类型的功能,它的作用就是提高程序的灵活性,和扩展性,比如说如果我们不用委托,可能一个函数只能执行加法运算,但是如果用了委托,它可以同时执行加减乘除,也就是说这个程序的功能扩展了,工作的灵活性也提高了。

下面是一段有关幂和乘法运算同时进行的代码:

	namespace ConsoleApplication16
	{//创建委托
	    delegate  double DoubleOp(double x);
	
	    class Program
	    {
	        static void Main(string[] args)
	        {
	          //实例化两种运算方法
	            DoubleOp[] operations =
	            {
	                new DoubleOp (MathOperations .MultiByTwo ),
	                new DoubleOp (MathOperations .Square )
	            };
	            for (int i=0;i<operations .Length ;i++)
	            {
	                Console.WriteLine("Using operations[{0}]", i);
	                // ProcessAndDisplayNumber这个函数的参数传递到此
	                ProcessAndDisplayNumber(operations[i], 3.0);
	                Console.WriteLine();
	            }
	        }
	        public static void ProcessAndDisplayNumber(DoubleOp action, double value)
	        {
	            double result = action(value);
	            Console.WriteLine("Value is {0},result of operation is {1}", value, result);
	        }
	    }
	   //两种运算方式
	    class MathOperations
	    {
	        public static double MultiByTwo(double value)
	        {
	            return value * 2;
	        }
	        public static double Square(double value)
	        {
	            return value * value;
	        }
	    }
	}
             这段代码运行之后的结果如下:

             

             在敲代码之前,我把源码看了一遍,不是很明白,就先敲完了,让它运行,看到运行结果,感觉代码明白了,主要就是没有理清它的逻辑,所以,有时候光想不做是不行的,先做了,也许就明白了。

        

相关文章
|
1月前
|
C# Python
使用wxpython开发跨平台桌面应用,对wxpython控件实现类似C#扩展函数处理的探究
【10月更文挑战第30天】使用 `wxPython` 开发跨平台桌面应用时,可以通过创建辅助类来模拟 C# 扩展函数的功能。具体步骤包括:1. 创建辅助类 `WxWidgetHelpers`;2. 在该类中定义静态方法,如 `set_button_color`;3. 在应用中调用这些方法。这种方法提高了代码的可读性和可维护性,无需修改 `wxPython` 库即可为控件添加自定义功能。但需要注意显式调用方法和避免命名冲突。
|
2月前
|
C#
C#的方法的参数传递
C#的方法的参数传递
25 0
|
3月前
|
C#
C#一分钟浅谈:委托与事件的实现方式
本文详细介绍了C#编程中委托与事件的基础知识及应用场景。首先解释了委托的概念,包括定义与使用方法;接着介绍了事件这一基于委托的特殊类型,展示了如何在类中定义事件及跨类订阅与处理事件;最后讨论了常见问题如事件未处理异常、重复订阅及内存泄漏等,并提出了相应的解决方案。通过本文,读者将全面掌握委托与事件的使用技巧,提升应用程序的设计与开发水平。
141 7
|
4月前
|
编译器 C#
C#中内置的泛型委托Func与Action
C#中内置的泛型委托Func与Action
68 4
|
4月前
|
C#
C#中的委托(一)
C#中的委托(一)
41 1
|
4月前
|
C# C++
C#语言进阶(一)—委托
C#语言进阶(一)—委托
52 0
|
7月前
|
存储 安全 C#
C# - 委托与事件
这篇文档介绍了C#中的委托和事件。委托是存储方法引用的类型,支持回调、事件处理,具有引用方法、类型安全、多播性等特性,并在异步编程中发挥作用。事件是委托的封装,提供保护和订阅机制,防止外部直接访问。当需要在类内部控制方法调用,防止外部误触发时,可使用事件。
|
6月前
|
开发框架 .NET 程序员
掌握C#语言的精髓:基础知识与实用技能详解(数据类型与变量+ 条件与循环+函数与模块+LINQ+异常+OOP)
掌握C#语言的精髓:基础知识与实用技能详解(数据类型与变量+ 条件与循环+函数与模块+LINQ+异常+OOP)
34 0
|
6月前
|
C#
C#||委托和事件的实例
C#||委托和事件的实例