다음 프로그램을 살펴보십시오.
class Test
{
List<int> myList = new List<int>();
public void TestMethod()
{
myList.Add(100);
myList.Add(50);
myList.Add(10);
ChangeList(myList);
foreach (int i in myList)
{
Console.WriteLine(i);
}
}
private void ChangeList(List<int> myList)
{
myList.Sort();
List<int> myList2 = new List<int>();
myList2.Add(3);
myList2.Add(4);
myList = myList2;
}
}
나는 myList
통과했을 것이라고 가정 ref
했고 출력은
3
4
목록은 실제로 "ref에 의해 전달"되지만 sort
함수 만 적용됩니다. 다음 문 myList = myList2;
은 효과가 없습니다.
따라서 출력은 실제로 다음과 같습니다.
10
50
100
이 행동을 설명 할 수 있습니까? 실제로 참조에 의해 전달myList
되지 않은 경우 ( 효과가 적용되지 않는 것으로 보임 ) 어떻게 적용됩니까?myList = myList2
myList.Sort()
나는 그 진술조차도 효과가없고 출력이 다음과 같을 것이라고 가정했습니다.
100
50
10
ChangeList
a가List<int>
아닌 a를 반환하는 것이 가장 좋은 것 같습니다void
.