类和类属性VB.NET

类和类属性VB.NET,.net,vb.net,class,properties,declaration,.net,Vb.net,Class,Properties,Declaration,我跟不上你。 我使用一些属性字段创建类,如下所示: Public Class Room1 Private _AdultNumber As Byte Property AdultNumber() As Byte Get Return _AdultNumber End Get Set(value As Byte) _AdultNumber = value End Set

我跟不上你。 我使用一些属性字段创建类,如下所示:

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
当我调用这个类并将一些值传递给属性时,我希望新的类构造函数为我创建一个带有空属性字段的类的新实例,但相反,我得到的类与我以前传递的属性值相同

这里是我如何调用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.从任何其他类或Page方法获取存储的Room1类值?

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

在辅助类中,您可以检索以前设置的成员,如下所示:

Public Class Class2

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

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

End Class

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

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
导入Microsoft.VisualBasic
导入System.ComponentModel
公共教室
公共教室1
公共分新()
Room1.AdultNumber=无
Room1.ChildNumber=无
房间1.年龄=零
端接头
公共共享属性AdultNumber(字节=0)
公共共享属性ChildNumber(字节=0)
公共共享属性的有效期为字符串()=无
末级
公共教室2
公共分新()
Room2.AdultNumber=无
Room2.ChildNumber=无
房间2.年龄=零
端接头
公共共享属性AdultNumber(字节=0)
公共共享属性ChildNumber(字节=0)
公共共享属性的有效期为字符串()=无
末级
公共教室3
公共分新()
Room3.AdultNumber=无
Room3.ChildNumber=无
房间3.年龄=零
端接头
公共共享属性AdultNumber(字节=0)
公共共享属性ChildNumber(字节=0)
公共共享属性的有效期为字符串()=无
末级
公共教室4
公共分新()
Room4.AdultNumber=无
Room4.ChildNumber=无
房间4.年龄=零
端接头
公共共享属性AdultNumber(字节=0)
公共共享属性ChildNumber(字节=0)
公共共享属性的有效期为字符串()=无
末级
公共教室5
公共分新()
房间5.成人号=无
Room5.ChildNumber=无
房间5.年龄=零
端接头
公共共享属性AdultNumber(字节=0)
公共共享属性ChildNumber(字节=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
公共课堂
公共分新()
Me.AdultNumber=-1
Me.ChildNumber=-1
我。年龄=“”
端接头
公共属性成人数为整数
公共属性ChildNumber为整数
公共财产的使用年限相当长
末级
公共教室
“共享类
公共共有物业1室作为新教室
公共共有财产室2作为新教室
公共共有物业3室作为新教室
公共共有物业4室作为新教室
末级
公营教室
“声明类
公共财产室1作为新教室
公共财产室2作为新教室
公共物业3室作为新教室
公共物业4室作为新教室
末级
公共模块模块1
所有公共教室均为新教室
公用分干管()
如果Rooms.Room1.AdultNumber<0,则Rooms.Room1.AdultNumber=1
如果Rooms.Room2.AdultNumber<0,则Rooms.Room2.AdultNumber=2
如果Rooms.Room3.AdultNumber<0,则Rooms.Room3.AdultNumber=3
如果Rooms.Room4.AdultNumber<0,则Rooms.Room4.AdultNumber=4
如果AllRooms.Room1.AdultNumber<0,则AllRooms.Room1.AdultNumber=5
如果AllRooms.Room2.AdultNumber<0,则AllRooms.Room2.AdultNumber=6
如果AllRooms.Room3.AdultNumber<0,则AllRooms.Room3.AdultNumber=7
如果AllRooms.Room4.AdultNumber<0,则AllRooms.Room4.AdultNumber=8
调试.打印(Rooms.Room1.AdultNumber)
调试.打印(房间.房间2.成人编号)
调试.打印(房间.房间3.成人编号)
调试.打印(房间.房间4.成人编号)
调试.打印(AllRooms.Room1.AdultNumber)
调试.打印(AllRooms.Room2.AdultNumber)
调试.打印(AllRooms.Room3.AdultNumber)
调试.打印(AllRooms.Room4.AdultNumber)
端接头
端模块

如果您创建了一个新对象,您将无法获得以前分配给属性的值,您必须使用相同的对象。是的,但当我这样调用类:Dim r1 As Room1并尝试通过r1.AdultNumber访问属性时,它表示在分配值之前使用了变量r1。这是因为这不是同一个对象。它只是一个同名的变量(未赋值),至少使用公共的
属性
,不要公开字段。例如:
Public Property R1 As Room1=New Room1()
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