惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
D
Docker
Blog — PlanetScale
Blog — PlanetScale
罗磊的独立博客
美团技术团队
V
V2EX
Last Week in AI
Last Week in AI
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
Microsoft Security Blog
Microsoft Security Blog
Microsoft Azure Blog
Microsoft Azure Blog
人人都是产品经理
人人都是产品经理
M
MIT News - Artificial intelligence
P
Proofpoint News Feed
B
Blog RSS Feed
博客园_首页
B
Blog
博客园 - 叶小钗
I
InfoQ
WordPress大学
WordPress大学
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
A
About on SuperTechFans
The GitHub Blog
The GitHub Blog
The Register - Security
The Register - Security
MyScale Blog
MyScale Blog
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
Latest news
Latest news
W
WeLiveSecurity
T
The Exploit Database - CXSecurity.com
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
aimingoo的专栏
aimingoo的专栏
小众软件
小众软件
Cyberwarzone
Cyberwarzone
Scott Helme
Scott Helme
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CERT Recently Published Vulnerability Notes
C
CXSECURITY Database RSS Feed - CXSecurity.com
Recent Commits to openclaw:main
Recent Commits to openclaw:main
N
News and Events Feed by Topic
S
Secure Thoughts
The Hacker News
The Hacker News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google DeepMind News
Google DeepMind News

博客园 - Navicy

博客搬家公告 Dundas for Reporting Services的一些的使用技巧 发现 SQL Server 2005 Reporting Services 的一些BUG 博客更新 基于UML和ASP.NET实现三层B/S结构学籍管理系统开发 Windows的AutoRun.inf文件是近期木马、病毒传播的罪魁祸首 Windows XP SP2的WRSF安全特性导致IE使用window.open和window.showModalDialog的status=no无法关闭状态栏 “掌握Ajax”中文系列教程(转载自IBM DeveloperWorks网站) AJAX异步和回调 AJAX和XmlHttpRequest下的WEB开发 Google推出的照片管理软件Picasa WinXP NTFS分区文件或文件夹没有“安全”选项卡的解决办法 Windows XP网络共享访问总是弹出输入Guest密码对话框的解决 安装Dreamweaver 8和Fireworks 8简体中文正式版 极品飞车8-地下狂飙2中"speed2.exe"错误解决办法 文件的ContentType类型举例 使用批处理文件命令行方式快速启动和停止IIS、SqlServer Macromedia Studio 8 发布 Windows Vista Beta 1 精彩体验
VB中类的字段和属性的区别和用法
Navicy · 2005-11-17 · via 博客园 - Navicy

类由字段、属性、方法和事件组成。字段和属性表示对象包含的信息。字段类似于变量,因为可以直接读取或设置它们。例如,如果有一个名为 Car 的对象,则可以在名为 Color 的字段中存储其颜色。属性的检索和设置方法与字段类似,但是属性是使用 Property Get 和 Property Set 过程实现的,这些过程对如何设置或返回值提供更多的控制。在存储值和使用此值的过程之间的间接层帮助隔离数据,并使您得以在分配或检索值之前验证这些值。

向类添加字段
在类定义中声明一个公共变量,如下面的代码所示:

Class ThisClass 
   
Public ThisField As String 
End Class 

向类添加属性
在类中声明一个局部变量来存储属性值。因为属性不会自行分配任何存储区,所以该步骤是必需的。若要保护它们的值不被直接修改,用于存储属性值的变量应当声明为 Private。
根据需要以修饰符(如 Public 和 Shared)作为属性声明的开头。使用 Property 关键字声明属性名称,并声明属性存储和返回的数据类型。
在属性定义中定义 Get 和 Set 属性过程。Get 属性过程用于返回属性值,基本等效于语法中的函数。它们不接受参数,可用于返回在类中声明的、用于存储属性值的私有局部变量的值。Set 属性过程用于设置属性的值,它们有参数(通常称为 Value),该参数的数据类型与属性本身的数据类型相同。每当属性值更改时,Value 均会被传递给 Set 属性过程,在该过程中可以验证它并将其存储在一个局部变量中。
根据需要使用 End Get 和 End Set 语句终止 Get 和 Set 属性过程。
使用 End Property 语句终止属性块。
注意   如果正在 Visual Studio 集成开发环境 (IDE) 下工作,可以指示它去除空的 Get 和 Set 属性过程。键入 Property PropName As DataType(其中,PropName 是属性名称,DataType 是特定数据类型,如 Integer),相应的属性过程将出现在代码编辑器中。
下面的示例在类中声明一个属性:

Class ThisClass 
   
Private m_PropVal As String 
   
Public Property One() As String 
      
Get 
         
Return m_PropVal ' Return the value stored in the local variable. 
       ' Optionally, you can use the syntax One = PropVal to return 
       ' the property value. 
      End Get 
      
Set(ByVal Value As String
         m_PropVal 
= Value ' Store the value in a local variable. 
      End Set 
   
End Property 
End Class 

当创建 ThisClass 的一个实例并设置 One 属性的值时,将调用 Set 属性过程且该值在 Value 参数中传递,该参数存储在名为 m_PropVal 的局部变量中。当检索此属性值时,将像函数那样调用 Get 属性过程并返回存储在局部变量 m_PropVal 中的值。

属性和属性过程
可以使用属性和字段在对象中存储信息。属性使用属性过程控制如何设置或返回值,而字段只是公共变量。属性过程是在属性定义中声明的代码块,使您可以在设置或检索属性值时执行代码。Visual Basic .NET 有两种类型的属性过程:Get 属性过程用于检索属性值;Set 属性过程用于向属性赋值。例如,存储银行帐户余额的属性可能会在 Get 属性过程中使用代码以在返回可用余额之前记入利息并检查服务费。用于可用余额的 Set 属性过程会提供验证代码以防止不正确地更新余额。简而言之,属性过程允许对象保护和验证自己的数据

只读和只写属性
大多数属性有 Get 和 Set 这两个属性过程以使您可以同时读取和修改所存储的值。然而,您可以使用 ReadOnly 或 WriteOnly 修饰符来限制对属性的读取或修改。只读属性不能有 Set 属性过程,它们可用于需要公开但不允许修改的项。例如,可以使用只读属性来提供计算机处理器的速度。只写属性不能有 Get 属性过程,它们可用于需要存储但不对其他对象公开的数据。例如,只写属性可以用于存储密码。

注意   在将对象分配给属性时,Visual Basic 的早期版本支持使用 Let 属性过程。Visual Basic .NET 消除了对 Let 属性过程的需要,因为可以像处理其他任何种类的分配那样处理对象分配。

属性过程与字段
属性与字段都可在对象中存储和检索信息。它们的相似性使得在给定情况下很难确定哪个是更好的编程选择。

在以下情况下使用属性过程:
需要控制设置或检索值的时间和方式时。
属性有定义完善的一组值需要进行验证时。
设置值会导致对象状态中发生某些可察觉更改(如一个可见属性)时。
设置属性会导致更改其他内部变量或其他属性的值时。
必须先执行一组步骤,然后才能设置或检索属性时。

在以下情况下使用字段:
值为自验证类型时。例如,如果将 True 或 False 以外的值分配给 Boolean 变量,就会发生错误或自动数据转换。
在数据类型所支持范围内的任何值均有效时。Single 或 Double 类型的很多属性属于这种情况。
属性是 String 数据类型,且对于字符串的大小或值没有任何约束时。

posted on 2005-11-17 12:11  Navicy  阅读(5576)  评论()    收藏  举报