String.Equals参数内的逻辑操作

时间:2015-01-31 01:41:50

标签: c# string

我从一个字大小(2字节)的设备接收数据包。根据器件的数据表,它的值为0或1。我还不确定它是否会抛出" 0" /" 1"或" 00" /" 01"在字符串中,因此代码。

bool isErrorRet = packet.Substring(6, 2).Equals("0" || "00");

这是一个有效的代码吗?

PS。我使用Notepad ++进行编码,但我还没有安装IDE。

2 个答案:

答案 0 :(得分:1)

您可以将相等性作为两个单独的.Equals()调用与逻辑运算符进行比较:

bool isErrorRet = packet.Substring(6, 2).Equals("0") || packet.Substring(6,2).Equals("00");

如果您尝试使用代码,则会收到以下编译器错误:

  

运营商'||'不能应用于'string'类型的操作数   '字符串'

自||以来返回此错误运算符只能应用于follows

  

条件OR运算符(||)执行其bool的逻辑或运算   操作数。如果第一个操作数的计算结果为true,则为第二个操作数   没有评估。如果第一个操作数的计算结果为false,则第二个操作数   operator确定OR表达式是否作为整体求值   是真还是假。

在您的情况下,.Equals需要一个显式的字符串类型值,而不是逻辑OR运算符,这就是您要传递的所有内容。

答案 1 :(得分:1)

这不是有效的代码。如果您尝试编译它,它将失败。相反,你必须使用两次equals调用:

String s =  packet.Substring(6, 2);
bool isErrorRet = s.Equals("0") || s.Equals("00");