如果某些东西是无效的,那么会有多短暂

时间:2013-06-20 09:46:13

标签: 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 Expection

1 个答案:

答案 0 :(得分:3)

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

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