当前位置: 首页 > news >正文

自适应网站建设模板wordpress 图片整理

自适应网站建设模板,wordpress 图片整理,wordpress去除 版权,新手建网站什么类型好一、委托 1.1概念 委托是一种引用类型#xff0c;它可以用于封装并传递方法作为参数。委托可以理解为是一个指向方法的**“指针”#xff0c;它允许将方法作为参数传递给其他方法或存储在数据结构中#xff0c;然后稍后调用这些方法。#xff08;委托可以看作时函数的容器…一、委托 1.1概念 委托是一种引用类型它可以用于封装并传递方法作为参数。委托可以理解为是一个指向方法的**“指针”它允许将方法作为参数传递给其他方法或存储在数据结构中然后稍后调用这些方法。委托可以看作时函数的容器** 1.2目的作用 委托的目的就是将方法当作参数进行传递 封装变化的请求 1.3定义 委托将方法作为参数进行传递 方法是有签名( 签名返回值类型 参数列表(参数的个数 参数类型))。委托需要和方法有相同的签名 也就是说委托和方法 要参数相同 返回值相同 你才可以引用这个方法。访问修饰符public protected internal…委托的访问修饰符一般都定义成public因为我们的程序可能会涉及到跨程序集调用。委托和类是平级的 不要定义在类里面 //01定义委托public delegate void DelTest();internal class Program{static void Main(string[] args){ //03.创建委托对象两种方式DelTest delTest new DelTest(Test);//或者 创建委托变量可以省略new 关键字直接将要传递的方法赋值即可注意,方法在赋值的时候,不要写();//虽然我们没有创建委托对象(new出来的才叫对象)但是编译器在编译代码的是很好还是去帮助我们new了委托对象DelTest delTest1 Test;//04.调用委托两种方式委托名字();或者委托名字.Invoke();delTest();delTest.Invoke();//调用委托对象里面存在的方法// delTest1();}//02.定义方法public static void Test(){Console.WriteLine(没有参数没有返回值);}} }1.4匿名方法创建委托 当使用的方法只使用一次时没必要单独创建一个方法直接定义委托对象时创建匿名方法 DelTest delTest delegate () { Console.WriteLine(没有返回值没有参数); };//后面加封号 delTest();匿名方法允许你在需要委托的地方直接定义方法体而不需要显式地创建一个单独的方法。 //没有参数 没有返回值 DelTest1 delTest1 delegate () { Console.WriteLine(没有参数 没有返回值); }; delTest1();//没有参数 有返回值 DelTest2 delTest2 delegate () { return 没有参数 有返回值; }; Console.WriteLine(delTest2());//有参数 没有返回值 DelTest3 delTest3 delegate (string str) { Console.WriteLine(有参数 没有返回值str); }; delTest3(delTest3);//有参数 有返回值 DelTest4 delTest4 delegate (int n1,int n2) { return n1 n2; }; Console.WriteLine(delTest4(10,20));//没有参数 没有返回值 public delegate void DelTest1(); //没有参数 有返回值 public delegate string DelTest2(); //有参数 没有返回值 public delegate void DelTest3(string name); //有参数 有返回值 public delegate int DelTest4(int n1,int n2);1.5委托Lambda方式简化创建常用 Lambda格式 (parameters) expression其中parameters是传递给委托的参数列表可以是空的或包含多个参数expression是一个表达式它将计算并返回给委托调用者的值。 2. 创建委托匿名函数Lambda委托 1.没有参数 没有返回值 1.1匿名方法 DelTest1 delTest1 delegate () { Console.WriteLine(没有参数 没有返回值); }; delTest1();1.2lambda1 DelTest1 delTest11 () { Console.WriteLine(没有参数 没有返回值); }; delTest11();图中箭头指向的地方对应位置作用一样 2.有参数 没有返回值DelTest3 delTest3 delegate (string name) { Console.WriteLine(name); }; delTest3(有参数 没有返回值);DelTest3 delTest31 (name) { Console.WriteLine(name); };当你是一个参数的时候可以去掉() 但是你没有参数列表的时候需要加上() DelTest3 delTest32 name { Console.WriteLine(name); }; delTest31(有参数 没有返回值);1.6Action/Func创建委托 Action委托本身不包含返回值主要封装那些没有返回结果的函数。Func委托则可用于需要返回值的情况。 //00、自己定义的泛型委托 DelTest4int delTest4 n1 { Console.WriteLine(n1); }; delTest4(230); 泛型委托 public delegate void DelTest4T(T t);//01、 Action //Action就是系统帮我们定义好的一个没有参数没有返回值的委托 //委托 没有参数没有返回值 直接使用 不需要再去定义一个委托 Action action () { Console.WriteLine(a); }; //调用内置委托和调用普通委托一样 action();//TResult 代表返回值的类型 //第一个int 表示参数一为int类型 //第二个int 表示参数二为int类型 //第三个int 表示参数三为int类型 //第四个string 表示参数四为返回值为string //最后一个永远是返回值 Funcint, int, int,string func (n1, n2,n3) { return 张三的成绩为n1n2n3; }; Console.WriteLine(func(100, 200,300)); 1.7多播委托 多播委托时为了让同一个委托对象一行调用多个方法同时执行如游戏中一个人物按下开火键委托对象手中的冲锋枪和步枪同时开火如果不使用多播委托需要先进行武器切换选择其中一个进行开火。 Action action M1; //如果使用 多播委托 必须在调用之前进行绑定//多播委托和字符串拼接类似 每拼接一次 在实际的内存中 都会创建一个新的委托对象 //我们看到的是一个委托对象指向了多个方法 //实际上每次拼接后 创建出来新的对象结果action M2; action M3; action M4; action M5;//从结果来看 多播委托的调用是顺序的 但是不代表多播委托 的调用就是顺序的 微软随时可以改变顺序//使用队列action();static void M1() {Console.WriteLine(我是第1个方法); } static void M2() {Console.WriteLine(我是第2个方法); } static void M3() {Console.WriteLine(我是第3个方法); } static void M4() {Console.WriteLine(我是第4个方法); } static void M5() {Console.WriteLine(我是第5个方法); }1.8委托注意事项 委托不能为空为空的委托不能调用报错 空委托不能调用所以使用委托前要进行判断 if(attack!null) {attack();//调用委托 }上面的方式过于繁琐可以简化 //无参数 attack?.Invoke(); //有参数 attack?.Invoke(a,b);二、事件 1.概念 C#中的事件是一种特别的委托它可以被多个方法订阅并且在特定情况下触发这些方法的执行。 2.使用 2.1事件的定义 声明事件在C#中事件通常通过event关键字声明。它定义了一个可以由多个方法订阅的特殊类型的委托。例如声明一个没有返回值且不带参数的事件public event Action MyEvent;。委托类型事件的背后是一个委托类型它定义了订阅事件的方法的签名。例如使用内置的Action委托或自定义委托来定义事件。访问修饰符事件的声明可以包含访问修饰符如public或private以控制对事件的访问级别。 2.2事件的订阅 订阅事件订阅事件是通过运算符完成的。例如myObject.MyEvent MyMethod;其中MyMethod是响应事件的方法。触发事件当特定条件满足时事件会被触发。这通常是在类的内部通过EventName?.Invoke()形式调用。例如MyEvent?.Invoke();会触发所有订阅了MyEvent的方法。取消订阅使用-运算符可以取消事件订阅如myObject.MyEvent - MyMethod;。 3.案例 委托会遇到的问题 //问题1我们通过委托来实现事件 由于委托在定义的时候一般都定义成public 这样就导致了 用户端 不给委托赋值的情况了也可以直接调用 //问题2由于委托本质上就是一个数据类型 所以如果赋值为null的话 就会把之前的值覆盖掉 变成一个null对象 //01、直接调用没赋值的委托可以调用但是这是不正确的 musicPlayer.BeforePlayMusic(); musicPlayer.AfterPlayMusic();//02、直接调用事件 //外界不允许直接调用事件 因为事件的语法规定了这一点 musicPlayer.BeforePlayMusic(); musicPlayer.AfterPlayMusic();//通过音乐播放器 讲解事件在程序中是啥//实例化音乐播放器类 MusicPlayer musicPlayer new MusicPlayer(); musicPlayer.BeforePlayMusic () { Console.WriteLine(加载我们的歌词); }; musicPlayer.AfterPlayMusic () { Console.WriteLine(跳转下一曲); };musicPlayer.BeforePlayMusic null; musicPlayer.AfterPlayMusic null;//用户单击了播放按钮 musicPlayer.StartMusic(); musicPlayer.EndMusic();//通俗的说就是发生【某个变化】的是时候 触发某段代码 //没有用到事件---- - 没有发生变化 //需求1: 我希望在播放音乐之前 能够加载我们的歌词 //需求2我希望播放音乐结束后 能够自动跳转下一曲 //需求应该交给用户 委托 class MusicPlayer {//01、声明两个事件public event Action BeforePlayMusic;public event Action AfterPlayMusic;//播放音乐 不能给别人调用private void MusicPlay(){//判断用户是否是会员//判断用户播放的音乐是否是会员音乐//去数据量里面加载音乐文件//开始播放.....//加载我们的歌词BeforePlayMusic();Console.WriteLine(音乐播放中);}//点击按钮播放音乐public void StartMusic(){this.MusicPlay();Thread.Sleep(2000);}public void EndMusic(){Console.WriteLine(音乐关闭中);AfterPlayMusic();//跳转下一曲}}三、委托与事件区别 事件只能在类的内部进行触发不能在类的外部进行触发。而委托在类的内部和外部都可触发事件是一个特殊的委托查看反编译工具之后的代码发现事件是一个 private 委托 委托测试 //03、触发类内部定义的委托 Test te new Test(); te.SayHello(); //04在类外部进行委托对象赋值并处罚 Test.Foo fo () { Console.WriteLine(02、类外部触发的委托); }; fo();//创建类 class Test {//01定义委托 public delegate void Foo();public void SayHello(){//02在类内部对委托对象进行赋值Foo fo() { Console.WriteLine(01、类内部触发的委托); };fo();}}事件测试 //03实例化类并触发事件 Test te new Test(); te.SayHello();class Test { //01、定义事件public event Foo Foo1;public void SayHello(){//02、方法绑定Foo1 () { Console.WriteLine(类内部触发的事件); };Foo1();}}//02类外部进行绑定方法并触发 te.Foo1 () { Console.WriteLine(a2); }; te.Foo1();class Test {//01定义事件public event Foo Foo1; }报错事件无法在类的外部进行触发
http://www.zqtcl.cn/news/503417/

