C#: VS2008的新特性(一)

1、自动属性

//-----vs2005-----

class Person

{

private string firstName;

private string lastName;

private int age;

public string FirstName

{

get { return firstName; }

set { firstName = value; }

}

public string LastName

{

get { return lastName; }

set { lastName = value; }

}

public int Age

{

get { return age; }

set { age = value; }

}

}

//----vs2008-----

class Person New

{

public string FirstName { get; set; }

public string LastName { get; set; }

public int Age { get; set; }

}

自动属性的典型适用场合:

C#: VS2008的新特性(一) 在属性代码中只包含基本的赋值取值功能

C#: VS2008的新特性(一) 简单的实体类

使用自动属性时,需要注意以下几点:

C#: VS2008的新特性(一) 自动属性不能实现只读或者只写属性

C#: VS2008的新特性(一) 因为没有声明私有变量,你在使用自动属性时只能直接使用属 性名进行引用

2. 对象初始化器

C#: VS2008的新特性(一)

C#: VS2008的新特性(一)

3. 集合初始化器:----使集合可以像数组一样的初始化;

C#: VS2008的新特性(一)

4. 扩展方法

C#: VS2008的新特性(一)

C#: VS2008的新特性(一)

使用扩展方法时,请注意:

C#: VS2008的新特性(一) 在一个静态类中定义需要的扩展方法

C#: VS2008的新特性(一) 如果上面定义的扩展方法位于不同的命名空间,使用时记住用 using 语句引用过来

C#: VS2008的新特性(一) 当类本身的方法与扩展方法同名时,优先类本身的方法

使用扩展方法时,需要注意以下几点:

C#: VS2008的新特性(一) 扩展方法允许我们对已存在类型的行为进行扩展

C#: VS2008的新特性(一) 扩展方法是一种特殊的静态方法

C#: VS2008的新特性(一) 扩展方法必须在静态类中定义

C#: VS2008的新特性(一) 扩展方法的优先级低于同名的类方法

C#: VS2008的新特性(一) 扩展方法只在特定的命名空间内有效

C#: VS2008的新特性(一) 除非必须不要滥用扩展方法

class Program
{
static void Main(string[] args)
{
Person p = new Person
{
FirstName = "小刘",
LastName = "小流",
Age = 28
};
p.FirstName.SayHi();
Console.ReadLine();
}
}

static class TestExtMethod
{
public static void SayHi(this string name)
{
Console.WriteLine("你好!"+name);
}
}

5.推断类型

C#: VS2008的新特性(一)

C#: VS2008的新特性(一)

C#: VS2008的新特性(一)

使用关键字 var 时,需要注意以下几点:

C#: VS2008的新特性(一) 定义变量时,必须同时完成初始化工作

C#: VS2008的新特性(一) 不允许用 var 定义一个以 null 值初始化的局部变量

C#: VS2008的新特性(一) var 本身不是一个新类型,本质上,它只是用来修饰一个可以 推断出类型的局部变量

6.匿名类

C#: VS2008的新特性(一)