提问人:Vesa95 提问时间:3/18/2023 更新时间:3/18/2023 访问量:19
引用与回调(提供程序/工厂)
Reference vs. Callback (provider/factory)
问:
我试着理解一些概念,但我不能自己做,所以伙计们,我需要你们的帮助。 我试图理解引用和回调有什么区别,可能这个术语不是完美的术语,我试着理解这段代码:
使用类 A 中的方法和类 B 中的方法初始化成员变量有什么区别?
class A
{
private BlockingCollection<int> _collectionA;
public void SetA(ref BlockingCollection<int> collectionA)
{
_collectionA = collectionA;
}
}
class B
{
private BlockingCollection<int> _collectionB;
public void SetB(Func<BlockingCollection<int>> collectionBProvider)
{
_collectionB = collectionBProvider();
}
}
static void Main(string[] args)
{
BlockingCollection<int> bCollection = new BlockingCollection<int>(boundedCapacity: 20);
A a = new A();
a.SetA(ref bCollection);
B b = new B();
b.SetB(() => bCollection);
}
答:
0赞
Vesa95
3/18/2023
#1
我发现,SetA 和 SetB 方法都可用于访问和修改作为参数传入的初始列表,无论它是通过引用传递还是使用回调传递。
在 SetA 的情况下,列表是使用 ref 关键字通过引用传递的,因此对方法中的列表所做的任何修改都将反映在传入的原始列表中。
对于 SetB,列表是使用返回初始列表的回调获取的,因此从回调中获取的对列表所做的任何修改也将反映在原始列表中。
因此,这两种方法都允许您访问和修改初始列表,但它们使用不同的机制来执行此操作。
评论