Ответы пользователя по тегу C#
  • Можно ли как-то получить доступ к отображающим элементам ToolBar?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    а ToolBar - wpf, winfoms, или иной?
    обычно достаточно модификаторов public и у класса, и у члена класса..
    если хотите осваивать сокрытие кода, точно не тот уровень..
    если осваиваете программирование - пока просто не забывайте public ..
    в зависимости от "областей видимости", возможно надо указать класс, а может даже сборку..
    а вот эти темы надо впитывать сразу, но и доки по ним более чем )))
    Ответ написан
  • Как выбрать диапазоны значений по вхождению значения в диапазон?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    попробуйте словарь вместо массива (или сходные типы)
    думаю других вариантов нет. от слова совсем убедили коллеги ))

    ps есть еще разнообразные БД. но целесообразность зависит от объема данных в соотношении с доступной оперативкой..

    pps если в достатке оперативка и ядра, то запрос plinq поможет... но все же рекомендую бенчмарки ))

    https://learn.microsoft.com/ru-ru/dotnet/api/syste... в довесок ;)
    Ответ написан
  • Как узнать параметры с которыми скомпилирована или собрана dll на C#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    Drovosek01,
    dll изначально собранная под архитектуру ARM64
    .. кстати, это еще не бинарная компиляция, иначе вы бы НЕ смогли декомпилировать..
    если dnSpy создает проект (с файлами типа *.prj/*.sln) можно использовать их как исходники, но пересборку выполнять на целевой системе. если не ошибаюсь, visual studio for osx не соизмеримо легче виндовой..

    ps если https://github.com/JoshClose/CsvHelper .. все таки рекомендую пересобрать на целевой платформе, с нужными правками ))
    Ответ написан
  • Почему required проперти не могут иметь более ограничиващий модификатор set\init, чем модиикатор класса, их содержащего?

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

    ps может internal или protected internal? в смысле для класса..
    Ответ написан
  • Почему делегаты в net 8.0 В разы быстрее 7.0 и в разы быстрее unsafe? Что изменили?

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

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    byte[] imageBytes = imageOperation.OpenFile(filePath);
    что то смущает.. OpenFile точно делает чтение? иначе вы можете действительно получить пустой стрим...

    ps если под виндой и в студии, отладчик вам в помощь ;))
    Ответ написан
    Комментировать
  • В Visual Studio не запускается проект Avalonia?

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

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

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    после просмотра output.csv
    догадка пришла сразу.. осваивайте отладчик ;)))
    qWkFWKR.png


    ps как вариант
    1
    public class Episode
    {
        public string Title { get; set; }
        public string OverallNumber { get; set; }
     }

    2
    episodes.Add(new Episode()
    {
        Title = HtmlEntity.DeEntitize(node.SelectSingleNode("//div[contains(@class, 'Text__sc-j452t5-0 hDxmZl')]").InnerText),
        OverallNumber = HtmlEntity.DeEntitize(node.SelectSingleNode("//div[contains(@class, 'Text__sc-j452t5-0 bCCQWi')]").InnerText)
    // тут внимательно! я меняю местами переменные, полагая что токов их смысл. но не запросы! )))
    });

    3
    Title,OverallNumber
    Обновление: 10.02.2024 10:05,"90,89 ₽"
    Обновление: 10.02.2024 10:05,"90,89 ₽"
    Обновление: 10.02.2024 10:05,"90,89 ₽"
    .. или уточняйте вопрос? ))

    pps а еще нюансики с культурой, чаще разделитель в csv это ";" тогда тот же excel открывает как таблицу сразу... а у вас "," .. это видно по заголовку сразу ))
    как вам надо - решайте сами ))
    у меня на ура прошло так ))
    var csv = new CsvWriter(writer, CultureInfo.CurrentCulture)
    // если у тебя региональные настройки не РФ, все равно так выдаст именно под дефолт твоих настроек


    ppps
    Мне надо чтобы значение этого Title можно было поместить в условную var x и отправить дальше по коду
    а зачем? ну или в чем трудности? Console.WriteLine(episodes[0].Title); ;)))
    Ответ написан
  • Как ускорить поиск элементов из статичного string[] по подстроке?

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

    ps если память не изменяет - brightstardb легковесная, может работать как сервис, так и встраиваемая, мозгами пораскинуть придется.. производительна.. но все познается в сравнении бенчмарков

    pps естественно это не единственная графовая бд, в тч под шарп ))

    ppps ... а обход массива с plinq не пробовали?... ну может ядер много? ;)))
    Ответ написан
  • Как программным методом удалить одну из итераций цикла for?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    в целом может полезно все это для понимания. но вообразим крайность - бесконечный ввод одного слова.. (вдруг у вас программный источник? ))
    итог - бесконечный цикл ))
    возможно это уже следующий уровень понимания, но рекомендую к осмыслению )))
    Ответ написан
    Комментировать
  • Ref, out and in объяснение?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    - в любом случае
    Ref, out and in
    это разные вещи
    - https://msdn.com welcam
    - вопросы такого уровня не приятны. сори
    Ответ написан
    Комментировать
  • Что делает атрибут [PreserveSig]?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
  • При сборке в visual studio выдаёт много ошибок. Возможно ли собрать это решение с github?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    - он успешно апгрейдится до 4.8
    - но ошибок не меньше, 2 nuget библиотеки очень изменились.. точнее одна живая, про вторую не понял
    - пересобирая проекты по одному, с конца, в середине разрулил ошибку.. но дальше пошли пачками, без мотивации не пойдет.. сори..
    .. за 6 лет дотнет ушел далеко... и не все либы писались достаточно грамотно. в частности dbLite там 3,11, а на дворе уже 5 с чем то.. как раз с ней мне удалось исправить ошибку за минуты...
    4 проекта снизу уже компилирутся
    yvSncU1.png
    .. а фрагмент кода - там в качестве аргумента передавался предикат, теперь только айди, но интеллисенс подсказала, что айди ищется по предикату.. теперь и этот проект компилируется... но когда начинает сыпать с 10 ошибок... не, это уже не минутное развлечение )))
    ... один из двух nuget вообще отмечен как устаревший... если заброшен, то это и правда может быть тупик..
    самому проекту 6 лет... он сам заброшен.. увы

    pps да и по исправленному фрагменту (типа компилируется)... большой вопрос по исходной логике - толи один элемент удалить? то ли все по предикату?! (условие)... что тоже не проблема...

    но учитывая количество вложенных проектов, и заброшенность либы по winforms... так... стопе... после прогулки деприкатов уже нет... любопытненько... на 8 проектов лишь 13 ошибок...

    ... но не минутная развлекуха. по любому. см "pps"... местами еще придется вкуривать логику... и не всегда это будет просто
    Ответ написан
  • Как решить проблему с типами данных?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    определение AlphabeticNotation в студию!
    ... а то у меня подозрения, что это символьная арифметика безразмерной величины. тогда типовые рецепты не пойдут, нужно приведение типа, но с учетом размерности... не так
    HealthBarImage.fillAmount = (float) HealthBossNow / HealthBoss;
    а скорее так
    HealthBarImage.fillAmount = ((double) HealthBossNow) / ((double) HealthBoss);
    а еще в студию тип HealthBarImage.fillAmount... а еще, возможно допустимо перегрузить оператор деления для AlphabeticNotation... и это лучший вариант, но он требует понимания типа, языка.. ну и математики )))

    ps а если это еще и двухмерная величина.... то вам еще над многим придется подумать
    Ответ написан
    Комментировать
  • Как быстро освоить c#, если я работаю на c++?

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

    ps на языке, надо в некотором смысле "думать"... плюсовый вектор, и лист шарпа, похожи только на первый взгляд..
    в шарпе есть перегрузки, в тч операторов, но не так популярны (я лично тащусь, но логика уже другая)...
    ... в общем все зависит от масштабов и сложности проекта..
    ... сходство базового синтаксиса, как раз может сыграть коварную роль
    но кто не рискует ... ;)))
    Ответ написан
  • Как в C# использовать апостроф в значениях env переменных?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    Console.WriteLine(Environment.GetEnvironmentVariable("forqna", EnvironmentVariableTarget.Machine));
    выхлоп
    FRjjQ0H.png


    ... или я не понял вопроса?

    ps если надо присвоение в коде, как то так думаю..
    Console.WriteLine(Environment.GetEnvironmentVariable("forqna", EnvironmentVariableTarget.Machine));
    Console.WriteLine(@"'test");
    мы об этом апострофе?
    LSKgHYp.png


    pps а вот хранение пароля в открытом виде, так себе идея.. тут и правда не грех применить какой то способ кодирования, а в коде раскодировать ;))
    вариант от Василий Банников, это минималка (сам бы сильнее замутил.. ну.. старый параноик)..
    Ответ написан
    5 комментариев
  • Почему потоки накапливаются и не уничтожаются?

    mindtester
    @mindtester Куратор тега Windows
    http://iczin.su/hexagram_48
    любой прототип процесса можно дебажить как консоль (или множество)..
    отладчик в руки!

    ps а так то утечка... вопрос чего? ;))

    pps отладочные записи в лог файлы, или в журнал.. ну это уже для процесса.
    для консолей - консоль и сила в отладке ))
    Ответ написан
    Комментировать
  • Объясните мне на пальцах рекурсию Фибоначчи F(4, например). Это самый простой алгоритм, а я не могу понять. Что мне делать?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    это функциональный стиль. может в том проблема? попробуйте тот же C#? Си? (без плюсов для начала).. любой диалект Pascal?
    ... это именно что бы понять.. а так, против питона ни че личного ))
    разглядел теги... ща.. дабавлю..
    изучите легкую модификацию алгоритма.. ну и проще с хранилищем, чем сразу с рекурсией.. просили же на пальцах? ;))
    namespace ConsoleApp1
    {
        public static class Fib
        {
            static List<int> fib = new List<int>();
            static int max = 15;
            public static void Main()
            {
                for (var i = 0; i < max; i++)
                {
                    if (i == 0) fib.Add(0);
                    else if (i == 1) fib.Add(1);
                    else fib.Add(fib[i - 1] + fib[i - 2]);
                    fib.print();
                    "... next step...".print();
                }
            }
            public static void print(this string s) => Console.WriteLine(s);
            public static void print(this List<int> l) { foreach (var i in l) i.ToString().print(); }
        }
    }
    - функциональный стиль крут лаконичностью....
    - слаб не предсказуемостью времени выполнения (а так же рисками переполнения стека..
    - изучите что такое хвостовая рекурсия.. (после того как разберетесь с моей версией... ;)))... удачи
    .. ну или так еще..
    namespace ConsoleApp1
    {
        public static class Fib
        {
            static List<int> fib = new List<int>();
            static int max = 15;
            public static void Main()
            {
                fib.Add(0);
                fib.Add(1);
                for (var i = 2; i < max; i++)
                {
                    fib.Add(fib[i - 1] + fib[i - 2]);
                    fib.print();
                    "... next step...".print();
                }
            }
            public static void print(this string s) => Console.WriteLine(s);
            public static void print(this List<int> l) { foreach (var i in l) i.ToString().print(); }
        }
    }
    нарушения сна.. надо чем то заняться ))
    .. и так, рекурсия мощный инструмент.. но особенно когда мы знаем некие принципы по кускам, а связать их нам трудно (привет Prolog ;)...
    беру ваш исходный пример, и добавляю трассировку ;)
    namespace ConsoleApp2
    {
        public static class recursion
        {
            static long callcnt = 0;
            static int fib(int n)
            {
                $"_fib calling {++callcnt} count".print();
    
                var res = 0;
    
                if (n == 0 || n == 1) res = n;
                else res = fib(n - 1) + fib(n - 2);
    
                $"_fib return {res}".print();
    
                return res;
            }
            static int max = 15;
            public static void Main()
            {
                for (var i = 0; i < max; i++)
                {
                    "... next fib...".print();
                    fib(i).ToString().print();
                }
            }
            public static void print(this string s) => Console.WriteLine(s);
            public static void print(this List<int> l) { foreach (var i in l) i.ToString().print(); }
        }
    }
    .. реализуйте, и сравните как растет стоимость выполнения с ростом глубины погружения (номера числа Фибоначчи).. оптимизацию для одного вызова не применял.. так нагляднее )))
    .. тем не менее, иногда рекурсия и красивый, и надежный способ решения запутанных задач )))
    .. но, возможно, дорогой по времени и ресурсам )))

    ... еще подправил, подумал так нагляднее ;)))... программируйте, пробуйте все ))
    Ответ написан
    5 комментариев
  • Почему C# не кроссплатформенный?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    C# кроссплатформенный. как и dotnet 8. другой вопрос - в линукс и осикс нет com.. к примеру.. нет winforfms... и это не проблема C#..
    есть тот же qt, и есть его.. ну если не порты, то обертки точно...
    вы сами не понимаете сути вопроса.. такое чувство, что вы хотите winforfms везде.. опробуйте MAUI
    Ответ написан
    4 комментария