.NET 中没有引用变量,只有ByRef
参数。您可以将对变量的引用传递给方法,但是一旦方法结束,该引用也会消失。
您是正确的,使用单项数组来实现其可变性是一种技巧。您可以构建自己的“可变引用”类,并使用get
和set
操作更改引用类中的对象。您还可以使该类在它所拥有的对象的类型上通用。
但是,很有可能需要使用全局变量是您之前做出的一些糟糕的设计选择的结果。如果没有看到你的设计的其余部分,很难确定,但如果你能想出一种方法来消除这个全局,那么需要存储引用的问题也将得到解决。例如,知道
我在一个 DLL 中,并希望用户将他的任何类型的变量的引用传递给我,这样我就可以每秒更新它
您应该从这里更改您呈现给用户的 API
Public Function Subscribe(ByRef var As Object) As Integer
对此:
Public Function Subscribe(callback As Action(Of Object) ) As Integer
当您想要更新感兴趣的值时,您的代码的用户将传递一个委托供您调用。然后由他们将您传递给他们的值分配给他们可能选择的任何变量。
您可以存储Action(Of Object)
委托,并在每次要更新值时调用它。您可以每秒更新一次,或者在不需要更改值时跳过更新。总体而言,这将在您的代码和调用者的代码之间实现更好的分离。