В C # 2.0 я могу сделать следующее:
public class MyClass
{
delegate void MyDelegate(int myParam);
public MyClass(OtherObject obj)
{
//THIS IS THE IMPORTANT PART
obj.SomeCollection.Add((MyDelegate)MyFunction);
}
private void MyFunction(int myParam);
{
//...
}
}
Пытаясь реализовать то же самое в C ++ / CLI, похоже, мне нужно сделать:
MyDelegate del = gcnew MyDelegate(this, MyFunction);
obj->SomeCollection->Add(del);
Очевидно, я могу также создать новый экземпляр делегата в C # вместо того, что там происходит. Есть ли какая-то магия, происходящая в мире C #, которой нет в C ++ / CLI, которая позволяет этому приведению работать? Какой-то волшебный анонимный делегат? Спасибо.