Ответы пользователя по тегу C#
  • Стоит ли читать книгу Шилдта по С#?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    C# 4.0 это очень древний, нет смысла его читать. Microsoft каждый год планируется выпускать новую версию .NET, старые версии поддерживаются +- 3 года.
    Конкретно за книги, они учат логики и философии кодинга, где можно рассказать примеры и объяснить принципы работы "Водой", что является очень важным аспектом, т.к. при собеседовании на фирме вам будут давать [возможно] тесты по языку и фреймворку, а так же тестовое задание, где будет оцениваться как работоспособность проекта, так и правильность написания.
    Если смотреть в сторону профессиональных курсов, то вас будут ругать даже за неправильно названные переменные, это уже если не говорить об самой логике написния задачи.
    Цель подобных книг - закрепить понимание языка, а не зазубрить синтаксис. Тот же metanit показывает сугубо синтаксис и как правильно его юзать, но он вас никогда не будет учить, где его использовать, как и при каких условиях, почему этот метод плох, а где он будет незаменим.
    Но для новичков лучше не наседать на книги, а делать упор на практику, но без "поводыря" очень сложно, т.к. если у вас не понимания самой логики построения, вам будет очень сложно что-то делать в будущем.

    Тут очень хороший пример с математикой: что бы быть хорошим математиком, ты должен не знать математику, ты должен её понимать. В программировании аналогично
    Ответ написан
    Комментировать
  • Аналог звёздного оператора распаковки * из python в c#?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Цикл foreach хорошо подойдёт
    Кастомная функция для вывода всех элементов списка или массива
    Ответ написан
    Комментировать
  • Как мне визуализировать огромное количество данных из xml-файла?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Используйте загрузку данных в некотором объёме. Допустим, настройте своеобразные страницы для просмотра (Типа сайта фильмов, они не загружаются все миллион, а страницами) и просто вытаскивайте из списка/массива от n индекса до m (m < length) и выводите на экран, или куда вам там надо) Можете так же настроить какие-то сортировки для большего удобства, что-то типа, вывести последних 200 штук
    Ответ написан
    Комментировать
  • Простой способ хранения данных с серверной стороны C# WCF?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    1) Проверьте существование файла по указанному пути
    2) Писать путь к файлу прямым текстом - плохая практика, такие данные нужно хранить где-то в константном виде, либо в конфигурации
    3) Попробуйте записать в файл каждого юзера "По свойственно", т.е. каждое свойство/поле записать отдельно, это всё в цикле для каждого юзера
    4) Запустите дебаг (Для 3го пункта), проверьте, что находится в файле после записи каждого юзера
    5) Вообще, используйте базу данных)))
    Ответ написан
    Комментировать
  • Как запустить C# в VSCode?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    VS Code это просто стилизированный БЛОКНОТ. Для того, что бы на нём что-то запустить, нужно установить соответствующее расширение (Компилятор, различный сниппеты (Подсказки кода и автодополнение), компиляторы для фреймворков и т.д.)
    Ответ написан
  • Как правильно инициализировать ссылку?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Для инициализации любого ссылочного типа используется ключевое слово new и конструктор
    Ответ написан
    Комментировать
  • Конвертировать строку в объект?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Используйте сериализацию JSON
    Ответ написан
    Комментировать
  • Как ввести логгирование в ASP.NET Core?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Логирование используется для записи ошибок в како-то файл. Например, если вы, при чтении из БД получили Exception, тогда вы обращаетесь к логеру и вызываете метод .LogError куда передает ошибку в виде строки. Эта строка будет записана в файл, откуда вы потом сможете это прочитать.

    Встроенный интерфейс ILogger<> подойдёт вам вполне. Для настройки места, куда будут сохраняться логи, читайте конфигурацию логера, как его правильно настроить

    Да, логи пишутся вручную
    Ответ написан
  • Как лучше передавать стандартные значения в другие классы?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Ну, вы движетесь в верном направлении. Создать статический класс в котором будут записаны данные конфигурации и просто вызывать его в тех местах, где это нужно. Если значение нужно только для его получения, можете позначить его readonly (Как вы уже сделали) или public Get; private Set; для свойств.

    Ещё как вариант, можете попробовать использовать статические файлы конфигурации
    Ответ написан
    Комментировать
  • Как читать только новые цифры, без старых чётных/нечётных чисел в текстовый документ?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Я бы советовал вам сперва улучшить ваш код до понятного уровня, а то тут сложно вообще что либо понять. К примеру: блок if вложен внутрь и никогда не будет работать, так как он отыгрывает роль блока else. Названия переменных просто ад какой-то, что за что отвечает - непонятно. Потоки без using. Для ввода с клавиатуры какого-то выбора используется string и блок switch. Разберитесь с этим

    Решение проблемы может быть в том, что у вас два блока if вложены, прочитайте про условные операторы и переделайте
    Ответ написан
    Комментировать
  • Как правильно произвести поиск строк в файле и извлечь из них данные?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Небольшой код для считывания данных из файла и записи в список:
    List<string> logs = new List<string>();
    using(StreamReader reader = new StreamReader("fileName.txt"))
    {
       while(!reader.EndOfStream)
       {
          logs.Add(reader.ReadLine());
       }
    }


    После этого, в списке logs будут все СТРОКИ из файла логов (Если он txt в данном случае). Далее, вы можете попробовать пройтись по этому списку и каждый элемент проверить с помощью метода класса String - IsContain который принимает аргументом строку. Если лог с ошибкой 100% имеет часть строки как Number of errors, вы можете сразу проверить сам лог

    Далее, можно уже просто по индексу искать, если у вас один и тот же паттерн для генерации данного лога ошибки, мол, если количество символов там не меняется никогда.

    Или можно применить метод Split(' ') для разбиения строки по пробелу, после чего элемент с индексом 6 будет иметь количество ошибок с точкой в конце (Как часть строки). После этого применить метод TrimEnd('.'), т.е. удалить указанный символ с конца строки и потом этот элемент просто int.Parse(...), что на выходе даст вам целое число ошибок. Но, лучше используйте int.TryParse(...)
    Ответ написан
    Комментировать
  • Возможно ли уменьшить строку с цифрами в 10 раз и потом вернуть её обратно?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Технически, это сделать можно, но для этого вам нужно более детально изучить методы кодирования информации, вот одни из самых простых, которые вы можете реализовать:

    • Алгоритм Шеннона — Фано
    • Алгоритм Хаффмана
    • Метод LZ77
    • Метод LZSS
    • Метод LZ78
    • Метод LZW
    • Метод Хэмминга (Сложный)
    Ответ написан
    Комментировать
  • Как параметризировать репозиторий базы данных?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Лично мой совет:

    Во первых, попробуйте сначала asp.net mvc, так как asp.net web api предлагается для тех программистов, которые имеют хотя бы 2 года коммерческого опыта.
    Во вторых, для новичков рекомендуется использовать Entity Framework (Для MS SQL Server и SSMS)
    Во трерьих, наследование от интерфейса (Правильно называется реализацией интерфейса, наследование только от классов) не создаст вам проблем, особенно если у вас в таком случае не возникает проблема компилляции (Какая именно?)
    Во четвертых, реализация интерфейсов вам понадобится для так званого "Конвейера", который вы должны изучить на asp.net mvc
    Ответ написан
    Комментировать
  • Почему в ListView не показываются элементы, а также является null?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Данный класс, в котором вы пишете (Form1) является partial (Прочитайте об этом). Вторая часть этого класса инициализирует (Т.е. создаёт) всё компоненты (Кнопки, текстБоксы и т.д.) на форме. По этому, до того, как на форме появятся хоть какие-то элементы, их нельзя, т.к. технически, они не будут ещё существовать вообще (т.е. null)
    Ответ написан
    Комментировать
  • Как привязать поведение ссылки/кнопки к конкретному экземпляру класса?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Немного не понял задачу, так что дам ответ, на то, что я понял)

    Во первых, попробуйте использовать JS, если нужно в зависимости от "Чего-то" изменить "Что-то", но это, как вы поняли, работает, если вам нужны изменения на вьюхе (Тут даже Vue.js подойдёт лучше).

    Во вторых, попробуйте использовать другие классы для таких задач. Тут вам уже нужен будет (Возможно) Ajax для корректной работы с вьюхами. Через Ajax пробуйте переадресовать клик "Куда-то" и там уже обработать
    Ответ написан
  • Почему Entity Framework Core не создаёт столбцы в таблице?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Оказывается проблема была в отсутствии nullable связей между таблицами
    Ответ написан
    Комментировать
  • Как переопределить встроенную валидацию в конвейер обработки запроса .net core?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Что-то рано вы перешли к web api )
    Лично я использую FluentValidation API (Не путать с Fluent Validator), который вы можете установить через NuGet и посмотреть на офф.сайте, как правильно настроить, буквально до часа работы займёт.
    Та же можно использовать стандартное свойство Model внутри контроллера и из него свойство IsValid для валидации модели либо отдельно проверять каждое свойство/поле на какое-то конкретное значение (== null, is null, String.IsEmpty(...)) и возвращать соответствующий сетевой код, для примера, в вашем случае, можно сделать return BadRequest( new { response = "Some fields is empty });
    BadRequest относится к типам, которые доступны по стандарту и в asp.net имеют соответствующие значения сетевых кодов. Вы используете в примере Ok, т.е. сетевой код 200.
    Ещё попробуйте поставить на метод HttpPost - IgnoreAntiforgetToken или как-то так он называется, возможно ошибка в нём (Если об этом не читали и ничего с этим не делали, тогда прям наверняка)
    Более подробно можете найти в интернете, направление я вам дал)
    Ответ написан
  • Как исправить исключение System.AggregateException: "Some services are not able to be constructed"?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Решение: проблема может возникать, если в другом классе, где вы пытаетесь получить объект через DI используется класс вместо интерфейса.
    Так же ошибка может возникать, если просто не зарегистрирован сервисный класс в конвейере
    Ответ написан
    Комментировать
  • Как и что читать дальше по C#?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Если вы даже данный момент пойдёте на работу, уже сейчас вы будете получать задачи по новому .NET 6, так что ориентируйтесь именно на него, максимум .NET 5. Так же для этого вам потребуется знать минимальный JS, html+css, ajax, JQuery и конечно же без Entity Framework Core не обойдётся
    Ответ написан
    Комментировать
  • Рациональность кода C#?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Вам нужно изучить или, хотя бы, прочитать об этом:

    • Классы C#
    • Многопроектные решения
    • Паттерны проектирования
    • Книги по проектированию


    Для полного изучения может уйти очень много времени, но результат стоит того. Прочитайте немного из каждого пункта и вы узнаете много чего нового, что даже на данному уровне поможет вам уже сейчас
    Ответ написан
    Комментировать