• Как заполнить список в отдельном потоке?

    @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
    Ответ написан
    Комментировать
  • Почему при делении чисел получается ноль в C#?

    32bit_me
    @32bit_me
    Программист, встраиваемые системы
    Деление целых даёт в результате целое.
    Ответ написан
    Комментировать
  • Доступ к значению переменной int из другого скрипта?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Добавь ссылку на прогресбар в пушку и будет тебе доступ.
    кошелёк для платежа: 792753214756
    Ответ написан
    3 комментария
  • При переводе float в string, число получается с запятой, а не с точкой. Можно ли переводить float в string так, чтобы число было с точкой?

    Запятая пишется из-за того что у тебя русская культура.

    Ты можешь в ToString передать нужную культуру.
    Например:
    (42.5).ToString(System.Globalization.CultureInfo.InvariantCulture)



    При попытке вставить строку с типами float значении float из C#, выходит ошибка

    Делай параметризованные запросы, чтобы такого не было.
    Ответ написан
    Комментировать
  • Как написать парсер всех файлов на сайте?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Загрузить у сайта Sitemap и пройтись по нему скачивая всё.
    Ответ написан
    2 комментария
  • Как исправить- пытаюсь двигать bitmap по полю?

    @Myclass
    case Keys.Left:
                        image5 = new Bitmap(@"C:\Users\MAKSIM\source\repos\LoadLevel\WindowsFormsApp5\Image\left.png");
                        g.DrawImage(image3, posSX * 32, posSY * 32);
                        g.DrawImage(image5, posSX * 32 - 32, posSY * 32);
                        posSX -= 1;
    
                        if (coordBoll[posSX, posSY] == 2)
                        {                     
                            for (int j = 0; j < height; j++)
                            {
                                for (int i = 0; i < width; i++)
                                {
                                    g.DrawImage(image2, posSX * 32 - 32, posSY * 32);
                                }
                            }
                        }
    
                        g.DrawImage(image2, posSX * 32 - 32, posSY * 32); // а зачем в условии эта последняя строчка с прорисованием image2 вновь....
                        break;


    а зачем в условии эта последняя строчка с прорисованием image2 вновь....

    И ещё. Я совсем не понял два этих вложенных в друг-друга цикла. Ведь они никак не влияют ни на что. Зачем они?

    И ещё. Я конечно не специалист по играм, но я-бы в голове (памяти) держал-бы сетку с координатами и прорисовка элементов была-бы независима от количества пикселей в одной клетке (32), что-бы мочь всегда скалировать.
    Ответ написан
    1 комментарий
  • Как с помощью return вернуть две переменные?

    @rPman
    дополню отвечающих
    можно добавить аргументов в функцию, определив как ссылочные (ключевое слово ref или out), соответственно одно или все возвращаемые значения можно разместить там
    Ответ написан
    Комментировать
  • Как реализовать вывод товаров из List у которых закончился срок годности?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    using System;
    using System.Collections.Generic;
    using System.Globalization;
    using System.Linq;
    
    namespace ConsoleApp2
    {
        /// <summary>
        /// Не используйте транслит! Любой китаец или индус поймет английский, 
        /// а вот русский только поржет. 
        /// </summary>
        public class Product
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string ImportDate { get; set; }
            public string Description { get; set; }
            /// <summary>
            /// Рубли умноженные на 10000. помним об этом то есть у вас копейка имеет 2знака после запятой!!!!
            /// </summary>
            public Int64 Price { get; set; }
            public int Discount { get; set; }
            public string Category { get; set; }
            /// <summary>
            /// Дата списания
            /// </summary>
            public string DueDate { get; set; }
            public string ДляОсобоУпоротыхЭтоТакиРаботает { get; set; }
        }
        public static class Extensions
        {
            /// <summary>
            /// Convert string from format dd.MM.yyyy to DateTime
            /// </summary>
            /// <param name="inputDate"></param>
            /// <returns></returns>
            public static DateTime ParseDateDayMounthYear(this string inputDate) =>
                DateTime.ParseExact(inputDate, "dd.MM.yyyy", CultureInfo.InvariantCulture);
        }
        class Program
        {
            static void Main(string[] args)
            {
                #region заполняем список товаров
                List<Product> tovar = new List<Product>()
                {
                    new Product(){Id = 2,
                        Name = "Яблоки",
                        ImportDate = "11.11.2022",
                        Description = "Свежие яблоки.",
                        Price = 1000000,
                        Discount = 5, 
                        DueDate="11.11.2022",
                        Category = "Овощи"},
                    new Product(){Id = 2,Name = "Молоко",
                        ImportDate = "16.10.2021",
                        DueDate="16.10.2021",
                        Description = "Свежее молоко.",
                        Price = 800000,
                        Discount = 10, 
                        Category = "Кисломолочные"}
                };
                #endregion
    
                // число месяц год
                var data =  tovar.Where(item => item.DueDate.ParseDateDayMounthYear() < DateTime.Today).ToList();
            }
        }
    }
    Ответ написан
    Комментировать
  • На каком я сейчас уровне?

    1. Не умеешь пользоваться гитом, тк загрузил файлы через Upload
    2. Код невозможно проверить, тк ты закинул только cs файлы, но не приложил не менее важный csproj - не разбираешься, как собирается проект.
    3. Про свич кейс тебе уже сказали в комменте.
    Про остальное мало что можно сказать - код самый обычный, на три с минусом, не очень хороший, но и не слишком ужасный.
    С архитектурой плохо, тк детали реализации смешаны с бизнес-правилами.
    По алгоритмам нельзя оценить, тк никаких сложных алгоритмов в твоём проекте нет.

    Уровень, имхо: стажёр/младший разработчик(обязательно под менторством и наблюдением более опытного)
    Ответ написан
    5 комментариев
  • На каком я сейчас уровне?

    @lutokris
    Я к сожалению только начинаю изучать Python, Django, но почему мне кажется что вы написали что-то типа HelloWorld))
    Ответ написан
    1 комментарий