比较if语句中的字符串
本文关键字:字符串 语句 if 比较 | 更新日期: 2023-09-27 18:26:40
试图编写一段代码来比较两个字符串。如果其中一个等于文本框,那么它将打开一个新的winform。我知道如何完成winform部分。
string CreditCard1 = "Some numbers";
string CreditCard2 = "Some Numbers";
string RFIDCard1 = "E00700000330E44C";
string RFIDCard2 = "E00700000338E539";
if(CardScan_txtBx = CreditCard1 || RFIDCard1)`
我从MSVS 2010得到一个错误说:
运算符"||"不能应用于类型为"string"answers"string"的操作数
有办法做我想做的事吗?
这一行是罪魁祸首:
if(CardScan_txtBx = CreditCard1 || RFIDCard1)`
尝试:
if(CardScan_txtBx.Text == CreditCard1 || CardScan_txtBx.Text == RFIDCard1)
顺便说一句,你显然在处理信用卡信息,但不知道如何在文本框中比较值,这让我很害怕。为了您的客户,我真的非常希望您计划研究如何安全地管理这些信息。
这里有三个问题:
- 不能使用OR(
||
)与多个值进行比较。这是一个令人惊讶的常见误解,但对编译器来说毫无意义 - 在C#中与
==
进行了比较。=
用于分配 TextBox
不是string
;您需要使用它的Text
属性来获取或设置它包含的文本
所以最后,if
语句应该是这样的:
if(CardScan_txtBx.Text == CreditCard1 || CardScan_txtBx.Text == RFIDCard1) {
// ...
}
好的,这里有两个问题,第一个问题是赋值而不是比较,第二个问题是每个由or分隔的参数都需要是布尔,即应该是
if(CardScan_txtBx == CreditCard1 ||CardScan_txtBx == RFIDCard1)
您能使用else if
吗?
if(CardScan_txtBx == CreditCard1)
{
//Do something
} else if(CardScan_txtBx == RFIDCard1)
{
//Do something
}
其他答案都有正确的代码,下面是原因的解释。当您使用||运算符时,它希望两边的表达式都是布尔值(true或false)。当您编写CardScan_txtBx.Text == CreditCard1 || RFIDCard1
时,左边有一个计算结果为布尔的语句,CardScan_txtBx.Text == CreditCard1
,右边有一个求值结果为字符串的语句RFIDCard1
。因为字符串不是布尔,所以会出现编译时错误。这就是为什么你必须在右手边重复==运算符,这样你就说CardScan_txtBx.Text == RFIDCard1
试用以下代码。。。。。
if (CardScan_txtBx.Equals(CreditCard1) || CardScan_txtBx.Equals(RFIDCard1))
{
//Code
}
试试这个:
if (CardScan_txtBx.Text == CreditCard1 || CardScan_txtBx.Text == RFIDCard1)
请参阅此处:http://msdn.microsoft.com/en-us/library/53k8ybth%28v=vs.71%29.aspx
非:=
右:expr1 == expr2
您也可以使用List。
List<string> listOfValidStrings = new List<string>();
//Initialise all valid strings.
if(listOfValidStrings.contains(txtbox.text())
{ do something.}