c# 基础
来源:互联网 发布:淘宝图片护盾哪里设置 编辑:程序博客网 时间:2024/06/09 19:58
{{toc}}
!规范
!委托
1.委托的定义:
*可以理解为c中的函数指针,其作用相当于将一个函数A的指向另外一个或多个函数,此时运行函数A就相当于运行了另外的函数
2.委托的声明:
*<访问修饰符> delegate 返回值类型 委托名(<参数>);
**例:public delegate int MyDelegate(int num);
**PS.多个参数之间用”,”分开。
3.委托的实例化:
*实例化委托用New来实例化:
*委托名 实例化名 = new 委托名(函数名);
*以上述声明的委托为例,实例化一个委托。
*MyDelegate md = new MyDelegate(Add); //Add是一个函数
4.上述情况例子
class TestDelegate
{
//声明了一个委托,委托的返回值类型是int型,传入的参数是单参的int型数据
public delegate int MyDelegate(int num);
//声明一个Add函数作用是将传进来的参数加10后返回private static int Add(int num){ System.Console.WriteLine("Add Function----{0}", num + 10); return num + 10;}static void Main(string[] args){ //实例化委托 MyDelegate md = new MyDelegate(Add); //调用委托 md(10); //返回值测试 int num = md(20); System.Console.WriteLine("Main Function---{0}", num);}/*输出结果如下:Add Function----20Add Function----30Main Function---30*/
}
5.委托的多播
*概念:委托的多播相当于将多个函数一起打包到一个委托中去调用,执行这个委托时就会按照打包的列表顺序来执行各个函数。
*委托的多播是用”+”号来将多个函数打包的。需要注意的是必须是同种类型的委托才能连接。
6.举例
*MyDelegate md1 = new MyDelegate(Add);
*MyDelegate md2 = new MyDelegate(Del);
*md1 += md2;
*或者
*MyDelegate md1 = new MyDelegate(Add);
*md1 += new MyDelegate(Del);
7.上述情况例子
class TestDelegate
{
//声明了一个委托,委托的返回值类型是int型,传入的参数是单参的int型数据
public delegate int MyDelegate(int num);
//声明一个Add函数作用是将传进来的参数加10后返回private static int Add(int num){ System.Console.WriteLine("Add Function----{0}", num + 10); return num + 10;}private static int Del(int num){ System.Console.WriteLine("Del Function----{0}", num - 1); return num - 1;}static void Main(string[] args){ //实例化委托 MyDelegate md = new MyDelegate(Add); //委托的多播 md += new MyDelegate(Del); //调用委托 int num = md(20); System.Console.WriteLine("Main Function---{0}", num);}/*输出结果如下:Add Function----30Del Function----19Main Function---19*/
}
!事件
1.事件
*事件表示C#中已定义的一个对象,即处理通知过程的对象。
2.事件的声明:
*<访问修饰符> event 委托名 事件名;
*事件是需要和委托联合起来使用的,因此声明一个事件之前得先声明一个委托,在通过这个委托的类型来声明这个事件。
*a.定义事件:
*public delegate void MyDelegate();
*public event MyDelegate MyEvent;
*b.订阅事件:
*事件名 += new 委托名(函数名);
*testEvent.MyEvent += new MyDelegate(Run);
c.触发事件
*通过某个动作来触发事件3.举例说明
class TestDelegate
{
static void Main(string[] args)
{
TestEvent testEvent = new TestEvent();
RunTest rTest = new RunTest();
testEvent.MyEvent += new TestEvent.MyDelegate(rTest.Run);
testEvent.StartEvent();
}
}
public class TestEvent
{
public delegate void MyDelegate();
public event MyDelegate MyEvent;public void StartEvent()
{
if(MyEvent != null)
{
MyEvent();
}
//MyEvent?.Invoke();
}
}
public class RunTest
{
public void Run()
{
System.Console.WriteLine(“Run Function…”);
}
}
/*
运行结果是:
Run Function…
*/
!同步
!异常
- c#基础
- c#基础
- C#基础
- C#基础
- C#基础
- C#基础
- C#基础
- c# 基础
- c#基础
- C# 基础
- C#基础
- C#基础
- C#基础
- c#基础
- C#基础
- C# 基础
- C#基础
- C#基础
- MapReduce之人脉计算
- 量亿数据说说量化交易在A股市场中的位置
- Android中的Apk的加固(加壳)原理解析和实现
- 卢俊卿:员工发挥主人翁意识共建幸福企业
- jq实现数字随时间增加
- c# 基础
- hdpuj-primes
- 2017.06.05【NOIP提高组】模拟赛A组 & B组
- InnoDB Redo Flush及脏页刷新机制深入分析
- 网络__未连接到服务器问题
- POJ-3159 Candies
- hive常用函数
- 基于Hadoop的数据序列化与反序列化实例
- gulp常见命令