C#: хорошая/лучшая реализация метода Подкачки

Опубликовать пакет символов * .snupkg в частной ленте в VSTS

blockquote>

Вы можете опубликовать пакет символов .snupkg на NuGet.org или на любом сервере NuGet, который выбирает в этот опыт . Но у лазурного девопа в частном фиде такого опыта нет.

Подробную информацию вы можете получить из этой вики. NuGet Package Debugging & amp; Улучшения символов :

  • При публикации пакетов и пакет символов, и файл .nupkg будут легко публиковаться на NuGet.org или на любом сервере NuGet, который включится в эту работу.
blockquote>

Причина :

Как мы знаем, когда мы используем .snupkg в Visual Studio, мы добавляем новое местоположение сервера символов в файл символов (. pdb) location:

enter image description here

Но Visual Studio может анализировать только файл символов ( .pdb ) напрямую, а не пакет .snupkg, поэтому нам нужен сервер NuGet, чтобы помочь нам прочитать файл .pdb из пакета .snupkg. Фид Azure devops более склонен быть общим хранилищем пакетов.

Таким образом, мы должны опубликовать пакет символов * .snupkg на NuGet.org или на любом сервере NuGet, который использует эту возможность .

Если вы не хотите делиться своим пакетом на nuget.org, вы можете разместить собственный сервер NuGet или использовать облегченное решение для решения этой проблемы. (Вы можете отлаживать пакет nuget с помощью частного канала).

Надеюсь, это поможет.

10
задан Peter Mortensen 16 September 2016 в 03:48
поделиться

3 ответа

Ну, код Вы отправили (ref cards[n]) может только работать с массивом (не список) - но Вы использовали бы просто (где foo и bar два значения):

static void Swap(ref int foo, ref int bar) {
    int tmp = foo;
    foo = bar;
    bar = tmp;
}

Или возможно (если Вы хотите атомарный):

Interlocked.Exchange(ref foo, ref bar);

Лично, я не думаю, что обеспокоился бы методом подкачки, хотя - просто делают это непосредственно; это означает, что можно использовать (или для списка или для массива):

int tmp = cards[n];
cards[n] = cards[i];
cards[i] = tmp;

Если бы Вы действительно хотели записать метод подкачки, который работал или над списком или над массивом, то необходимо будет сделать что-то как:

static void Swap(IList<int> list, int indexA, int indexB)
{
    int tmp = list[indexA];
    list[indexA] = list[indexB];
    list[indexB] = tmp;
}

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

25
ответ дан 3 December 2019 в 14:19
поделиться

Хорошая подкачка является той, где Вы не подкачиваете содержание. В C/C++ это было бы сродни свопингу указателей вместо того, чтобы подкачать содержание. Этот стиль свопинга быстр и идет с некоторой гарантией исключения. К сожалению, мой C# слишком ржав, чтобы позволить мне помещать его в код. Для простых типов данных этот стиль не дает Вам очень. Но после того как Вы привыкли к и должны иметь дело с большим (и более сложный) объекты, это может спасти Вашу жизнь.

3
ответ дан 3 December 2019 в 14:19
поделиться

Использовать:

void swap(int &a, int &b)
{
    // &a != &b
    // a == b OK
    a ^= b;
    b ^= a;
    a ^= b;
    return;
}

Я не знал, что я нахожусь в секции C#. Это код на Си++, но он должен иметь ту же основную идею. Я считаю, что ^ - это XOR и в C# тоже. Похоже, что вместо & может понадобиться "ref"(?). Я не уверен.

4
ответ дан 3 December 2019 в 14:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: