我正在尝试完成一个项目,并且在类属性类型方面遇到了麻烦。
我可以将类属性声明为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类型
答案 0 :(得分:0)
您的一些问题可能源于使用单词“Coord”作为您的班级名称和结构名称。我怀疑您需要在项目属性编译选项中打开Option Strict
,Option Explicit
和Option 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个月内或其他程序员更容易维护。