我想进行AND
手术。我的输入是 2 个对象。它可以是像“true”这样的字符串,也可以是像“1==1”这样的表达式。使用&&
运算符时,我得到一个 String 未被识别为有效的异常boolean
。
请帮我。
return Convert.ToBoolean(obj[0]) && Convert.ToBoolean(obj[1]);
很抱歉之前的帖子不够清楚。
我想进行AND
手术。我的输入是 2 个对象。它可以是像“true”这样的字符串,也可以是像“1==1”这样的表达式。使用&&
运算符时,我得到一个 String 未被识别为有效的异常boolean
。
请帮我。
return Convert.ToBoolean(obj[0]) && Convert.ToBoolean(obj[1]);
很抱歉之前的帖子不够清楚。
该方法无法转换"1==1"
为 a 。它只是转换字符串和.boolean
Convert.ToBoolean
true
false
您将不得不自己编写一个表达式评估器,或者使用某种库将您的字符串解析为布尔值(例如Flee)
首先确保 obj[0], obj[1] 将只包含 1 或 0(字符或整数)。因为 Convert.ToBoolean 不理解 1 或 0 以外的任何内容。
下面的一个将工作
Convert.ToBoolean(true) && Convert.ToBoolean(1==1)
为什么要使用字符串?转换不会评估代码,它将检查提供的数据是否可以转换为布尔值,并在可能的情况下这样做。
如果您的函数正在工作,它将始终返回 true,因为 1 始终等于 1,并且 true 始终为 true。
这几乎是不可能的,因为 C# 是强类型语言。你想要做的是弱类型语言,比如 JS。"1==1"
适用于 JS,不适用于 C#。删除引号以使其工作(您不妨删除第一个操作数,因为它没有任何意义):
return ( 1 == 1 );