В чем разница между - = new EventHandler (Method) to - = Метод , когда метод передается как параметр?- = new EventHandler (Method) vs - = Метод при передаче метода как параметр
Почему removeNew не удалось отказаться от подписки?
см следующий класс:
public class Class1
{
public EventHandler _eh;
public void OnEvent()
{
if (_eh != null)
{
_eh.Invoke("", new EventArgs());
}
}
public void remove(EventHandler evHandler)
{
// unsubscribe successfully
_eh -= evHandler;
}
public void removeNew(EventHandler evHandler)
{
// failed to unsubscribe
_eh -= new EventHandler(evHandler);
}
}
Update:
@SchabseLaks, просто clearify мой questation я добавляю код, который называют это методы:
public partial class Form1 : Form
{
Class1 c1 = new Class1();
public Form1()
{
InitializeComponent();
c1._eh += Hello;
}
private void button1_Click(object sender, EventArgs e)
{
c1.OnEvent();
}
private void Hello(object sender, EventArgs e)
{
MessageBox.Show("hello");
}
private void button2_Click(object sender, EventArgs e)
{
c1.removeNew(Hello);
}
private void button3_Click(object sender, EventArgs e)
{
c1.remove(Hello);
}
}
Яблоко, указывающее на яблоко, - это не то же яблоко, на которое указывает яблоко. – CodeCaster