C#: VS2008的新特性(一)

本文介绍了C#中的新特性,包括自动属性、对象初始化器、集合初始化器、扩展方法、类型推断及匿名类等内容,并通过示例展示了这些特性的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值