方法的内联引用类型?

Inline reference types to methods?

我正在使用一个 API,其中包含一个具有引用类型的方法。我并不总是需要将信息传递到方法中。有什么方法可以内联传递默认值或空值吗?

我目前在做什么:

MyObject obj = null;
MyMethod(ref obj);

我想做的是:

MyMethod(ref null);

我明白为什么这行不通,但它明白了要点。

您无法修改 null。声明为 ref(或 out)的参数必须命名为变量。 null 是一个值。

这不是引用类型 - 这是按引用传递的参数。这意味着 MyMethod 可以修改对 obj 的引用。

API 可能希望给来电者一些东西。仔细阅读文档以了解其预期内容。

据我推测,当它是 ref 时,调用者应该始终为其提供一个值。这样,该方法就可以根据需要使用它。否则,该方法应该将其声明为 out.

null 是一个值... Ref 关键字意味着您应该传递对某个实例(通常只是一个变量)的引用而不是值。这就是为什么当方法需要引用变量时 - 它不接受 null。例如:

void A(ref string str)  // expects reference not value
{
} 

void A(string str)  // expects value not reference
{
} 

创建第二个不带参数的方法:

private void MyMethod()
{
    MyObject notNeeded = null;
    MyMethod(ref notNeeded);
}

然而,正如其他人已经提到的那样,如果此方法不需要始终需要给定的引用,那么您的设计似乎有问题。也许你应该考虑一下你的方法在做什么,也许把它分成多个方法。