Вы хотите передать ссылку на список по значению, а не по ссылке:
private void GetChars(List<char> charsToPopulate)
Кроме того, ваш код в порядке. Использование списков для примитивных типов, таких как char
, очень распространено.
Если вы заинтересованы в написании той же реализации, немного отличающейся, вы можете использовать LINQ, чтобы заполнить список из вещей:
{
charsToPopulate.AddRange(from t in things select t.CharSymbol);
}
Кстати, нет ничего плохого в создании списка в методе. Вам не нужно «распределять» список перед передачей его методу:
private List<char> GetChars()
{
List<char> charsToPopulate = new List<char>();
foreach(Thing t in Things)
{
charsToPopulate.Add(t.CharSymbol);
}
return charsToPopulate;
}
или используя LINQ:
private List<char> GetChars()
{
return things.Select(t => t.CharSymbol)
.ToList();
}