繁体   English   中英

内联引用类型的方法?

[英]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);
}

但是,正如其他人已经提到的那样,如果此方法不需要始终使用给定的引用,则您的设计似乎存在问题。 也许您应该考虑您的方法在做什么,并且可能将其拆分为多个方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM