Оцените оператор switch только один раз в C #

Полезно, если вы создаете ядро ​​- где вы помещаете код ядра, который вы читаете с диска или в pagetable? Вы должны знать, куда прыгать.

Или в других, очень редких случаях, например, когда у вас много загруженной комнаты и вы хотите разместить несколько структур друг за другом. Они могут быть упакованы таким образом без использования оператора offsetof (). Однако есть и другие трюки.

Я также считаю, что в некоторых реализациях STL используется новое размещение, например std :: vector. Таким образом, они выделяют место для 2 ^ n элементов и не нуждаются всегда в realloc.

0
задан Jacman 21 February 2019 в 18:19
поделиться

2 ответа

Используйте метод расширения Distinct Линка, чтобы позволить циклу foreach перечислять различные значения в вашей коллекции errorCodes / массиве:

using System.Linq;

...

foreach (var ec in errorCodes.Distinct())
{
    ...
}

(Не забудьте импортировать System.Linq Пространство имен.)

0
ответ дан elgonzo 21 February 2019 в 18:19
поделиться

Использование .Distinct(), вероятно, самое простое изменение, учитывая код, который у вас уже есть.

В качестве альтернативы, здесь есть несколько более лаконичное решение, использующее только LINQ и поиск Dictionary:

private static readonly Dictionary<string, int> _errorCodeScores = new Dictionary<string, int>
{
    { "@", 1 },
    { "-2", -2 },
    { "!", 5 },
};

private static int Score(string[] errorCodes)
{
    return _errorCodeScores
        .Where(s => errorCodes.Any(c => s.Key == c))
        .Sum(s => s.Value);
}
0
ответ дан devNull 21 February 2019 в 18:19
поделиться
Другие вопросы по тегам:

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