• Ошибка ввода, как исправить?

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

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

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

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

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Потому что Random генерирует не настоящие случайные числа, а производит определённые операции над сидом.

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

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

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

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    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>, то ошибка появится.
    открыл онлайн компилятор, действительно ошибка

    Зависит от того, что за онлайн-компилятор.
    Ответ написан
    Комментировать
  • Можно ли писать андроид приложения на C#?

    @402d
    начинал с бейсика на УКНЦ в 1988
    Java vs Kotlin - можно спорить, что лучше. Но это нативная разработка.
    Си шарп - кросплатформер.

    Поэтому выбор инструмента зависит от задачи. Серьезное приложение понятие большое.
    Я писал и пишу на яве. Но захотелось выйти за пределы одной платформы.
    Попробывал react native. Не понравилось. Пробую сейчас flutter (dart).
    К чему в результате хочу придти.
    Часть кода общая. Остальное в виде пакеджа и реализацией под конкретную платформу.
    Если еще осилю CPP , то это тоже будет почти общим с обертками над .so .dll
    Но учить до посинения.

    p.s. Сейчас попалось в статье разочаровавшегося ( по сути тот человек хотел сделать WebView приложение).
    Угу именна та часть, которую не реально обернуть для 5ти платформ (андроид иос макось винда линух)

    В каждом пакете Flutter может встретиться баг в коде Dart, или в коде Swift/Objective-C, или в коде Java/Kotlin. А то и в нескольких частях сразу. Его может сломать любое обновление Flutter, Dart, iOS или Android – а вместе с ним сломается и ваше приложение на одной или всех платформах. Если вы не владеет всеми тремя языками и всеми поддерживаемыми платформами, то, вероятно, не захотите искать и устранять проблемы самостоятельно.
    Ответ написан
    Комментировать
  • Можно ли писать андроид приложения на C#?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Ну Котлин сейчас даже популярнее чем Java.
    Xamarin в принципе по размеру и скорости запуска будет немного хуже, чем Java/Kotlin, при прочих равных.

    Сложнее будет зависимости искать - иногда может понадобиться свою обёртку для жавы написать, если нужно будет с какой-нибудь библиотекой компонентов для Android воспользоваться.

    А в остальном примерно то же самое
    Ответ написан
    3 комментария
  • Почему не запускается exe?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Чтобы можно было спокойно запускать экзешник - тебе нужно все зависимости положить рядом с ним.
    Делается это через "публикацию". Где это в студии накликать не подскажу, но в консоли это делается командой dotnet publish
    Ответ написан
    Комментировать
  • Как отдать объект без некоторых полей?

    @Voland69
    Строить разные модели (регистрация, логон, инфо о юзере) и маппить их на сущность из базы.
    Если разово, можно конечно [JsonIgnore] навесить, просто не попадет в сериализацю.
    Ответ написан
    2 комментария
  • Можно ли в .NET (C#) при компиляции вычистить из подключенной библиотеки лишние функции?

    @d-stream
    Готовые решения - не подаю, но...
    Надо превратить эту библиотеку во множество nuget пакетов [вместо одного самолёта с зонтиком, гусеницами, бассейном и теннисными кортами]
    Ответ написан
    Комментировать
  • Стоит ли выносить выполнение синхронных методов в пулл потоков в контроллерах ASP NET Core?

    vabka
    @vabka Куратор тега ASP.NET
    Токсичный шарпист

    Асинхронных блоков, требующих использования await в методе нет.

    В таком случае это будет обычный синхронный метод, хоть и возвращающий таску.


    Встаёт вопрос - перевести ли выполнение этого метода в пулл потоков (через обёртывание в Task.Run) или оставить так как сейчас есть?

    Зависит от того, что именно ты там делаешь.
    Если есть работа с IO, то следует перейти на асинхронщину.

    Если долгие вычисления, то тогда да - есть смысл сделать Task.Run, чтобы не нагружать потоки из основного пула
    Ответ написан
    Комментировать
  • Повлияет ли уход Microsoft на C#/.NET?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Максимум - сложнее будет купить Pro/Enterprise студию и лицензию на Винду, если нужно деплоиться на неё (вот лишний повод скорее переходить на net 6)

    Ещё будет сложнее работать с Azure, тк сложнее оплата (лишний повод научиться самостоятельно админить сервера и строить свой private cloud)
    Ответ написан
    3 комментария
  • C# HttpClient говорит что я не правильно указываю URL, хотя Postman проходит, как быть?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Тебе надо сделать URLEncode части с

    mymail@mail.com

    Об этом сказано в документации на smsaero
    Ответ написан
    Комментировать
  • Как заполнить список в отдельном потоке?

    @Kamigakuro
    Я конечно не эксперт, но может быть проблему решит вызов Templist.toArray() в foreach? Тем самым будет сделана копия этого списка перед началом перебора и тогда всё будет хорошо... Возможно, конечно, я и не прав, или моё предложение не самое лучшее.)
    Получится так:
    foreach (var item in TempList.ToArray())
    Ответ написан
    2 комментария
  • Насколько C# подходит для создания ИИ и робототехники?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Плохо смотрел.
    ML.NET минимум 10 лет уже существует.
    А вообще, нейросети можно писать на любом языке. 60 лет назад их писали на Фортране, Лиспе и Коболе
    Ответ написан
    5 комментариев
  • MSSQL and mysql в чем отличие?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Но это такое убожество что я толком ничерта не понимаю

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


    отличаются ли запросы sql MSSQL от Mysql

    Да. Точнее, самые простейшие базовые запросы могут выглядеть одинаково. Но не более, чуть только хоть какая-то сложность, и одинаковость заканчивается. Синтаксис различается, и весьма сильно. А кое-где даже подходы к решению задачи различаются, и код с одной СУБД на другую не адаптируется совсем - только полное переписывание.

    возможно ли сменить БД без нарушения функциональности софта.

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

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Можно посмотреть в сторону FileSystemWatcher
    Можно отслеживать создание, изменение, удаление, и переименование файлов.
    Перемещение файла = переименование в большинстве ОС (тк просто меняется путь, а имя является частью пути)
    Ответ написан
    1 комментарий
  • Подсчет гласных букв. Почему ошибки?

    Casper-SC
    @Casper-SC
    Программист (.NET)
    Вот как-то так можно. Зачем здесь объявление алфавита? Да теперь его можно копипастить в каждый проект, что удобно. И соревнований по максимальной краткости, вроде бы, не объявляли.

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
      </PropertyGroup>
    
    </Project>


    using System.Collections.ObjectModel;
    using System.Globalization;
    
    namespace VowelsCount;
    
    public class Program
    {
        static void Main(string[] args)
        {
            var letters = new List<Letter> {
                new ('а', LetterType.Vowel),
                new ('б', LetterType.Consonant),
                new ('в', LetterType.Consonant),
                new ('г', LetterType.Consonant),
                new ('д', LetterType.Consonant),
                new ('е', LetterType.Vowel),
                new ('ё', LetterType.Vowel),
                new ('ж', LetterType.Consonant),
                new ('з', LetterType.Consonant),
                new ('и', LetterType.Vowel),
                new ('й', LetterType.Consonant),
                new ('к', LetterType.Consonant),
                new ('л', LetterType.Consonant),
                new ('м', LetterType.Consonant),
                new ('н', LetterType.Consonant),
                new ('о', LetterType.Vowel),
                new ('п', LetterType.Consonant),
                new ('р', LetterType.Consonant),
                new ('с', LetterType.Consonant),
                new ('т', LetterType.Consonant),
                new ('у', LetterType.Vowel),
                new ('ф', LetterType.Consonant),
                new ('х', LetterType.Consonant),
                new ('ц', LetterType.Consonant),
                new ('ч', LetterType.Consonant),
                new ('ш', LetterType.Consonant),
                new ('щ', LetterType.Consonant),
                new ('ъ', LetterType.Consonant),
                new ('ы', LetterType.Vowel),
                new ('ь', LetterType.Consonant),
                new ('э', LetterType.Vowel),
                new ('ю', LetterType.Vowel),
                new ('я', LetterType.Vowel)
            };
    
            var alphabet = new Alphabet(letters);
            IReadOnlySet<char> vowels = alphabet.GetVowelSet();
            IReadOnlySet<char> consonants = alphabet.GetConsonantSet();
    
            const string text = "Да мы хотим помочь!!!";
    
            int vowelCounter = 0;
            int consonantCounter = 0;
    
            var vowelResult = new char[text.Length];
            var consonantResult = new char[text.Length];
            var otherSymbolsResult = new char[text.Length];
    
            var ruRu = new CultureInfo("ru-RU");
    
            for (int i = 0; i < text.Length; i++)
            {
                vowelResult[i] = '_';
                consonantResult[i] = '_';
                otherSymbolsResult[i] = '_';
    
                char lowerCaseChar = char.ToLower(text[i], ruRu);
                if (consonants.Contains(lowerCaseChar))
                {
                    ++consonantCounter;
                    consonantResult[i] = text[i];
                }
                else if (vowels.Contains(lowerCaseChar))
                {
                    ++vowelCounter;
                    vowelResult[i] = text[i];
                }
                else
                {
                    otherSymbolsResult[i] = text[i];
                }
            }
    
            Console.WriteLine("Исходная строка для подсчёта:");
            Console.WriteLine(text);
            Console.WriteLine("=========");
            Console.WriteLine(vowelResult);
            Console.WriteLine(consonantResult);
            Console.WriteLine(otherSymbolsResult);
            Console.WriteLine("=========");
            Console.WriteLine("Кол-во символов в исходной строке: " + text.Length);
            Console.WriteLine("Кол-во гласных: " + vowelCounter);
            Console.WriteLine("Кол-во согласных: " + consonantCounter);
            Console.WriteLine("Кол-во прочих символов: " +
                (text.Length - (vowelCounter + consonantCounter)));
        }
    }
    
    /// <summary>Тип буквы - гласная или согласная.</summary>
    internal enum LetterType
    {
        /// <summary>Гласная.</summary>
        Vowel,
    
        /// <summary>Согласная.</summary>
        Consonant
    }
    
    internal record struct Letter(char letter, LetterType type)
    {
        public LetterType Type { get; init; } = type;
    
        public char Value { get; init; } = letter;
    }
    
    internal class Alphabet
    {
        public IReadOnlyList<Letter> Letters { get; }
    
        public Alphabet(IEnumerable<Letter> letters)
        {
            Letters = letters switch
            {
                IList<Letter> list => new ReadOnlyCollection<Letter>(list),
                _ => new ReadOnlyCollection<Letter>(letters.ToList()),
            };
        }
    
        public IReadOnlyList<char> GetVowelList()
        {
            return Letters
                .Where(letter => letter.Type == LetterType.Vowel)
                .Select(letter => letter.Value)
                .ToList()
                .AsReadOnly();
        }
    
        public IReadOnlySet<char> GetVowelSet()
        {
            return Letters
                .Where(letter => letter.Type == LetterType.Vowel)
                .Select(letter => letter.Value)
                .ToHashSet();
        }
    
        public IReadOnlyList<char> GetConsonantList()
        {
            return Letters
                .Where(letter => letter.Type == LetterType.Consonant)
                .Select(letter => letter.Value)
                .ToList()
                .AsReadOnly();
        }
    
        public IReadOnlySet<char> GetConsonantSet()
        {
            return Letters
                .Where(letter => letter.Type == LetterType.Consonant)
                .Select(letter => letter.Value)
                .ToHashSet();
        }
    }
    Ответ написан
    6 комментариев
  • Как обновить записи в sql?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    В SQL записи обновляются запросом UPDATE.
    Ответ написан
    6 комментариев
  • Когда используется Рефлексия C#?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    До reflection надо дорасти.
    Тогда приходит понимание, что в данном решении reflection - подходящий способ решения проблемы.
    Например, мне это пригодилось при решении задачи динамической генерации сложных адаптивных вьюшек на основе json, приходящих от сервера.
    Тебе пока ещё рано об этом думать.
    Ответ написан
    Комментировать