我将一些旧的VB.NET转换为C#。我遇到的更小的问题是如何处理将大型对象传递给方法。在VB中,我们将使用ByRef关键字,如下所示:
Friend Sub New(ByRef Parent As WorkSheet)
'INITIALIZE OBJECT
Me.WS = Parent
pColorId = 64
pZoomScale = 100
End Sub
但是在C#中有一长串限制使得这种情况无法实现。例如,refs不能有默认值,你不能传入常量,null或this
因为它们是只读的。
有一个简单的解决方案吗?或者你只是忽略它并在没有限定符的情况下传递所有内容并且编译器只做正确的事情?
答案 0 :(得分:1)
您不需要通过引用传递对象,所有类都是引用类型,并且在您的情况下不需要通过引用传递。
引用类型的变量不直接包含其数据;它 包含对其数据的引用。传递引用类型时 参数值,可以更改指向的数据 引用,例如类成员的值。
不要将通过引用传递的概念与概念相混淆 参考类型。这两个概念不尽相同。方法参数 可以通过ref修改,无论它是值类型还是a 参考类型。传递时没有值类型的装箱 通过引用。
答案 1 :(得分:0)
在C#中,对从object
派生的类的所有引用都将复制到该方法中。将对象引用传递给方法时,可以对传入的实际对象进行操作。
您引用的ref
关键字是对引用的引用,如果您计划更改传入的引用本身,则只需要使用该引用(在您的示例中,您是&d; d如果您计划将ref
设置为null,并希望将其应用于方法之外,则需要Parent
。