博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 3.0新语言特性和改进(一)
阅读量:5975 次
发布时间:2019-06-20

本文共 2678 字,大约阅读时间需要 8 分钟。

引言

 关于C#3.0的特性,园子里已经有了一大把,可能大家都很熟悉了,虽然本人开发中使用过,但自己还是需要记录一下,总结一下。同时也是后面写Linq知识的基础。希望有兴趣的朋友,可以看看。

 C# 3.0新语言特性和改进包括:

  • 自动属性
  • 隐含类型局部变量
  • 匿名类型
  • 对象与集合初始化器
  • 扩展方法
  • Lambda表达式和Lambda表达式树

1. 自动属性

    自动属性可以避免我们编写实体类时声明私有变量和get/set的逻辑,取而代之的是,编译器会自动为你生成一个私有变量和默认的get/set 操作。

   在.Net2.0中我们这样定义一个Product类。

public class Prodcut    {        private string _productid;        public string Productid        {            get { return _productid; }            set { _productid = value; }        }        private string _prodcutname;        public string Prodcutname        {            get { return _prodcutname; }            set { _prodcutname = value; }        }    }

 自动属性写法:

public class Prodcut    {        public string _productid { get; set; }        public string _prodcutname { get; set; }    }

像上面空的get/set属性的话,类中会自动生成一个成员变量和公开的get/set,也可以分别设置get/set的访问级别,如下

public class Prodcut    {        public string _productid { get; private set; }        public string _prodcutname { private get; set; }    }

 2. 隐含类型局部变量

 C# 3.0中引进了新的关键字var,在声明局部变量时可用于替代原先的类型名,那么这个声明被视作隐式类型局部变量声明。

var i = 5;var j = "Hello World";var k = 50.36;var x;  //错误var y = null;  //错误var z = { 1, 2, 3 };  //错误

 去掉错误代码,我们调试状态下,查看数据类型

隐含类型局部变量要点:

  • var局部变量必须初始化。
  • var关键字可以指示编译器通过右侧的初始化部分来推断实际的数据类型。 
  • 在编译时表达式的类型不能为null类型。
  • 初始化语句可以是表达式,不可以为空,且编译可以判断类型,一旦初始化后,只可以存储这种类型。
  • var 只可以声明局部变量,不可以是全局的,同时也可以用于foreach、for、Using等语句中。
  • 初始化话不能是自身对象和或者集合初始化器,但是可以包含一个对象或者初始化器的一个new表达式。

3.匿名类型

1. 什么是匿名类型?

匿名类型,顾名思义就是没有名字(表面看不到,类名由编译器自动产生)的类型。

2. 匿名类型的作用?

当需要定义类来封装一些相关数据,而不需要任何相关联的方法、事件,而且这个类不需要在项目中重用时,我们也可考虑使用匿名类型来简化我们的操作。

3. 用法

var User = new { Name = "swich", Url = "http://www.cnblogs.com/liujie2272" };

上面匿名类型,编辑会认为User相当于:

public class User    {        public string Name { get; set; }        public string Url { get; set; }    }

 数组匿名类型:

var array = new[]   {         new { Name = "ZhangSan", Age = 26 },         new { Name = "LiSi", Age = 25 }  };

 

匿名类型要点:

  • 可以使用new关键字调用匿名对象创建匿名对象。
  • 匿名类型继承自System.Object。
  • 匿名类型的类型由编译器根据初始化器推断而来的一些读写属性。

4.对象与集合初始化器

1. 对象初始化器

在.Net 2.0中非常依赖属性,当生成对象实例和使用对象时,我们是这样写的:

User user = new User(); user.Name = "swich"; user.Url = "http://www.cnblogs.com/liujie2272";

 而在.Net 3.0中,对象初始化器由一系列成员对象组成,其对象必须初始化,用逗号间隔,使用{}封闭。我们可以这么写:

User User = new User { Name = "swich", Url = "http://www.cnblogs.com/liujie2272" };
List
list = new List
{ new User { Name = "swich", Url = "http://www.cnblogs.com/liujie2272" }, new User { Name = "swich", Url = "http://www.cnblogs.com/liujie2272" } };

2. 集合初始化器

集合初始化器由一系列集合对象组成,用逗号间隔,使用{}封闭。

List
sum= new List
{ 11,21,31,41,51};

转载于:https://www.cnblogs.com/liujie2272/p/5533683.html

你可能感兴趣的文章
zencart中query_factory.php中连接mysql次数
查看>>
fail2ban 保护linux安全(转载)已用于生产环境
查看>>
表格元素的添加和删除,计算器,全选全不反选
查看>>
数据约束
查看>>
网络营销第七课(1):制定SEO计划(网站相关数据分析)
查看>>
nginx rewrite 参数和例子
查看>>
mysqldump命令
查看>>
github上传代码步骤
查看>>
利用express搭建一个restful api 服务器
查看>>
(转)调整.NET控件WebBrowser的默认浏览器内核版本
查看>>
[导入]让你的WAP网站有更好的兼容性
查看>>
.NET Exceptionless 本地部署踩坑记录
查看>>
TOMCAT 的 CONTEXT
查看>>
航电OJ-2544最短路
查看>>
CF772E Verifying Kingdom
查看>>
雨林木风U盘装系统综合教程
查看>>
V-by-one
查看>>
让我欲罢不能的node.js
查看>>
python3基础知识学习记录
查看>>
10年.NET老程序员推荐的7个开发类工具
查看>>