`
izuoyan
  • 浏览: 8933702 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

}

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

clip_image001 在属性代码中只包含基本的赋值取值功能

clip_image001[1] 简单的实体类

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

clip_image001[6] 自动属性不能实现只读或者只写属性

clip_image001[7] 因为没有声明私有变量,你在使用自动属性时只能直接使用属 性名进行引用

2. 对象初始化器

image

image

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

image

4. 扩展方法

image

image

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

clip_image001[10] 在一个静态类中定义需要的扩展方法

clip_image001[11] 如果上面定义的扩展方法位于不同的命名空间,使用时记住用 using 语句引用过来

clip_image001[12] 当类本身的方法与扩展方法同名时,优先类本身的方法

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

clip_image001[16] 扩展方法允许我们对已存在类型的行为进行扩展

clip_image001[17] 扩展方法是一种特殊的静态方法

clip_image001[18] 扩展方法必须在静态类中定义

clip_image001[19] 扩展方法的优先级低于同名的类方法

clip_image001[20] 扩展方法只在特定的命名空间内有效

clip_image001[21] 除非必须不要滥用扩展方法

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.推断类型

image

image

image

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

clip_image001[28] 定义变量时,必须同时完成初始化工作

clip_image001[29] 不允许用 var 定义一个以 null 值初始化的局部变量

clip_image001[30] var 本身不是一个新类型,本质上,它只是用来修饰一个可以 推断出类型的局部变量

6.匿名类

image

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics