我从一个字大小(2字节)的设备接收数据包。根据器件的数据表,它的值为0或1。我还不确定它是否会抛出" 0" /" 1"或" 00" /" 01"在字符串中,因此代码。
bool isErrorRet = packet.Substring(6, 2).Equals("0" || "00");
这是一个有效的代码吗?
PS。我使用Notepad ++进行编码,但我还没有安装IDE。
答案 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");