网站后台搭建图文,建设银行登录网站,云主机服务器,网站制作 太原这么简单的问题还写#xff1f;先不要笑。打开你代码量最多的项目#xff0c;搜索|或者,看看有多少条这样的代码#xff01;前不久#xff0c;我在dotnet/machinelearning上提交了一个pull request。修改内容是把|改成||, 把先不要笑。打开你代码量最多的项目搜索|或者,看看有多少条这样的代码前不久我在dotnet/machinelearning上提交了一个pull request。修改内容是把|改成||, 把改成。你猜包含多少修改总共46个文件近200处修改为什么是问题简单来说这些都是二元逻辑运算符。只是|和运算符始终计算两个操作数||和运算符仅在必要时才计算右侧操作数。问题就出在始终计算上。对于下面的代码你觉得有什么问题:private void Test(User user)
{if (user null | user.Name ){Console.WriteLine(公众号“My IO”);}
}
当程序运行时如果碰到user对象为null还是会计算user.Name这会导致NullReferenceException。而编译时不会有任何问题因为是符合语法的。因此做逻辑判断时应始终使用||和运算符。什么时候用|和为整形做位运算也就是对1/0的运算才是它们应该起作用的位置var method type.GetMethod(MethodName, System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
结论其实大多数这种错误是输入错误造成的。只是显示不明显而且编译器也不会做任何提示所以容易被忽略成为潜在的错误相信微软的程序员水平不会那么低的。个人建议尽量使用静态代码扫描工具可以有效减少或避免这类问题的发生。如果你觉得这篇文章对你有所启发请关注我的个人公众号”My IO“记住我