方法的内联引用类型
本文关键字:引用类型 方法 | 更新日期: 2023-09-27 18:00:00
我正在使用一个API,该API包含一个引用类型的方法。我并不总是需要将信息传递到方法中。有没有某种方法可以内联传递默认值或null值?
我目前正在做的事情:
MyObject obj = null;
MyMethod(ref obj);
我想做的是:
MyMethod(ref null);
我理解为什么这不起作用,但它明白了要点。
您不能修改null
。声明为ref
(或out
)的参数必须是命名变量。null
是一个值。
它不是引用类型,而是一个按引用传递的参数。这意味着MyMethod
可以修改对obj
的引用。
那个API可能期望给调用者一些东西。仔细阅读文档,看看它期望得到什么。
在我的最佳猜测中,当它是ref
时,调用者应该始终为它提供一个值。这样,该方法就可以根据需要使用它。否则,该方法应该将其声明为out
。
创建第二个不带参数的方法:
private void MyMethod()
{
MyObject notNeeded = null;
MyMethod(ref notNeeded);
}
尽管如此,正如其他人已经提到的那样,如果这种方法不总是需要给定的参考,那么你的设计似乎有问题。也许你应该考虑一下你的方法在做什么,也许可以把它分成多个方法。
null
是一个值。。。Ref关键字意味着您应该传递对某个实例(通常只是一个变量)的引用,而不是值。这就是为什么当方法期望引用一个变量时,它不接受null
。例如:
void A(ref string str) // expects reference not value
{
}
void A(string str) // expects value not reference
{
}