错误运算符==无法应用搜索数组?

时间:2014-03-19 20:47:35

标签: c# arrays visual-studio-2010 class search

这可能会令人困惑或混乱但我需要帮助我的程序 这是我的计划:

public partial class Form1 : Form
{
    int itemCountInteger;

    public struct Patient
    {
        public string patientidstring;
        public string firstNameString;
        public string lastNameString;


    }

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {


    }


    public class Patientn
    {
        private int patientId;
        public string firstName;
        private string lastName;

        public Patientn()
        {
            patientId = 0;
            firstName = "";
            lastName = "";
        }

        public Patientn(int idValue, string firstNameVal, string lastNameVal)
        {
            patientId = idValue;
            firstName = firstNameVal;
            lastName = lastNameVal;
        }

    }

我希望能够使用患者类而不是结构来添加患者,并且对于搜索代码,我得到错误"运算符==不能应用"我希望能够搜索数组,如果文本框中的文本与数组中的名称匹配,如果显示姓氏帮助?

    //Array
    Patient[] patientInfo = new Patient[10];

    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            foreach (Patient patientinfoIndex in patientInfo)

            patientInfo[itemCountInteger].patientidstring = textBox1.Text;
            patientInfo[itemCountInteger].firstNameString = textBox2.Text;
            patientInfo[itemCountInteger].lastNameString = textBox3.Text;

            string names = patientInfo[itemCountInteger].firstNameString + " " + patientInfo[itemCountInteger].lastNameString;
            listBox1.Items.Add(names);
            itemCountInteger++;
            listBox1.SelectedItem = names;
        }
        catch
        {
            MessageBox.Show("Contacts are limited to 20. Please delete some contacts prior to adding more.");
        }

    }


    //Search Button search a patients name and display his surname in the label if patient is found  display his surname
    private void button2_Click(object sender, EventArgs e)
    {

        int intTest = 0;

        for (int x = 0; x < patientInfo.Length; x++)
        {
            if (textBox4.Text == patientInfo[x])
            {
                label6.Text =("surname");
                intTest = 1;
            }

        }

        if (intTest == 0)
        {
            label6.Text = ("not found");
        }
    }

我很抱歉,如果你可以帮助我,请提前致谢并提前致谢。

3 个答案:

答案 0 :(得分:2)

你因为这条线而得到错误; textBox4.Text == patientInfo[x]。这里有一些问题,但首先,textBox4.Text是一个字符串,你试图与Patient进行相等比较,编译器说这里没有为==运算符定义。您可以重载==的{​​{1}}运算符,但这只允许您将Patient类型的一个实例与另一个实例进行比较,您永远无法将PatientPatient进行比较一个string,除非你将它们都转换为object类型,在这种情况下它只会进行参考比较(不是你想要的)。

我不确定您要在Patient使用哪个属性,但我知道您需要将textBox4.TextPatient类中的一个字符串进行比较。像这样的东西会起作用; (textBox4.Text == patientInfo[x].lastName)

答案 1 :(得分:0)

System.String - textBox4.Text返回的类型 - 与Patientn实例进行比较是没有意义的。您可能需要将TextpatientInfo[x].lastNameString进行比较。

答案 2 :(得分:0)

你做不到

textBox4.Text == patientInfo[x]

patientInfo包含PatiencetextBox4.Text的实例string。这两者之间没有可能的比较,这就是你得到错误的原因。

你可能正在尝试做这样的事情

textBox4.Text == patientInfo[x].patientidstring