728x90

예제코드

private bool bItem1UsedP1
{
    get => bItem1UsedP1; 
    set 
    {
        bItem1UsedP1 = value;
        Item1.enabled = !value;
    }
}

 

bItem1UsedP1은  속성이다.

이런 bItem1UsedP1을 get에서 속성 자체를 참조하고

set에서 속성을 자체 참조 하기때문에 이 속성변수는 무한으로 스스로를 호출하게 된다 

무한 재귀호출을 유발하기때문에 스택오버플로우를 발생시키는 것이다

그러므로 이를 해결하기 위해선 속성에서 사용할 필드가 필요하다

수정코드

   // 필드 정의 및 초기화
    private bool _bItem1UsedP1 = false;

    // 속성 정의
    private bool bItem1UsedP1
    {
        get => _bItem1UsedP1;
        set 
        {
            _bItem1UsedP1 = value;
            Item1.enabled = !value;
        }
    }

새로운 필드를 정의 해주어서 속성 값에 사용하며, 속성 스스로가 무한호출되는 것을 막고 값을 안전하게 관리할 수 있다

728x90

'c#' 카테고리의 다른 글

visualstudio image 리소스 사용  (0) 2024.02.20
Error apt2000 maui  (0) 2024.02.20
.NET SDK를 현재 사용할 수 있는 MSBuild 버전을 필요로 하는 이전 버전으로 변경하세요.  (0) 2024.02.19
TCP와 UDP  (0) 2023.10.16
자료구조  (0) 2023.10.16
Posted by 바르마스
,