Я пытаюсь понять, что происходит в фрагменте кода ниже.C#, отображение списка из существующего списка?
В новом экземпляре списка, это похоже, что они ссылаются на другой список coins
? Я никогда раньше этого не видел, какова цель? Извините, если это уже ответ, если это так, пожалуйста, перенаправьте меня. Спасибо за помощь.
class Program
{
static void Main(string[] args)
{
List<int> coins = new List<int>();
List<int> amounts = new List<int>() { 1, 5, 10, 25, 50 };
Change(coins, amounts, 0, 0, 51);
Console.ReadKey();
}
static void Change(List<int> coins, List<int> amounts, int highest, int sum, int goal)
{
if (sum == goal)
{
Display(coins, amounts);
return;
}
if (sum > goal)
{
return;
}
foreach (int value in amounts)
{
if (value >= highest)
{
List<int> copy = new List<int>(coins); // <<<<<<<
copy.Add(value);
Change(copy, amounts, value, sum + value, goal);
}
}
}
static void Display(List<int> coins, List<int> amounts)
{
foreach (int amount in amounts)
{
int count = coins.Count(value => value == amount);
Console.WriteLine("{0}: {1}",
amount,
count);
}
Console.WriteLine();
}
}
Они создают новую копию исходного списка таким образом, когда новое значение добавляется к нему, оригинал один не изменяется. –