gpt4 book ai didi

c# - 引用类型未作为引用传递

转载 作者:行者123 更新时间:2023-11-30 13:42:18 25 4
gpt4 key购买 nike

我在单元测试中遇到了这个奇怪的问题。看下面代码

_pos = null;
Utilities.InitPOS(_pos, trans);
Assert.IsNotNull(_pos); //fails

InitPOS 函数看起来像

public static void InitPOS(POSImplementation pos, Transaction newTransaction)
{
pos = new POSImplementation();
pos.SomeProp = new SomeProp();
pos.SomeProp.SetTransaction(newTransaction);
Assert.IsNotNull(pos);
Assert.IsNotNull(pos.SomeProp);
}

对象POSImplementation是一些接口(interface)的实现,它是一个类,所以它是一个引用类型...

有什么想法吗?

最佳答案

您将对对象的引用传递给 InitPOS(即 null 引用),而不是对名为 _pos 的变量的引用.效果是在InitPOS方法中将新的POSImplementation实例赋值给了局部变量pos,但是_pos 变量保持不变。

将您的代码更改为

_pos = Utilities.InitPOS(trans);
Assert.IsNotNull(_pos);

在哪里

public static POSImplementation InitPOS(Transaction newTransaction)
{
POSImplementation pos = new POSImplementation();
// ...
return pos;
}

关于c# - 引用类型未作为引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3404968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com