1

これは私の抽象基本クラスです:

public abstract class BaseDataModel<T> : System.IComparable<T> where T : BaseDataModel<T>
{
    public int ID { get; set; }
    public int CreatedBy { get; set; }
    public DateTime CreatedOn { get; set; }
    public int? UpdatedBy { get; set; }
    public DateTime? UpdatedOn { get; set; }


    #region IComparable<T> Members

    public virtual int CompareTo(T other)
    {
        return ID.CompareTo(other.ID);
    }

    #endregion
}

このクラスは Person を表し、BaseDataModel クラスから継承します。

public class Person : BaseDataModel<Person>
    {
        public string Name { get; set; }
    }

しかし、sort() メソッドを使用してリストをソートしようとすると、機能しません。2 つのオブジェクトを含む並べ替えられたリストを返しますが、それらのオブジェクトのすべてのプロパティは null です。

    static void Main(string[] args)
    {
        List<Person> pList = new List<Person>();

        Person p = new Person();
        p.ID=2;
        p.Name="Z";
        pList.Add(p);

        Person p1 = new Person();
        p.ID = 1;
        p.Name = "A";
        pList.Add(p1);

        pList.Sort();





        Console.Read();

    }
}

ここで何が問題なのですか?

4

2 に答える 2

3

のプロパティをp2回設定しています。設定することはありませんp1.ID

于 2012-02-17T18:23:18.000 に答える
2

問題はここにあります:

  Person p = new Person();
    p.ID=2;
    p.Name="Z";
    pList.Add(p);

    Person p1 = new Person();
    p.ID = 1;
    p.Name = "A";
    pList.Add(p1);

これは次のようになります。

  Person p = new Person();
    p.ID=2;
    p.Name="Z";
    pList.Add(p);

    Person p1 = new Person();
    // Change properties of p1, not p!
    p1.ID = 1;
    p1.Name = "A";
    pList.Add(p1);
于 2012-02-17T18:25:09.327 に答える