C#에서 ref 키워드를 사용하여 대리자 함수에 전달 된 클래스 변수를 수정하려고합니다. 델리게이트 함수가 부모와 두 자식에 대한 컨테이너에 저장된 값을 수정할 수있게하려고합니다. 지금 당장 일어날 일은 먼저 부모 클래스 (parent [parent])에 대한 참조를 전달했기 때문에 부모를 수정할 수 있지만 먼저 자식을 처리해야하므로 leftChild 및 rightChild에 대한 참조를 전달해야하므로 대리자 함수가 자식을 수정할 수 있습니다. C#에서 ref를 사용하여이 클래스 변수를 수정하려면 어떻게해야합니까?
- 는 델리게이트 함수가 컨테이너에 저장된 값을 수정할 수 있도록, 용기 [leftChildIndex]에 대한 참조 leftChild 것이 가능하다?
T leftChild = default(T); T rightChild = default(T);
당신은 그 객체에 대한 참조를 전달하고, 그들이 바로 방법이 끝난 후 파괴 얻을 : 당신이 그들을 정의하는 경우 (오른쪽 아이 같은)
private void traversePostOrder(Modify operation, int parentIndex) { if (parentIndex < size) { int leftChildIndex = getLeftChildIndex(parentIndex); int rightChildIndex = getRightChildIndex(parentIndex); T parent = container[parentIndex]; T leftChild = default(T); T rightChild = default(T); Library.Diagnostics.Message.logMessage("P: " + parent, 2); if (leftChildIndex < container.Length) { traversePostOrder(operation, leftChildIndex); leftChild = container[leftChildIndex]; } if (rightChildIndex < container.Length) { traversePostOrder(operation, rightChildIndex); rightChild = container[rightChildIndex]; } operation(ref container[parentIndex], ref leftChild, ref rightChild); } }
불행하게도, 오류가 발생 내가'심판 leftChildModified을하려고 할 때? 컨테이너 [leftChildIndex] : 기본 (T)'이고 오른쪽 자식에 대해 동일합니다. ref는 할당 가능한 변수 여야합니다. – jtfairbank
3 자에 대해 잘 모름); 편집 된 답변보기. –
하하, 더 많은 (구문) 오류가 발생합니다. 나는 네가하는 말을 보았다. 도와 주셔서 감사합니다! 삼항 연산자를 변수에 할당 한 다음 변수를 사용할 수 있습니까? 아니면 원래의 문제를 재현하겠습니까? – jtfairbank