1、我从CollectionBase继承生成我自己的类,请问这与从Collection继承有什么不同?2、向对象集合添加了对象后,如何查找这个对象?我使用的Equals用法有什么问题吗。是否有直接查找的方法
    public class QASet : CollectionBase
    {
        
        public void Add(QA newQA)
        {
            List.Add(newQA);
        }        public bool Seek(QA SeekQA)
        {
            bool isFind = false;
            for (int i = 0; i < List.Count; i++)
            {
                if (List[i].Equals(SeekQA))
                {
                    isFind = true;
                    break;
                }
            }
            return isFind;
            
        }
    }我使用的测试代码如下:
            QASet target = new QASet();
 
            target.Add(new QA("my Q","my A"));            QA TestQA = new QA("my Q", "my A");   这一行失败了
            //QA TestQA = target[0];              改成这一行可以通过,但是我想要上一行可以通过 
            Assert.AreEqual(true,target.Seek(TestQA));
=================
PS:感谢你看到这里,请不要回复MSDN之类笼统地话语。我承认我用不好MSDN,希望可以通过你的帮助使我不断进步。

解决方案 »

  1.   

    集合有建索引的,你可以直接QASet  qa=new QASet ();
    obj obj=qa[0];//这要看你是什么类型的集合
      

  2.   

    Equals是判断指针是否指向同一块内存。你new了2个对象,当然不是同一个块内存啦  public bool Seek(QA SeekQA) 
            { 
                bool isFind = false; 
                for (int i = 0; i  < List.Count; i++) 
                { 
                    //if (List[i].Equals(SeekQA)) 
                    if(List[i].属性1 == SeekQA.属性1 &&  List[i].属性2 == SeekQA.属性2)
                    { 
                        isFind = true; 
                        break; 
                    } 
                } 
                return isFind; 
                 
            } 
      

  3.   

    1、我从CollectionBase继承生成我自己的类,请问这与从Collection继承有什么不同? 

    .NET没有“Collection”这个类,你可以继承一个具体的类例如System.Collections.Queue 
    2、向对象集合添加了对象后,如何查找这个对象?我使用的Equals用法有什么问题吗。是否有直接查找的方法 你需要在QA类中 Override “Eaquals” 方法3.        QA TestQA = new QA("my Q", "my A");   这一行失败了
                //QA TestQA = target[0];              改成这一行可以通过,但是我想要上一行可以通过  为QA 类写一个Constructor
      

  4.   

    if (List[i].Question == value.Question)报错:
    错误 1 “object”不包含“Question”的定义,并且找不到可接受类型为“object”的第一个参数的扩展方法“Question”(是否缺少 using 指令或程序集引用?) D:\Myfile\C#\QAModify\QAFile\QAS.cs 57 29 QAFile
    为什么无法通过List[]访问到 QA对象的属性?要通过什么方式才能比较指定的QA对象是否处于列表里?
      

  5.   

    第二个问题解决了,对于List[i] 这样的东西,不能直接拿来用,即使用(QA)(List[i] )也不行,会抱错。但是,可以加一个变量,赋值一下。我通过的代码是这样的:        public int Seek(QA value)
            {
                QA testvalue;
                for (int i = 0; i < List.Count; i++)
                {
                    testvalue = (QA)List[i];                if (testvalue.Question==value.Question&& testvalue.Answer==value.Answer)
                    {
                        return i;
                        break;
                    }
                    
                }
                return -1;
            }
    感谢各位的帮助,期待你们能继续帮助我以及类似的生手。