有没有办法将构造函数添加到Rectangle Structure
?
如果不继承课程,这是否可行?
答案 0 :(得分:2)
无法将外部构造函数添加到结构中。
你能做的就是在某个地方声明一个带有你需要的函数的静态类,它返回一个矩形。
Public Class Utilities
Public Shared Function GetMySpecialRectangle(ByVal x As Integer) As Rectangle
Return New Rectangle(x, 0, 100, 100)
End Function
End Class
并使用它......
Dim r As Rectangle = Utilities.GetMySpecialRectangle(19)
在某些特定情况下,您还可以使用扩展方法。 如果您从未听说过,那就有一个例子。
Module MyExtensions
<Runtime.CompilerServices.Extension()>
Public Function ToMySpecialRectangle(ByVal x As Integer) As Rectangle
Return New Rectangle(x, 0, 100, 100)
End Function
End Module
并使用它......
Dim x As Integer = 0
Dim rect As Rectangle = x.ToMySpecialRectangle()
这实际上为类Integer添加了一个“扩展”方法,一个扩展方法模仿了一个类方法,但它只是一个用不同语法调用的静态模块方法。
这只是意味着每次执行integerValue.ToMySpecialRectangle()
时,您调用的是模块函数ToMySpecialRectangle(integerValue)
,只需语法糖。
然而关于构造函数却没有。
答案 1 :(得分:0)
如果我没错,Rectangle是NotInheritable Class Rectangle继承了Shape而你不能继承 NotInheritable