相关文章:

  • 海外如何淘宝网站建设2022新闻大事件摘抄
  • 仿win8 网站淘宝客网站开发视频教程
  • 宣威做网站建设的公司哈尔滨网站建设公司名字
  • 学网页设计在哪学关键词优化公司前十排名
  • 菏泽定制网站建设推广无固定ip 建设网站
  • wordpress网站制作教程视频百度云域名购买
  • 软件最全网站株洲网站排名优化价格
  • 购物便宜的网站有哪些家居企业网站建设讯息
  • 美橙网站产品详情深圳做网站的公司哪个好
  • 江苏省建设注册中心网站平面设计要素
  • 厦门网站建设_策划公司
  • 惠州建网站服务网站建设价格是哪些方面决定的
  • 如何在百度上做公司做网站搜索百度网页版
  • 松江新城投资建设发展有限公司网站产品营销文案
  • 哪个网站有做彩平的材质贴图广州app开发公司排行十强
  • 泉州网站设计蜜桃传奇免费网页版
  • 做建筑机械网站那个网站好茂名网站开发服务商
  • 网站建设制作方法网站设计昆明
  • 设计一个自己的电商网站中国建设银行官网首页登录
  • 肇庆自助网站建设系统南通网站建设项目
  • 道农网站建设工作网站开发制作
  • 网页游戏网站快手wordpress hppts
  • 男男做h的视频网站德邦公司网站建设特点
  • 嘉兴市建设教育网站html5从入门到精通
  • 双语言网站源码在哪个网站可以找到做国珍的人
  • 广州建设网站哪家好烟台网站建设地址
  • 网址注册了怎么做网站wordpress截取标题
  • 网站备案一个主体龙岩网站建设行情
  • 深圳做网站的公司烟台网站开发技术
  • 网站开发就业前景分析手机网站导航设计