VAN (Value added network) и все что с этим связано. Начиная от реализации сетевых (и не очень) протоколов и заканчивая инфраструктурой/мониторингом. Периодически чешутся руки и лажу что-то исправлять в опенсорсных проектах.
Контакты
Местоположение
Украина

Достижения

Все достижения (5)

Наибольший вклад в теги

Все теги (62)

Лучшие ответы пользователя

Все ответы (133)
  • Как исправить несовместимость версий .NET?

    ayazer
    @ayazer
    Sr. Software Engineer
    у вас одна часть на .нет фреймворке, а вторая - на неткоре. Либо приведите все к чему-то одному, либо используйте нетстандарт нужной версии (тогда библиотека будет совместима и с нетфреймворком, и с неткором).

    как я понял с описания - на нетфрейморке у вас именно часть с интерфейсом, потому обновите TargetFramework во втором проекте. файл .sln должен выглядеть как-то

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="..." Version="..." />
           ...
      </ItemGroup>
    
      ...
    
    </Project>
    Ответ написан
    Комментировать
  • Как исправить код чужого репозитория?

    ayazer
    @ayazer
    Sr. Software Engineer
    создаете свою форку -> создаете в своей форке новую ветку -> исправляете баг в новой ветке -> создаете pull request с ветки своей форки в основную ветку оригинального репозитория. И обычно в более-менее популярных репозиториях есть список требований/рекомендаций которые надо выполнять если хотите чтоб ваш код вмерджили
    Ответ написан
    7 комментариев
  • Объект экземпляр класса?

    ayazer
    @ayazer
    Sr. Software Engineer
    1) объявление объекта (без инициализации)
    2) объявление объекта с инициализацией
    3) синтаксическая ошибка

    upd: (в случае с шарпом)
    Ответ написан
  • Убрать все повторяющиеся элемента за O(n) времени?

    ayazer
    @ayazer
    Sr. Software Engineer
    используйте доп. структуру данных чтоб хранить кол-во вхождений каждого элемента в список. т.е. для каждого элемента в списке (сложность O(n)) нужно увеличить счетчик в этой структуре данных (в случ. с хеш таблицой это O(n) в худшем и О(1) в среднем). и потом еще раз пройтись по хештаблице и достать с нее все элементы где счетчик = 1 (сложность O(n)). в итоге даже сложность для худшего случая будет o(n + n + n) = O(n)

    те
    var inputArray = new[] { 1, 2, 3, 4, 5, 4, 3, 2, 1 };
    var set = new Dictionary<int, int>();
    
    foreach (var val in inputArray)
    {
        if (!set.ContainsKey(val))
        {
            set.Add(val, 1);
        }
        else
        {
            set[val] = set[val] + 1;
        }
    }
    
    var result = new List<int>();
    foreach (var val in set)
    {
        if (val.Value == 1)
        {
            result.Add(val.Key);
        }
    }
    
    return result; //[5]

    ^ можете считать примером на псевдокоде, читатся вроде должно без проблем
    Ответ написан
    2 комментария
  • Как отражается изменения словаря на присваиваемые?

    ayazer
    @ayazer
    Sr. Software Engineer
    https://docs.microsoft.com/en-us/dotnet/csharp/lan...

    как я понимаю если я буду менять значения в Dictionary1 то они будут меняться и в 2 и 3 словарях?

    да, так как все будут ссылатся на один и тот-же объект

    но если я буду менять значения в 2 и 3 словарях они не будут затрагивать друг друга?

    будут, т.к. они будут ссылатся на один и тот-же объект

    то есть меняя значения в 2 словаре это никак не отразится на 3 словарь, я правильно понимаю?

    нет

    А то просто во недавно столкнулся с такой проблемой что присвоил один словарь другому Dictionary2 = Dictionary1 потом 1й очистил и 2й автоматом тоже оказался очищенным


    это один и тот-же словарь. просто на него ссылаются две переменные.

    те
    private Dictionary<string, ClassTest> Dictionary1  // переменная Dictionary1 типа Dictionary<> 
        = new Dictionary<string, ClassTest>(); //которая ссылается на объект Dictionary [id=1]
    private Dictionary<string, ClassTest> Dictionary2 // переменная Dictionary2 типа Dictionary<> 
        = new Dictionary<string, ClassTest>(); //которая ссылается на объект Dictionary [id=2]
    private Dictionary<string, ClassTest> Dictionary3 // переменная Dictionary3 типа Dictionary<> 
        = new Dictionary<string, ClassTest>(); //которая ссылается на объект Dictionary [id=3]
    
    //Dictionary1 -заполняем данными
    Dictionary2 = Dictionary1; //переменная Dictionary2 теперь ссылается туда-же, куда и переменная Dictionary1, 
    // т.е на Dictionary [id=1]
    
    Dictionary3 = Dictionary1; //переменная Dictionary3 теперь ссылается туда-же, куда и переменная Dictionary1, 
    // т.е на Dictionary [id=1]
    
    // a объекты Dictionary [id=2] и Dictionary [id=3] будут собраны сборщиком мусора, т.к. они больше не нужны


    UPD:

    а как мне сделать 2 словаря по типу 1го, то есть у меня есть 1й словарь шаблон, я хочу чтобы 2й и 3й словари изначально так же и выглядели (имели все те же данные), но далее данные в них менялись независимо друг от друга?


    ну например как-то так:
    var dict1 = new Dictionary<int, int>()
    {
        [1] = 2,
    };
    
    var dict2 = new Dictionary<int, int>(dict1);
    
    dict1.Add(2, 3);
    dict2.Add(2, 1);
    
    
    var log = new Action<Dictionary<int,int>>((dict) =>
    {
        Console.WriteLine(string.Join(", ", dict.Select(c => $"{c.Key}={c.Value}")));
    });
    
    log(dict1);  //1=2, 2=3
    log(dict2);  //1=2, 2=1
    Ответ написан