Это смешно, я знаю ... Но вот демо:
class Foo
{
// A lot of data in the nullable class foo.
}
class bar
{
public delegate void FooHandler(object sender, ref Foo f);
public event FooHandler FooChanged;
}
Проблема в том, что я хочу установить 'f' в ноль в обработчике событий, но я не могу передать ноль какссылкаЯ попробовал это вместо этого:
public delegate void FooHandler(object sender, ref Foo? f);
Но Foo обнуляем, так что это не работает.Затем я попытался изменить метод invoke для обработчика и настроить фиктивный нулевой элемент для передачи, который тоже не работал.Я попытался использовать вместо ref, так как out не нуждается в инициализированной переменной, и она скомпилирована, но не запустилась.
Это действительно странно, и я никогда не видел ничего подобного.Я мог бы изменить класс Foo на ненулевой, чтобы я мог реализовать его как Nullable, или я мог бы добавить свой собственный флаг Foo.HasValue и сделать это таким образом ... Но нет способа сделать это без изменения класса Foo