C# 在差异方法中更新引用(`ref`)

C# 在差异方法中更新引用(`ref`),c#,interface,pass-by-reference,ref,C#,Interface,Pass By Reference,Ref,我试图更新变量ref container,该变量通过构造函数传递,设置为等于Run方法中的新对象。当然,在Run方法中,我正在更新对Foo::\u container的引用,而不是Main中定义的变量container。所以我想知道是否有一种方法可以保存通过构造函数传递的容器引用,然后更新引用的值。多谢各位 public class Foo { private IContainer _container; public Foo(ref IContainer container)

我试图更新变量
ref container
,该变量通过构造函数传递,设置为等于
Run
方法中的新对象。当然,在
Run
方法中,我正在更新对
Foo::\u container
的引用,而不是
Main
中定义的变量
container
。所以我想知道是否有一种方法可以保存通过构造函数传递的容器引用,然后更新引用的值。多谢各位

public class Foo
{
    private IContainer _container;

    public Foo(ref IContainer container)
    {
        _container = container;
    }

    public void Run()
    {
        var temp = new Container();
        _container = temp;
    }
}


static class Main
{
    static void Main()
    {
        IContainer container = null;
        (new Foo(ref container)).Run();

        // container is still null
        Console.WriteLine(container);
    }
}

我不相信你能做你想做的事。ref参数是该方法的局部参数。退一步,你到底想达到什么目的?您没有使
Foo
保持活动状态,因此尝试存储
IContainer
引用或使用单独的
Run()
方法的目的是什么?因为您不能有ref字段,所以对的讨论非常相关。