vb6 - 将结构用作类属性类型

时间:2018-05-30 13:43:49

标签: vb.net vb6

我正在尝试完成一个项目,并且在类属性类型方面遇到了麻烦。

我可以将类属性声明为Coord吗?

Public Property Coord() As Coord
    Get
        Return coordinate
    End Get
    Set(ByVal Value As Coord)
        coordinate.x = Value.x
        coordinate.y = Value.y
    End Set
End Property

Public Structure Coord
    Public x As Integer
    Public y As Integer
End Structure

我在编译时收到此错误:

  

Microsoft.VisualBasic.dll中发生未处理的“System.MissingMemberException”类型异常   重载决策失败,因为没有可访问的“Coord”接受此数量的参数。

设置为:

Current.Coord(NewCoord)

其中NewCoord属于Coord类型

1 个答案:

答案 0 :(得分:0)

您的一些问题可能源于使用单词“Coord”作为您的班级名称和结构名称。我怀疑您需要在项目属性编译选项中打开Option StrictOption ExplicitOption Infer

正如@Mary在上面的评论中所说,如果你的Coord类纯粹是为了存储x,y坐标,你会更好地看看Point结构。但是,如果您在Coord类中需要其他功能,我仍然会考虑放弃Coord结构并使用点结构。考虑一下这个

Private Class CoordClass
    Private coordinate As New Point
    Public Property Coord() As Point
        Get
            Return coordinate
        End Get
        Set(value As Point)
            coordinate = value
        End Set
    End Property
End Class

然后你可以像这样使用它

Dim aCoordinate As New Point
aCoordinate.x = 3
aCoordinate.y = 8

coordInstance.Coord = aCoordinate

coordInstance.Coord = New Point(4, 5)

比重新命名Coord strutcure更简单,这样它就不会与你Coord类混淆,并且必须使用像

这样的东西来分配值
Dim aCoordinate As New Coord.structCoord
aCoordinate.x = 3
aCoordinate.y = 8

coordInstance.Coord = new coord.structCoord with {.x=4 , .y=5}

最重要的是

点结构内置于.net中,在6个月内或其他程序员更容易维护。