关于&&和&的疑难杂症
今天在看书《图形用户界面测试自动化》的时候,看到一段很古怪的代码:
private static GUIInfoType GetGUIInfoType(string winText, string winClass, string winTextParent)
{
if (winText != "" && winClass != "" & winTextParent == "")
return GUIInfoType.guiTextClass;
else if (winText != "" && winClass == "" & winTextParent != "")
return GUIInfoType.guiTextParent;
else if (winText != "" && winClass != "" & winTextParent == "")
return GUIInfoType.guiTextClassParent;
else if (winText == "" && winClass != "" & winTextParent != "")
return GUIInfoType.guiClassParent;
return GUIInfoType.guiText;
}
首先是 && 和 & 混着用,让我很奇怪,我以前一般都只用&&的,老师教这个运算符的时候说&& 支持短路计算性能比较好。
这里使用&应只能起到改变执行顺序的效果,if判断的结果应该是一样的吧?我曾今一度以为作者不小心敲错了。
但是,为什么第一个if和第三个if为什么是完全一样的啊,如果按照我的理解的话,这个函数永远不可能返回GUIInfoType.guiTextClassParent了,难不成&有什么我不知道的神奇作用?
希望哪位大哥能告诉我&神奇在哪里,不然我只能理解为代码出错了。