• Как работают автоматические свойства get;set в c#?

    oxyberg
    @oxyberg
    Продуктовый дизайнер ВКонтакте
    public int Age { get; set; }
    В этом коде нет приватного свойства, и компилятор его создает сам. Тут используются геттеры и сеттеры по умолчанию, то есть просто присваивается и извлекается значение.

    А вот здесь мы инкапсулируем свойство _age:
    private int _age;
    public int Age
    {
        get => _age;
        set => _age = value;
    }

    Подробнее почитать можно на каком-нибудь Метаните.
    Ответ написан
    2 комментария
  • Ошибки при заполнении вектора. С++?

    myjcom
    @myjcom Куратор тега C++
    using namespace std;
    class Student
    { 
    public:
        string name; 
        string last_name; 
        string year;
        string get() 
        { 
             string s =  name + ',' + last_name + ',' + year;
             return s;
        }
    };
    
    int main(int argc, char* argv[])
    {
        Student student;
        student.name="Ivan";
        student.last_name="Ivanov";
        student.year = "2001";
    
        vector<Student> v1;
        v1.push_back(student);
        cout << v1[0].get();
    }
    Ответ написан
    6 комментариев
  • Писать ref в C#?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    Что то вы путаете, требование, как было, так и осталось.
    Ответ написан
    1 комментарий
  • Как перерасти из кодера в программиста?

    @AlexSer
    Думаю хорошие программисты все идеалисты. Именно поэтому им все время не нравиться то, что они делают. Сегодня тебе кажется, что ты пишешь красивый код. А через месяц смотришь на свой тот же код, и думаешь: - "блин что за урод это писал, ну как так можно".))
    Ответ написан
    2 комментария
  • Как побороть вагон if'ов?

    profesor08
    @profesor08 Куратор тега JavaScript
    Обойди их циклом, у тебя же все одинаково.

    for (let p in req.body.queryResult.parameters) {
      if (req.body.queryResult.parameters.hasOwnProperty(p)) {
        transportationData[p] = req.body.queryResult.parameters[p];
      }
    }
    Ответ написан
    2 комментария
  • Почему не работает .NET Core 2.1?

    pavelkarinin
    @pavelkarinin
    Full Stack Web Developer
    .NET Core 2.1 SDK устанавливается отдельным пакетом. Интеграция .NET платформ в IDE Visual Studio всегда происходит чуть позже с выходом обновлений.
    Ответ написан
    Комментировать
  • Почему не работает .NET Core 2.1?

    Вы скорее всего увидите .Net Core 2.1 только в Visual Studio 2017 15.7 Preview 1 , почитайте внимательно https://blogs.msdn.microsoft.com/dotnet/2018/04/11...
    Ответ написан
    Комментировать
  • Зачем нужен указатель на void?

    @Mercury13
    Программист на «си с крестами» и не только
    void* используется как указатель на сырые байтовые данные, не имеющие конкретного типа.
    Обычно это используется…
    1. В чтении-записи в файлы и на устройства, когда мы можем писать туда абсолютно любые типы.
    2. В «многоликих» функциях, которые могут принимать данные разных типов (malloc/calloc, часть функций WinAPI и ODBC).
    3. Как дескриптор — указатель, который запрещается разыменовывать. В Си для этого также часто используют указатель на недоопределённый тип, в Паскале с другими правилами эквивалентности типов — на пустой record. Но только пока не появится очередная многоликая функция вроде CloseHandle.
    4. Для обеспечения т.н. замыкания — передачи callback’у контекста, откуда была вызвана функция, вызвавшая callback.
    BOOL WINAPI EnumWindows(
      _In_ WNDENUMPROC lpEnumFunc,
      _In_ LPARAM      lParam
    );
    
    BOOL CALLBACK EnumWindowsProc(
      _In_ HWND   hwnd,
      _In_ LPARAM lParam
    );

    Вот этот LPARAM, который обычно определяется как какой-то указатель, и есть замыкание. Функция EnumWindows обещает передать его в функцию lpEnumFunc без изменений.
    (В Си++ для этого также используют виртуальные интерфейсы, но такой метод, сами понимаете, языкозависим и не годится для межъязыкового API.)

    Что происходит на стороне функции? Одно из двух (считаем, функция написана на ЯВУ).
    1. Либо вызывается некая функция устройства, которая говорит: «записать 100 байт», и дальше уже работает железо.
    2. Либо мы преобразуем void* в нужный нам тип и работаем с ним.

    Типы указателям дают по трём причинам.
    1. Вы забыли про операцию «разыменовать указатель». Чтобы его разыменовать, он должен иметь тип!
    2. Чтобы не ошибаться и не переприсвоить несовместимые указатели.
    3. Для полиморфизма — в Си++, давая delete x, мы даже можем не хранить, сколько байтов в блоке, поскольку мы знаем длину типа. (Есть ещё и виртуальные классы, но это другой вопрос.)
    Ответ написан
    Комментировать
  • Что можно сделать с компьютером при полном доступе?

    longclaps
    @longclaps
    Вирусы в биосе - это еще цветочки.
    Нехорошие люди могут научить ваш компьютер пить, курить и ругаться матом - и ничего уже не исправить, даже форматированием HDD.
    update
    Ввиду того, что меня уже многие объявляют троллем, хочу дать альтернативный ответ.
    1. Оговорюсь, что он касается только так называемых "стандартных PC", на других архитектурах (напр ARM, MIPS), или с другими загрузчиками (напр Mac, Chromebook) возможно бывает иначе.
    2. В настоящий момент для первоначальной загрузки компа используется прошивка UEFI. Если вам не западло копаться работать на древнем хламе с BIOS - в этом случае отсылаю вас к специалистам.
    3. На сегодня возможность модифицировать UEFI есть, и нехорошие люди, стремясь навредить вам, наверняка её освоили.
    Ответ написан
  • Альтернатива Visual Studio?

    @wawa
    мои 5 копеек:
    CodeLite, VSCode
    Ответ написан
    Комментировать
  • Насколько отвратителен данный код?

    xSkyFoXx
    @xSkyFoXx
    1) Предпочтительнее использовать string из std, в этом случаи вам не надо заниматься явным приведением типов.
    2) Если вы используете константы для всего приложения, перенесите их на уровень вашей текущей единицы трансляции. Снабдите коментариями для ясности.
    3) fmt::format здесь лишняя зависимость. Вы можете воспользоваться сразу Си-строками, или сформировать строку через конкатинацию.
    4) Если вы всегда возвращаете true, тогда зачем вообще что-либо возвращать? void должно быть достаточно хорошо.
    Ответ написан
    Комментировать
  • Насколько отвратителен данный код?

    @Mercury13
    Программист на «си с крестами» и не только
    Главная проблема.
    const char *source = fmt::format("/tmp/{}.ini", unid).c_str();

    Объект fmt::format сразу же исчезнет, и source будет «висеть».

    Придётся писать…
    fmt::format fmSource("/tmp/{}.ini", unid);
    const char *source = fmSource.c_str();

    И так далее.
    Ответ написан
    8 комментариев
  • Как защитить свое программное обеспечение от пиратов?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Никак!
    Т.к. это два взаимоисключающих фактора: "GNU General Public License" и "защитить".
    Ответ написан
    1 комментарий
  • Почему нельзя присвоить новое значение переменной в классе?

    Morpheus_God
    @Morpheus_God
    Вы уже один раз проинициализировали переменную значением, вне метода насколько мне известно, менять переменную нельзя. В теле метода можете присвоить новое. В рамках класса нет.
    Ответ написан
    Комментировать
  • Какой тип данных вернуть из функции при составлении списка?

    Раз у Вас возвращается список result, который у вас List<CreditsList>, то смею предположить, что и тип метода должен быть List<CreditsList>
    Ответ написан
    Комментировать
  • Как можно обойти защиту от блокировщика рекламы?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    поправить их в блокировщике, чтобы он стирал/фильровал такие сообщения

    сайт может узнать о блокировщике только на стороне клиента, а значит - такой код тоже можно отфильтровать
    Ответ написан
    2 комментария
  • Корректен ли этот код?

    В первом случае у вас объект уничтожается раньше ссылки.

    Во втором случае время жизни ссылки и объекта одинаково, так что это рабочий пример.

    Нет никаких временных объектов. Есть стек и есть куча. Понимание разницы эти двух областей памяти отвечает на 90% вопросов в C++.
    Ответ написан
    9 комментариев
  • Какие ещё подходы кроме функционального и ООП встречаются на практике?

    gobananas
    @gobananas
    finishhim.ru
    Функциональное, ООП вы сказали. Есть ещё процедурное. Так же они делятся на императивное, декларативное.

    А так-то: парадигмы программирования

    Основные модели программирования

    Императивное программирование
    Декларативное программирование
    Структурное программирование
    Функциональное программирование
    Логическое программирование
    Объектно-ориентированное программирование
    Программирование, основанное на классах
    Программирование, основанное на прототипах
    Субъектно-ориентированное программирование

    Подходы и приёмы

    Структурное программирование
    Процедурное программирование
    Аппликативное программирование
    Обобщённое программирование
    Доказательное программирование
    Порождающее программирование
    Аспектно-ориентированное программирование
    Агентно-ориентированное программирование
    Рекурсия
    Автоматное программирование
    Событийно-ориентированное программирование
    Компонентно-ориентированное программирование
    Грамотное программирование
    Ответ написан
    3 комментария
  • Разница между string_view и const string_view&?

    В чём разница между string_viewили const string_view& в аргументах функции?


    В первом случае у вас объект, который вы можете менять. Например настроить его на новую строку. При этом исходный объект останется неизменным, т.к. тут передача параметра по значению, а значит внутри функции у вас будет копия string_view.

    Во втором случае у вас ссылка на константу. Поменять объект вы не можете, зато сэкономите несколько байт на стеке.

    Если алгоритм не требует менять параметр функции, то предпочитайте второй вариант. Ссылку на константу можно получить от любого объекта.

    string_view это не в коем случае не замена string. Не нужно его пихать везде.

    string_view это не обёртка над char*. string_view может содержать символ "\0".
    string_view это read-only pascal-строка.
    Ответ написан
    2 комментария
  • Как оформиться фрилансеру на работу?

    petermzg
    @petermzg
    Самый лучший программист
    Работодатель должен платить вам минимальную заработную плату установленную в регионе
    Для питера это минимум 16 000 руб,
    Плюс налоги из фонда заработной платы. Это 30%.
    Конечно еще зарабатывать на этом нужно, то есть накинуть процентов.

    Вам точно это будет не выгодно
    Ответ написан
    2 комментария