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

    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" };
posted @ 2023-10-19 09:41  爱生活,爱代码  阅读(33)  评论(0编辑  收藏  举报