switch 语句中的 Const 与 Static

Const vs. Static in a switch statement

我正在将一些旧的 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,因为它们是只读的。

有没有简单的解决方法?或者您只是忽略它并在没有限定符的情况下传递所有内容,而编译器只是做正确的事情?

您不需要通过 ref 传递对象,所有 类 都是引用类型,在您的情况下不需要通过 ref 传递。

Passing Reference Type Variables

A variable of a reference type does not contain its data directly; it contains a reference to its data. When you pass a reference-type parameter by value, it is possible to change the data pointed to by the reference, such as the value of a class member.


Do not confuse the concept of passing by reference with the concept of reference types. The two concepts are not the same. A method parameter can be modified by ref regardless of whether it is a value type or a reference type. There is no boxing of a value type when it is passed by reference.

在 C# 中,从 object 派生的对 类 的所有引用都将复制到该方法。当您将对象引用传递给方法时,您对传入的实际对象进行操作。

您引用的 ref 关键字是对引用的引用,如果您打算更改传入的引用本身(在您的示例中,您将如果您计划将 Parent 设置为 null,并且希望它在方法之外应用,则需要 ref