Значение по умолчанию - C#
Формулировка задачи:
Работал с дженериками и интерфейсами. Проблема: есть некоторый интерфейс (INumber), все его элементы поддерживают в той или иной мере конвертацию из double. Это необходимо для, в том числе, инициализации нулей и единиц (в первую очередь, я бы даже сказал). Если я объявляю их как структуру, то при создании нового экземпляра я не могу отслеживать значения некоторых полей (разве что через лютейшие костыли). Если я объявляю их как класс, то моя реализация перестаёт работать. Есть ещё решение, переделать интерфейс в абстрактный класс, но тогда от него не смогут наследоваться структуры (а они нужны).
Как это сделал я:
Вопросы (ответить положительно на любой из списка):
1. Как задать конструктор по умолчанию для структуры?
2. Как инициализировать элемент известного интерфейса для дженерика (типа new T)?
3. Как запихать конструктор в интерфейс?
4. Как запихать статический метод в интерфейс?
5. Как в интерфейсе определить константу или нечто подобное, разнящееся для каждого наследника?
6. И вообще любой другой способ инициализировать ноль для неизвестного класса известного интерфейса.
private static T def = default(T); private static T val(double value) { return def.Constant(value); } // интерфейс включает в себя T Constant(double value); // Этот метод не получается сделать статическим, так что при инициализации класса двумя строчками выше // происходит ошибка -- вызов метода у нулевого объекта. private static T zero = val(0); private static T one = val(1);
Решение задачи: «Значение по умолчанию»
textual
Листинг программы
Interface IFoo { IFoo ZeroValue {get;} }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д