将构造函数添加到现有结构

时间:2011-10-31 01:23:40

标签: .net vb.net

有没有办法将构造函数添加到Rectangle Structure

如果不继承课程,这是否可行?

2 个答案:

答案 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