次の Winforms 階層があります。
Form ==> AForm ==> BForm
int? X;
そして、 で定義された null 許容メンバーがありますFormA
。にFormB
は、次のコードがあります。
public partial class FormA: Form
{
public int? X { get; set; }
public FormA(int? x) { X = x }
....
public partial class FormB: FormA, IFormAView
{
public FormB()
{
AsyncCall(() =>
{
int z = X ?? 0;
System.Diagnostics.Debug.WriteLine("X: " + X.ToString() + " z: " + z.ToString());
return z;
}
public static T GetForm<T>(int? x)
{
T form = new T();
form.X = x;
form.Show();
}
GetForm<FormB>(100);
X
null または 0 が割り当てられることはありませんでした。フォームを閉じて開こうとしていFormB
ます。ゼロz
の場合もあります (10 回に 1 回程度)。z==0
ライン上でブレークする条件付きブレークを設定しましたreturn z
。
ブレークポイントにヒットしたとき。デバッグ書き込み
X: z: 0
デバッグでも FormA:X がゼロではないことを示しています。