当前位置:  开发笔记 > 编程语言 > 正文

我*总是*必须在安全演员后检查是否为空?

如何解决《我*总是*必须在安全演员后检查是否为空?》经验,为你挑选了2个好方法。

快速提问; 执行安全演员后,我是否总是需要检查空值?我现在这样做,但在这种情况下:

void button1_Click(object sender, EventArgs e)
{
    Button = sender as Button;
    if (button != null)  // <-- necessary?
    {
        // do stuff with 'button'
    }
}

我只是想知道我是不是在想什么.我每次出于习惯都会检查null,但是在这种情况下,我认为如果非Button对象连接到应该只用于按钮的处理程序,我宁愿崩溃.

编辑:好的,谢谢你们.如果有一个我失踪的角度,我只是好奇.



1> MichaelGG..:

如果要在传入非Button时崩溃,请执行以下操作:

var button = (Button)sender;

请注意,如果传入了null对象,它仍然可以为null.



2> Edwin Jarvis..:

这取决于您的代码合同.

如果您确定不是null,则无需检查.您可以引入一个断言来仅检查调试模式.我通常只检查过null,好像我之前没有检查过,否则我相信我的合同,有时候我会使用断言.

var button = sender is Button ? sender as Button 
             : throw new Exception("Not a button");

如果你想要一个与坏演员不同的异常,你可以试试这样的东西.同样,正式的代码合同会更好.看看这个图书馆.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有