Ответы пользователя по тегу C#
  • Могут ли принять человека на работу .Net программиста без высшего образования?

    serafimprozorov
    @serafimprozorov
    Люблю Erlang....
    Работаю программером в том числе и .NET уже, страшно подумать, почти 16 лет, сейчас -- в геймдеве серверным разработчиком.
    Высшего образования нет, точнее, вообще никакого специального нет.
    Ответ написан
    Комментировать
  • Как правильно конвертировать массив?

    serafimprozorov
    @serafimprozorov
    Люблю Erlang....
    Эх, вспомнил я первый курс универа...
    Я бы, наверное, сделал как-то так, учитывая, что это всё же учебное задание, если есть вопросы, велкам, отвечу.

    class Program
    {
        private const int MinArrayLength = 2;
        private const int MaxArrayLength = 20;
    
    
        private static int ReadInteger(string prompt)
        {
            while (true)
            {
                Console.Write(prompt);
                
                string input = Console.ReadLine();
    
                if (!int.TryParse(input, out int number))
                {
                    Console.WriteLine($"Значение {input} не является числом");
                    continue;
                }
    
                return number;
            }
        }
    
        private static int ReadArrayLength()
        {
            while (true)
            {
                var number = ReadInteger($"Введите размер массива от {MinArrayLength} до {MaxArrayLength}: ");
    
                if (number > MaxArrayLength || number < MinArrayLength)
                {
                    Console.WriteLine($"Число {number} лежит вне границ интервала [{MinArrayLength}..{MaxArrayLength}]");
                    continue;
                }
    
                return number;
            }
        }
    
        private static int[] ReadArray(int length)
        {
            while (true)
            {
                Console.Write($"Введите до {length} целых чисел через пробел: ");
    
                string input = Console.ReadLine();
                string[] entries = input.Split(' ', StringSplitOptions.RemoveEmptyEntries);
    
                if (entries.Length > length)
                {
                    Console.WriteLine($"Вы ввели более {length} чисел");
                    continue;
                }
    
                if (!TryParseIntegerArray(length, entries, out var array))
                    continue;
    
                return array;
            }
        }
    
        private static bool TryParseIntegerArray(int length, string[] strings, out int[] array)
        {
            array = new int[length];
    
            for (int i = 0; i < strings.Length; ++i)
            {
                if (!int.TryParse(strings[i], out int number))
                {
                    Console.WriteLine($"Строка {strings[i]} (позиция {i}) не является числом");
                    return false;
                }
    
                array[i] = number;
            }
    
            if (length > strings.Length)
            {
                Array.Clear(array, strings.Length, length - strings.Length);
            }
    
            return true;
        }
    
        private static int CountNumberOccurs(int[] array, int targetNumber)
        {
            int occursCount = 0;
            
            for (int i = 0; i < array.Length; ++i)
            {
                if (array[i] == targetNumber)
                    occursCount++;
            }
    
            return occursCount;
        }
    
    
        static void Main(string[] args)
        {
            int arrayLength = ReadArrayLength();
            int[] array = ReadArray(arrayLength);
            int targetNumber = ReadInteger("Введите целое число для поиска повторений: ");
    
            int occursCount = CountNumberOccurs(array, targetNumber);
    
            Console.WriteLine($"Количество вхождений числа {targetNumber} в массив: {occursCount}.");
            Console.WriteLine("Нажмите <ENTER> для выхода.");
            Console.ReadLine();
        }
    }
    Ответ написан
    1 комментарий
  • Где брать задания?

    serafimprozorov
    @serafimprozorov
    Люблю Erlang....
    Вы не представляете, какое количество нерешённых задач Вас окружает ежесекундно...
    Ответ написан
    Комментировать
  • Где можно прочесть ECMA-334 на русском языке?

    serafimprozorov
    @serafimprozorov
    Люблю Erlang....
    Возможно, можно найти в каком-нибудь сообществе мамкиных диванных хакеров этой страны, правда за качество перевода поручиться никто не сможет, вообще, все стандарты, статьи и научные труды в IT принято читать всё же на английском, хотя бы потому что некоторые одарённые люди, например, переводят изначально англоязычные термины. Кроме того, если Вас интересует стандарт языка (а информации о самых новых и модных фишках Вы там не найдёте), то скорее всего, Вы хотите достаточно глубоко изучить платформу .NET, в этом случае, Вам совершенно точно придётся изучать инглиш. Такие дела.
    Ответ написан
    Комментировать
  • В чем суть скрипта? Что он делает?

    serafimprozorov
    @serafimprozorov
    Люблю Erlang....
    Очевидно, суть программы (это не скрипт, забудьте это слово в конце концов уже применительно к чему-то не на Python, JS и Unity), запустить как раз-таки скрипт на PowerShell, который реализует вот этот вот эксплоит: https://googleprojectzero.blogspot.com/2016/03/exp...
    Ответ написан
    Комментировать
  • Как из picturebox конвертировать изображение?

    serafimprozorov
    @serafimprozorov
    Люблю Erlang....
    Предположим, у Вас уже есть код, который работает с БД, пусть это будет пара методов: LoadImage/SaveImage, первый принимает целочисленный ID и возвращает массив байт, а второй делает всё ровно наоборот, кроме того, есть PictureBox, на который указывает переменная _pictureBox1, тогда решение будет выглядеть примерно так:

    1. Сохранение:
    if (_pictureBox1.Image == null)
        return;
    
    using var destination = new MemoryStream();
    {
        _pictureBox1.Image.Save(destination, ImageFormat.Jpeg)  // здесь можно выбрать любой доступный формат
    }
    
    var id = SaveImage(destination);


    2. Загрузка
    var bytes = LoadImage(id);
    
    if (bytes == null)
        return;
    
    using (var source = new MemoryStream())
    {
        _pictureBox1.Image = Image.FromStream(source);
    }
    Ответ написан
    Комментировать
  • Как получить список файлов за исключением находящихся в черном списке C#?

    serafimprozorov
    @serafimprozorov
    Люблю Erlang....
    Очевидно, так:

    var rgFiles = di.GetFiles("*.*", SearchOption.AllDirectories)
        .Where(f => extensions.Contains(f.Extension.ToLower()))
        .Where(f => !blacklist.Contains(f.FullName);
    Ответ написан
    Комментировать
  • Что не так с классами в ASP.Net Core?

    serafimprozorov
    @serafimprozorov
    Люблю Erlang....
    Если Вы хотите, чтобы экземпляры Ваших классов создавались при старте приложения и оставались доступными всё время его работы, Вам надо либо сделать их статическими полями какого-либо класса, либо использовать паттерн Синглтон (ни разу не антипаттерн при правильном использовании), либо, как Вам говорили выше,использовать Dependency Injection, почитать про него можно, например, здесь: https://docs.microsoft.com/ru-ru/aspnet/core/funda...

    Почему, вообще, происходит то, что Вы описали. Класс Startup создается при старте приложения и используется только для его конфигурации, то есть, он не живёт всё время работы Вашего приложения, а следовательно, все объекты, являющиеся его полями, уничтожаются сборщиком мусора, если не передать владение ими другому объекту, имеющему большее время жизни. Вы же, как я понял, просто создаете эти объекты в методе, в этом случае, опять же, если не передать владение, они станут недоступными сразу после завершения метода и весьма быстро соберутся сборщиком мусора.
    Ответ написан
    Комментировать
  • Как к текстовочисленному ID прибавить 1 в С#?

    serafimprozorov
    @serafimprozorov
    Люблю Erlang....
    Если буквенная часть у Вас всегда одинакова и всегда является строкой "client", то вот так:

    const string id = "сlient4567224";
          const string Prefix = "client";
          var numeric = int.Parse(id.Substring(prefix.Length));
          var nextId = $"{prefix}{numeric + 1}";


    Если префиксом не всегда является строка "client", но цифровая часть всегда строго после буквенной, то Вам подойдет такой вариант, он более универсален:

    const string id = "blahblah4567224";
          const string Prefix = "client";
    
          var i = 0;
          while (i < id.Length && !char.IsDigit(id[i]))
          {
             i++;
          }
    
          var numeric = int.Parse(id.Substring(i));
          var nextId = $"{prefix}{numeric + 1}";
    Ответ написан
    Комментировать
  • Как правильно вынести модели WebApi в отдельный проект для повторного использования в Xamarin?

    serafimprozorov
    @serafimprozorov
    Люблю Erlang....
    Лучшим решением будет, на мой взгляд, как раз-таки создание пакета NuGet под netstandard.
    NuGet-пакет необязательно публиковать на NuGet.org, можно использовать любой NuGet-репозиторий.
    Ответ написан
    Комментировать
  • Как контролировать память кортежей?

    serafimprozorov
    @serafimprozorov
    Люблю Erlang....
    Вы выделяете на каждую итерацию новый массив, поэтому, естественно, что после каждой итерации размер используемой памяти вырастает.

    Как оптимизировать алгоритм зависит от контекста Вашей задачи: что именно Вы делаете с полученными байтами?
    Ответ написан