如何定义和使用属性,在 Visual Basic.net 中或 Visual Basic 2005 中

文章翻译 文章翻译
文章编号: 308230 - 查看本文应用于的产品
为这篇文章的一个 Microsoft Visual C#.net 版本,请参阅 319265
展开全部 | 关闭全部

本文内容

概要

许多面向对象的编程语言的一个重要目标是使您可以封装在类中的内部详细信息。Visual Basic.net 或 Visual Basic 2005 可定义属性来提供了受控的访问类中的内部详细信息。本文介绍了如何,您可以定义,并在 Visual Basic.net 或 Visual Basic 2005 应用程序中使用属性。

一个属性可以是只读、 只写或读写。Get 访问器提供了读取权限和 Set 访问器提供写访问权限。您可以将代码添加到这些访问器以提供要获取或设置该属性的相应功能。

此本文中,您将创建一个名为 雇员 的类。在此类中,您定义读写属性,该员工、 要读取的员工,薪金的属性和属性来计算该员工长为公司工作的名称。然后,可以在应用程序中创建 员工 的对象,并使用其属性。

要求

下面的列表概述了建议的硬件、 软件、 网络的基础结构和所需的服务包:
  • Microsoft Visual Studio.net 或 Microsoft Visual Studio 2005
本文假定您熟悉下列主题:
  • Visual Basic.net 或 Visual Basic 2005 语法
  • 面向对象的概念

创建包含一个 Visual Basic.net 或 Visual Basic 2005 类应用程序

  1. 启动 Visual Studio.net 或 Visual Studio 2005,并创建名为 EmployeeProperties 一个新的 Visual Basic.net 或 Visual Basic 2005 控制台应用程序项目。
  2. 项目 菜单上单击 添加类添加新项 对话框中 名称 文本框中键入 Employee.vb,然后单击 打开

    注意可视有关 Studio 的 2005 年单击 添加,代替 打开
  3. 检查新类别在代码视图窗口中的代码。

定义字段、 构造函数,和方法

  1. 将三个 专用 字段添加到 雇员 类中,如下所示:
    Private Name As String
    Private Salary As Decimal
    Private HireDate As DateTime
    					
  2. 为要如下所示初始化字段在 雇员 类中的类定义构造函数:
    Public Sub New(ByVal Name As String, _
                   ByVal Salary As Decimal, _
                   ByVal HireDate As DateTime)
       Me.Name = Name
       Me.Salary = Salary
       Me.HireDate = HireDate
    End Sub
    					
  3. 公共 方法,如下所示添加到类,:
    Public Sub PayRise(ByVal Amount As Decimal)
       Me.Salary += Amount
    End Sub
    					

在类中定义属性

  1. 添加以下代码以添加一个名为 FullName 的读写属性。Get 访问器返回员工的姓名。Set 访问器使用 参数传递到设置该员工的姓名 Set 访问器
    Public Property FullName() As String
       Get
          Return Me.Name
       End Get
       Set(ByVal Value As String)
          Me.Name = Value
       End Set
    End Property
    					
  2. 添加以下代码以添加一个名为 Remuneration 的只读属性。Get 访问器返回员工的薪水。没有没有 Set 访问器,因为不能直接设置工资 ; 调用 PayRise 方法是唯一的方法更改工资
    Public ReadOnly Property Remuneration() As Decimal
       Get
          Return Me.Salary
       End Get
    End Property
    					
  3. 添加以下代码以添加另一个名为 DaysSinceJoined 的只读属性。Get 访问器计算该员工工作公司的多少天
    Public ReadOnly Property DaysSinceJoined() As Integer
       Get
          Dim timespan As TimeSpan = DateTime.Now.Subtract(Me.HireDate)
          return timespan.Days
       End Get
    End Property
    					

创建对象和使用属性

  1. 在代码视图窗口中的 Module1.vb 显示代码。
  2. Main 方法中使用 New 运算符创建 员工 的对象。将该对象引用赋给一个本地的 雇员 变量,如下所示:
    Dim worker As New Employee( "Jayne Doe", _
                                 125000, _
                                 New DateTime(1998, 7, 31) )
    					
  3. 添加以下代码以更改员工 FullName 属性。这将隐式调用 FullName 属性的 Set 访问器
    worker.FullName = "Jayne Lafayette"
    					
  4. 添加以下代码以显示员工的详细信息,通过使用 全名Remuneration,和 DaysSinceJoined 属性的 Get 访问器:
    Console.WriteLine("Full name: " & worker.FullName)
    Console.WriteLine("Remuneration: " & worker.Remuneration)
    Console.WriteLine("Days since joined: " & worker.DaysSinceJoined)
    					

测试应用程序

  1. 生成并运行该应用程序。
  2. 在控制台中 ("天数因为联接"的值取决于当前日期),应用程序将显示以下信息:
    Full name: Jayne Lafayette
    Remuneration: 125000
    Days since joined: 1139
    						
  3. 返回到 Module1.vb 文件在代码视图窗口中和 Main 方法的末尾添加下面的代码:
    worker.Remuneration = 1000000
    					
  4. 尝试生成该应用程序。您将收到编译错误,因为 Remuneration 是只读的属性。
  5. 更改该语句,如下所示:
    worker.Salary = 1000000
    					
  6. 尝试生成该应用程序再次。您将收到另一个编译错误,因为在 工资 字段被标记为 私有。若要修改该雇员的薪金唯一的方法是使用公用 PayRise 方法。

属性

文章编号: 308230 - 最后修改: 2006年12月6日 - 修订: 3.3
这篇文章中的信息适用于:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 标准版
  • Microsoft Visual .NET 2002 标准版
关键字:?
kbmt kbvs2005applies kbvs2005swept kbhowtomaster KB308230 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 308230
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com