Ответы пользователя по тегу C#
  • Кто разъяснит строчку из C# кода?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    гугл
    - запрос
    - первая же строка выдачи
    .. а еще короче - в VisualStudio, на слове Parse в конструкции Enum.Parse можно нажать F1 (попадете туда же, ну или с коррекцией на версию дотнет и язык)
    Ответ написан
    7 комментариев
  • Тип данных аналогичный таблице в C#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    если вам уже пришла в голову сортировка, тогда все таки массив структур или классов (как аналогов строк БД).. после чего, можете открыть для себя списки и словари C# вместо массивов

    следующий уровень игры - Entity Framework, очень упрощенная работа с БД. как раз для вашего случая, возможно будет интересен вариант БД in-memory

    тут все зависит от задачи. предложенные мной варианты, скорее ориентированы на энтерпрайз, а если нужно очень легковесное решение - тогда все таки просто массивы классов или структур
    Ответ написан
    1 комментарий
  • Как спарсить javascript на C#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 -
    Я так понимаю в сторону POST GET запросов
    это называется в сторону API. если сайт его предоставляет. и это правильное направление. если API нет, то...
    2 - js не надо парсить, его надо выполнять. сайты на современных фреймворках, как правило очень много чего формируют не на стороне сервера, а уже в браузере, как раз js кодом. и в основном это как раз заполнение разметки данными (кстати не обязательно GET/POST, это могут быть и сокеты). в этом случае, надо не парсить, о делать бота. для C# азы можно пробовать на встроенных WebBrowser/WebView (Forms/WPF), но более продвинутый вариант - CEF#. есть аналог CEF# "без головы" (отображение), но это уже следующий уровень игры. думаю туда без опыта смысла нет ломиться. есть еще очень популярный вариант Selenium. либа для шарпа есть, инструмент изначально для тестирования а не для создания ботов. но кому то проще начинать с него
    Ответ написан
    Комментировать
  • Как отправить юникод в POST запросе?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    - пробуйте другие браузеры
    - а вообще для тестирования webapi часто используют Postman
    https://www.getpostman.com/
    https://habr.com/ru/company/kolesa/blog/351250/
    Ответ написан
    2 комментария
  • Ресурсы по изучение ASP.NET CORE?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    вы ожидаете книг? продвинутых блогов? по новейшим технологиям?
    - книги всегда будут опаздывать
    - блоги, скорее всего будут на языке большинства разработчиков (речь не о родных, а об английском)

    официальная документация где то тут
    https://docs.microsoft.com/ru-ru/aspnet/core/tutor...
    и найти на русском что то свежее.. ну разве что на хабре? авторские статьи? но они всегда будут находимы по нужным тегам
    Ответ написан
    Комментировать
  • Как называется технология, позволяющая сделать веб страницу на с#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    - для удаленной работы с данными/логикой Asp.Net WebApi (лучше сразу Core)
    - можно и саму страницу на шарпе - Blazor
    Ответ написан
    Комментировать
  • Создание приложения на C# и JS, что ещё надо?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    всё про ASP.NET

    и даже по русски https://docs.microsoft.com/ru-ru/aspnet/

    теоритически можно даже без js - курите Blazor
    в довесок поиск по Хабру
    вот только уровень там нужен далеко не нулевой ))

    но вот html и css обойти невозможно - на них строится разметка страницы. другого способа на сегодня не существует. придется осваивать хотя бы азы
    Ответ написан
    2 комментария
  • Как удалить каталог в домене?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    Ошибка: System.IO.IOException: "Отказано в доступе по пути..."
    этим все сказано
    Ответ написан
  • Как массово проверять данные с пользовательской формы?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - посмотрите события валидации - https://docs.microsoft.com/ru-ru/dotnet/api/system...
    2 - один обработчик события (метод) можно вешать на много контролов. это нормально
    Ответ написан
    Комментировать
  • C# Для чего нужен private get;?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - https://docs.microsoft.com/ru-ru/dotnet/csharp/lan...
    2 - по логике, ваш код или не должен работать, или есть нюансы... если будет время - проверю
    читайте (внимательно) ошибки компиляции (да вообще все внимательно)
    using System;
    
    namespace private_get
    {
        class P
        {
            public int x { private get; private set; }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                Console.Clear();
    
                P obj = new P();
    
                Console.WriteLine(obj.x = 1);
    
                //Console.ReadKey();
                // ну или запускать в студии Ctrl+F5
                // и стоит изучить что есть что?
                // и в чем разница ;))
            }
        }
    }

    чуть не забыл WI280VW.png
    Ответ написан
    2 комментария
  • Как вводить в textbox только буквы?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    а еще лучше использовать специально заготовленные события текстбокса - валидация
    Ответ написан
    Комментировать
  • Определить кол-во вхождений строки в строку - почему не работает?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - https://duckduckgo.com/?q=c%23+%D0%9E%D0%BF%D1%80%...
    запрос c# Определить кол-во вхождений строки в строку (под спойлером)
    z2ckAe3.png


    2 -
    пару коротких вариантов
    using System;
    using System.Linq;
    using System.Text.RegularExpressions;
    
    namespace Occurrences
    {
        class Program
        {
            static int method1(string source, string pattern)
                => new Regex(pattern).Matches(source).Count;
    
            static int method2(string source, string pattern)
                => source.Split(new string[] { pattern }, StringSplitOptions.None).Count() - 1;
    
            static void Main(string[] args)
            {
                var src = "тук - тук!";
                var ptn = "тук";
                Console.WriteLine($"'{ptn}' found on '{src}' use 'method1' {method1(src, ptn)} times...");
                Console.WriteLine($"'{ptn}' found on '{src}' use 'method2' {method2(src, ptn)} times...");
            }
        }
    }
    ну а по рукопашным вариантам.. ответ Foggy Finder пожалуй самодостаточен ))
    Ответ написан
    Комментировать
  • Как определить какой размер в памяти занимает словарь в C#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - https://www.jetbrains.com/dotmemory/ раз уж вам студия не мила..
    2 - можно грубо оценить сделав пробег по словарю, и взяв длины строк (не забываем что это юникод) и размеры массивов (опять же int==int32 обычно), ну и добавив размер словаря (предполагая размер адреса, исходя из платформы)... (на самом деле размер адресного массива словаря, скорее всего кратен какой то степени двойки, точнее набору блоков, размером со степенями двойки.. но эта погрешность, скорее всего, будет не принципиальна, ее легко можно подстраховать, накинув килобайт)

    ps где то поможет https://docs.microsoft.com/ru-ru/dotnet/csharp/lan... но не факт что везде ))

    pps https://habr.com/ru/post/136609/
    Ответ написан
  • Как записать этот метод с помощью регулярных выражений?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    пользы ни какой, кроме как упражнения. по крайней мере в таком примере точно

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

    в вашем коде, если использовать StringBuilder, можно достичь еще большей производительности

    string useSb(string str)
            {
                var sb = new StringBuilder();
                for (int i = 0; i < str.Length; i += 2)
                    sb.Append(str[i]);
                return sb.ToString();
            }


    справедливости ради - все эти варианты, будут существенно отличаться по времени выполнения, только на больших объемах данных
    Ответ написан
    Комментировать
  • Как сделать при нажатии на изображение в picturebox выделение какого-либо элемента?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    по существу - ни как.
    picturebox - это битмап. в нем нет ни каких "элементов"

    только если вы сами генерите picturebox, у вас есть:
    - возможность создать какую то координатную карту в процессе этой генерации
    - отловить координаты клика, и сопоставить их со своей картой

    иначе ни как

    ps или разбогатеть как гугл, завести такие же вычислительные мощности для распознавания "элементов" в картинках, нейронными сетями и... хотя, вам к тому моменту будет наверняка уже не до этого
    Ответ написан
  • Что должно быть входным параметром метода C#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - не видно исходных - это точно C#?
    2 - какой? вдруг Mono?
    3 - если это тест на вакансию - возможно есть проверка на готовность к чужим ошибкам - "1...2..3" к примеру?
    тогда решение простое
    using System;
    using System.Linq;
    
    namespace do_something_I_don_t_know_what
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(Decode("1...2..3"));
            }
    
            static string Decode(object a)
            {
                return new string (
                    (a as string)
                    .ToCharArray()
                    .Where(c => char.IsDigit(c))
                    .ToArray()
                    );
            }
        }
    }
    можно придумывать что то еще до бесконечности.. но по моему нет смысла
    Ответ написан
  • Как отредактировать HEX значение файла?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - если разовая операция - HxD
    2 - если тег C# означает поиск решения на C# -
    считывание байтового массива в память
    var byte_array = File.ReadAllBytes("path_name");
    , правка, запись обратно
    3 - для больших файлов, работа со Stream, конкретнее тоже легко спросить (и потом уточнять)
    https://duckduckgo.com/?q=c%23+%D0%B1%D0%B8%D0%BD%...

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

    pps по нынешним временам, файлы в мегабайты, и даже десятки мегабайт, стоит считать малыми, большими - файлы в гигабайты.. сотни мегабайт - по ситуации (скорость дисковой системы, объем доступной памяти, сложность обработки)
    Ответ написан
  • Почему я должен писать именно так, а не иначе?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    В общем, где все это определено?
    в правилах языка
    Где прописаны правила написания кода?
    в стандарте языка
    Почему я не могу убрать скобки, или ещё что-нибудь, и написать так, как мне хочется.
    и правда? почему? ))
    .. единственный нюанс - что бы работало, надо знать правила ))
    я люблю писать так, к примеру:
    namespace ff.links
    {
        static partial class Program
        {
            static void Main(string[] args)
            {
                var sw = new Stopwatch();
                sw.Start();
                "let's begin...".print();
    
                var finds = fromTypical().scan();
                "find targets is ".print(pfx, finds.Count().ToString());
                //finds.print();
                var bro = finds.Where(b => b.Contains(ffBinary));
                "find browsers is ".print(pfx, bro.Count().ToString());
                bro.print(pfx);
                var cfg = finds.Where(b => b.Contains(fflConfig));
                "find configs is ".print(pfx, cfg.Count().ToString());
                cfg.print(pfx);
                var profiles = finds.Where(b => b.Contains(ffProfileSign));
                "find profiles is ".print(pfx, profiles.Count().ToString());
                //profiles.print();
    
                profiles.buildLinks(bro.First());
                //profiles.prefsApplay();
    
                //links2start();
                sw.Stop();
                var ts = sw.Elapsed;
                $"RunTime {ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}.{ts.Milliseconds:000}".print();
    //#if DEBUG
    //            "press any key to continue...".print();
    //            Console.ReadKey();
    //#endif
            }
            const string pfx = "  ::> ";
        }
    }

    или так
    namespace Parser***
    
    {
        /// <summary>
        /// класс для работы с ***
        /// на основе Sgoliver.NRtfTree
        /// </summary>
        public static class useNRtfTree
        {
            /// <summary>
            /// Нарезка
            /// </summary>
            public static void job()
            {
                $"..load...".print();
                var tree = new RtfTree();
                tree.LoadRtfFile(x.Src());
                var rawRtf = tree.Rtf;
                $"scan OKUD forms...".print();
                (var f, var l) = tree.RootNode.ChildNodes[0].searchForms();
                var c = l - f >> 1;
                c++;
                $"\tfound forms {c}, groups NRtfTree - first {f} last {l}".print();
                $"..cutting...".print();

    но что бы это работало, надо еще пару правильных методов, в правильном месте что то вроде такого
    namespace Parser***
    {
        public static class x
        {
            // вырезано
            public static void print(this string s, string pfx = "", string sfx = "", string nl = "\n")
                => Console.Write($"{pfx}{s}{sfx}{nl}");
            public static void print(this List<string> l, string pfx = "", string sfx = "", string nl = "\n")
            {
                foreach (var s in l)
                    s.print(pfx, sfx, nl);
            }
        }
    }
    можно конечно и проще )).. и даже сложнее - тоже можно ))
    Ответ написан
    Комментировать
  • Как реализовать асинхронный сервер TCP C#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    dotnet core rsignal смотрели? если нет, рекомендую
    Ответ написан
    1 комментарий
  • Как преобразовать массив байт в любой тип?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    попытайтесь понять тут https://docs.microsoft.com/ru-ru/dotnet/api/system...

    сериализатор сохраняет , по всей видимости, еще хоть что то о мета данных. а ДЕсериализатор, пытается их найти... с одним байтом этот фокус не проходит

    ps для понимания, опробуйте https://docs.microsoft.com/ru-ru/dotnet/api/system... это должно сработать. и только после этого, вернитесь к вопросам:
    - любой объект
    - сериализация
    - ДЕсериализация

    pps
    абсолютно рабочий код (!!! ну на самом деле тоже исправлено!) ;))
    using System;
    using System.IO;
    using System.Runtime.Serialization.Formatters.Binary;
    
    namespace stream_to_any
    {
        class Program
        {
            static void Main(string[] args)
            {
                var data = new byte[] { 1, 2 };
                using (var stream = new MemoryStream())
                {
                    var formatter = new BinaryFormatter();
                    formatter.Serialize(stream, data);
                    stream.Seek(0, SeekOrigin.Begin);
                    var endDataPacket = (byte[])formatter.Deserialize(stream);
                    Console.WriteLine(endDataPacket.GetType().ToString());
                    foreach(var d in endDataPacket)
                        Console.WriteLine(d);
                }
            }
        }
    }
    ppps если вы доберетесь от мемори-стримов, до реальных файлов, думаю у вас будет возможность заметить что же там "не так" )))
    Ответ написан
    2 комментария