class N1
{
Func : void -> void { get; set; }
Foo1() : void {}
Foo2() : void {}
Test() : void
{
Func = Foo1;
// Это не работает, результат сравнения false,
// также как и для Func.Equals(Foo1)if(Func == Foo1)
{
...
}
else
{
...
}
}
}
Есть переменная Func, которая хранит функцию. Хочется проверить, что в Func хранится именно интересующая меня функция. А то ведь может и Foo2 быть сохранена. Как это можно сделать?
F>Есть переменная Func, которая хранит функцию. Хочется проверить, что в Func хранится именно интересующая меня функция. А то ведь может и Foo2 быть сохранена. Как это можно сделать?
Полагаю, что дело в том, что это методы экземпляра объекта. Попробуйте сделать их статическими.
Здравствуйте, /Forester/, Вы писали:
F>C# поддерживает сравнение делегатов
У функционального типа нет переопределения Equals в отличии от Equals делегата.
Компилятор вам прямым текстом это и говорит:
error: comparing values of types void -> void and void -> void with reference equality
Здравствуйте, _NN_, Вы писали:
_NN>Как вариант можно починить компилятор и добавить определение Equals в Nemerle.Builtins.Function(Void).
Не, с этим мне не справится. Даже представить не могу как этот Equals должен быть реализован. В моем конкретном случае понятно, а в общем, с учетом операции над функциями, совершенно не понятно.
Здравствуйте, /Forester/, Вы писали:
F>Не, с этим мне не справится. Даже представить не могу как этот Equals должен быть реализован. В моем конкретном случае понятно, а в общем, с учетом операции над функциями, совершенно не понятно.
Если нужно сравнение с семантикой, что функции с одинаковым поведением считаются равными, то доказано, что это алгоритмически неразрешимая задача.