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

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

    ps если вы хотите обойтись без сервера - это в принципе возможно. но будет на порядок сложнее - придется освоить p2p технологии. если вы не являетесь экспертом в программировании вообще, и в этой области в частности, ваша цель отодвинется на годы. вы перегорите и/или идея станет не актуальной.

    совет - либо сайт-блог, либо приложение + Web API на Asp.Net (+ SignalR если нужен реалтайм), либо закажите у профи
    Ответ написан
    Комментировать
  • [VkNet] Как преобразовать объект в Int64?

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

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    а еще можно открыть свойства проекта, и поискать опцию "целевая платформа"
    Ответ написан
    Комментировать
  • Как передать из функции tuple?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    ну я бы не стал заморачиваться с именованием членов кортежа. но если очень хочется, вроде в МСДН все было внятно прописано. гуглим что то типа кортежи 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#
    http://iczin.su/hexagram_48
    в каментах выше подсказана суть - много чего может формироваться js
    в вопросах ботизации нас интересует только клиентская сторона, что генерируется на сервере не очень важно, если на клиенте все отрабатывает так как ожидает сервер
    selenium классика но и не единственный вариант:
    - расширения браузеров (которых вы хотели бы избежать)
    - безголовые браузеры (прям так и гуглите, можете добавлять слова бот, автоматизация, тема оч популярная)
    - cefsharp (а нас же тег C#?) (но я бы не сказал что низкий порог входа)
    - GeckoFx мне оч нравится, но катастрофически редко обновляется
    - chromiumfx менее известен, зато регулярно обновляется
    - если сайт поддерживает IE, WebBrowser/WebView (Forms/WPF) в шарпе "из коробки" (под виндой)
    - в принципе есть еще WebView UWP (метро) там сразу Edge. но порог вхождения тоже повыше немного будет
    Ответ написан
  • Что выбрать, Unity или .NET?

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

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

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    про Visual Studio? если да:

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

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

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

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

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

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

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

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

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    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#
    http://iczin.su/hexagram_48
    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; по какому то осмысленному условию, которое реально может наступить в достаточно короткие сроки.. а не через годы, а то ведь бешатой собаке семь верст не круг (с)

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

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

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

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    почему то значения в 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 всегда вернет актуальное значение размера. его нельзя использовать в качесве индекса. но нас только что заверили, что рандомайзер не возвращает верхнюю грницу. значит такой код и короче и корректнее
    Ответ написан
    3 комментария
  • Как написать асинхронный конвеер на c#?

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

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

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

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

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

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

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    тут все просто:
    - хочешь, учи C#
    - хочешь учи C++

    ps прямой ответ на вопрос эелементарно ищется на MSDN, куче учебных сайтов и в книгах
    pps ну или готов подискутировать в каментах.
    начнем со встречного вопроса - зачем вам C#? если так симпатичен C++. прошу развернутого ответа
    Ответ написан
    6 комментариев