Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (21)

Лучшие ответы пользователя

Все ответы (9)
  • Почему для использования дженериков нужен интерфейс?

    Вопрос конечно не совсем корректен, интерфейс не обязателен.

    Вы просто в этом примере создаете интерфейс IPerson. Этот интерфейс могут по факту реализовывать сколько угодно классов. Например Person1, Person2, Person3. Все по своему.
    Теперь вам нужно сделать метод SpeakTo, который позволит вам поговорить с любым из этих классов. Окей, пишем дженерик и пишем ограничение на интерфейс. (where T : IPerson )
    Теперь в метод вы можете передать любой класс, реализующий интерфейс IPerson.

    Но вы также можете написать например класс PersonBase вместо интерфейса, унаследовать наши Person1, Person2, Person3 от базового класса. Тогда вам нужно будет написать ограничение не на интерфейс, а на базовый класс where T : PersonBase. И вы также сможете передавать в метод SpeakTo любой класс, унаследованный от PersonBase.
    public class PersonBase
    {
      public virtual string GetFirstName() {return "MY name is base"; }
      public virtual string GetLastName() { return "MY lastname is base"; }
    }
    
    //либо через абстрактный класс
    //public abstarct class PersonBase
    //{
    //  public abstract string GetFirstName();
    //  public abstract string GetLastName();
    //}
    
    class Speaker 
    {
      public void SpeakTo<T>(T person) where T : PersonBase
      {
        string name = person.GetFirstName();
        this.say("Hello, " + name);
      }
    }

    Еще бывают ограничения на конструктор, ограничения ссылочного типа и ограничения типа значения.
    Ответ написан
    Комментировать
  • Web Api как сделать несколько параметров в Get запросе? И делают ли так?

    Этот тестовый пример далек от реального проекта немного. Все зависит от предметной области (доменной области). Обычно такие вещи выносятся все-таки в гет-параметры
    /users?age=32&name=Tom

    а в сегменты url немного другие вещи. Сравните
    /users/blocked
    /users/active
    /users/1 - тут получаем конкретного юзера с id=1

    гуглите restful api design
    Ответ написан
    7 комментариев
  • Как сократить конструктор дочернего класса, дабы установить все параметры родительского объекта в дочерний?

    Попробуйте автомаппер, мне если честно вообще не нравится этот код. Я бы не делал такой конструктор ИМХО. Лучше какой-то маппер/конвертер в отдельном классе. А можно вообще не наследоваться, просто добавьте св-во типа Article. И вокруг него уже пляшите. Зависит от контекста того, что вы делаете.
    Ответ написан
    4 комментария
  • Как вычислить значение функций в С#?

    Не совсем понятно, вы вводите R с клавиатуры и значение X, в котором надо вычислить Y?
    У вас тут 4 отрезка от -бесконечности до -R, от -R до 0, от 0 до R и от R до плюс бесконечности. Какой функцией описать каждый отрезок думаю догадаетесь. Дальше if в помощь, чтобы проверить в какой из отрезков попадает X и рассчитать соответствующую функцию.
    Ответ написан
    Комментировать
  • Как становятся программистами?

    Ты все правильно делаешь. Все программисты пользуются гуглом. Важно не то, что ты не знаешь(не помнишь), а то, что ты знаешь КАК искать и можешь понимать, что тебе этот самый гугл предлагает. Программирование - это не о конкретных технологиях, это о подходах и предметной области. Технологии забываются, если ими не пользуешься, и запоминаются рано или поздно в противном случае)
    Сосредоточиться по началу надо на современном ООП, GoF, Фаулере, архитектуре, рефакторинге.

    Что касается совета комментировать код - это плохой совет. Код должен сам говорить за себя, и в этом кстати тоже заключается искусство писать хороший код.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (15)