0

我坚持下去。我创建了一些属性字段的类,如下所示:

Public Class Room1
    Private _AdultNumber As Byte
    Property AdultNumber() As Byte
        Get
            Return _AdultNumber
        End Get
        Set(value As Byte)
            _AdultNumber = value
        End Set
    End Property

当我调用这个类并将一些值传递给属性时,我希望 New 类构造函数为我创建具有空属性字段的类的新实例,但是相反,我得到了具有我之前传递的属性值的相同类。

这里我如何在 PageLoad 上调用类。

Dim r1 As New Room1
r1.AdultNumber = CByte(ddlAdRoom1.SelectedItem.Value)

然后我需要从其他类中读取这个值。

Dim r1 As New Room1
Dim x As Byte = r1.AdultNumber

我应该如何更改代码以获得此结果:
1. 将属性值设置为具有空属性值的新类实例?2. 从任何其他类或页面方法获取存储的 Room1 类值?

4

3 回答 3

1

在您的主类中,将该Room1类声明为Public(在任何过程之外):

Public class MainClass

    ...
    Public r1 As New Room1
    ...

    Private Sub SetMember()
        ...
        Me.r1.AdultNumber = CByte(ddlAdRoom1.SelectedItem.Value)
        ...
    End Sub

End Class

在您的辅助类中,您可以像这样检索先前设置的成员:

Public Class Class2

    ...
    Private x As Byte = MainClass.r1.AdultNumber
    ...

    Private Sub GetMember()
        ...
        Dim x As Byte = MainClass.r1.AdultNumber
        ...
    End Sub

End Class
于 2013-10-19T09:09:04.703 回答
0

我终于通过使用以下方法解决了这个问题:

Imports Microsoft.VisualBasic
Imports System.ComponentModel
Public Class Rooms
    Public Class Room1
        Public Sub New()
            Room1.AdultNumber = Nothing
            Room1.ChildNumber = Nothing
            Room1.Ages = Nothing
        End Sub
        <Bindable(True), DefaultValue(False)>
        Public Shared Property AdultNumber As Byte = 0
        <Bindable(True), DefaultValue(False)>
        Public Shared Property ChildNumber As Byte = 0
        <Bindable(True), DefaultValue(False)>
        Public Shared Property Ages As String() = Nothing
    End Class
    Public Class Room2
        Public Sub New()
            Room2.AdultNumber = Nothing
            Room2.ChildNumber = Nothing
            Room2.Ages = Nothing
        End Sub
        <Bindable(True), DefaultValue(False)>
        Public Shared Property AdultNumber As Byte = 0
        <Bindable(True), DefaultValue(False)>
        Public Shared Property ChildNumber As Byte = 0
        <Bindable(True), DefaultValue(False)>
        Public Shared Property Ages As String() = Nothing
    End Class
    Public Class Room3
        Public Sub New()
            Room3.AdultNumber = Nothing
            Room3.ChildNumber = Nothing
            Room3.Ages = Nothing
        End Sub
        <Bindable(True), DefaultValue(False)>
        Public Shared Property AdultNumber As Byte = 0
        <Bindable(True), DefaultValue(False)>
        Public Shared Property ChildNumber As Byte = 0
        <Bindable(True), DefaultValue(False)>
        Public Shared Property Ages As String() = Nothing
    End Class
    Public Class Room4
        Public Sub New()
            Room4.AdultNumber = Nothing
            Room4.ChildNumber = Nothing
            Room4.Ages = Nothing
        End Sub
        <Bindable(True), DefaultValue(False)>
        Public Shared Property AdultNumber As Byte = 0
        <Bindable(True), DefaultValue(False)>
        Public Shared Property ChildNumber As Byte = 0
        <Bindable(True), DefaultValue(False)>
        Public Shared Property Ages As String() = Nothing
    End Class
    Public Class Room5
        Public Sub New()
            Room5.AdultNumber = Nothing
            Room5.ChildNumber = Nothing
            Room5.Ages = Nothing
        End Sub
        <Bindable(True), DefaultValue(False)>
        Public Shared Property AdultNumber As Byte = 0
        <Bindable(True), DefaultValue(False)>
        Public Shared Property ChildNumber As Byte = 0
        <Bindable(True), DefaultValue(False)>
        Public Shared Property Ages As String() = Nothing
    End Class
End Class
于 2013-10-22T03:08:02.613 回答
0

多次写同一门课是没有意义的。更简单的解决方案如下。

Public Class ClassRoom
    Public Sub New()
        Me.AdultNumber = -1
        Me.ChildNumber = -1
        Me.Ages = ""
    End Sub
    Public Property AdultNumber As Integer
    Public Property ChildNumber As Integer
    Public Property Ages As String
End Class
Public Class Rooms
    'Shared class
    Public Shared Property Room1 As New ClassRoom
    Public Shared Property Room2 As New ClassRoom
    Public Shared Property Room3 As New ClassRoom
    Public Shared Property Room4 As New ClassRoom
End Class
Public Class ClassRooms
    'Declared class
    Public Property Room1 As New ClassRoom
    Public Property Room2 As New ClassRoom
    Public Property Room3 As New ClassRoom
    Public Property Room4 As New ClassRoom
End Class
Public Module Module1
    Public AllRooms As New ClassRooms
    Public Sub Main()
        If Rooms.Room1.AdultNumber < 0 Then Rooms.Room1.AdultNumber = 1
        If Rooms.Room2.AdultNumber < 0 Then Rooms.Room2.AdultNumber = 2
        If Rooms.Room3.AdultNumber < 0 Then Rooms.Room3.AdultNumber = 3
        If Rooms.Room4.AdultNumber < 0 Then Rooms.Room4.AdultNumber = 4

        If AllRooms.Room1.AdultNumber < 0 Then AllRooms.Room1.AdultNumber = 5
        If AllRooms.Room2.AdultNumber < 0 Then AllRooms.Room2.AdultNumber = 6
        If AllRooms.Room3.AdultNumber < 0 Then AllRooms.Room3.AdultNumber = 7
        If AllRooms.Room4.AdultNumber < 0 Then AllRooms.Room4.AdultNumber = 8

        Debug.Print(Rooms.Room1.AdultNumber)
        Debug.Print(Rooms.Room2.AdultNumber)
        Debug.Print(Rooms.Room3.AdultNumber)
        Debug.Print(Rooms.Room4.AdultNumber)

        Debug.Print(AllRooms.Room1.AdultNumber)
        Debug.Print(AllRooms.Room2.AdultNumber)
        Debug.Print(AllRooms.Room3.AdultNumber)
        Debug.Print(AllRooms.Room4.AdultNumber)
    End Sub
End Module
于 2021-03-10T13:26:30.563 回答