c# - 如果某事是无效的,如何缩短

标签 c# nullreferenceexception

我对 C# 和一般编程不是很有经验,但我认为必须有一些东西可以避免写这样的东西:

                if (item.Graf != null)
                {
                    item.Graf.IsVisible = true;
                }
                if (item.GrafReal != null)
                {
                    item.GrafReal.IsVisible = true;
                }
                if (item.GrafIm != null)
                {
                    item.GrafIm.IsVisible = true;
                }

等等。我知道有一种叫做惰性初始化的东西,但我真的不需要创建一个新项目,只需检查它是否存在,以更改其属性 IsVisible。如果我不检查它是否存在(并且它不存在),我会得到一个 Null Reference Expectation

最佳答案

您可以引入匿名(或命名)方法,但我不会说它会改进代码(很多),这取决于您拥有的此类元素的数量:

Action<GrafBase> setVisibleIfNotNull = delegate(GrafBase graf)
{
    if (graf != null)
        graf.IsVisible = true;
};
setVisibleIfNotNull(item.Graf);
setVisibleIfNotNull(item.GrafReal);
setVisibleIfNotNull(item.GrafIm);

关于c# - 如果某事是无效的,如何缩短,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17210463/

相关文章:

c# - 炼金术 WebSocketClient

c# - 将带有字符串数组的 C# 结构传递给 c++ 函数,该函数接受 void * 用于 c# 结构和 char** 用于 c# 字符串数组

c# - 用Kinect Skeleton关节模拟多点触控(SDK1.5)

c# - 为什么修改项目输出目录会导致 : IOException was unhandled "Cannot locate resource ' app. xaml'。”

c# - 为什么字符串属性上的 GetType 会导致 NullReferenceException?

c# - 避免空引用异常

c# - 什么是NullReferenceException,如何解决?

c# - 什么是NullReferenceException,如何解决?

c# - 每当有人试图截屏时都会跟踪和捕获的服务

c# - 为什么我得到这个 NullReferenceException C#