Ответы пользователя по тегу C#
  • Как ограничить кол-во вводимых символов в ReadLine()?

    @kttotto
    пофиг на чем писать
    При данных условиях, подозреваю, что никак. ReadLine просто считывает всю строку целиком из буфера, дополнительных параметров для ограничения не имеет.
    А так сама постановка задачи подразумевает цикл и проверку длины на каждом цикле.
    Ответ написан
    Комментировать
  • Индекс находился вне границ массива. Что делать?

    @kttotto
    пофиг на чем писать
    c[0] = "квадрат 3";
    c[1] = "квадрат 4";

    Индекс в массивах начинается с 0. Это основа основ.
    Вы в массиве выделили место под два элемента, а с[2] Вы обращаетесь к третьему элементу, вот индекс и вышел за пределы массива.
    Ответ написан
    2 комментария
  • Как прикрутить многопоточную обработку без проблем с памятью?

    @kttotto
    пофиг на чем писать
    Если памяти не хватает, то без разницы сколько потоков Вы используете. Многопоточность нужна либо для асинхронности, либо для параллельности. Добавление потоков памяти не сэкономит, даже наоборот, увеличит ее расход и даже иногда скорости не добавляет.

    Если у Вас есть некий список, с которым работает много потоков, то рассмотрите возможность использования потокобезопасных коллекций. List не потокобезопасен.

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

    И да, нет необходимости добавлять 100 потоков, как уже сказали, такое кол-во в кол-во ядер не влезет и производительности это не добавит, а даже наоборот, т.к. одно ядро будет делить время на часть выделенных потоков и будет переключать контекст между ними. Не факт, конечно, что даже два потока будут разделены по ядрам, за это ОС отвечает, но 100 потоков, это кажется перебором. Можно, конечно поэкспериментировать с кол-вом и посмотреть на производительность при этом.
    Ответ написан
    Комментировать
  • Как отсортировать значения?

    @kttotto
    пофиг на чем писать
    Enum по дефолту это обычный int, т.е. Parties.Up == 0, Parties.UpRight == 1 и т.д., поэтому массив из enum сортируется тем же способом как integer. Если тебе нужен особый порядок, то задай его сам, например
    public enum Parties
    {
        Up = 1,
        UpRight = 0,
        Right = 2,
        DownRight = 3,
        Down = 6,
        DownLeft = 5,
        Left = 4,
        UpLeft = 7
    }

    Parties[] p = { Parties.Up, Parties.UpLeft, Parties.DownLeft, Parties.Right };
    var result = p.OrderBy(a => (int)a).ToList();
    Ответ написан
    3 комментария
  • Как крякнуть защищенную программу?

    @kttotto
    пофиг на чем писать
    Невозможно разобрать программу не разбираясь в технологиях на которой она сделана и в платформах, для которых она создана. А для того, чтобы сломать, нужно научиться еще и писать на этой технологии. Так что без матчасти (.net, il, ассемблер, ос, сети и т.д.) никуда. Дерзайте в их изучении.
    Ответ написан
    Комментировать
  • Как вставить в строку содержимое Dictionary?

    @kttotto
    пофиг на чем писать
    Формат такой строки называется JSON. Есть много способов, как преобразовать dictionary к json. Например,

    using System;
    using System.Collections.Generic;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;
    using Newtonsoft.Json.Converters;
    using Newtonsoft.Json.Serialization;
    
    Dictionary<string, string> headers = new Dictionary<string, string>();
    
    headers.Add("user-agent","mozilla");
    headers.Add("pragma","no-cache");
    headers.Add("referer","google.com");
    
    var jsonString = JsonConvert.SerializeObject(headers);
    Console.WriteLine(jsonString);  // {"user-agent":"mozilla","pragma":"no-cache","referer":"google.com"}
    Ответ написан
    Комментировать
  • Как работать в строке с "{"?

    @kttotto
    пофиг на чем писать
    Проблема не в самих скобках, а именно во вложенных "{1}", компилятор не умеет их интерпретировать. Как вариант возможно такое решение
    Console.WriteLine("new Item { Thumbnail = " + "{1}" + " }");

    Но у меня подозрение, что Вы хотите сделать это
    Console.WriteLine("new Item { Thumbnail = " + $"{item.Thumbnail}" + " }");
    Ответ написан
    2 комментария
  • Как разобрать и достать нужные значения из Expression?

    @kttotto
    пофиг на чем писать
    Ответ написан
    Комментировать
  • Как решить данную ошибку?

    @kttotto
    пофиг на чем писать
    В тексте ошибки все написано: несовпадение типов. Ожидается один тип, а присвоить пытаетесь что-то другое.
    obj.allRealty = _allRealty.Realty;
    Здесь obj.allRealty имеет типIEnumerable<Realty>, а какой тип имеет allRealty.Realty из Вашего кода непонятно.

    Но мне кажется, что Вам это мало о чем говорит, раз этот код для Вас "темный лес", а дебажить за Вас его никто не будет.
    Ответ написан
    2 комментария
  • C# как прочитать настройки appsettings.json из любого класса?

    @kttotto
    пофиг на чем писать
    Читаете только в контролере, получив через инъекцию IConfiguration . Дальше передаете нужные параметры настроек в объект, либо при его создании через конструктор, либо передаете параметры через методы этого объекта. Передаете только те параметры, которые непосредственно нужны этому методу.
    Конфиг может разрастаться, и передавать его весь в объект ради пары параметров не стоит, объект в этом случае может получить доступ к тем полям, которые его не касаются вообще.
    Ответ написан
    Комментировать
  • Как остановить выполнение по достижению времени?

    @kttotto
    пофиг на чем писать
    Т.к. Вы не сказали, что используете TPL или пишете на WinForms, или WPF, то предполагаю, что это обычный синхронный код где-то в консоли.
    Заведите таймер выше Вашего цикла, внутри цикла проверяете время и по достижению делаете выход из цикла через break. На коленке, без проверок, но думаю смысл уловите
    var dateTimeStart = DateTime.Now;
    const PERIOD = 3 * 60 * 1000;
    while(true)
    {
        ...
        var dateTimeNow = DateTime.Now;
        var interval = dateTimeNow - dateTimeStart;
        if(interval.Milliseconds > PERIOD)
        {
            break;
        }
    }
    Ответ написан
  • Как отправить запрос к API сайта?

    @kttotto
    пофиг на чем писать
    Комментировать
  • Система позволяет выполнять отслеживание местоположения транспортных средств. Как это сделать?

    @kttotto
    пофиг на чем писать
    Просто мне не понятно как совместить разные системы типа MVC, WPF и еще с андроид приложением для выгрузки GPS координат.

    В настоящее большинство приложений общаются междуй собой по протоколу tcp/ip, самый популярный - это http.

    В первую очередь, Вам нужно реализвать сервис по приему от трекера сообщений с его текущими координатами. Сервис будет располагаться на каком то адресе, в настройка трекера этот адрес указывается. Если без усугублений, то реализуется он достаточно просто. Этот же сервис пишет данные трекера в базу.

    Дальше Вам нужно реализовать web api для получения данных о трекере, о его текущем местоположении и, возможно, за какой то промежуток времени. Т.е он просто по запросу будет вычитывать данные из бд для конкретного трекера или какого-то набора трекеров.

    Дальше реализуется клиент. Он может быть каким угодно: mvc, wpf, android и т.д. Клиент запрашивает данные через Ваше web api. Если данные нужны будут в реальном времени, то нужно будет добавить реализацию на вебсокетах.

    Вообще, постановка мало похожа на задание вуза) Даже для тестого задания в контору, это достаточно объемно.
    Ответ написан
    Комментировать
  • ASP NET Core почему Ajax POST всегда null?

    @kttotto
    пофиг на чем писать
    Вы в запросе передаете объект у которого есть поле team со значением test. А контролер принимает не объект, а просто значение. Поэтому в параметрах запроса можно просто отдать значение data: test. Или в контроллере переделать параметр на объект
    class Param { string team }
    AddTeam(Param team)
    Ответ написан
  • Как сделать поиск по дате в ASP.Net MVC 5?

    @kttotto
    пофиг на чем писать
    Поиск по дате должен идти по диапазону или точному совпадению

    allOrdersByDate = db.Orders.Where(a => a.Date >= dateFrom && a.Date <= dateTo)
    
    allOrdersByDate = db.Orders.Where(a => a.Date == date)
    Ответ написан
  • Как преобразовать такой конструктор по С#?

    @kttotto
    пофиг на чем писать
    ptivate int _num;
    private int _den;
    
    Drob(int num, int den)
    {
        _num = num;
        _den = den;
    }
    
    public int Num
    {
        get
        {
            return _num;
        }
    }
    
    public int Den
    {
        get
        {
            return _den;
        }
    }
    
    public override strin ToString()
    {
        ...
        _num = -_num;
        _den = Math.Abs(_den);
        ...
    }
    Ответ написан
  • Как добавить данные в базу при создании?

    @kttotto
    пофиг на чем писать
    Связь указывается либо через атрибуты, либо через fluent api, это легко гуглится. У Вас связь одни ко многим, один сервис имеет много категорий, поэтому EF при создании таблиц добавит поле ServiceId в таблицу Category. По-видимому, Вам надо явно указать туда id сервиса для связи данных, для этого в модель Category это поле нужно добавить.
    Ответ написан
    Комментировать
  • Как посчитать кол-во вхождение в string (C#)?

    @kttotto
    пофиг на чем писать
    Если нужно только кол-во, то можно еще так
    int count = (source.Length - source.Replace(findString , "").Length) / findString.Length;
    Ответ написан
  • Какая логика между разными операторами?

    @kttotto
    пофиг на чем писать
    Никита Сальников,
    есть числа то и ответ должен быть числа

    Неверно. Условием может быть число, строка, или и то и другое (объект), а в зависимости от выполнения условия операция может производится так же над чем угодно (числом, строкой и т.д.). Грубо говоря "если один, то допишу в конец строки 'a', если два, то допишу в конец строки 'b' ". Может наоборот: "если 'one' прибавлю к результату 2, если 'two', прибавлю 4" и т.д.

    Всю эту задачу можно было бы переписать как то так
    var x = 0;
    var result = "";
    while (x < 30) {
      if(x == 0 || x == 8 || x == 15) {
        result += "a";
      }
      if(x == 1 || x == 7) {
        result += " ";
      }
      if(x == 2 || x == 9 || x == 10 || x == 16) {
        result += "n";
      }
      
      ... // и т.д.
      x++;
    }

    где x просто порядковый номер буквы в строке. Смысл тот же, найти зависимость расположения частей строки в целой строке.
    Таких зависимостей, в данном случае, можно найти сколь угодно. Автор книги предложил свой вариант, просто запутал условия, чтобы интересней было искать ответ.
    Ответ написан
    1 комментарий
  • Как реализовать чат в клиент-сервером приложении c#?

    @kttotto
    пофиг на чем писать
    Для таких вещей есть библиотека SignalR, с кучей примеров как на ней написать чат, например.
    В общем, советую копать в эту сторону.
    Ответ написан