委托,多播

  1. 多播委托的时候:拿到的返回值是最后一个一个委托指向的方法的执行结果    创建委托:delegate int Adddel(int a,int b);    Adddel del=new Adddel(实例方法名);  不要用了
  2. Func<int,int> funcdemo=new func<int,int>(方法名);  泛型委托 可以最多有16个参数的重载,最后一个参数永远都是返回值  俩个参数一个返回值

修正:第一个参数标识返回类型,第二个以后的为参数列表

简化泛型匿名方法:Func<int,int,int> funcdemo=delegate(int a ,int b){return a+b;}

继续简化→labmda语句:Func<int,int,int> funcdemo=(int a,int b)=>{return a+b};

继续简化→labmda表达式:Func<int,int,int> funcdemo=(int a,int b)=>a+b;

继续简化→labmda 表达式:Func<int,int,int> funcdemo=(a,b)=>a+b;

微软定义的俩个泛型:Func有返回值   Action无返回值

左侧为要输入的参数,右侧为要求值的表达式或方法体

  1. 读取文件System.IO;

OpenFileDialog ofd=new OpenFileDialog();using

If(ofd.showDialog()!=system.windows.forms.DialogResult.OK){return;}

FilesStream  fs=new FileSteam(ofd.filename,FileModel.Open,FileAccess.Read)using

{

Streamreader sr=new steamreader(fs)

{   while(!st.endofstream)但读取器不为最后一行的时候,否则就跳出循环

{string line=sr.readerline()}

}

保存saveFileDialog sfd=new SaveFileDialog();

If(sfd.showDialog()!=system.windows.forms.DialogResult.OK){return;}

Streamwrite sw=new streamwtite(sfd.filename,false,encoding.default,1024*1024);

Sw.write(string);sw.flush();

或者

FileSteam fs=new FileSteam(sfd.fileName,filename.openorcrate,fileAccess.readWrete)

{  string txt=要写的字符串.replace(“\n”,”\r\n”); byte[]data=encoding.defalut.getBytes(txt);

Fs.write(data,0,data.length);}

时间: 2024-11-05 11:50:52

委托,多播的相关文章

C#多播委托/多播代理

定义:委托是一种在对象里保存方法引用的类型,同时也是一种类型安全的函数指针.理解委托的一种方式可以把委托的作用当作是给方法签名指定名称.委托的定义类似于方法的定义,但没有方法体,定义的委托名前要加上关键字delegate. 因为定义委托基本上是定义一个新类,所以可以在定义类的任何地方定义委托,既可以在另一个类的内部定义委托,也可以在所有类的外部定义委托,还可以在命名空间中把委托定义为顶层对象.根据定义的可见性,可以在委托定义上添加一般的访问修饰符:public.private和protected

C#委托多播

class Program { static void Main(string[] args) { Action<double> ops = MathOperations.Mutiply; ops += MathOperations.Squre; ops.Invoke(3); } } public class MathOperations { public static void Mutiply(double value) { Console.WriteLine("result:{0

多播委托(from www.sysoft.cc)

一个委托类型实列不仅可以绑定一个方法,其实可以实现多个方法的绑定,即多播委托,或委托链.如下: namespace 多播委托 {//定义具有反回值无参数的委托类型变量 public delegate int weito(); class Program { static void Main(string[] args) {//建立对应委托类型实列,并指定方法,通过增加方式,实现委托多播. //委托执行一般按照增加方法的顺序进行. weito kk = new weito(M1); kk += M

C# 泛型委托和多播委托

泛型委托的定义 泛型委托的作用可以使程序定义一个委托,满足多个需求,如需要定义一个int类型参数的委托和定义一个string类型类型的委托时,直接使用泛型,就可以减少多次定义委托 泛型委托定义时候只需要再方法名后加:<类型在方法中的名字> 类型可以是多个,多个类型之间用 ”,“ 逗号隔开 // 定义泛型委托 delegate void MyDelegate<T>(T str); // 定义返回值为泛型的委托 delegate Y MyDelegate1<T, Y>(T

委托和事件

一.委托:是一个能够引用方法的对象.创建委托时实际是创建一个方法引用的对象,创建的引用对象能够调用方法. 委托调用可以调用不同的方法,只需改变方法的引用即可.即委托调用方法是运行时确定,而非编译时确定. 就像声名一个object实例一样,声名的只是一个占位符,具体指向哪个对象在运行时可以动态指定.在委托中指定方法有限制:返回值,参数类型要相同. 委托声名:delegate ret-type delegatename(parameter-list) delegate 关键字声名委托 ret-typ

委托 (代码复习)

1 namespace DelegateDemo 2 { 3 //声明委托 4 public delegate void MyDel(); 5 //声明带参的委托 6 public delegate void MyDelAdd(int num1, int num2); 7 //声明带有返值的委托 8 public delegate string MyDelStrUp(string s); 9 10 //声明委托用于演示匿名方法 11 public delegate string ProcessS

C#_委托Delegate

委托 C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针.委托(Delegate) 是存有对某个方法的引用的一种引用类型变量.引用可在运行时被改变. 委托(Delegate)特别用于实现事件和回调方法.所有的委托(Delegate)都派生自 System.Delegate 类. 声明委托(Delegate) 委托声明决定了可由该委托引用的方法.委托可指向一个与其具有相同标签的方法.   1 delegate 函数返回类型 委托名 (<方法参数列表>); 实例化委托(Dele

《C#高级编程》读书笔记(五):委托

1,委托的概念 当需要把方法传递给其他方法时,需要调用委托.委托只是一种特殊类型的对象,其特殊之处在于,我们之前定义的所有对象都包含数据,而委托包含的只是一个或多个方法的地址. 委托的类型安全性非常高.在定义委托时,必须给出它所表示的方法的签名和返回类型等全部细节. 2,使用委托的场景 给一个方法传递的参数也是方法,而且编译时不知道第二个方法是什么,这个信息只能在运行时得到,所以把第二个方法作为参数传递给第一个方法. 3,简单的例子 public static string StrAddTwo(

委托详解

委托 为什么要使用委托: 我们习惯性的把数据当做参数传递给方法,如果给方法传递一个方法呢?但是往往有时候我们要给一个方法传递另一个方法.更麻烦的是,有时候我们并不知道程序在编译时才知道应该传递哪一个方法.但是.NET Framework语法是不允许直接调用方法的,必须把方法的细节封装在一种新类型的对象中,这个新类型就是委托.关键字是delegate.委托是一个特殊的类型对象,其特殊之处在于,我们以前定义的对象包含的是数据,但是委托保护哈韩的只是一个方法或多个方法的地址. 与委托相关的类与关键字(

C#之委托、事件、lambda

委托 委托是什么? 委托是一种封装方法的特殊机制,可以帮助程序员更灵活的调用相应的方法. 委托的使用 委托是一个可以引用方法的对象,所以在创建委托时,实际创建的是一个存储方法引用的对象.在程序运行期间,同一个委托能够用于调用不同的方法,只要改变它引用的方法就可以.所以,委托调用的方法不是在编译时确定的,而是在运行的时候确定的. 委托的声明 <span style="font-family:Microsoft YaHei;font-size:18px;">public del