
委托/反射/泛型
文章平均质量分 51
委托/反射/泛型
厦门德仔
分享与交流:信息化建设、数字化转型、项目管理、流程梳理与再造、前后端开发、财务管理、数据库、网络、家庭教育与人生感悟等希望我的博客能带您愉快心情。
展开
-
[C#]Task.ContinueWith使用实例
通过任务,可以指定在任务完成之后,应开始运行之后另一个特定任务。例如,一个使用前一个任务的结果的新任务,如果前一个任务失败了,这个任务就应执行一些清理工作。任务处理程序都不带参数或者带一个对象参数,而任务的连续处理方法都有一个Task类型的参数,这里可以访问起始任务的相关信息:如下面的示例代码: class Program { static void DoOnFirst() { Console.WriteLine($"doing so转载 2021-05-21 15:59:45 · 1780 阅读 · 0 评论 -
[C#]action,delegate,func的用法和区别
以前我都是通过定义一个delegate来写委托的,但是最近看一些外国人写的源码都是用action和func方式来写,当时感觉对这很陌生所以看起源码也觉得陌生,所以我就花费时间来学习下这两种方式,然后发现确实代码简洁了不少。这两种方式我们也可以去实践的过程去慢慢运用。先说一下委托:模拟一下场景:小明最近学习情绪高涨,以前买的书已经满足不了欲望,打算去买本(一个程序员的自我修养)。可是呢以前总是跑书厂买,nm,太远了扛不住,就去跑去附近书店去买,小明去给钱就弄了一本书回来,这个过程就是委托。开始分析1:小转载 2021-05-20 16:14:41 · 292 阅读 · 0 评论 -
[C#]泛型的类型约束
泛型的类型约束//泛型类型约束//using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 泛型的类型约束{ class Program { static void Main( string [] args) { /转载 2021-04-22 14:13:48 · 682 阅读 · 0 评论 -
[泛型]-使用IComparer子类的Sort排序方法
泛型的排序有3种方法,分别是:1、List.Sort(),只能在集合元素实现了IComparable泛型接口时使用2、List.Sort(Comparison),Comparison是一个方法委托,它带有2个参数T,返回int类型,可以灵活指定如何排序,但是需要编码时手动指定如何排序;3、List.Sort(IComparer),使用实现了IComparer接口的类给集合排序,可以灵活转载 2010-11-21 23:05:00 · 1232 阅读 · 0 评论 -
[反射]利用Activator.CreateInstance(type)实例化表单
通常我们在做BS项目树形菜单的,判断好权限后点击节点URL跳转到指定的页面最近好玩写写WINFORM,点击节点从数据库中读取类型 进行实例化,不认识!!!上网查查看到这个方法Activator.CreateInstance(type)就改改代码了: try { Type type = Type.Get原创 2011-07-06 08:49:55 · 2502 阅读 · 0 评论 -
C#事件与委托的区别
<br />区别一:<br />事件在本类型外部只能用“+=”和“-=”去订阅/取消订阅代理;<br /><br />委托不管在本类型外部还是内部都可以用“+=”、“-=”和“=”订阅/取消订阅代理。<br />区别二:<br />事件只能在本类型内部“触发”;<br />委托不管在本类型内部还是外部都可以“调用”。<br />即:事件,只有本类才能激发这个事件,如果用委托取代的话,可想而知。<br />举个例子,按钮的Click事件,只有你的鼠标点击按钮才能由按钮触发,如果Click是委托的话,不管鼠标点转载 2010-11-22 00:19:00 · 2066 阅读 · 0 评论 -
C#事件-设计准则
2010年04月22日 20:14<br /><br />事件设计的四个步骤<br />1 在事件发行者中定义一个事件<br />2 在事件发行者中触发事件<br />3 在事件订阅者中定义事件处理程序<br />4 向事件发行者订阅一个事件<br /><br />下面我们看一个小例子,打印出键盘的按键操作:<br />using System;<br />namespace Csharpdemo<br />{<br /> publicclass EventDemo <br /> {<br />转载 2010-11-22 00:18:00 · 1540 阅读 · 0 评论 -
C#事件-自定义事件的使用方法
1、声明一个委托类 public delegate SomethingChangedHandler(object sender,EventArgs e);<br />2、在你的类中声明一个事件绑定到该委托 public event SomethingChangedHandler Changed;<br />3、在相应的方法中触发此事件<br />public void ChangeSomething()<br />{<br /><br />Changed(this,new EventArgs); //触发事转载 2010-11-22 00:16:00 · 1322 阅读 · 0 评论 -
C#事件-定义事件
<br />具体方法: 定义事件 委托定义:<br />public delegate void EventFountion(Param param); 事件定义:<br />public event EventFountion eventFountion; 调用事件:<br />if (eventFountion!= null) eventFountion(this.param); 使用事件 事件触发后的方法<br />public void a_eventFountion(Param param转载 2010-11-22 00:15:00 · 1548 阅读 · 0 评论 -
C#事件-事件处理
<br />万物皆对象!对象与对象之间不仅仅是存在关系,更是具有千丝万缕的联系。即:如何使得一个对象发生变化时,另一个对象也能随之发生变化。这种“一个对象的状态改变导致其它对象状态改变”的现象,我们称之为事件。<br />定义:事件,是用来描述类的成员发生改变的对象。<br />我们举一个例子,来理解上面的定义:<br /><br />例如:路边有一条狗。你看它不爽,于是走上前去踢了它一脚。我们来看紧接着发生的事情:<br />1、这条狗很胆小,它跑掉了;<br />2、这条狗是恶狗,它将你反咬一口;<br转载 2010-11-22 00:13:00 · 1180 阅读 · 0 评论 -
C#事件-事件学习好例子
<br />一、委托的简介<br />二、事件的简介<br />三、委托和事件的使用<br />四、总结<br />一、委托的简介<br /><br />1、委托的声明:<br />delegate HandlerName ([parameters])<br />例如:<br />public delegate void PrintHandler(string str);<br /><br /> 委托声明定义了一种类型,它用一组特定的参数以及返回类型来封装方法。对于静态方法,委托对象封装要调用的方转载 2010-11-22 00:11:00 · 906 阅读 · 0 评论 -
C#事件-自定义事件
<br />事件有很多,比如说<br />鼠标的事件:MouserMove,MouserDown等。<br />键盘的事件:KeyUp,KeyDown,KeyPress。<br /><br />有事件,就会有对事件进行处理的方法,而事件和处理方法之间是怎么联系起来的呢?委托就是他们中间的桥梁,事件发生时,委托会知道,然后将事件传递给处理方法,处理方法进行相应处理。<br /><br />比如在WinForm中最常见的是按钮的Click事件,它是这样委托的:this.button1.Click += new转载 2010-11-22 00:10:00 · 1051 阅读 · 0 评论 -
[泛型]-使用委托的Sort排序方法
泛型的排序有3种方法,分别是:1、List.Sort(),只能在集合元素实现了IComparable泛型接口时使用2、List.Sort(Comparison),Comparison是一个方法委托,它带有2个参数T,返回int类型,可以灵活指定如何排序,但是需要编码时手动指定如何排序;3、List.Sort(IComparer),使用实现了IComparer接口的类给集合排序,可以灵活转载 2010-11-21 23:04:00 · 1010 阅读 · 0 评论 -
[泛型]-无参数的Sort排序方法
泛型的排序有3种方法,分别是:1、List.Sort(),只能在集合元素实现了IComparable泛型接口时使用2、List.Sort(Comparison),Comparison是一个方法委托,它带有2个参数T,返回int类型,可以灵活指定如何排序,但是需要编码时手动指定如果排序;3、List.Sort(IComparer),使用实现了IComparer接口的类给集合排序,可以灵活转载 2010-11-21 23:03:00 · 1023 阅读 · 0 评论 -
C# Socket编程(2)识别网络主机
通过前面的笔记我们可以知道:一个客户端想要发起一次通信,先决条件就是需要知道运行着服务器端程序的主机的IP地址是多少,端口号是多少。然后我们才能够通过这个地址向服务器特定的应用程序发送信息。对于网络上的两台计算机来说,用户操作的计算机称为本地主机,与该计算机通信的另一台计算机称为远程主机。识别远程主机依靠两部分组成:一是主机标识,用于识别与本地主机通信的远程主机;二是端口号,用于识别是再和远程主机转载 2012-10-12 08:24:56 · 1583 阅读 · 0 评论 -
C# Socket编程(1)基本的术语和概念
计算机程序能够相互联网,相互通讯,这使一切都成为可能,这也是当今互联网存在的基础。那么程序是如何通过网络相互通信的呢?这就是我记录这系列的笔记的原因。C#语言从一开始就是为了互联网而设计的,它为实现程序的相互通信提供了许多有用API,这类应用编程接口被称为套接字(Socket)。在开始学习C# Socket之前我们需要先来了解一下基本的术语和概念。1.计算机网络 计算机网络由一组通过通信转载 2012-10-12 08:24:08 · 1392 阅读 · 0 评论 -
C#事件-预定义事件处理方式
学习事件,我觉得最不好理解的就是C#中预定义了事件,事件有很多种,比如说鼠标的事件:MouserMove,MouserDown等,键盘的事件:KeyUp,KeyDown,KeyPress。EventArgs是包含事件数据的类的基类,用于传递事件的细节。有事件,就会有对事件进行处理的方法,而事件和处理方法之间是怎么联系起来的呢?委托就是他们中间的桥梁,事件发生时,委托会知道,然后将事转载 2010-11-22 00:17:00 · 1934 阅读 · 0 评论 -
[泛型]集合Dictionary
在System.Collections.Generic命名空间中,与ArrayList相对应的泛型集合是List,与HashTable相对应的泛型集合是Dictionary,其存储数据的方式与哈希表相似,通过键/值来保存元素,并具有泛型的全部特征,编译时检查类型约束,读取时无须类型转换。电话本存储的例子中,使用Dictionary来存储电话本信息,代码如下:Dictionary ht=ne转载 2010-11-21 22:57:00 · 1626 阅读 · 0 评论 -
[泛型]使用泛型List
一、泛型的优点性能高。从前面的例子可以看出使用不需进行类型转换,可以避免装箱和拆箱操作,提高性能。类型安全。泛型集合对其存储对象进行了类型约束,不是定义时声明的类型,是无法存储到泛型集合中的,保证了数据类型的安全。代码重用。使用泛型类型可以最大限度地重用代码,保护类型的安全以及提高性能。使用泛型使用泛型可以定义泛型类,泛型接口,泛型方法等。.NET Framework类库在Sy转载 2010-11-21 22:53:00 · 1462 阅读 · 0 评论 -
[泛型]什么是泛型
泛型:即通过参数化类型来实现在同一份代码上操作多种数据类型。泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。C#泛型的作用概述:C#泛型赋予了代码更强的类型安全,更好的复用,更高的效率,更清晰的约束。在一个方法中,一个变量的值是可以作为参数,但其实这个变量的类型本身也可以作为参数。泛型允许我们在调用的时候再指定这个类型参数是什么。在.net中,泛型能够转载 2010-11-21 22:55:00 · 1248 阅读 · 0 评论 -
[泛型]集合Dictionary入门
1、命名空间: System.Collections.Generic(程序集:mscorlib)2、描述: 1)、从一组键(Key)到一组值(Value)的映射,每一个添加项都是由一个值及其相关连的键组成 2)、任何键都必须是唯一的 3)、键不能为空引用null(VB中的Nothing),若值为引用类型,则可以为空值 4)、Key和Value可以是任何类型转载 2010-11-21 22:58:00 · 999 阅读 · 0 评论 -
[泛型]-泛型接口IComparable
系统提供了许多泛型类和泛型接口,List和Dictionary是常用的泛型类。IComparable是最常用的泛型接口。泛型接口具有一般接口的共同特点,即在接口中可以包含字段,属性,方法和索引器,但都不能实现。IComparable和IComparer接口区别如下:◆IComparable在要比较的对象的类中实现,可以比较该对象和另一个对象;◆IComparer在一个单独的类中实现,可转载 2010-11-21 23:00:00 · 1126 阅读 · 0 评论 -
[泛型]-泛型接口IComparer——比较器
IComparer接口定义了为比较两个对象而实现的方法。其定义如下:public interface IComparer{inr Compare(T x,T y);}类型参数“T”是要比较的对象的类型。Compare方法比较两个对象并返回一个值,指示一个对象是小于,等于还是大于另一个对象。参数x是要比较的第一个对象,y是要比较的第二个对象,均属于类型T。如果返回值大于0,则转载 2010-11-21 23:01:00 · 1569 阅读 · 1 评论 -
C#事件-使用简单实例
<br />1. 在文件 OutputChoose.cs 中封装了方法作为委托:<br />using System;<br />using System.Collections.Generic;<br />using System.Text;<br />namespace beta<br />{<br /> class OutputChoose<br /> {<br /> public string message = "你有新消息,请注意查收。";//声明短消息字串<br />转载 2010-11-22 00:09:00 · 1262 阅读 · 0 评论 -
C#事件-经典小例子
public class EatEventArgs : EventArgs ...{ public String restrauntName; //饭店名称 public decimal moneyOut; //准备消费金额 } /**//// /// 这个委托用来说明处理吃饭事件的方法的方法头(模式) /// public delegate void EatEventHandler(obje转载 2010-11-22 00:09:00 · 1057 阅读 · 0 评论 -
C#事件-事件本身就是一种多播委托
<br />C#中的事件就是委托的一个变量。它和属性、方法一样,都是类的成员。只不过事件是指向一个方法,当事件被触发时,就会执行对象的相关方法。<br />事件的这种对方法的引用并不是写死在代码里面的,而是可以进行更改的。辟如:我们在DotNet中按钮的OnClick事件,它可以指向符合OnClick事件签名的任何一个方法。<br />1.事件的定义使用event关键字:<br />public event CryHandler DuckCryEvent;<br /><br />其中的CryHandler是原创 2010-11-22 00:13:00 · 1530 阅读 · 0 评论 -
C#事件-换一个角度理解委托和事件
我们建一个控制台程序。<br />未使用委托、事件之前的代码<br /> using System; <br /> class Program<br /> {<br /> static void Main(string[] args)<br /> {<br /> //实例化一个button类<br /> Button btn = new Button();<br /> b转载 2010-11-22 00:12:00 · 1015 阅读 · 0 评论 -
C#事件-简单实例
委托声明定义了一种类型,它用一组特定的参数以及返回类型来封装方法。对于静态方法,委托对象封装要调用的方法。对于实例方法,委托对象同时委托一个实例和该实例上的一个方法。委托要求添加到委托列表中的所有方法都必须有相同的签名。 事件发行者(Publisher):也称事件发送者(sender),其实就是一个对象,这个对象自行维护本身的状态信息。当本身状态信息变动时,便触发一个事件,并通知所有的事件订阅者。事件订阅者(Subscriber):对事件感兴趣的对象,也称为接收者(receiver)转载 2010-11-22 00:08:00 · 1203 阅读 · 0 评论 -
C#事件-使用事件需要的步骤
<br />事件是C#中另一高级概念,使用方法和委托相关。奥运会参加百米的田径运动员听到枪声,比赛立即进行。其中枪声是事件,而运动员比赛就是这个事件发生后的动作。不参加该项比赛的人对枪声没有反应。<br /><br />从程序员的角度分析,当裁判员枪声响起,发生了一个事件,裁判员通知该事件发生,参加比赛的运动员仔细听枪声是否发生。运动员是该事件的订阅者,没有参赛的人不会注意,即没有订阅该事件。<br />C#中使用事件需要的步骤:<br />1、创建一个委托;<br />2、将创建的委托与特定事件关联(.N转载 2010-11-22 00:04:00 · 1319 阅读 · 0 评论 -
C#事件-什么是事件
<br />每天,我们的身边都在发生各种各样的新闻和事件,有让人不快的事件:跟女朋友分手了,国足又输了,飞机失事了,海地地震了……也有幸运的事件:考试拿了个高分,申雪赵宏博拿到冠军了……等等。<br />什么是事件?<br />这个问题曾经让我十分困扰,在《C#高级编程第6版》中,对事件是这样说的:事件表示C#中已定义的一个对象,即处理通知过程的对象。可是这样说未免抽象,对于像我这样的初学者往往还是难以理解。而我的理解是,事件是处理事件的对象感兴趣的,能够感知或捕获到一种事物状态的改变。说白了,事件即改变。转载 2010-11-22 00:04:00 · 1694 阅读 · 0 评论 -
C#委托-小结
<br />委托包含对方法(不是方法名)的引用。使用委托可以在运行时决定调用哪个方法,甚至可以不用知道方法名就可以调用方法(因为我们是使用委托的对象来进行执行方法),执行(或调用)委托实际上将执行该委托所引用的方法。<br />委托将一个委托对象与所指定的方法联系起来,该方法的实现就可以与该委托对象联系起来,这样该委托对象就可以调用那个特定的方法。但是,委托要求方法和委托的定义具有相同的方法签名(即两者都要接受相同个数和类型的参数),并返回相同类型的参数。<br />注:被委托的方法的返回类型和参数列表相同转载 2010-11-22 00:02:00 · 839 阅读 · 0 评论 -
C#委托-使用匿名方法
<br />使用C#委托还有另一种重要方法--通过匿名方法。其中,匿名方法是用作委托参数的一个代码块。请看下面的例子:<br />匿名方法的作用是使代码更简化,方便了程序员。如果没有匿名方法,则定义一套事件监听需要这样:<br /> <br />class Program<br />{<br /> public delegate void SomeDelegate(); // 定义委托<br /> <br /> static void Main()<br /> {<br />转载 2010-11-22 00:01:00 · 1203 阅读 · 0 评论 -
C#委托-概念理解
<br />MSDN上对委托的定义:委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。<br />C#是一种面向对象的语言,C#一切皆对象。因此潜意识的想用面向对象来解释“委托”。但发现不论怎么解释都解释不了,也就越来越糊涂了,到最后不了了之。<br />我们何不抛开面向对象,一步步的来看看什么是委托。首先对于委托我就看到的最多的一个概念是什么?没错是“方法”。方法:是一个带名称的、独立的、以可重用的方式放置的代码片段。方法无需应用程序其他部分的干预便能运行,如果创建的正确,转载 2010-11-21 23:59:00 · 906 阅读 · 0 评论 -
C#委托-委托的使用
<br />定义和使用委托分三个步骤:<br />1、委托声明。2、委托实例化。3、委托调用。<br />一、定义委托<br /><br />定义委托的语法如下:<br /><访问修饰符> delegate 返回类型 委托名();<br />定义委托和定义方法很相似,委托没有具体的实现体,由关键字delegate声明,直接以分号结束。委托能够代表什么样的方法,由它的返回值类型和参数列表决定。如下定义如下委托:<br />public delegate void MyDelegate(string name)原创 2010-11-21 23:55:00 · 1204 阅读 · 0 评论 -
C#委托-委托和事件(来自张子阳)
<br />引言<br /><br />委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里憋得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。<br /><br />将方法作为方法的参数<br原创 2010-11-21 23:53:00 · 1628 阅读 · 0 评论 -
C#事件-综合案例分析
<br />面试题:晚上猫大叫一声,主人被惊醒,老鼠被下跑。用C#实现这个过程。<br /><br />这个题目中一共有三个对象:猫、主人和老鼠。这三个对象之间即不属于Is a...的关系,也不属于Has a...的关系,但三者又有相互联系。<br /><br />不能把主人和老鼠作为猫的成员变量出现,因为猫对象并不拥有主人和老鼠这两个对象。<br />不能在猫任何方法中实例化主人和老鼠。因为猫的任何动作都不会动态产生主人和老鼠。<br />不能在猫的Cry方法中传入主人对象和老鼠对象,因为猫大叫不是为了叫转载 2010-11-22 00:14:00 · 1517 阅读 · 1 评论 -
C#委托-怎样理解C#中“委托”的含义和用途
<br />下面是网友的回答:<br />我是这样理解的:委托是对方法的引用,相当于方法的别名,也就是说委托与方法具有相同的行为。<br /><br />委托变量说白了就是接受方法名作为参数的变量,当我们使用这个委托变量的时候就相当于调用了这个方法。<br /><br />我也感觉"委托"就是方法别名,或者调用别人的方法时,不用原来的方法名,可以自己起一个有意义的名字(联想一下文件的快捷方式)<br /><br />委托在现实生活中来说就是你叫别人去帮你做一件事(别人做事用到方法),然后他把事做了之后给你返转载 2010-11-21 23:51:00 · 1675 阅读 · 0 评论 -
C#事件-探寻事件本质
<br />如何定义一个事件?<br />语法:访问修饰符 event关键字 委托类名 事件名;<br />比如:public event somedelegatename myeventname;<br />事件到底是什么类型(引用?值?)<br />事件其实就是一个特殊的委托。<br />MSDN中的C#参考里这样描述:事件是特殊类型的多路广播委托,仅可从声明它们的类或结构(发行者类)中调用。如果其他类或结构订阅了该事件,则当发行者类引发该事件时,会调用其事件处理程序方法。<br />对于这一点,我们也转载 2010-11-22 00:07:00 · 1046 阅读 · 0 评论 -
C#委托-在窗体中使用委托和事件
委托和事件在C#中使用非常广泛,例如,当我们点击某个“按钮”的时候,就会有一个“Click”事件触发,而这个事件会通知“委托”,在C#窗体应用程序中,“委托”的名字比较规范,统一使用“EventHandler”,它的具体格式是“void EventHandler(object sender, EventArgs e);”。相信大家都写过下面这样子的HelloWorld程序:<br /><br />当点击按钮的时候弹出一个对话框。我们怎样实现的呢?你肯定会说,我们在设计窗口双击按钮,就会自动为我们生成类似转载 2010-11-22 00:06:00 · 1622 阅读 · 0 评论 -
C#事件-事件解析
<br />事件(event),这个词儿对于初学者来说,往往总是显得有些神秘,不易弄懂。而这些东西却往往又是编程中常用且非常重要的东西。大家都知道windows消息处理机制的重要,其实C#事件就是基于windows消息处理机制的,只是封装的更好,让开发者无须知道底层的消息处理机制,就可以开发出强大的基于事件的应用程序来。<br /><br />在以往我们编写这类程序中,往往采用等待机制,为了等待某件事情的发生,需要不断地检测某些判断变量,而引入事件编程后,大大简化了这种过程:<br />- 使用事件,可以很转载 2010-11-22 00:05:00 · 1133 阅读 · 0 评论