> 백엔드 개발 > C#.Net 튜토리얼 > C# 목록 값 변경 데모 및 설명이 매개변수로 전달됨

C# 목록 값 변경 데모 및 설명이 매개변수로 전달됨

高洛峰
풀어 주다: 2016-12-15 15:48:06
원래의
2141명이 탐색했습니다.

[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 중국어 웹사이트를 주목하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