我的函数,如果尚未打开,则返回开放式或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);
}
}