[.NET 3.x新特性一]自动属性,对象初始化及集合初始化

简介:
  今天公司弄了个VS2008 beta 2中文版,虽然很大一部分是为了JS的智能提示外,也应该好好的温习一下.NET的一些新特性,由于以前写过一些文章,但是都没有系统的学过,都只是尝一下新鲜感。不知道从那开始,所以今天就来看看自动话属性,以及对象初始化和集合初始化的一些新特性。

1.自动属性

    在做一个程序是我们离不开属性,特别是实体类。我们用指头一个一个的敲着get和set及局部的变量(Fields),现在可好不用在重复敲那些东东了我们只要用到get和set,就和我们的接口声明差不多了,是不是很happy。

    OK看个例子先,在.NET 2.0下我们声明一个实体类要有如下做法,这个应该没什么意见吧。
 1    public   class  Person {
 2 
 3           private   string  firstName;
 4           private   string  lastName;
 5           private   int  age;
 6          
 7           public   string  FirstName {
 8 
 9               get  {
10                   return   this .firstName;
11              }
12               set  {
13                   this .firstName  =  value;
14              }
15          }
16 
17           public   string  LastName {
18 
19               get  {
20                   return   this .lastName;
21              }
22               set  {
23                   this .lastName  =  value;
24              }
25          }        
26          
27           public   int  Age {
28 
29               get  {
30                   return   this .age;
31              }
32               set  {
33                   this .age  =  value;
34              }
35          }
36      }

    在.NET 3.x中我们可以省了很多东东,代码也变得简单很多,代码如下:
 1  public   class  Person {
 2      
 3           public   string  FirstName {
 4               get set ;
 5          }
 6 
 7           public   string  LastName {
 8               get set ;
 9          }        
10          
11           public   int  Age {
12               get set ;
13          }
14      }

2.对象的初始化

     我们省了很多的代码,手指也少动了,没办法人总是越来越懒的吗,下面我们来看看对象的初始化也是简单了不少,看代码就知道了,代码如下:第一个代码是.NET2.0中的初始化方式,而第二个是.NET 3.x的初始化方式,当然.NET2.0的方式也适合3.x的版本。

1  // .NET 2.0:
2     Person person  =   new  Person();
3     person.FirstName  =   " 小兵 " ;
4     person.LastName  =   " 网魂 " ;
5     person.Age  =   23 ;
6  // .NET 3.x:
7   Person person  =   new  Person { FirstName  =   " 小兵 " , LastName  =   " 网魂 " , Age  =   23 };

3.集合的初始化

    其实我们写程序也是封装在封装来为我们节省更多的东东,复用更多的东东。微软为我们做的也是越来越多,这是这篇文章的最后一个主题就是集合的初始化,我么一起来对照一下。

 1  // .NET 2.0;
 2  List < Person >  people  =   new  List < Person > ();
 3              
 4    people.Add(  new  Person { FirstName  =   " 小兵 " , LastName  =   " 网魂 " , Age  =   23  } );
 5    people.Add(  new  Person { FirstName  =   " QQing " , LastName  =   " Lai " , Age  =   22  } );
 6    people.Add(  new  Person { FirstName  =   " Xbing " , LastName  =   " My " , Age  =   20  } );
 7 
 8  // .NET 3.x;
 9     List < Person >  people  =   new  List < Person >  {
10         new  Person { FirstName  =   " 小兵 " , LastName  =   " 网魂 " , Age  =   23  },
11         new  Person { FirstName  =   " QQing " , LastName  =   " Lai " , Age  =   22  },
12         new  Person { FirstName  =   " Xbing " , LastName  =   " My " , Age  =   20  }
13     }; //记得这边是要有";"的,不然就会出错的。

    OK以上就是我们今天所温习的一个简单的特性,利用它们我们可以很简单的来书写实体类了,虽然在程序中完全支持.NET 3.x在现阶段还是不可能的,作为程序员学习在学习才是正道。

本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2007/09/04/dotnet_3x_autoproperties_initialize_objects_collections.html,如需转载请自行联系原作者

相关文章
|
10月前
|
容器
.NET Core-作用域与对象释放行为详解
.NET Core-作用域与对象释放行为详解
|
12天前
|
人工智能 开发框架 Devops
.NET技术概览:** 本文探讨了.NET的核心特性,包括多语言支持、Common Language Runtime、丰富的类库和跨平台能力,强调其在企业级、Web、移动及游戏开发中的应用。
【7月更文挑战第4天】.NET技术概览:** 本文探讨了.NET的核心特性,包括多语言支持、Common Language Runtime、丰富的类库和跨平台能力,强调其在企业级、Web、移动及游戏开发中的应用。此外,讨论了.NET如何通过性能优化、DevOps集成、AI与ML支持以及开源策略应对未来挑战,为开发者提供强大工具,共创软件开发新篇章。
20 3
|
1月前
|
开发框架 .NET API
ASP.NET Core Web中使用AutoMapper进行对象映射
ASP.NET Core Web中使用AutoMapper进行对象映射
|
20天前
|
SQL 开发框架 .NET
(20)ASP.NET Core EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)
(20)ASP.NET Core EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)
|
1月前
|
存储 编译器
【.NET Core】特性(Attribute)详解
【.NET Core】特性(Attribute)详解
34 2
|
2月前
|
机器学习/深度学习 存储 开发工具
【专栏】解读 .NET 技术的先进特性
【4月更文挑战第29天】.NET 技术推动各行业软件开发创新,提供高效开发环境(如Visual Studio)和跨平台能力(.NET Core),支持多语言和函数式编程。其生态系统繁荣,NuGet包含大量开源库。同时,.NET整合云服务(Azure)和机器学习(ML.NET),强化应用扩展性和智能处理,巩固其在现代开发中的关键角色。
|
2月前
|
开发框架 安全 .NET
C# .NET面试系列三:集合、异常、泛型、LINQ、委托、EF!
<h2>集合、异常、泛型、LINQ、委托、EF! #### 1. IList 接口与 List 的区别是什么? IList 接口和 List 类是C#中集合的两个相关但不同的概念。下面是它们的主要区别: <b>IList 接口</b> IList 接口是C#中定义的一个泛型接口,位于 System.Collections 命名空间。它派生自 ICollection 接口,定义了一个可以通过索引访问的有序集合。 ```c# IList 接口包含一系列索引化的属性和方法,允许按索引访问、插入、移除元素等。 由于是接口,它只定义了成员的契约,而不提供具体的实现。类似于 IEnumera
242 2
|
2月前
|
开发框架 .NET Java
ASP.NET Core高级编程--C#基本特性(一)
本文章简略介绍C#的部分特性
|
2月前
|
C#
.NET开发中合理使用对象映射库,简化和提高工作效率
.NET开发中合理使用对象映射库,简化和提高工作效率
168 0
|
9月前
|
开发框架 前端开发 .NET
ASP.NET Core 核心特性学习笔记「下」
ASP.NET Core 核心特性学习笔记「下」