C#3 几乎所有的新特性都是为LINQ服务的,但他们单独使用也非常有用,接下来我们来简单看看C#3 的几个新特性吧。

一、自动实现的属性-----编写由字段直接支持的简单属性,不再显得臃肿不堪。

之前写属性时是大至是这样:

private string name;

        public string Name
{
get { return name; }
set { name = value; }
}

有了自动属性后是这样子的:

public string Name { get; set; }

在C#3中还是可以使用之前字段和属性的写法,主要是因为有些字段的值在要在get,set中进行控制,但大多数属性还是没有控制的,所以用自动属性更方便。

二、隐式类型的局部变量-----根据初始值推断变量的类型,从而简化局部变量的声明。

1、写法

如果要使用隐式类型,唯一要做的就是将普通局部变量声明中的类型名称替换为var

var args = Environment.GetCommandLineArgs();

三、对象和集合初始化程序-----用一个表达就能轻松的创建和初始化对象。

现在有一个对象

public class Person
{
public int Age { get; set; }
public string Name { get; set; }
public Person() { }
public Person(string name) { }
}

在C#3之前可以采用如下两种方式初始化:

  //方法一:直接使用无参构造函数,然后设置这两个属性
Person person = new Person();
person.Age = 10;
person.Name = "andy"; //方法二:使用有参的构造函数
Person person2 = new Person("andy");
person2.Age = 20;

C#3之后又多了如下三种方式:

 //方法一
Person person1 = new Person() { Age = 1, Name = "andy" };
//方法二
Person person2 = new Person { Age = 2, Name = "andy" };
//方法三
Person person3 = new Person("andy") { Age = 3 };

四、隐式类型的数组-----根据内容推断数组的类型,从而简化数组的创建表达式。

有这样一个方法:

public string getPerson(string[] nameArry)
{
return nameArry[0];
}

C#3之前的写法:

 getPerson(new string[] {"andy","tom"});

C#3又多了一种写法:

getPerson(new[] { "andy", "tom" });

五、匿名类型-----允许你创建新的“临时”类型来包含简单的属性。

匿名类型服务一个更高的目标----linq

var tom = new { age = 10, name = "andy" };

深入学习C#系列文章01---C#3 革新写代码的新方式的更多相关文章

  1. KVM虚拟化学习笔记系列文章列表(转)

    Kernel-based Virtual Machine KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之k ...

  2. Redis 学习笔记系列文章之 Redis 的安装与配置 (一)

    1. 介绍 Redis is an open source (BSD licensed), in-memory data structure store, used as database, cach ...

  3. Learn-JavaScript-with-MDN 系列文章: 01. var & let & const 对比

    Learn-JavaScript-with-MDN 系列文章: 01. var & let & const 对比 var & let & const 区别 https: ...

  4. ML.NET学习笔记 ---- 系列文章

    机器学习框架ML.NET学习笔记[1]基本概念与系列文章目录 机器学习框架ML.NET学习笔记[2]入门之二元分类 机器学习框架ML.NET学习笔记[3]文本特征分析 机器学习框架ML.NET学习笔记 ...

  5. 从0开始学习 GitHub 系列之「04.向GitHub 提交代码」

    之前的这篇文章「从0开始学习 GitHub 系列之「Git速成」」相信大家都已经对 Git 的基本操作熟悉了,但是这篇文章只介绍了对本地 Git 仓库的基本操作,今天我就来介绍下如何跟远程仓库一起协作 ...

  6. Hadoop学习笔记系列文章导航

    一.为何要学习Hadoop? 这是一个信息爆炸的时代.经过数十年的积累,很多企业都聚集了大量的数据.这些数据也是企业的核心财富之一,怎样从累积的数据里寻找价值,变废为宝炼数成金成为当务之急.但数据增长 ...

  7. .NET Core on K8S学习实践系列文章索引(Draft版)

    一.关于这个系列 自从去年(2018年)底离开工作了3年的M公司加入X公司之后,开始了ASP.NET Core的实践,包括微服务架构与容器化等等.我们的实践是渐进的,当我们的微服务数量到了一定值时,发 ...

  8. ASP.NET Core快速入门--学习笔记系列文章索引目录

    课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 抓住国庆假期的尾巴完成了此系列课程的学习笔记输出! ASP.NET Core快 ...

  9. 《神经网络和深度学习》系列文章十二:Hadamard积,s⊙t

    出处: Michael Nielsen的<Neural Network and Deep Learning>,点击末尾“阅读原文”即可查看英文原文. 本节译者:哈工大SCIR本科生 王宇轩 ...

  10. 《神经网络和深度学习》系列文章三:sigmoid神经元

    出处: Michael Nielsen的<Neural Network and Deep Leraning>,点击末尾“阅读原文”即可查看英文原文. 本节译者:哈工大SCIR硕士生 徐伟 ...

随机推荐

  1. 开心档之Java 测验

    目录 Java 测验 Java 测验 Java 测验技术文档 Java测验是一种衡量Java编程水平的测试,可以通过一系列问题和编程任务来测试Java开发人员的技能水平和理解程度.Java测验可以用于 ...

  2. 火山引擎VeDI落地消费行业数据飞轮,提出“四更”新主张

    7月6日,火山引擎数智平台(VeDI)<全链路增长:数据飞轮转动消费新生力>主题活动在北京举办,会上分享了行业.企业.产品视角下的数据飞轮实践,并针对消费行业提出业务应用"四更& ...

  3. BitSail“拍了拍”你,并给你一份快速入门指南

    本 Quick Guide 面向 BitSail 新手入门使用人员,从源码编译.产物结构.如何提交作业.实机演示等多方面带领大家迅速入门 BitSail,从 0 到 1 了解并完成 BitSail 基 ...

  4. Solon Web 开发:三、一个简单的 Web 模板项目(或示例)

    演示 web 程序的常用能力: 控制器.请求参数.参数校验.跳转 过滤器.全局异常处理 静态文件 动态模板 动态模板公共变量及控制器基类 日志 Json 渲染格式控制 模板下载: 打包成 jar ,可 ...

  5. 解密Prompt系列1. Tunning-Free Prompt:GPT2 & GPT3 & LAMA & AutoPrompt

    借着ChatGPT的东风,我们来梳理下prompt范式的相关模型.本系列会以A Systematic Survey of Prompting Methods in Natural Language P ...

  6. 你不知道的JavaScript APIs

    前言 在本文中,将介绍一些鲜为人知但却非常有用的API,如: Page Visibility API Web Share API Broadcast Channel API International ...

  7. 两个List< string>比较是否相同的N种方法,你用过哪种?

    今天在一技术群看一群大佬讨论: 有没有优雅的写法,比较两个List集合中的元素是不是完全一致... 站长最近也无聊,通过群里的聊天记录和给出的参考链接,简单做做总结,万一后面大家能用上呢? 我们做简单 ...

  8. Scan Synthesis Practice

    不同上升沿触发器如何进行scan chain DFT实例 Synopsys 工具文档 Mentor DFT脚本 add_clocks 0 clk - 0表示上升沿 Synopsys DFT脚本 更改n ...

  9. 【C/C++】sscanf函数和正则表达式

    此文所有的实验都是基于下面的程序:char str[10];for (int i = 0; i < 10; i++) str[i] = '!';执行完后str的值为str = "!!! ...

  10. 选择DOM中除一个元素以外的所有元素[Jquery]

    $(function(){ $('body > *').not('#myDiv') .on('mouseover', function(){ //... }) .on('click', func ...