次の 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);
Xnull または 0 が割り当てられることはありませんでした。フォームを閉じて開こうとしていFormBます。ゼロzの場合もあります (10 回に 1 回程度)。z==0ライン上でブレークする条件付きブレークを設定しましたreturn z。
ブレークポイントにヒットしたとき。デバッグ書き込み
X: z: 0
デバッグでも FormA:X がゼロではないことを示しています。