写点什么

VB 和 C#的自动实现属性

  • 2009 年 6 月 15 日
  • 本文字数:591 字

    阅读完需:约 2 分钟

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

复制代码
public string FirstName {get; set;}

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

复制代码
Public Property FirstName As String

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

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

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

复制代码
public string FirstName {get; private set;}

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

查看英文原文: Auto-implemented Properties in VB and C#

2009 年 6 月 15 日 20:581525
用户头像

发布了 87 篇内容, 共 18.3 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

训练营第一周作业 2

仲夏

架构师训练营第一期第一周学习总结

朱磊

极客大学架构师训练营

架构师训练营第一周作业 (就餐卡UML图)

springH₂O

用简单而又专业的角度为大家揭秘区块链和比特币

CECBC

比特币 区块链 数字货币

架构师训练营第 1 期-第一周周总结

郑凯元

极客大学架构师训练营

系统用例图,组件图,组件时序图,部署图

Croesus

架构师第一期作业

happy

训练营第一周作业1

仲夏

极客时间架构师培训1期-第1周作业

Kaven

第一周命题作业

崔方剑

极客大学架构师训练营

食堂就餐卡系统设计

fmouse

架构师训练营第 1 期 第一周总结

张建亮

食堂就餐卡系统UML图

Jacky.Chen

架构师训练营第一期第一周命题作业

朱磊

极客大学架构师训练营

架构师训练营第 1 期-第一周学习总结

Todd-Lee

极客大学架构师训练营

架構師訓練營第 1 期 - 第 01 周作業

Panda

第一周学习总结

Croesus

架构师训练营-作业-第一周

Max2012

极客大学架构师训练营

80%的程序员忽略的那些事-架构师是干什么的

郎哲158

学习 程序员 工程师 架构师 极客大学架构师训练营

食堂就餐卡系统设计

钟杰

极客大学架构师训练营

第1周 架构方法 浮皮潦草之总结

Pyr0man1ac

目标:创业团队组织搭建的内在逻辑

boshi

创业 团队组织

第一周学习总节

兵长

食堂就餐卡系统设计

Yangjing

极客大学架构师训练营

店长:是新零售系统落地的核心环节

boshi

数字化 标准化 新零售

第一周作业一:食堂就餐卡系统设计

登顶计划

极客大学架构师训练营

极客时间架构师培训1期-第1周总结

Kaven

第一周学习总结

崔方剑

极客大学架构师训练营

你附近的人都有谁,这个功能是怎么实现的?

老胡爱分享

redis geo

架构师训练营第 1 期 命题作业

张建亮

第一周总结

fmouse

极客大学架构师训练营

VB和C#的自动实现属性_.NET_Jonathan Allen_InfoQ精选文章