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

c 网站建设大作业代码深圳微信公众平台开发网站开发

c 网站建设大作业代码,深圳微信公众平台开发网站开发,平台网站应该怎样做seo,免费手机网站商城01.新语法 本章中主要讲解.Net框架性语法。开发者可以使用新语法提高编程的效率以及代码的运行效率#xff1b;其本质都是“语法糖”#xff0c;由编译器在编译时转成原始语法。 1 自动属性 Auto-Implemented Properties 2 隐式类型 var 3 对象初始化器 与 集合初始化器 { …01.新语法 本章中主要讲解.Net框架性语法。开发者可以使用新语法提高编程的效率以及代码的运行效率其本质都是“语法糖”由编译器在编译时转成原始语法。 1 自动属性 Auto-Implemented Properties 2  隐式类型 var 3  对象初始化器 与 集合初始化器 { } 4  匿名类 匿名方法 5  扩展方法 6  系统内置委托 Func / Action  Predicate (bool (T)) / Comparison (int (T,T)) 7  Lambda表达式 8  标准查询运算符 Standard query operator 9  LINQ查询表达式   Mvc框架简介 浏览器请求 服务器的 某个控制器类 的 Action方法方法中可以调用业务层等代码处理业务并产生数据Model交给视图引擎视图引擎会找到对应视图并将数据 “填充到“视图上对应的位置最终产生整个页面的Html代码返回给浏览器。   关于编译器 编译器会在编译的时候按照C#语法检查代码C#语法规定变量只能调用其声明类型的成员如果声明是父类则只能调用对象里的父类成员 自动属性 回顾传统属性概念 属性的目的封装字段控制 1.读写权限 及 2.字段的访问规则如年龄范围。 但平时主要是用来封装 读写权限。   回顾 语法缺点臃肿代码难看麻烦 int id; //字段 public int Id //属性 {get { return id; }set { id value; } } 自动属性 语法只需要定义 无实现的属性语法 即可不需要定义字段。 public int Id { get; set; } public int Age { get; set; } public string Name { get; set; } 查看源码 编译后也生成了对应的属性语法get和set方法 但同时帮我们生成了一个私有变量 总结 自动属性主要用在对 字段的 读写权限的封装帮助减少程序员代码让代码更好看但实质上在编译时还是会自动生成一个对应的字段的。 所以从这个意义上说自动属性就相当于是微软提供的一个“语法糖”了。   思考 用自动属性程序员写的代码少了机器做的事情就多了那我们到底要不要使用它 如果 是针对 读写权限的封装就推荐使用因为它是在编译的时候产生了负担并不是在运行的时候。不会影响客户运行程序时的效率 但是编译生成的代码也有一个显而易见的缺点语法太完整编译后的程序集会比较大。   隐式类型var 回顾传统变量定义方式 int age 11;//传统方式    隐式类型在初始化时就已经根据 右边的 值 确定了 var变量的类型了。 var age1 12; //age1123; var name 哈哈哈; var dog new Dog();age1 123; name 刘德华; dog.Id 11; 编译时已经 把var 转成了 相应的类型了。 注意 1.声明的同时必须初始化因为编译时要根据初始化值类型来推断var 2.声明后不能修改数据类型因为初始化时已经确定了var类型了 3.只能作为方法局部变量使用。类的成员字段、方法的形参和返回值都不能使用因为无法编译时确定他们的类型 4.初始化表达式不能是匿名函数和null。   查看源码var 已经不存在了都被替换成了 初始化值 的 类型。   对象/集合初始化器 ListDog InitList() {ListDog list new ListDog();for (int i 0; i 10; i){Dog d new Dog();d.Id i;d.Name Ruiky i;d.Age i * 2;d.Toy new DogToy();d.Toy.ToyId i;d.Toy.ToyName 狗狗玩具 i;list.Add(d);}return list; } 对象集合初始化器语法 用法1ListDog InitList(){ListDog list new ListDog();for (int i 0; i 10; i){Dog d new Dog{Id i,Name Ruiky i,Age i * 2,Toy new DogToy()//使用属性初始化器{ToyId i,ToyName 狗狗玩具 i}};list.Add(d);}return list;}//用法2ListDog InitList(){ListDog list new ListDog{new Dog(){ Id1, NameRuiky, Age1, Toy { ToyId1, ToyName小球}},new Dog(){ Id1, NameRuiky, Age1, Toy { ToyId1, ToyName小球}},new Dog(){ Id1, NameRuiky, Age1, Toy { ToyId1, ToyName小球}},new Dog(){ Id1, NameRuiky, Age1, Toy { ToyId1, ToyName小球}},new Dog(){ Id1, NameRuiky, Age1, Toy { ToyId1, ToyName小球}}};return list;} 用初始化器创建数组 Dog[] dogs {new Dog(){ Id1, NameRuiky, Age1, Toy new DogToy{ ToyId1, ToyName小球}},new Dog(){ Id1, NameRuiky, Age1, Toy new DogToy{ ToyId1, ToyName小球}},new Dog(){ Id1, NameRuiky, Age1, Toy new DogToy{ ToyId1, ToyName小球}},new Dog(){ Id1, NameRuiky, Age1, Toy new DogToy{ ToyId1, ToyName小球}},new Dog(){ Id1, NameRuiky, Age1, Toy new DogToy{ ToyId1, ToyName小球}} };   查看源码可以看到编译器帮我们实例化的集合或者数组并创建了元素对象设置给数组或集合。   匿名类 回顾 匿名类语法   a.避免过度的数据累积  b.为一种情况特别进行的数据封装   c.避免进行单调重复的编码 var obj new{Id 1,Name Ruiky,Age 2};   查看源码 1.编译器自动为 这个 【匿名类】 创建了一个无命名空间的类型。 2.在new 关键字处创建该匿名类对象 3.编译器创建的匿名类结构   注意 1. 当出现“相同”的匿名类的时候编译器只会创建一个匿名类 2. 编译器如何区分匿名类是否相同    根据           属性名属性值因为这些属性是根据值来确定类型的           属性个数属性的顺序。   匿名方法 回顾普通方法定义方式因为方法的存在是为了 复用 一段代码所以一般会给方法取个名字这个方法的引用就可以通过 方法名调用。 void Test(){Console.WriteLine(哈哈哈~);}   匿名方法但是有的方法不需要复用仅仅是使用一次就够了所以不需要方法名这种方法就叫做匿名方法。 匿名方法必须结合 委托 使用。潜在的意思就是尽管没有方法名了但方法的指针还是存放在了某个委托对象中 如现在为线程指定要执行的方法的时候就可以使用匿名方法了。 注意 1.在编译后会为每个匿名方法创建一个 私有的静态方法然后将此静态方法传给 委托对象使用。   扩展方法 为什么要有扩展方法      就是为了在不修改源码的情况下为某个类 增加新的方法。 语法 定义静态类并添加public的静态方法第一个参数 代表 扩展方法的扩展类。 a)       它必须放在一个非嵌套、非泛型的静态类中(的静态方法); b)       它至少有一个参数; c)       第一个参数必须附加 this 关键字; d)       第一个参数不能有任何其他修饰符out/ref e)       第一个参数不能是指针类型   public static class DogExtention{public static string SayHi(this Dog dogObj){return string.Format(哈哈哈哈~~~我叫{0}!, dogObj.Name);} } //----------------------- //使用扩展方法 Dog d new Dog() { Id 1, Name 0094, Age 11, Toy new DogToy() { ToyId1, ToyName小骨头 } }; string str d.SayHi();//调用扩展方法此时的对象d就作为第一个参数传到了扩展方法中 编译后 string str DogExtention.SayHi(d);   注意 1.当我们把扩展方法定义到其它程序集中时一定要注意调用 扩展方法的环境中包含 扩展方法所在的命名空间。如在Extention下为String类添加一个扩展方法 然后在页面中使用时要记得导入命名空间否则调用不到扩展方法 2.扩展方法需要使用特性ExtensionAttribute当前程序中必须包含程序集ComplilerServices否则报错如下 注此程序集默认在FrameWork3.5开始自动包含。 3.因为扩展方法的本质是被编译后替换成静态方法所以 对象本身 可以为 null但是在这个扩展方法中如果访问了第一个参数则会报“空指针异常”。 查看源码 1.通过源码看到在执行 string str d.SayHi();的地方编译后变成了 这个扩展方法通过静态类的调用方式代码。由此可见扩展方法并没有被扩展到Dog类中只不过是在编译的时候替换成了静态类里的静态方法而已。d.SayHi()就是一个语法糖 思考如果 Dog类中本身就包含 SayHi方法那会怎么样 但同时包含同名的 实例方法 和 扩展方法时优先调用实例方法。   泛型委托  回顾通过【比较接口】方式 让 Dog集合 根据Dog的id排序需要写一个IComparerDog接口的实现类在类中重写 接口的 Compare方法来返回 正整数/0/负整数。 接口 实现类比较器 然后将实现类对象传入集合的Sort方法 使用泛型委托 匿名方法实现 ListT集合类中包含 新的排序方法根据 泛型委托ComparisonT 完成比较过程。 public void Sort(ComparisonT comparison); 看看这个ComparisonT 泛型委托 public delegate int Comparisonin T(T x, T y); 修改调用的方法 常用系统泛型委托 1.System.Func 代表有返回类型的委托 public delegate TResult Funcout TResult(); public delegate TResult Funcin T, out TResult(T arg); ...... 注输入泛型参数-in 最多16个输出泛型参数 -out 只有一个。 2.System.Action 代表无返回类型的委托 //list.ForEach public delegate void Actionin T(T obj); public delegate void Actionin T1, in T2(T1 arg1, T2 arg2); ...... 注:参数最多16个 3.System.PredicateT 代表返回bool类型的委托 //list.Find public delegate bool Predicatein T(T obj); 4.System.ComparisonT 代表返回int类型的委托 - 用作比较两个参数的大小 public delegate int Comparisonin T(T x, T y); //list.Sort   关于泛型委托的泛型参数列表的 in 和 out //泛型委托 的 in 泛型参数 代表 可以被作为 参数列表的类型 // out 泛型参数 代表 可以被作为 返回值的类型 public delegate T2 DgSayin T,out T2(T t1);     Lambda表达式 回顾发现上面的代码需要传一个 匿名方法 写起来特别别扭。 能否有简化的语法呢有Lambda表达式。 概念 Lambda表达式有两种 语法 ListDog list InitList(); //list.FindAll(delegate(Dog d) { return d.Id 2; }); //1.表达式 Lambda list.FindAll(d d.Id 2);// goes to list.ForEach(d Response.Write(d.ToString() br/));//2.语句 Lambda list.ForEach(d { if (d.Id 2) Response.Write(d.ToString() br/); }); 语法进化史 查看源码 C#语法list.FindAll(d d.Id 2); 编译成中间代码后代码太多简而言之如下 编译器帮我们 1.声明一个 PredicateDog委托变量 2.创建一个私有的符合委托签名的静态方法 3.实例化委托变量并将方法 传入 4.调用list.FindAll方法并传入委托变量。  转载于:https://www.cnblogs.com/lisong-home/p/8207086.html
http://www.pierceye.com/news/874629/

