C# 클래스 필드의 참조 할당
C#에서 클래스 필드에 "참조"를 할당하려고 하면 예기치 않은 동작이 발생할 수 있습니다. 다음 코드를 고려하세요.
public class X { public X() { string example = "X"; new Y(ref example); new Z(ref example); System.Diagnostics.Debug.WriteLine(example); } } public class Y { public Y(ref string example) { example += " (Updated By Y)"; } } public class Z { private string _Example; public Z(ref string example) { this._Example = example; this._Example += " (Updated By Z)"; } } var x = new X();
예상되는 출력은 "X(Updated By Y)(Updated By Z)"이지만 대신 "X(Updated By Y)"만 인쇄됩니다. 이 동작은 필드에 "ref 매개변수"를 할당하면 참조가 손실되기 때문에 발생합니다.
왜 필드가 참조를 보유할 수 없나요?
다음과 같은 경우 가능한 옵션은 세 가지뿐입니다. "ref type" 필드 고려:
프로그램 안정성을 보장하고 코드의 시한폭탄 생성을 방지하기 위해 옵션 1을 선택했습니다.
Reference-Like를 달성하는 방법 동작
참조 유형의 필드를 가질 수는 없지만 참조 유형을 달성하는 대체 방법이 있습니다. 동작:
위 내용은 C#에서 필드가 참조를 보유하는 것을 허용하지 않는 이유는 무엇이며 대안은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!