Задать вопрос
  • Обьясните в чём суть инкапсуляции?

    Инкапсуляция защищает не от хакеров, а от неправильного использования объектов.
    Как пример - у тебя может быть класс "Заказ" и у него может быть какой-то статус (оплачен/ждёт оплаты/отменён итд).
    При этом у тебя могут быть правила типа: уже оплаченный заказ не может стать вдруг неоплаченным, а отменённый заказ нельзя взять обратно в работу.
    Тогда логично будет сделать поле статуса приватным (не доступным для изменения извне напрямую), а менять его только через методы, где будет происходить вся валидация.
    (В некоторых языках такие правила принято описывать на уровне типов, чтобы даже валидаций никаких было делать не нужно)

    Приватные поля объекта - это его состояние.
    Методы объекта - это способы его использования.

    Если у тебя в объекте появляется поле x и методы getX / setX (или авто геттеры/сеттеры в C#), то значит, что у тебя и нет явных причин делать это поле приватным, кроме соблюдения общепринятых соглашений.
    Ответ написан
    7 комментариев
  • Как вывести формулу в TextBox?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Посмотри список тут - https://stackoverflow.com/a/9071856
    Ответ написан
    Комментировать
  • Как benchmarkdotnet передает аргументы?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Разве для каждого метода, каждой итерации не новый объект приходит?

    Судя по исходному коду (https://github.com/dotnet/BenchmarkDotNet/blob/109...), аргументы создаются во время создания объекта бенчмарка.

    Если тебе нужно на каждую итерацию создавать новый объект и работать с ним, то для этого используются Setup/Teardown методы. Их помечать через [IterationSetup]/[IterationCleanup] атрибуты надо.
    Примерно так:
    public class SampleBenchmark
    {
        private object _object;
    
        [IterationSetup]
        public void MySetup()
        {
            _object = CreateData(1000);
        }
    
        [IterationCleanup]
        public void MyCleanUp()
        {
            _object = null;
        }
        
        [Benchmark]
        public void Benchmark()
        {
            _object.DoSomething();
        }
    }


    как вообще можно узнать что пришло, если какой-то гений придумал что в Debug не работает Benchmark, гений

    BenchmarkDotNet использутся для замера производительности. В него помещается изначально правильно работающий код, производительность которого нужно замерить для будующих запусков в проде. В дебаг режиме есть много лишнего, неоптимизированного кода, поэтому производительность будет ниже и, чтобы таких ситуаций не было сделали такое ограничение.
    Если тебе нужно дебажить - то это юнит (xUnit, NUint, MSTest) и другие виды тестирования
    Ответ написан
    Комментировать
  • Почему C# не кроссплатформенный?


    Почему C# не кроссплатформенный?

    На этот вопрос нельзя ответить сразу по двум причинам:
    1. C# - это язык, а язык не может быть кросс-платформенным, так как платформы в разрезе языка и нет.
    2. .NET уже много лет как кросс-платформенный.
    Начиная с уже мейнстримного .NET 8, заканчивая mono и всякой экзотикой типа nano framework


    но при этом, это не так

    Ничто нельзя запустить на "чём угодно"


    но в неё вопрос кроссплатформенности решена абсолютно полностью

    Если вопрос "абсолютно полностью" решён, то почему я не могу запускать программы, написанные на Java, на любом железе?
    Ответ написан
    Комментировать
  • Дистрибутив Linux с поддержкой Windows-программ?

    GavriKos
    @GavriKos
    Не сильно понятно в чем проблема взять любой дистрибутив, и поставить в него вайн и все вышеперечисленное.
    Ответ написан
  • Ошибка fasm ELF64 error: undefined symbol '_start', как мсправить?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот тут опечатка.

    satrt:
    Ответ написан
    Комментировать
  • Можно ли заменить дистрибутив линукс на другой если он стоит на одном диске вместе с win10?

    @aleks-th
    Можно, а вчем проблема то?
    Главное правильные разделы выбрать, чтоб Винду ненароком не снести
    Ответ написан
    Комментировать
  • Почему шрифт применяется только к цифрам?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Почему шрифт применяется только к цифрам?

    Подозреваю, вы пытаетесь применить его к тексту на русском. И, вероятно, он не поддерживает кириллицу (буквально нет символов букв). Возможно, есть версия с поддержкой, но это вопрос к дизайнеру.
    Ответ написан
    1 комментарий
  • Какой аналог метода help Python в c#?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Функция help не делает листинг кода. Она просто выводит докстринг. Я уже миллион лет не писал на C#, но там тоже есть документирующие комментарии. Разница только в том, что документация по ним генерируется отдельной утилитой, а не выводится в REPL функцией.
    Ответ написан
    Комментировать
  • В чем разница присвоение через точечную запись от инициализатора объекта? Могут ли они быть друг друга взаимозаменяемы?

    Можно ли считать, что это действие было одним и тем же, просто подход разный?

    Да. Это одно и то же, тк компилятор первое превращает во второе. Это описано в стандарте и докуентации.

    возможно ли теоритически в реальном проекте применять второй вариант?

    Можно, но зачем?
    + Этот вариант будет работать только с set. А вот если будут использоваться новомодные фичи типа init и required - ты сможешь инициализировать только первым способом.
    Ответ написан
    Комментировать
  • Подсчет hash суммы .iso образа?

    @kalapanga
    Достаточно этим программам брать файлы для помещения в образ в разном порядке и контрольная сумма образа будет уже разной. Кроме того сама файловая система ISO 9660 имеет разновидности.
    Ответ написан
    Комментировать
  • Есть ли копирайт (авторское право) на названия игр?

    Имя является торговой маркой, так что просто так взять название ты никак не можешь.

    Но сам наблюдаю такое постоянно

    То что нарушителя никто не карает - ещё не значит, что он не нарушитель.
    Тем более, что в случае с River Raid прошло уже 40 с хреном лет. - скорее всего регистрация давно закончилась и продлевать её никто не будет (собственно погуглил - и правда не существует торговой марки "River Raid" в сфере компьютерных программ или видеоигр)
    Да и компании Activision уже формально не существует после слияния с Blizzard и Microsoft - им видимо пофигу что кто-то использует название какой-то древней игры.

    Или может там срок давности какой-то есть?

    Ага. Любая торговая марка регистрируется на ограниченное время

    Как понять вообще, что можно что нет с названиями...

    Можно попытаться загуглить какой-нибудь реестр торговых марок типа https://ru.unibrander.com/
    Ещё можно узнать непосредственно у владельца торговой марки, до какого времени она действует и можно ли тебе её использовать )
    Ответ написан
    3 комментария
  • Как запустить VSCode как root?

    dark_firewall
    @dark_firewall Автор вопроса
    Программист C#
    рут для автосохранения он требует только если ты пытаешься сохранить файлы, которые защищены рутом.
    Сохраняй код в домашнюю папку и всё будет норм.
    Ну либо chown примени

    Василий Банников
    Ответ написан
    Комментировать
  • Есть ли программы для поиска недостающих файлов (фотографий) при сравнении разных папок с похожим содержанием?

    hint000
    @hint000
    у админа три руки
    FAR manager или, на худой конец, Total Commander.
    В обоих есть функция сравнения папок.
    Процесс выглядит примерно так:
    1. выбираете на левой панели одну папку, на правой панели другую папку, запускаете сравнение;
    2. если обнаружены отличия, то заходите внутрь отличающихся папок слева и справа и повторяете сравнение и т.д., пока не увидите конкретные отличающиеся файлы или с одной стороны файл, а с другой стороны его отсутствие;
    3. после всех ручных синхронизаций делаете контрольное сравнение.

    Ещё можно использовать утилиты для автоматической синхронизации указанных папок - RSync, Robocopy, SyncThing и т.п. Но не предложил именно их в первую очередь из уважения к паранойе на тему утраты файлов (а то при неправильной настройке можно и не в ту сторону синхронизировать). Если вручную синхронизировать спокойнее, то FAR или TC, а когда вручную надоест, тогда уж можно автоматизировать.
    Ответ написан
    1 комментарий
  • Как умножать без периода в c#?

    По сути никак.
    У тебя в любом случае будет возникать период. Если не из-за двоичных чисел, то из-за десятичных. + всегда будет ограничение по точности для очень длинных чисел.

    Варианты, как преодолеть:
    1. Округлять до N значимых.
    2. Сравнивать на равенство через разность
    3. Использовать decimal (не панацея) или BigDecimal (нужно поискать библиотеку)
    4. Использовать библиотеки для символьной математики. (Гугли symbolic math)
    Ответ написан
    Комментировать
  • На чем легче написать электронный каталог для библиотеки?

    Проще всего будет на том языке, который ты лучше знаешь.
    Например я бы писал это на C#

    А по сложности реализации - все мейнстримные языки с GC будут очень похожими.
    Ответ написан
    Комментировать
  • Как найти файлы модифицированные в диапазоне дат?

    find /path -type f -newermt 2022-03-03 ! -newermt 2022-03-06
    Ответ написан
    Комментировать
  • Какой Линукс подойдет для этого компьютера?

    Adamos
    @Adamos
    Главный вопрос - стоящее ЧЕГО. Запустить на этом Линь с легким DE и офисом получится - будет весьма неторопливо, но многие пользователи сами медленнее даже такой машинки.
    Можно ускорить отзывчивость, поставив современный этому железу дистрибутив и программы, еще не отожравшиеся по памяти.
    Но вы же, подозреваю, захотите интернету? А значит, современный браузер, который сожрет всю эту память прямо при старте и будет постоянно хотеть еще, терзая своп...
    Ответ написан
    2 комментария
  • Как написать приложение подобное photoshop?

    GavriKos
    @GavriKos
    То, чего нет в обычных компонентах - делается на нестандартных компонентах. Можно писать свои компоненты же.

    Сетку на изображение можно даже в обычном Bitmap накладывать.

    В общем вам нужно огромную задачу "написать фотошоп" раздробить очень-очень мелко, и искать инфу уже по очнеь мелким задачам. Например - как создать свой конрол
    Ответ написан
    Комментировать
  • Почуму я не могу установить версию .Net больше чем 7.0 через VS installer 2022?

    Adler_lug
    @Adler_lug
    Хм. А какую бы вы хотели установить? .Net 7 это последняя версия.
    Ответ написан
    Комментировать