相关文章:

  • 电脑搭建网站需要空间wordpress文件夹权限设置方法
  • 建设网站基础医疗网站建设比较好的
  • 建个网站视频教程小程序开发是前端还是后端
  • 广州分享网站建设网站速度查询
  • 做电商网站价钱传奇类网页游戏大全
  • 如何选择南京网站建设网站制作能赚多少钱
  • 一站式网站设计已有域名如何在花生壳网站做二级域名托管
  • 哪个网站可以接图纸做返利网站怎么做的
  • 旅游网站建设国内外现状辽阳专业建设网站公司
  • 免费视频模板网站wordpress不写代码
  • 设计网站公司 露 联湖南岚鸿小程序网站开发公司
  • 聊城网站设计seo公司重庆
  • 网站布局技术厦门网站建设680元
  • 深圳物流公司网站建e网怎么做效果图
  • 做营销网站公司建个个人网站一年多少钱
  • 阆中网站网站建设代理网络服务器
  • 企业网站新模式seo排名推广工具
  • 山东做网站三五个人网页设计作品简单
  • 福州网站建设软件网站做了301怎么查看跳转前网站
  • 网站开发竞品分析网站开发与规划
  • 香山红叶建设有限公司网站网络营销方式落后的表现
  • 合肥百姓网网站建设263云通信官方网站
  • 深圳建设网站seo 手机电商数据分析师
  • 网站内外链怎么做公司建设包括哪些方面
  • 织梦网站环境搭建电子邮件怎么注册
  • 企业营销类专业网站app设计尺寸规范
  • 奈曼旗建设局网站建设旅游门户网站
  • 网站设计一般会遇到哪些问题wordpress文章关闭缩略图
  • 优质东莞网站制作公司thinkphp网站源码下载
  • 公司网站做一下多少钱最吉利旺财的公司名字