本篇内容:

1.自动属性

2.隐式类型

3.对象初始化器和集合初始化器

4.匿名类型

5.扩展方法

6.Lambda表达式

1.自动属性

使用:

class Student
{
public string Name { get; set; }
public int Age { get; set; }
}

编译后,查看IL语言

CLR 为我们生成了,私有字段(.field)和对应的共有属性语法(get_Name(),set_Name(string))

本质:微软为我们提供了“语法糖”,帮助程序员减少代码

2.隐式类型

使用:

static void Main(string[] args)
{
var name = "张三";
var stu = new Student();
stu.Name = name;
}

编译后,查看源代码

在编译的时候,根据“=”右边的类型,推断出var的类型,所以在初始化时,var类型就已经确定了

3.对象初始化器和集合初始化器

static void Main(string[] args)
{
List<Student> listStu = new List<Student>()
{
new Student() {Age = 1, Name = "张三"},
new Student() {Age = 2, Name = "李四"},
new Student() {Age = 3, Name = "王五"}
};
Dictionary<int, string> dicStu = new Dictionary<int, string>()
{
{1, "张三"},
{2, "李四"}
};
}

编译后,查看源码

本质:编译器为我们实例化了集合,并创建了集合元素对象,再设置给集合

4.匿名类型

a.匿名类

定义:

static void Main(string[] args)
{
var stu = new
{
Id = 1,
Name = "张三",
Age = 18
};
}

编译后,查看IL代码

  发现编译器,为我们生成了一个类。这个类有一个 无返回值,带有对应参数的构造函数

b.匿名方法:

定义:

static void Main(string[] args)
{
DGSayHi dgHi = delegate { Console.WriteLine("你好啊"); };
dgHi();
Console.ReadKey();
}

编译后,查看IL语言

在看看这个方法

得出结论:编译器会为每一个匿名方法,创建一个私有的 静态的 方法,再传给委托对象使用

5.扩展方法

定义:静态类,静态方法,this关键字

static class StuExtention
{
public static void SayHi(this Student stuObj)
{
Console.WriteLine(stuObj.Name+",你好啊");
}
}

使用

static void Main(string[] args)
{
Student stu = new Student()
{
Age = 1,
Name = "张三"
};
stu.SayHi();
Console.ReadKey();
}

6.Lambda表达式

使用:

static void Main(string[] args)
{
//匿名方式
DGSayHi dgHi = delegate { Console.WriteLine("你好啊"); };
//Lambda语句
Action dgHi2 = () => { Console.WriteLine("我是Lambda语句,语句可以直接执行"); };
//Lambda表达式
Action dgHi3 = () => Console.WriteLine("我是Lambda表达式");
dgHi();
dgHi2();
dgHi3(); Console.ReadKey();
}

MVC系列学习(一)-新语法的更多相关文章

  1. MVC系列学习(六)-Razor语法

    注:本次代码加了样式,样式如下 <style>     div {         border: 1px solid red;         margin: 10px auto;    ...

  2. 1、ASP.NET MVC入门到精通——新语法

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在学习ASP.NET MVC之前,有必要先了解一下C#3.0所带来的新的语法特性,这一点尤为重要,因为在MVC项目中我们利用C#3.0的新特 ...

  3. ASP.NET 4(和ASP.NET MVC 2)中输出HTML编码的新语法<%:%>

    今天的文章介绍了ASP.NET 4中引入的一个小而且非常有用的新语法功能 - 这是在代码块中自动对输出进行HTML编码的功能.这有助于保护您的应用程序和站点免受跨站点脚本注入(XSS)和HTML注入攻 ...

  4. ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借

    ASP.NET MVC深入浅出系列(持续更新)   一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...

  5. MVC入门之.Net语法学习

    本节中主要学习.Net框架性语法.开发者可以使用新语法提高编程的效率以及代码的运行效率:其本质都是“语法糖”,由编译器在编译时转成原始语法. u  自动属性 Auto-Implemented Prop ...

  6. 返璞归真 asp.net mvc (9) - asp.net mvc 3.0 新特性之 View(Razor)

    原文:返璞归真 asp.net mvc (9) - asp.net mvc 3.0 新特性之 View(Razor) [索引页][源码下载] 返璞归真 asp.net mvc (9) - asp.ne ...

  7. 二:MVC之LINQ查询语法

    LINQ(Language Integrated Query)语言集成查询是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以操作内存数据的方式,查询数 ...

  8. [C#] 回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性

    回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性 序 目前最新的版本是 C# 7.0,VS 的最新版本为 Visual Studio 2017 RC,两者都尚未进入正式阶段.C# 6.0 ...

  9. qt5中信号和槽的新语法

    qt5中的连接 有下列几种方式可以连接到信号上 旧语法 qt5将继续支持旧的语法去连接,在QObject对象上定义信号和槽函数,及任何继承QObjec的对象(包含QWidget). connect(s ...

随机推荐

  1. 【Codeforces 427C】Checkposts

    [链接] 我是链接,点我呀:) [题意] 环里面的点只需要一个点就能全都保护 问你最少需要多少花费以及最少的点才能将所有的点都保护 [题解] 有向图的强连通分量求出所有的联通分量 显然每个联通分量里面 ...

  2. Linux下汇编语言学习笔记71 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  3. 非常适合新手的jq/zepto源码分析06 -- 事件模型

    复习下事件的有关内容: 1.现在用的绑定/删除: obj.addEventListener(type,fn,false) obj.removeEventListener(type) obj.attac ...

  4. Material-design icon生成插件

    在使用android studio开发android应用的过程.会遇到一些非常不错的插件,当中android-material-design-icon-generator-plugin 是一个Mate ...

  5. poj 1331 Multiply

    Multiply Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5179   Accepted: 2773 Descript ...

  6. Swift版音乐播放器(简化版)

    这几天闲着也是闲着,学习一下Swift的.于是到开源社区Download了个OC版的音乐播放器,练练手,在这里发扬开源精神. 希望对大家有帮助! 这个DEMO里.使用到了 AudioPlayer(对音 ...

  7. 输入两个整数n 和m,从数列1,2,3.......n 中任意取几个数, 使其和等于m ,要求将当中全部的可能组合列出来

    中兴面试题之中的一个.难度系数中. 题目描写叙述例如以下:输入两个整数n 和m,从数列1,2.3.......n 中任意取几个数, 使其和等于m ,要求将当中全部的可能组合列出来. 逻辑分析: 1.比 ...

  8. ObjectiveC开发教程--字符串的连接

    NSString *type = @"hello"; NSString *subtype = @"good"; NSString *typesub = [NSS ...

  9. Python核心编程学习笔记(一)

    1.把一个字符串赋值给变量str.先用print来显示变量的内容,然后用变量名称来显示: >>>str = 'Hello World!' >>>print str ...

  10. Objective-C NSFileManager 文件管理总结

    createFileAtPath //创建文件 NSFileManager *fm = [NSFileManager defaultManager]; NSString *strpath = [NSS ...