M
mortb
Why won't the third messagebox show in the second example, but not the
first?
cheers,
mortb
///////////////////////////////////////////////////////
///
/// Example 1
///
using System;
using System.Collections.Generic;
using System.Windows.Forms;
public delegate void myDel();
public class MyClass
{
public static void Main()
{
myDel del1 = delegate () { MessageBox.Show("1"); };
mySecondClass class2 = new mySecondClass(ref del1);
class2.addToDel();
class2.addToDel(ref del1);
del1();
}
}
public class mySecondClass
{
public mySecondClass(ref myDel del)
{
_del = del;
}
public void addToDel()
{
_del += delegate () { MessageBox.Show("2"); };
}
public void addToDel(ref myDel del)
{
del += delegate () { MessageBox.Show("3"); };
}
myDel _del;
}
///////////////////////////////////////////////////////
///
/// Example 2
///
public class MyClass2
{
public static void Main()
{
List<myDel> del1 = new List<myDel>();
del1.Add(delegate () { MessageBox.Show("1"); });
mySecondClass2 class2 = new mySecondClass2(ref del1);
class2.addToDel();
class2.addToDel(ref del1);
foreach(myDel step in del1)
{
step();
}
}
}
public class mySecondClass2
{
public mySecondClass2(ref List<myDel> del)
{
_del = del;
}
public void addToDel()
{
_del.Add(delegate () { MessageBox.Show("2"); });
}
public void addToDel(ref List<myDel> del)
{
del.Add(delegate () { MessageBox.Show("3"); });
}
List<myDel> _del;
}
first?
cheers,
mortb
///////////////////////////////////////////////////////
///
/// Example 1
///
using System;
using System.Collections.Generic;
using System.Windows.Forms;
public delegate void myDel();
public class MyClass
{
public static void Main()
{
myDel del1 = delegate () { MessageBox.Show("1"); };
mySecondClass class2 = new mySecondClass(ref del1);
class2.addToDel();
class2.addToDel(ref del1);
del1();
}
}
public class mySecondClass
{
public mySecondClass(ref myDel del)
{
_del = del;
}
public void addToDel()
{
_del += delegate () { MessageBox.Show("2"); };
}
public void addToDel(ref myDel del)
{
del += delegate () { MessageBox.Show("3"); };
}
myDel _del;
}
///////////////////////////////////////////////////////
///
/// Example 2
///
public class MyClass2
{
public static void Main()
{
List<myDel> del1 = new List<myDel>();
del1.Add(delegate () { MessageBox.Show("1"); });
mySecondClass2 class2 = new mySecondClass2(ref del1);
class2.addToDel();
class2.addToDel(ref del1);
foreach(myDel step in del1)
{
step();
}
}
}
public class mySecondClass2
{
public mySecondClass2(ref List<myDel> del)
{
_del = del;
}
public void addToDel()
{
_del.Add(delegate () { MessageBox.Show("2"); });
}
public void addToDel(ref List<myDel> del)
{
del.Add(delegate () { MessageBox.Show("3"); });
}
List<myDel> _del;
}