Ответы пользователя по тегу C#
  • [VkNet] Как преобразовать объект в Int64?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    - если этот метод https://vknet.github.io/vk/messages/setChatPhoto/ у вас тут оба параметра обязательные, выписывать их именование не нужно, это только загромождает код
    - если бы вы привели еще фрагмент кода, можно было бы копировать ваши имена. кода нет - копирую имена из спеки
    - к сути - если вы объявляете переменную для MessageId выше, то описания не видно, проблема может быть там. попробуйте не объявляйте переменную заранее, а получить ее прямо во время вызова. вот так
    SetChatPhoto(out var MessageId, File)
    Ответ написан
  • Как узнать на чем проект .net core или asp .net?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    а еще можно открыть свойства проекта, и поискать опцию "целевая платформа"
    Ответ написан
  • Почему игнорируются необязательные параметры?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    вся фишка в struct (upd в смысле в целом претензии как бы и имеют почву для того что бы быть, но вот только для class ;))
    как вариант
    using System;
    
    namespace LogRecordExperience
    {
        static class Program
        {
            static void Main(string[] args)
            {
                LogRecord logRecord = new LogRecord();
                logRecord.startTrack = "a";
                logRecord.endTrack = "b";
                logRecord.dump();
            }
    
            static void dump(this LogRecord lr) =>
                Console.WriteLine(
                    "dump LogRecord" + Environment.NewLine
                    + '\t' + lr.destignation + Environment.NewLine
                    + '\t' + lr.startTrack + Environment.NewLine
                    + '\t' + lr.endTrack + Environment.NewLine
                    + '\t' + lr.RoutingMethod + Environment.NewLine
                    + '\t' + lr.numberOfCores + Environment.NewLine
                    + '\t' + lr.length
                    );
    
            public class LogRecord
            {
                public string destignation;
                public string startTrack;
                public string endTrack;
                public string RoutingMethod;
                public string numberOfCores;
                public string length;
    
                public LogRecord(
                    string destignation = "какое-то описание",
                    string startTrack = "-",
                    string endTrack = "-",
                    string RoutingMethod = "что-то здесь",
                    string numberOfCores = "0",
                    string length = "0"
                )
                {
                    this.destignation = destignation;
                    this.startTrack = startTrack;
                    this.endTrack = endTrack;
                    this.RoutingMethod = RoutingMethod;
                    this.numberOfCores = numberOfCores;
                    this.length = length;
                }
            }
        }
    }

    выхлоп
    3RXDV5M.png
    Ответ написан
  • Почему клиент не подключается к серверу в локальной сети?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    Если я меняю адрес с 127.0.0.1 на другой (адрес сервера в локальной сети), то получаю ошибку на этапе компиляции, что адрес не подходит контексту
    было бы не плохо фрагметы кода и скрин ошибки. именно про
    я меняю адрес с 127.0.0.1 на другой

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

    ps при наличии роутера (или любого иного dhcp), если пытаться присваивать фиксированный адрес избранному компу (на роль сервера), не забываейте что фиксированный адрес должен быть вне диапазона раздачи dhcp
    Ответ написан
  • Как передать из функции tuple?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    ну я бы не стал заморачиваться с именованием членов кортежа. но если очень хочется, вроде в МСДН все было внятно прописано. гуглим что то типа кортежи C#
    пример кода ниже, две функции используют разные способы доступа к элементам кортежей. на мой взгляд самые практичные. ну и задача
    как описать две функции, которые принимают и возвращают подобные tuple?
    там точно решена
    сам код
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace experience_with_tuples
    {
        class Program
        {
            static void Main(string[] args)
            {
                var t = (1, "test", true);
                ConOut_tuple(job_with_tuple(t));
                // хотя можно и так. но не забываем про скобки
                ConOut_tuple(job_with_tuple((1, "test", true)));
            }
    
            static (int, string, bool) job_with_tuple((int, string, bool) t)
            {
                (var i, var s, var b) = t;
                i++;
                s += " successful";
                b = !b;
                return (i, s, b);
            }
    
            static void ConOut_tuple((int, string, bool) t) =>
                Console.WriteLine(
                    t.Item1 + Environment.NewLine +
                    t.Item2 + Environment.NewLine +
                    $"detected errors: {t.Item3}"
                    );
        }
    }

    выхлоп
    mw6Fhhh.png

    upd еще об именовании
    как только вы хотите именовать члены кортежа, что бы все было строго и логично и через десяток листов кода ясно понимать что это тут у нас?
    вам уже нужен не кортеж а класс. хотя иногда лучше структура. но это совсем отдельная и вполне достойная внимания тема.
    кортеж классная штука, но она [реально классная] для решения локальных задач в функциональном стиле. в идеале, когда не зависимо от количества строк, и так все сразу ясно и понятно. типа на входе проекция в кортеж, а на выходе сразу декомпозиция. тогда по коду и так видно что происходит.
    типа такого
    public (int, int) MovePoint(int x, int y)
    {
      // bla-bla-bla
      // изменения x, y
      return (x, y);
    }
    ...
    (var newX, var newY) = MovePoint(oldX, oldY);
    Ответ написан
  • Как выполнить запрос c# httpclient, если сервер требует js?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    в каментах выше подсказана суть - много чего может формироваться js
    в вопросах ботизации нас интересует только клиентская сторона, что генерируется на сервере не очень важно, если на клиенте все отрабатывает так как ожидает сервер
    selenium классика но и не единственный вариант:
    - расширения браузеров (которых вы хотели бы избежать)
    - безголовые браузеры (прям так и гуглите, можете добавлять слова бот, автоматизация, тема оч популярная)
    - cefsharp (а нас же тег C#?) (но я бы не сказал что низкий порог входа)
    - GeckoFx мне оч нравится, но катастрофически редко обновляется
    - chromiumfx менее известен, зато регулярно обновляется
    - если сайт поддерживает IE, WebBrowser/WebView (Forms/WPF) в шарпе "из коробки" (под виндой)
    - в принципе есть еще WebView UWP (метро) там сразу Edge. но порог вхождения тоже повыше немного будет
    Ответ написан
  • Что выбрать, Unity или .NET?

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

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    для десктопа под винду - достаточно C#
    для веб-фронта - достаточно js
    для веб-бэка.. тут вопрос интересный.. можно и C# обойтись
    но если в вакансии присутствуют слова web, C# и фулстек, думаю потребуются оба. а еще html/css.. sql.. а еще умение вертеть всеми как жонглер 33-мя (не опечатка) шариками
    Ответ написан
  • Не понимаю как работают ссылки на сборку в C#?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    про Visual Studio? если да:

    еще один, не совсем очевидным но очень простой способ:
    - кинуть новый файл cs в папку проекта
    - в панельке обозревателя проекта изучить кнопочки (можно наводить и задерживать мышку, будет всплывать подсказка)
    - выбрать "отображать все файлы"
    - ваш новый файл кода станет видимым, но серым
    - ПКМ на нем, в локальном меню "включить в проект"
    - предпочтительно после этого выключить "отображать все файлы" обычно это только мешает

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

    ps про dll
    - можно подключить сорцы плагина отдельным проектом. иногда это может быть на много правильнее чем валить сорцы в кучу
    см скрины под спойлером
    ltUrhSj.pngvA1o7mw.png в этом месте надо поставить галочку, но просто мне в это паре проектов связь не нужнаbXUBeX1.pngдолжна была получиться стрелка на кнопку "ОК" но чет не влезло.. звиняйте ))
    Ответ написан
  • Как реализовать браузер в desktop приложении?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    - ранее указанный CefSharp вероятно самый перспективный, учитывая тенденции на рынке браузеров
    - есть GeckoFx. Семплы под формс есть. Мне показалось порог вхождения ниже. Но (см выше) тенденции однако. А главное слишком редко обновляется. Сам фокс может успеть внести радикальные изменения в движок, пока проект выпустит обнову. Мне интересен тем, что накоплен приличный опыт переноса профилей фокса всего 7 или 8ю файлами
    - для потренироваться, новичкам вполне сгодятся WebBrowser/WebView (Forms/WPF). Зато «из коробки». Но это IE, увы. Есть еще WebView в UWP – это Edge, но там придется грызть XAML при чем все даже чуток мудренее чем просто в WPF. Но по большому счету и инфы навалом, и в магазине пачки демо приложений

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

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    начиная с появления .net core - он стал кроссплатформенным
    с выходом .dot net 5 разделение опять исчезнент. дотнет будет кроссплатформеным тотатльно
    если интересно почитатать https://habr.com/ru/company/raiffeisenbank/blog/451136/
    хотя уже есть более свежие обзоры

    ps про VS для OS X уже упомянуто. под динукс (да и вобще подо все) есть бесплатный VS CODE. есть еще тоже тотально кроссплатформенный Rider от JetBriins. но у него не существует бесплатных редакций. разве что только беты
    Ответ написан
  • Если шансы устроиться C# ASP.NET разработчиком без ВО?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    Собственно думаю стоит ли готовить портфолио на .NET стеке
    а сможете? сделайте. да такой что бы у работодатеоя слюки птеклию. вопрос и отпадет
    Ответ написан
  • Как учить программирование без пк?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    1 - есть книги. в том числе всьма авторитетные. мало того - есть онлайн и книги, и курсы, и задачники
    book.lib.rus.ec
    https://metanit.com/sharp/tutorial/
    https://www.codewars.com/
    2 - онлайн IDE и близкие к ним инструменты
    https://sharplab.io/
    https://dotnetfiddle.net/
    https://ideone.com/
    https://rextester.com/

    ps
    - это далеко не все. дружите с поисковиками
    - а вот на экран телефона вероято влезет не все
    - если кто то под баном, опять же поисковики подскажут
    Ответ написан
  • Как изменить элемент из другого класса?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    1 - так и покажите где и как обявлен label2
    2 - и где, по отношению к ней, находится код, который пытается нзменить label2
    3 - приведите убедительные доказательства, что этот код кообще реально вызывается (да, и такие ошибки бывают. но тут достаточно break point в студии поставить)

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

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

    звиняйте экстрасенсы в отпуске (с) ))

    ps старый и слепой (((
    int score=0;
    label2.Text = "хоть что то";
    while (score <= 0) 
    {
                        score = textBox1.TextLength;
                        richTextBox1.Text += score;
                        if(score>0)
                        label2.Text = score.ToString();
    }


    это на 100% бесконечный цикл. он имеет шанс на выход, только в случае, если score имеет отрицательное значение. но...
    - мы имеем инициализацию int score=0;, мало того, изначальное инициализиреуем label2 не пустым значением, а это будет только подливать керосина в костер, но уже в теле цикла
    - далее бесконечно score = textBox1.TextLength; вот только это значение ни когда не может быть отрицательным (а судя по остальному коду цикла, даже вряд ли нулевым хоть когда либо)
    - и напомниню исловие цикла while (score <= 0) (то есть равенство нулю допустимо волею автора изначально) прервать эту вакханалию может только отрицтельное значение.. ну или break; по какому то осмысленному условию, которое реально может наступить в достаточно короткие сроки.. а не через годы, а то ведь бешатой собаке семь верст не круг (с)

    похоже что все у вас происходит, только название этому - зависание (по заумному - бесконечный цикл)
    Ответ написан
  • На с# пишут только энтерпрайз?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    категорически не только
    что бы не писать очередную лекцию (чем грешу иногда частенько.. вот и ныне.. ))
    вы пошуршите на github по тегу c# уверяю, че только не найдете ;))
    к примеру есть более одного интерпретатора prolog на C# ;)) (сылки по запросу, по тому что не все на гите проживают. я было дело сильно интересовался темой ))
    ну и еще "пару" слов
    C# лучший универсальный язык современности
    (с) Дмитрий Нестерук, сказано не особо давно. на тот момент точно уже съел собаку и в шарпе, и в плюсах (C++), и в F# (у меня есть основания так считать). много лет проработал в JetBrains, как раз главным по .net. что не поделили не знаю, да и не благодарное это занятие чужое исподнее разглядывать
    но прогер опытный и сильный. если любопытно - погуглите, кроме личного блога и на ютубе засветился не раз, да и возможно еще где ))

    ps мое личное мнение скорее совпадет с тональностью и названием статьи.. или двух ;))
    https://habr.com/ru/company/jugru/blog/327492/
    https://habr.com/ru/company/epam_systems/blog/429766/
    год ли? пять ли? дот нет развивается гораздо агрессивнее чем java. не смотря на то что багаж наработок у java, думаю, все еще побогаче будет
    следующий захватческий ход описан в этой статье (хотя наверняка уже есть не мало более свежих)
    https://habr.com/ru/company/raiffeisenbank/blog/451136/
    дотнет предоставляет возможности и для тех кому нужен максимальный перфоманс (чего в jvm, на сколько мне известно, нет вообще. но могу и ошибаться)
    https://habr.com/ru/post/443804/
    https://habr.com/ru/company/clrium/blog/467663/
    мое личное мнение - dotnet очень перспективня платформа. основной язык C#, возможно следующим стоит учить именно F# (ну или если бзики как уменя то CIL и натуральный ASM)
    .. ах да, web куда же без него, wasm во всех ипостасиях, пока генерит тяжеловатые сборки, речь о размере, а значит о времени загрузки. но всегда подтверджает гораздо более высокую производительность
    MS мимо не прошел - продукт называется Blazor сыроват.. но будем посмотреть ;))

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

    другой вопрос - если предмет пахоты, так же и источник восторга, возможно это и есть счастье (а не счет в банке)
    Ответ написан
  • Почему необходимо приводить те или иные множества к IEnumerable? И Как использовать IReadOnlyCollection?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    да фигня это все
    IEnumerable<T> нужен тогда и только тогда, когда нужны асинхроннные или ленивые вычисления, по тому что метод возвращающий IEnumerable<T>, имеет право возвращать не весь набор, а возвращать экземпляры T поштучно, вот так
    yield return (T)foo;
    а вот уже эта фича, открывает много новых и интересных возможностей для параллельного программирования
    Ответ написан
  • Чем занимается .NET программист?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    пишет программы, на C#, VB.NET или F#, или на нескольких из эти языков. есть экзотика типа ironPython или PHP.NET, но это редко. есть даже Lisp и Prolog. это обычно как доролнение к майнстриму, перчисленному выше.
    на dotnet можно создаать и полноценный десктопны софт. и, бэкенд к мобайлу или вебу. можно создваать игры, особенно в Unity. есть целая инфрвраструктура для встраиваемых устройств и робототехники
    по мере становления dotnrt core, бэк на дотнете сстановится еше и кроссплатформунным
    и это еще наверняа не все
    Ответ написан
  • Как из листа взять все числа в случайном порядке, без повторений?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    почему то значения в r1 r2 другие, хоть и приближенные

    правильно
    Random.Range(numbers[0], numbers[2]);
    никогда (или с очень малой веорятностью) не вернет ни numbers[0], ни numbers[2]. вы же задаете их как границы диапазона будущего случайного значения. обычно вы получите действительно значение где то между границ

    немого забегая вперед, раз уж у вас cлучайное значение, то numbers.Remove(r1); скорее всего ни чего не удаляет из списка. для удаления надо укзать значение, которое там действительно существует

    а r3 всегда равен min

    естественно (причины выше, вы никогда, ни чего не удаляе из списка)
    numbers = new List<float>() { min, mid, max };
    ...
    r3 = numbers[0];


    вероятно вам надо что то в этом духе
    numbers = new List<float>() { min, mid, max };
    // тут без изменений
    // далее различаем индексы и сами значения
    i1 = Random.Range(0, numbers.Count-1);
    r1 = numbers[i1]
    numbers.RemoveAt(i1);
    // ну или как вариант
    i_n = Random.Range(0, numbers.Count-1);
    r_n = numbers[i_n]
    numbers.Remove(r_n);
    // как видите, ни одной строки не убавилось. а удаление по индексу точно быстрее
    // полную совместимость с Unity это уж сами проверьте
    // естественно n ни когда не должно превышать исходного размера списка
    // и еще - средства раскраски синтаксиса напомнили in это зарезервированное
    // ключевое слово ;))


    ps и хочу предупредить - я не в курсе как в юнити с авто приведениями типов. беглое гугление, поазало, что Random.Range() возвращает float, а в качестве индекса должно использоваться int. в традиционном дотнете, приведение местами пойдет автоматически, но где то придется использовать явные приемы приведения типов

    pps
    freeExec, в каментах, утрверждает что верхняя граница ни когда не возваращается рандомайзером
    если это действительно так, можео смело шпарить
    ...i_n = Random.Range(0, numbers.Count);
    на любой фазе. ведь numbers.Count всегда вернет актуальное значение размера. его нельзя использовать в качесве индекса. но нас только что заверили, что рандомайзер не возвращает верхнюю грницу. значит такой код и короче и корректнее
    Ответ написан
  • Как написать асинхронный конвеер на c#?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    ну так IEnumerable<> и yield вам в помощь. само собой и async/await
    как раз эти четыре понятия и придназначены, для упрощения написания кода, над массивами даннх, растянутыми во времени, и не известной длинны. с их помощью, большая часть кода, выглядит так, будто все входные данные предоставлены сразу, и результат вы выдаете как будто тоже сразу

    ps для практики полезны примеры из MSDN (где они есть) либо на https://metanit.com/sharp/tutorial/ придется поискать. в любом случае, однозначно придется понять обсласти применения и возможности этих понятий. а тогда уже точно сложится картина, как они лягут на ваш конкретный случай

    pps
    Ссылки от того куда положили возвращаем в виде коллекции тому кто нас вызвал.
    вот это место не очень вписывается в концепцию конвеера на IEnumerable/yield/async/await
    дело в том что результирующие ссылки, вы получаете "изредка", и явно в отрыве от момента получения исходного изображения
    тут несколько путей:
    - именно коллекцию ссылок (json?) формировать по окончанию обработоки
    - возвращать в первоисточник ссылки по одной, и формировать коллекцию там, а привязку можно делать по имени/тегу/коду/номеру изображения.. (кадра?)
    - можно и асинхронно, растянуто во времени досылать json, или любую выбранную коллекцию дотнета, если на приемнике дотнет, и вы так же правите исходниками
    - как вариант, если известно количество кадров изначально, можно уведомлять первоисточнк о начале пересылки хоть массива заданной размерности, в любом понятном ему формате, если конечно он так же способенн к асинхронной обработке

    ppps
    Пробовал с BlockingCollection
    повторюсь, на сколько я уловил вашу задачу, кроме IEnumerable<>, в подобном конвеере в принципе ни че больше не нужно. ну или разве что как вы там результат решите формировать. но и для результата, даже для накопителя, из дотнетовских конструкций, того же IEnumerable<> за уши, а из него, если кончно это требуется, можно и json формировать
    Ответ написан
  • Распознавание образов с окна игры?

    mindtester
    @mindtester Куратор тега C#
    делаю странные вещи..чаще на C#.. иногда за деньги
    - вы можете покадрово снимать буффер экарана (не просите код. гугл в помщ. и отдавайте предпочтение ссылкам сразу на MSDN ))). это лишь указание "куда смотреть")
    - ну а потом "разглядывать его "нейронками". или чем научитесь ))

    ps мои личные достижения - грабинг обычной гуевой программы с текстовыми полями. но необычной тем, что она была создана на Qt for windows, то есть добраться до контента элементов по дереву хендлов, возможности не было ни какой. так и вознигла идея грабинга битмаповского буффера. на этом сходство с вашей задачей, могло бы закончиться,.. далее шрифт распознавал "домашними" алгоритмами. позднее, по срокам, на которы все это растянулось, стало очевидно, что можно было смело грызть нейронки сразу. но, не смотря на некоторый прогресс, клиент уже перегорел ))
    возможность применения нейронок была бы вторым, возможным сходством. в обоих измерениях, моя задача, возможно была существенно проще.
    Ответ написан