首页 > 编程语言 >深入学习C#系列文章01---C#3 革新写代码的新方式

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

时间:2023-10-19 09:57:29浏览次数:35  
标签:01 string C# --- Person andy new public

    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" };

标签:01,string,C#,---,Person,andy,new,public
From: https://www.cnblogs.com/zhengwei-cq/p/8711655.html

相关文章

  • nfs安装及开机启动(centos)
    1、nfs服务器准备172.16.200.98  服务端172.16.200.102 客户端2、服务端安装#安装nfsyuminstallnfs-utils-y#启动nfssystemctlstartnfs-server#查看nfs版本cat/proc/fs/nfsd/versions#创建共享目录mkdir-p/data/nfscd/data/nfsmkdirrwmkdirr......
  • Linux-Shell 小数运算,四舍五入
    在shell中做小数运算,可以借助bc或者awk工具一、使用bc做小数运算,scale指定小数点位数1、加法运算(scale参数无效)#echo"5.999+5.001"|bc6.000#echo"5.111+5.1114"|bc10.2224运算结果小数点位数以加数中最大的为准 2、减法运算(scale参数无效)  同加法运算  运算......
  • javascript之分片上传,断点续传的实际项目实现详解
    首先,我们需要了解什么是分片上传和断点续传。分片上传是将大文件分成多个小块进行上传,每个小块可以独立上传,从而提高上传速度和稳定性。而断点续传是指在上传大文件时,当上传过程中因断网或其他原因中断,再次上传时可以不用重头开始,而是从中断的地方继续上传。接下来是分片上传和......
  • SVN一直报错Error running context: 由于目标计算机积极拒绝,无法连接。解决办法【杭州
    一、发现SVN一直报错Errorrunningcontext:由于目标计算机积极拒绝,无法连接。 二、没有启动 VisualSVN Server。cmd--> services.msc打开本地服务。查看VisualSVN的三个服务的启动类型,建议选择“手动”,不能选择“禁用”,选择“自动”开机启动耗内存,因为是Java写的插件,要启......
  • 【JDK】自定义注释处理程序插件 AbstractProcessor
    1 前言最近比较好奇,Lombok、MapStruct里的注解,会在打包的时候会给我们的字节码文件里,写入一些东西甚至生成一些转换的字节码文件,不知道人家是如何做到的,所以抽空看了看,自己写了一个小Demo,来体验下。我们的目标就是引入自己的 AbstractProcessor的maven依赖包,然后能给我们生......
  • CF568E Longest Increasing Subsequence 题解
    LongestIncreasingSubsequenceLIS问题有两种主流\(O(n\logn)\)解法,最常见的树状数组法,以及不那么常见的二分法。然后考虑本题,发现一个神奇的思路就是求出LIS后倒序复原出数组。进一步思考后发现,因为本题是LIS(LongestIncreasingSubsequence)而非LNDS(LongestNon-Decr......
  • [AGC046D] Secret Passage 题解
    SecretPassage稍微观察一下就能发现,任一时刻,我们剩下的东西必然是一段定死了的后缀,加上一些可以任意塞位置的0与1。考虑任意一个由上述时刻生成的串,就会发现它与该后缀的最长公共子序列长度即为后缀长度,且还剩余一些0与1。于是考虑模拟最长公共子序列的过程。设\(g_{i,j......
  • 【Vue3响应式入门#01】Reactivity
    专栏分享:vue2源码专栏,vue3源码专栏,vuerouter源码专栏,玩具项目专栏,硬核......
  • 使用 cgal 库计算向量的夹角
     #include<vector>#include<iostream>#include<CGAL/Exact_predicates_exact_constructions_kernel.h>#include<CGAL/Ray_2.h>#include<CGAL/Polygon_2.h>#include<CGAL/intersections.h>typedefCGAL::Exact_predicates_e......
  • VS2015重构代码结构时出现:【/langversion 的选项“7.3”无效;必须是 ISO-1、ISO-2、3
    重构代码结构时出现:【/langversion的选项“7.3”无效;必须是ISO-1、ISO-2、3或Default在XXXX类库】......