gpt4 book ai didi

C# 模块化方法来包装 x 代码的空检查

转载 作者:行者123 更新时间:2023-11-30 20:30:26 25 4
gpt4 key购买 nike

我有一个函数返回打开的表单,如果尚未打开则返回 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com