C# 如何正确处理对象

C# 如何正确处理对象,c#,design-patterns,oop,delegates,C#,Design Patterns,Oop,Delegates,我正在经历一些奇怪的事情,并且已经有了解决办法,但是我认为我不太理解它 如果我在一个类中多次调用下面的方法: public void Method() { Foo a = new Foo(); a.Delegate1Handler = ViewSomething(); } 如果我在方法()所在的类的一个实例中多次调用该方法()。。。我每次都在重新初始化“a”,但由于某种原因,a.Delegate1Handler在上次初始化时仍然存在,因此ViewSomething()被一次又一次地调用

我正在经历一些奇怪的事情,并且已经有了解决办法,但是我认为我不太理解它

如果我在一个类中多次调用下面的方法:

public void Method()
{
 Foo a = new Foo();

 a.Delegate1Handler = ViewSomething();
}
如果我在方法()所在的类的一个实例中多次调用该方法()。。。我每次都在重新初始化“a”,但由于某种原因,
a.Delegate1Handler
在上次初始化时仍然存在,因此ViewSomething()被一次又一次地调用

我觉得我忘记了一些重要的事情

福的内脏看起来像:

public delegate void Delegate1(T t);
public Delegate1 Delegate1Handler { get; set; }
编辑:(我提出的解决方法如下所述,但我仍然不明白它为什么会这样做)->


初始化了“a”,并且它是“方法”之外的delegate1Handler,delegate1Handler只初始化一次,“a”可以再次重新初始化-没问题!(或者可能是我不知道)a.Delegate1Handler=ViewSomething()

对我来说,这表明
ViewSomething()
是一个返回委托的方法


ViewSomething()
每次运行
Method()

时都会被调用

public void Method()
{
 Foo a = new Foo( ViewSomething );
}

// ...
public class Foo
{
    public Foo( Delegate1 del ) // note: accepting the delegate parameter
    {
        DelegateHandler = del;
    }
}
public delegate void Delegate1(T t);

public Delegate1 Delegate1Handler { get; set; }

你能发布真实的代码而不是它的模仿者版本吗?我怀疑问题出在你发布的代码中,因为它不应该表现出你描述的问题。也许你应该发布更多的代码,以澄清你的怪异行为。为什么你用代表字段而不是公共事件?好的,今晚我将用更多信息编辑我的问题。嗯,没想到会这样。汉斯:我不明白你的意思。请你把它作为答案贴出来好吗?