VB和C#的自动实现属性

开发 后端
在.NET 4.0中,VB会像C#一样加入自动实现属性,但在实现方式上有所不同,情况本文给出的示例。

C#在3.0版本中添加了自动实现属性,但是当时Visual Basic还没有与之匹配的特性。即将发布的.NET 4.0版本中,VB在该领域迎头赶上,但却有所不同。C#中,自动实现属性可以这样编写,如下所示:

  1. public string FirstName {getset;} 

Visual Basic则需要关键字Property,这表示它不需要get/set来对字段进行区分。但是,VB中的自动实现属性对字段只有一个标记。

  1. Public Property FirstName As String 

对于VB和C#,该属性都自动支持一个私有字段。在C#中,这个成员有一个自动生成的名称,例如:“<FirstName>k__BackingField”。不用说,这个字段不能用一般的C#语法进行访问。Visual Basic则缺乏这种创新性,它只不过在该属性名前添加了一个下划线。所以,如果属性名为“FirstName”,那么对应的私有字段名为“_FirstName”。

直接访问该支持字段让很多事情变得都有可能。逻辑上来说,开发人员可以把该属性标志为ReadOnly并在构造函数中设置它的值。然而,那并不可选。

尽管它有一定的局限,但实际上C#的灵活性更好。你可以标志set为private或protected,和访问支持字段一样有效。如下所示:

  1. public string FirstName {getprivate set;} 

两种语言的局限在于它们仍没有任何针对不可变对象的工具。如果想让对象的属性和字段都为只读并可在构造函数中进行设置,那么我们仍然需要像在.NET 1.0那样编写代码。

 

【编辑推荐】

  1. VB.NET中的动态代码生成技巧
  2. C#和VB.NET类型相关知识汇总
  3. VB.NET中有用的通用对象列表
  4. .NET 4将对C#和VB一视同仁
  5. VB.NET和C#逐层横向对比
责任编辑:佚名 来源: InfoQ
相关推荐

2009-08-27 10:01:52

C#自动属性

2009-08-18 16:57:24

VB.NET和C#

2009-09-07 15:04:07

2009-08-17 17:08:35

C# ADSL自动拨号

2009-08-31 14:07:57

C# private字C# public属性

2009-08-26 09:54:45

C#打印预览C#打印

2009-09-11 12:17:59

C#控件属性

2009-09-01 17:41:45

C# HelpAttr

2009-04-28 10:23:58

VB.NETC#对比

2009-06-12 09:22:44

VB.NET类型C#

2009-09-17 16:45:56

C#数组

2009-09-17 17:13:54

C#数组

2009-09-04 13:55:04

C#文档自动化

2009-08-25 16:16:27

C#调用Windows

2009-11-03 14:13:23

VB.NET C#

2009-08-21 15:57:58

C# DataSour

2009-04-28 16:58:43

.NET 4C#VB

2009-08-26 16:46:06

C# ThreadSt

2009-09-07 15:49:55

C#属性化的方法

2009-10-10 16:40:37

VB.NET Cont
点赞
收藏

51CTO技术栈公众号