我有一个函数,它返回一个打开的表单,如果尚未打开,则返回 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);
}
它的 (?.
) 称为“空条件”运算符,请参阅文档 here
关于C# 围绕 x 代码进行空检查的模块化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44729139/