c#模块化方式,以围绕X代码进行零检查



我的函数,如果尚未打开,则返回开放式或null。

  • 如果表格 我想执行一个操作(例如刷新它的列表(。
  • 如果不是打开的,并且该功能返回null,我不想做任何事情。

在不复制相同代码的情况下包装此功能的模块化方法是什么?

当前代码:

private void Sample()
{
    var desiredForm = MasterForm.FindForm<FormType1>();
    if (desiredForm != null)
        desiredForm.DoAction1();
    var otherForm = MasterForm.FindForm<FormType2>();
    if (otherForm != null)
        otherForm.DoAction1(someParam);
}

所需的代码:

private void Sample()
{
    MasterForm.FindForm<FormType1>().DoAction1();
    MasterForm.FindForm<FormType2>().DoAction1(someParam);
}

,但我不确定如何解决零检查的支票。任何其他速记也将有所帮助。

尝试失败:

private void Sample()
{
    // initialization of the new forms would fail because they lack all parameters
    (MasterForm.FindForm<FormType1>() ?? new FormType1()).DoAction1();
    (MasterForm.FindForm<FormType2>() ?? new FormType2()).DoAction1(someParam);
}

使用C#6您应该能够做到这一点:

private void Sample()
{
    // initialization of the new forms would fail because they lack all parameters
    MasterForm.FindForm<FormType1>()?.DoAction1();
    MasterForm.FindForm<FormType2>()?.DoAction1(someParam);
}

它的(?.(称为" null-Conditional"操作员,请参阅此处的文档

正常的 if条件除了速记null-conditional操作员(如其他答案中(,但是的,是的,是的,是的……

private void Sample()
{
    var result = MasterForm.FindForm<FormType>();
    if(result != null)
    {
     result.DoAction1();
     result.DoAction1(someParam);
    }
}

相关内容

  • 没有找到相关文章

最新更新