[英]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.