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. React Native 打包 App 发布 iOS 及加固混淆过程

    React Native 打包 App 发布 iOS 及加固混淆过程 摘要 本文将介绍如何使用 React Native 打包并发布 iOS 应用到 App Store,并介绍了如何进行应用的加固和混 ...

  2. Mybatis 模块拆份带来的 Mapper 扫描问题

    项目中,两个模块中都放了 Mapper,如下所示 @MapperScan(basePackages ={"com.vipsoft.his.mapper","com.vip ...

  3. zsh踩坑记录

    1. zsh: no matches found: uvicorn[standard] 方法一 # 在~/.zshrc中添加下面这句话 setopt no_nomatch # 然后source ~/. ...

  4. Java Kafka 消费积压监控

    Java Kafka 消费积压监控 后端代码: Monitor.java代码: package com.suncreate.kafkaConsumerMonitor.service; import c ...

  5. 供应链安全情报 | cURL最新远程堆溢出漏洞复现与修复建议

    漏洞概述 cURL 是一个支持多种网络协议的开源项目,被广泛集成到自动化构建.网络测试.网络数据采集以及其他网络相关的任务中,备受开发者和系统管理员青睐. cURL在2023年10月11日下午紧急发布 ...

  6. vue学习笔记 八、toRef的使用

    系列导航 vue学习笔记 一.环境搭建 vue学习笔记 二.环境搭建+项目创建 vue学习笔记 三.文件和目录结构 vue学习笔记 四.定义组件(组件基本结构) vue学习笔记 五.创建子组件实例 v ...

  7. java项目实战-tomcat-SpringMVC-基本用法01-day25

    目录 1. maven创建 war项目 2. SpringMVC 1. maven创建 war项目 什么是jar项目 什么是war项目? jar项目: 由main方法来开始的 直接依赖JVM就能编译运 ...

  8. 【MicroPython】生成micropython版本头文件 - py\makeversionhdr.py

    用法 $ python makeversionhdr.py mpversion.h 实现 带git仓 get_version_info_from_git 使用git指令:   git describe ...

  9. 【MicroPython] 用 c 添加接口 -- 添加 module

    [来源]https://www.eemaker.com/micropython-add-module.html

  10. [转帖]高并发下nginx配置模板

    user web;       # One worker process per CPU core.   worker_processes 8;       # Also set   # /etc/s ...