Полезно, если вы создаете ядро - где вы помещаете код ядра, который вы читаете с диска или в pagetable? Вы должны знать, куда прыгать.
Или в других, очень редких случаях, например, когда у вас много загруженной комнаты и вы хотите разместить несколько структур друг за другом. Они могут быть упакованы таким образом без использования оператора offsetof (). Однако есть и другие трюки.
Я также считаю, что в некоторых реализациях STL используется новое размещение, например std :: vector. Таким образом, они выделяют место для 2 ^ n элементов и не нуждаются всегда в realloc.
Используйте метод расширения Distinct
Линка, чтобы позволить циклу foreach перечислять различные значения в вашей коллекции errorCodes / массиве:
using System.Linq;
...
foreach (var ec in errorCodes.Distinct())
{
...
}
(Не забудьте импортировать System.Linq
Пространство имен.)
Использование .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);
}