相关疑难解决方法(0)

将一个对象的方法传递给另一个对象是否保持第一个对象存活?

假设我有三个对象:'a','b'和'c'.对象'a'和'c'是长寿的,静态引用的服务单例.对象'b'是短暂的,即没有静态引用使其保持活动状态.

现在假设对象'a'在其一个方法的范围内创建对象'b'的实例,例如

B b = new B();
Run Code Online (Sandbox Code Playgroud)

进一步假设B类看起来像这样:

public B ()
{
    C.ActionList.Add ( SomeMethod );
}

void SomeMethod ()
{
...
}
Run Code Online (Sandbox Code Playgroud)

现在,对象'b'存活了多长时间?我的推测是,它超出了称为构造函数的方法的范围; 具体来说,只要它的方法仍然在对象'c'的'ActionList'中.

那是对的吗?如果没有,它会被垃圾收集,当'c'运行'ActionList'中的所有方法时会发生什么?

额外的问题:如果'b'上的方法没有被命名,但匿名并在构造函数中写入如下,该怎么办?

public B ()
{
    C.ActionList.Add ( () => {
    ...
    } );
}
Run Code Online (Sandbox Code Playgroud)

c# delegates scope action object-lifetime

5
推荐指数
1
解决办法
605
查看次数

标签 统计

action ×1

c# ×1

delegates ×1

object-lifetime ×1

scope ×1