다음 Winforms 계층 구조가 있습니다.파생 된 WinForm의 이상한 null 가능 멤버
Form ==> AForm ==> BForm
는 그리고 AForm
에 정의 된 널 수 멤버 int? X;
있다. BForm
에는 다음 코드가 있습니다.
public partial class BForm : AForm, IBview
{
......
public int Y
{
get
{
int z = X ?? 0;
System.Diagnostics.Debug.WriteLine("X: " + X.ToString() + " z: " + z.ToString());
return z;
}
}
X
은 null이 아니어야합니다. 나는 닫고 양식을 열려고 노력하고있다 BForm
. 대개 작동하며 간혹 z
은 0입니다 (어쩌면 10 회마다 한 번). 조건부 휴가가 return z
인 z==0
입니다.
중단 점에 도달하면. 디버그는
X: z: 0
쓰기하지만 브레이크 포인트가 히트 한 후 내가 비주얼 스튜디오에서 X
에 마우스 커서를 가져 가면 X
의 값은 null이나 0도이다.
어쨌든 X 값에 어딘가에 '0'이 명시 적으로 지정되어있는 것이 당연한가? –
@ChrisSinclair 아니, 불가능합니다. 중단 점에 도달하면 X가 null입니다. – ca9163d9
@NickW : 맞을 때 'Y'의 값은 '0'이지만 'X' *는'null '이 아닙니다. 그렇지 않니? – Tigran