比较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语句中的字符串

这一行是罪魁祸首:

  if(CardScan_txtBx = CreditCard1 || RFIDCard1)`

尝试:

  if(CardScan_txtBx.Text == CreditCard1 || CardScan_txtBx.Text == RFIDCard1)

顺便说一句,你显然在处理信用卡信息,但不知道如何在文本框中比较值,这让我很害怕。为了您的客户,我真的非常希望您计划研究如何安全地管理这些信息。

这里有三个问题:

  1. 不能使用OR(||)与多个值进行比较。这是一个令人惊讶的常见误解,但对编译器来说毫无意义
  2. 在C#中与==进行了比较。=用于分配
  3. 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.}