C#在构造函数中传递对类的引用

时间:2015-07-09 12:29:11

标签: c# class reference

我想在创建类的新实例时将对设置的引用传递给类。然后应该在某些情况下更改提供的设置。但是,当我尝试这样做时,我得到“不能在anonymouse方法,lamda表达式或查询表达式中使用ref或我们的参数'设置”

class MyClass {
    private int setting;

    public MyClass(ref int setting) {
        SomeOtherClass someOtherClass = new SomeOtherClass();

        someOtherClass.SomeEvent += (s, e) => {
            setting = someOtherValue;
        };
    }
}

我的应用程序我必须经常使用“MyClass”,当每个实例之间只有设置不同时,必须为每个实例编写事件处理程序似乎是愚蠢的。

我有什么方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:1)

class MyClass {
    private int setting;

    public MyClass(Action<int> onNewSetting) {
        SomeOtherClass someOtherClass = new SomeOtherClass();

        someOtherClass.SomeEvent += (s, e) => {
            setting = someOtherValue;
            onNewSetting(setting);
        };
    }
}

在Main(或其他地方):

int local = 0;
var m = new MyClass(i => local = i);

答案 1 :(得分:0)

使用lambda表达式传递委托:

class MyClass 
{
    private int setting;

    public MyClass(ref int setting) 
    {
       SomeOtherClass instance = new SomeOtherClass(s => setting = s);
    }
}


class SomeOtherClass
{
    Action<int> changeValue;
    public SomeOtherClass(Action<int> method) { changeValue = method; }    

   // invoke it and pass new value where you need it :
   // void SomeWhereInCode() { changeValue(100); }
}