可以在.NET中创建变量别名吗?

可以在.NET中创建变量别名吗?,.net,alias,.net,Alias,考虑以下简单代码: Dim v1 as A Dim v2 as A v1 = new A v2 = v1 v1 = new A 此代码导致v1和v2引用2个不同的对象 我正在寻找一种方法,使v2成为v1的别名,这样最终,v2将引用与v1相同的对象。 是否有一种特殊的方法可以将v1分配给v2,从而达到这个目的?这是一个奇怪的要求,可能有更好的方法来解决它,但与计算机科学中的任何东西一样,你可以通过一层抽象来解决这个问题: Public Class AContainer Private

考虑以下简单代码:

Dim v1 as A
Dim v2 as A

v1 = new A
v2 = v1

v1 = new A
此代码导致v1和v2引用2个不同的对象

我正在寻找一种方法,使v2成为v1的别名,这样最终,v2将引用与v1相同的对象。
是否有一种特殊的方法可以将v1分配给v2,从而达到这个目的?

这是一个奇怪的要求,可能有更好的方法来解决它,但与计算机科学中的任何东西一样,你可以通过一层抽象来解决这个问题:

Public Class AContainer
    Private a As A
    Public ReadOnly Property A() As A
        Get
            Return a
        End Get
    End Property

    Public Sub New(ByVal value As A)
        a = value
    End Sub

    Public Sub Update(ByVal value As a)
        a = value
    End Sub
End Class
现在,您只需将
v1
v2
设置为
A容器的相同实例,然后就可以引用
v1.A
v2.A
,它们将始终具有相同的A实例


更可能的情况是,您需要重新评估为什么需要将
v1
v2
保持一致,而不是使用相同的引用。

我可以问一下为什么吗?如果
v1
v2
具有不同的作用域,您只需将其中一个推向“全局”(在某种程度上是不好的)。否。没有。我很想知道你为什么要这么做。@Justiniessner:FORTRAN程序员可以用等价物来做……但这通常是一个肮脏的黑客行为,或者是因为缺乏解决问题的其他方法的知识。就我而言,
v2=v1
会自动生成
v2
reference
v1
。但是,这将被新实例覆盖。我很确定对
v2
中的对象所做的更改也会显示在
v1
@Cobra\u Fast中:OP希望v1和v2始终指向同一对象,即使引用发生更改。OP不关心引用成员的更改。我知道这个问题似乎有点奇怪。问题是,我们正在使用一个库来管理对象存储中的对象。当它检测到对象已过时且需要重置时,它会创建一个新实例,以确保没有旧实例的痕迹。当我想使用同一对象的多个引用时,这是不好的,因为在某个点上,该对象可能会被删除,并且只有一个引用会指向新对象。我认为问题可能只是库,它不应该创建新实例,而是应该正确清理该对象。。。但它有点敏感,这就是为什么我想知道是否有一种方法可以创建别名。谢谢你的回答;)