MVC系列学习(一)-新语法
本篇内容:
|
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系列学习(一)-新语法的更多相关文章
- MVC系列学习(六)-Razor语法
注:本次代码加了样式,样式如下 <style> div { border: 1px solid red; margin: 10px auto; ...
- 1、ASP.NET MVC入门到精通——新语法
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在学习ASP.NET MVC之前,有必要先了解一下C#3.0所带来的新的语法特性,这一点尤为重要,因为在MVC项目中我们利用C#3.0的新特 ...
- ASP.NET 4(和ASP.NET MVC 2)中输出HTML编码的新语法<%:%>
今天的文章介绍了ASP.NET 4中引入的一个小而且非常有用的新语法功能 - 这是在代码块中自动对输出进行HTML编码的功能.这有助于保护您的应用程序和站点免受跨站点脚本注入(XSS)和HTML注入攻 ...
- 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的无状态模 ...
- MVC入门之.Net语法学习
本节中主要学习.Net框架性语法.开发者可以使用新语法提高编程的效率以及代码的运行效率:其本质都是“语法糖”,由编译器在编译时转成原始语法. u 自动属性 Auto-Implemented Prop ...
- 返璞归真 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 ...
- 二:MVC之LINQ查询语法
LINQ(Language Integrated Query)语言集成查询是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以操作内存数据的方式,查询数 ...
- [C#] 回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性
回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性 序 目前最新的版本是 C# 7.0,VS 的最新版本为 Visual Studio 2017 RC,两者都尚未进入正式阶段.C# 6.0 ...
- qt5中信号和槽的新语法
qt5中的连接 有下列几种方式可以连接到信号上 旧语法 qt5将继续支持旧的语法去连接,在QObject对象上定义信号和槽函数,及任何继承QObjec的对象(包含QWidget). connect(s ...
随机推荐
- hdu 2224 双调欧几里得旅行商问题tsp
/* 题意:平面上n个点,确定一条连接各点的最短闭合旅程且每个点仅用一次.这个解的一般形式为NP的(在多项式时间内可以求出) 建议通过只考虑双调旅程(bitonictour)来简化问题,这种旅程即为从 ...
- [K/3Cloud] 如何在k3Cloud主页实现自定义页面的开发
过自定义页签动态添加一些内容,比如网页链接.图片等. 如果是动态的增加链接,可以参考一下代码,然后在ButtonClick事件里面对链接进行处理. public override void After ...
- php获取代理服务器真实内网IP方法
功能:获取用户真实IP地址,代理服务器内网IP,防HTTP_CDN_FORWARDED_FOR注入 function getIP() { if (isset($_SERVER["HTTP_ ...
- HDU1565 方格取数1(构图+网络流最大独立集合)
题目大意:给你一个n*n的格子的棋盘,每个格子里面有一个非负数. 从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和最大. 解题思路:最大点 ...
- 5、Java并发性和多线程-相同线程
以下内容转自http://tutorials.jenkov.com/java-concurrency/same-threading.html(使用谷歌翻译): 相同线程(同一线程)是一种并发模型,其中 ...
- C++中设计一个类,使其不能继承
1.C++11中已经有了final关键字:它的作用是指定类的虚函数不能被该类的继承类覆盖(override),或者是指定一个类成为一个不能被继承的类(final class) 2.派生类用调用基类的构 ...
- ssh连接断开后 shell进程退出
问题描述:当SSH远程连接到服务器上,然后运行一个服务 ./catalina.sh start,然后把终端开闭(切断SSH连接)之后,发现该服务中断,导致网页无法访问. 解决方法:使用nohup命 ...
- 一份关于jvm内存调优及原理的学习笔记(转)
JVM 一.虚拟机的基本结构 1.jvm整体架构 类加载子系统:负责从文件系统或者网络中加载class信息,存入方法区中. 方法区(Perm):存放加载后的class信息,包括静态方法,jdk1.6以 ...
- 常见的各品牌路由器默认IP地址汇总清单
常见的各品牌路由器默认IP地址汇总清单 下面是各常见品牌路由器的默认IP清单: 如果您使用的设备品牌不在上述列表中,也可以试着访问下RouterIPAddress.com或SetupRouter.co ...
- [Vue @Component] Control Template Contents with Vue's Render Function
Declaring templates and elements inside of templates works great for most scenarios. Sometimes you n ...