[TestMethod] public void TestMethod1() { List<int> list = new List<int>(); Test(list); Console.WriteLine(list.Count()); // 总数量变为 1 } private void Test(List<int> list) { list.Add(1); }
테스트 후 목록의 요소 수가 0에서 1로 변경된 것을 확인할 수 있습니다.
변수 목록이 다른 변수 list2에 할당된 경우 list2가 작동될 때 목록도 변경됩니다.
이러한 변수는 실제로 다른 메모리 블록을 가리키며, 요소 수와 요소 값이 변경되면 해당 메모리 블록도 변경되기 때문입니다.
그러나 ConvertAll 메서드를 호출할 때 반환된 변수는 이전 메모리 블록과 다른 다른 메모리 블록을 가리킵니다.
[TestMethod] public void TestMethod1() { List<int> list = new List<int>(); Test(list); Console.WriteLine(list.Count()); // 总数量仍为 0 } private void Test(List<int> list) { List<int> list2 = new List<int>(); list2.Add(1); list = list2; }
위 코드는 다릅니다. 이는 list = list2이며, 이는 실제로 list2에 해당하는 메모리 블록을 가리키는 목록입니다. 이전 결론에 따르면 매개변수의 목록은 list2와 동일합니다. . TestMethod1의 목록을 사용하는 대신.
다음 코드는 다르지만 실제로는 TestMethod1()의 어느 누구도 더 이상 사용하지 않는 두 개의 새로운 List
[TestMethod] public void TestMethod1() { List<int> list = new List<int>(); Test(ref list); Console.WriteLine(list.Count()); // 总数量变为 1 } private void Test(ref List<int> list) { List<int> list2 = new List<int>(); list2.Add(1); list = list2; }
배열의 경우에도 마찬가지입니다.
매개변수로 전달되는 C# 목록 값 변경, 시연 및 설명 관련 기사를 더 보려면 PHP 중국어 웹사이트를 주목하세요!