Задать вопрос
  • Можно ли писать андроид приложения на C#?

    402d
    @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#?

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

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

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

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

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

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


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

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


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

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

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

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

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

    Тебе надо сделать 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

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

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

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

    Можно посмотреть в сторону 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, приходящих от сервера.
    Тебе пока ещё рано об этом думать.
    Ответ написан
    Комментировать
  • Как удалить все элементы внутри StackPanel?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    while (StackPanel.Children.Count > 0)
        StackPanel.Children.RemoveAt(0);
    Ответ написан
    Комментировать
  • Как добавлять объекты и массивы в Json через разные циклы на c#?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Нормальные люди это всё десериализуют в классы, и добавляют как обычно объекты в списки и словари. А потом сериализуют обратно в json.
    https://docs.microsoft.com/ru-ru/dotnet/standard/s...

    Но вы конечно вольны попытаться работать напрямую с текстом.
    Ответ написан
    Комментировать
  • Почему из try catch, switch не видит переменную?

    Потому что фигурные скобки в C# ограничивают область видимости переменных.
    Если ты хочешь, чтобы переменная Number1 была видна за пределами блока try - тебе нужно вынести её на уровень выше.

    Примерно вот так:
    double Number1 = 0;
    try {
     // Тут пы инициализируем переменную
    } catch {
      //Как-то обрабатываем возможную ошибку
    }
    // Тут мы можем использовать Number1

    Но раз ты пытаешься обработать ошибку при парсинге чисел, используй тогда вместо double.Parse, функцию double.TryParse - она вместо выкидывания исключений возвращает флаг, было успешно число распознано или нет.
    Ответ написан
    5 комментариев
  • Почему при интерполяции нужно использовать long?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Потому что твой номер с 9ХХ-* не влезает в пространство int32
    Ответ написан
    Комментировать