Задать вопрос
  • Почему перезаписывается весь list в class?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Т.е у всех элементов в списке перезаписываются id на id текущей итерации.

    У вас всего 1 элемент - Checker checker = new Checker();
    Ответ написан
    Комментировать
  • Зачем нужны expression в c#?

    В первую очередь они используются во всяких ORM, типа Entity Framework, чтобы лямбды, написанные на C# преобразовывать в SQL.

    Во вторую очередь они нужны, чтобы динамически генерировать исполняемый код, например во всяких валидаторах и мапперах, типа Automapper.

    В третью очередь - чтобы сериализовывать названия классов и методов, например в Hangfire.
    Ответ написан
    1 комментарий
  • Зачем мне универсальный класс, если в методе я могу указать родительский класс?

    1. Не всегда можно указать родительский класс
    2. Иногда переход к родительскому классу/интерфейсу не оптимален. Например если ты используешь структуры - будет происходить боксинг.
    3. В некоторых случаях потребителю бы хотелось работать с конкретным типом, а не с базовым. Попробуй реализовать List без женериков.

    PS: нет такого понятия, как "универсальный класс"
    Ответ написан
    Комментировать
  • Зачем мне универсальный класс, если в методе я могу указать родительский класс?

    Nipheris
    @Nipheris Куратор тега C#
    Если под "универсальным классом" вы имеете в виду класс-дженерик, то почитайте про параметрический полиморфизм и полиморфизм через подтипы. Параметрический полиморфизм в контексте C# это про дженерики, полиморфизм через подтипы - это о вашем "указать родительский класс".

    Это сильно разные механизмы, и чтобы понять разницу, попробуйте реализовать какой-нибудь List или Dictionary без использования дженериков, как предлагает вам Василий Банников , и как было в .NET 1.1 (о боги, это было как будто позавчера), до появления обобщённых типов. И увидите, как теряется типобезопасность и сколько нужно кастить туда-сюда.
    Ответ написан
    Комментировать
  • Где можно посмотреть проекты близкие к реальным по ASP.NET?

    Griboks
    @Griboks Куратор тега C#
    На гитхабе в топе как раз реальные проекты. Ну, те самые, что состоят из огромной кучи легаси кода, нарушая все принципы.
    Ответ написан
    Комментировать
  • Как реализовать создание различных вопросов в форме в зависимости от выбора пользователя?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Прошерстил ни одну страницу

    Так ты бы прошерстил хотя бы одну страницу. А то "ни одну" - даже разговора нет.
    Ну и сам вопрос, как это реализовывается, как в зависимости от выбранного варианта из всплывающего списка типов создавать тот или иной вопрос.

    Это реализуется, а не "реализовывается" с помощью конструкций типа if...then...else
    Ответ написан
    Комментировать
  • Вопрос по двумерным массивам?

    GetLength возвращает размерность каждого измерения.
    GetLength(0) - размер первого измерения (3)
    GetLength(1) - размер второго измерения (тоже три)
    Об этом сказано в документации: https://docs.microsoft.com/en-US/dotnet/api/system...
    Gets a 32-bit integer that represents the number of elements in the specified dimension of the Array.


    i используется для индексирования в рамках первого (0) измерения.
    j используется дли индексирования в рамках второго (1) измерения.
    Ответ написан
    Комментировать
  • Не корректное отображение кнопки WPF?

    phoenixbk
    @phoenixbk
    Вы указали большие отступы справа и снизу. В результате из-за них размер кнопки может быть меньше, чем вы указали (в зависимости от размера родителя, в данном случае окна). Вы можете выставить отступы справа и снизу в 0 и указать горизонтальное выравнивание слева и вертикальное сверху:
    <Button x:Name="btn" Content="Нажать!!!" Width="150" Height="45" Margin="45,49,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Click="btn_Click"/>
    Ответ написан
    Комментировать
  • Как написать логику работы контролеров в Asp. net?

    Сделай пока хоть как-то, лишь бы тебе самому было понятно.

    Потом порефакторишь исходя из задачи.

    Например репозитории имеют смысл, если у тебя возможно, ть заменить хранилище данных - это фича.
    А вот если ты никогда не планируешь менять базу данных - можно спокойно хоть прямо из контроллеров в EF стучаться.
    Ответ написан
    Комментировать
  • Как написать логику работы контролеров в Asp. net?

    @Voland69
    Делать или нет репо для БД - вкусовщина, как по мне.
    EF датаконекст примерно и есть анемичный репозиторий.

    Сервисы делать обязательно, и причина банальна - завтра придут к вам и попросят не MVC контроллер, а web api, soap, rabbit, graphql с gRPC и прочие интересные вещи для интеграции с другими системами (CRM, CMS, мобильное приложение и проч).
    И вы будете разлеплять логику коммуникации и бизнеса.

    Так что в контроллере не должно быть бизнесовой логики, только предоставление нужных данных вьюхе и получение от нее команд.
    Ответ написан
    2 комментария
  • Можно ли в тернарной операции во втором операнде присваивать одной переменной значение другой?

    Сказано же по русски, что только выражения могут быть в тернарном операторе.
    Операция присваивания выражением не является.

    И вообще за подобный код, как у вас в примере, по рукам бить надо.
    Вот это лучше будет гораздо:
    countOfIteration = Math.Min(width, height);
    А если так сильно хочется тернарник, то вот:
    countOfIteration = width > height
      ? height
      : width;
    Ответ написан
    Комментировать
  • Стоит ли читать книгу Шилдта по С#?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Нет, metanit - это днище.
    Читай базовые книги. Шилдта, Джона Скита, Albahari, Эндрю Троэлсена, Роберта Мартина, Joseph Albahar
    Ответ написан
    1 комментарий
  • Как мне визуализировать огромное количество данных из xml-файла?

    Ваша история выглядит примерно так:
    1. Я по непонятным мне самому критериям выбрал язык разметки как формат для хранения данных.
    2. Задумался, что он таки не очень хорошо подходит для этой задачи
    3. Я хочу продолжать использовать этот формат, но хочу избавиться от проблем.

    Я думаю, вам стоит в принципе попробовать другой формат.
    Например, если у вас имеется очень много данных, над которыми потом надо производить аналитику - вам может подойти формат Parquet - он изначально для бигдаты и спарка придуман.

    Раз нужно много разных сортировок и фильтраций - можно попробовать, например, sqlite или другую, более полновесную СУБД.

    Если всё-таки хотите остаться на XML, то посмотрите в сторону поточного чтения документа с последующим преобразованием в какое-то внутреннее представление, с которым ваша программа сможет работать эффективнее (по сути вы так изобретёте свою СУБД на минималках с индексами и эффективной структурой)

    Для поточного чтения можно попробовать класс XMLReader


    Но самая большая загвоздка в том что пользователь может фильтровать или сортировать записи по своему усмотрению (по алфавиту, по дате или по другим признакам) как мне тогда запомнить последний визуализированный элемент?

    Нужно сортировать все данные, а не только те что показаны - тогда смещение будет работать ровно так, как ожидается
    Ответ написан
    Комментировать
  • Простой способ хранения данных с серверной стороны C# WCF?

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

    Я бы посоветовал взять C#, так как у него чуть ниже порог вхождения.
    Языки в целом похожие, а самые большие различия идут в плоскости библиотек и фреймворков.

    Если у вас есть цель попасть в финтех и работать над банковскими системами - тогда Java (но в банках и C# используется, кстати говоря, но чаще для других задач)

    Когда будешь уверенно себя ощущать - сможешь быстро за пару дней пробовать любой язык и формировать своё мнение о нём.
    Ответ написан
    4 комментария
  • Ошибка ввода, как исправить?

    @oleg_ods
    В зависимости от локализации ОС в качестве разделителя дробной части может использоваться точка или запятая.

    Для локализаций стран СНГ можно добавить
    Console.ReadLine().Replace(“.”, “,”)

    Тогда будет корректно обрабатывать оба варианта ввода(например «1,2», «1.2»).
    Ответ написан
    Комментировать
  • Почему Random() возвращает одно и тоже значение в C#?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    читаем документацию ну или минимально гуглим
    https://dotnetcoretutorials.com/2021/08/10/generat...
    Вообще в любых библиотеках криптографии часто есть правильные псевдорандомные генераторы.
    А еще есть аппаратные рандомные генераторы
    Ответ написан
    Комментировать
  • Почему Random() возвращает одно и тоже значение в C#?

    Потому что Random генерирует не настоящие случайные числа, а производит определённые операции над сидом.

    Если ты сид не передаёшь, то он будет сгенерирован на основе времени.

    В твоём случае следовало создать один экземпляр Random и вызывать Next на нём.

    Ну и ещё этот класс не потокобезопасен, а по тому, если ты вызовешь Next в двух разных потоках одновременно - ты получишь одно и то же значение
    Ответ написан
    Комментировать
  • Зачем нужно писать using?

    Visual Studio на новых версиях не добавляет using System; из-за того что в .NET 6 и C# 10 появились implicit usings
    А конкретно (в консоли):
    using System;
    using System.IO;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net.Http;
    using System.Threading;
    using System.Threading.Tasks;

    Если ты их выключишь через <ImplicitUsings>disable</ImplicitUsings>, то ошибка появится.
    открыл онлайн компилятор, действительно ошибка

    Зависит от того, что за онлайн-компилятор.
    Ответ написан
    Комментировать