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#' 카테고리의 다른 글
Math.Round(avg,MidpointRounding.AwayFromZero); (0) | 2024.08.28 |
---|---|
러버덕 디버깅 (1) | 2024.07.26 |
visualstudio image 리소스 사용 (0) | 2024.02.20 |
Error apt2000 maui (0) | 2024.02.20 |
.NET SDK를 현재 사용할 수 있는 MSBuild 버전을 필요로 하는 이전 버전으로 변경하세요. (0) | 2024.02.19 |