比较if语句中的字符串

时间:2012-03-04 04:30:41

标签: c# winforms

尝试编写一段代码来比较两个字符串。如果其中任何一个等于文本框,则会打开一个新的winform。我知道如何做winform部分。

string CreditCard1 = "Some numbers";

        string CreditCard2 = "Some Numbers";
        string RFIDCard1 = "E00700000330E44C";
        string RFIDCard2 = "E00700000338E539";

        if(CardScan_txtBx = CreditCard1 || RFIDCard1)`

我从MSVS 2010收到错误说:

运营商'||'不能应用于'string'和'string'

类型的操作数

有办法做我想做的事吗?

9 个答案:

答案 0 :(得分:6)

这条线是罪魁祸首:

  if(CardScan_txtBx = CreditCard1 || RFIDCard1)`

尝试:

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

另一方面,它让我感到害怕,你显然是在处理信用卡信息,但不知道如何比较文本框中的值。我真的,非常希望,为了您的客户,您计划调查如何安全地管理这些信息。

答案 1 :(得分:4)

这里有三个问题:

  1. 您无法使用OR(||)与多个值进行比较。这是一个令人惊讶的常见误解,但对编译器没有任何意义。
  2. C#中的比较是使用==完成的。 =用于转让。
  3. TextBox不是string;您需要使用其Text属性来获取或设置其包含的文本。
  4. 最后,您的if语句应如下所示:

    if(CardScan_txtBx.Text == CreditCard1 || CardScan_txtBx.Text == RFIDCard1) {
        // ...
    }
    

答案 2 :(得分:1)

试试这个:

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

答案 3 :(得分:1)

好的,你在这里有2个问题,首先是单个equals是赋值而不是比较,其次每个参数用a分隔或者需要是bool,即应该是

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

答案 4 :(得分:1)

您可以使用else if吗?

if(CardScan_txtBx == CreditCard1)
{
//Do something
} else if(CardScan_txtBx == RFIDCard1)
{ 
//Do something 
}

答案 5 :(得分:1)

见这里:http://msdn.microsoft.com/en-us/library/53k8ybth%28v=vs.71%29.aspx

不是:=

右:expr1 == expr2

答案 6 :(得分:1)

其他答案的代码正确,以下是对原因的解释。当你使用||时运算符,它期望任何一方的表达式都是评估为bool(true或false)的东西。当您编写CardScan_txtBx.Text == CreditCard1 || RFIDCard1时,您的语句会在左侧评估为bool,CardScan_txtBx.Text == CreditCard1并且您有一个语句,其值为RFIDCard1,因为字符串不是bool,你得到编译时错误。这就是为什么你必须在右边重复==运算符,以便你说CardScan_txtBx.Text == RFIDCard1

答案 7 :(得分:1)

尝试使用以下代码.....

if (CardScan_txtBx.Equals(CreditCard1) || CardScan_txtBx.Equals(RFIDCard1))
{ 
      //Code
}

答案 8 :(得分:0)

您也可以使用列表。

List<string> listOfValidStrings = new List<string>();
 //Initialise all valid strings.
if(listOfValidStrings.contains(txtbox.text())
{ do something.}