0

学生の姓名を追跡する学部生というクラスがあります。各オブジェクトにインデックスを付けたいと思います。私のプログラム クラスではList<>、学部生の を作成します。リスト内の各オブジェクトが一意の識別番号を持つように設定するにはどうすればよいですか? また、プログラム クラスではどのように見えるでしょうか?

public class Undergrad
{
     String fName, lName;

     public Undergrad()
     {
     }

     public Undergrad(string firstName, string lastName)
     {
         this.fName = firstName;
         this.lName = lastName;           
     }
}
4

5 に答える 5

5

手始めにそのインデックスを格納するには、クラスにプロパティを追加する必要があります。これは、整数または UniqueIdentifer のいずれかです。

整数を使用する場合は、アプリケーションが次の値を取得する場所を認識できるように、すべてのインデックスを格納する別の場所 (データベースなど) が必要になります。

UniqueIdentifer (System.Guid) を使用すると、重複した衝突が発生しないため、インラインで作成できます。

オプション1

public class Undergrad
{
     String fName, lName;
     public Guid UniqueId {get; set; }

     public Undergrad()
     {
          UniqueId = System.Guid.NewGuid();
     }

     public Undergrad(string firstName, string lastName)
     {   
         UniqueId = System.Guid.NewGuid();
         this.fName = firstName;
         this.lName = lastName;           
     }
}

オプション 2

public class Undergrad
{
     String fName, lName;
     public int UniqueId {get; set; }

     public Undergrad()
     {
          UniqueId = //LoadFromDatabase();
     }

     public Undergrad(string firstName, string lastName)
     {   
         UniqueId = //LoadFromDatabase();
         this.fName = firstName;
         this.lName = lastName;           
     }
}

現在、学部生の情報をどこに保存していますか? すでにデータベースにある場合は、オブジェクトに既に id フィールドがあると思います。

最後に、これらを に入れるList<T>と、リストには別の概念である独自のインデックス (リスト内の位置) が含まれます。

于 2013-07-05T07:54:38.260 に答える
2

staticクラスに一意の ID を追加できます。

public class Undergrad
{
     String fName, lName;
     private static int _uniqueID;   
     private int _myUniqueID;

     public Undergrad() : this(string.Empty, string.Empty)
     {

     }

     public Undergrad(string firstName, string lastName) 
     {
         this.fName = firstName;
         this.lName = lastName;          

         _uniqueID += 1; 
         _myUniqueID = _uniqueID;
     }

    public int UniqueID { get { return _myUniqueID; } }
}
于 2013-07-05T07:54:51.627 に答える
1

リストのルックアップを維持し、そのルックアップのキーとして一意の ID/GUID を割り当てます

    public class Undergrad
    {
        String fName, lName;

        public Undergrad()
        {
        }

        public Undergrad(string firstName, string lastName)
        {
            this.fName = firstName;
            this.lName = lastName;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            List<Undergrad> lstGraduates = new List<Undergrad>() { new Undergrad("f1", "l1"), new Undergrad("f2", "l2"), new Undergrad("f3", "l3") };
            int i = 0;
            ILookup<int, Undergrad> lookup = lstGraduates.ToLookup(p => i++);

            foreach (IGrouping<int, Undergrad> packageGroup in lookup)
            {
                Console.WriteLine(packageGroup.Key);
                Undergrad obj = (Undergrad)packageGroup;                
            }
            Console.Read();
        }
    }
于 2013-07-05T08:08:17.953 に答える
1

これがあなたが探しているものかどうかはわかりませんが、

Undergrad のリストを含むオブジェクトを作成し、たとえば列挙型クラス EUndergrad を追加し、探しているインスタンスを返すインデックス メソッドを追加できます。

public class Undergrads
{
    private List<Undergrad> myList;

    public Undergrad this[EUndergrad index]
    {
        return this.myList[index];
    }
}

public enum EUndergrad
{
    Undergrad_0 = 0,
    Undergrad_1 = 1,
    ...
}

また、Undergrad オブジェクトを呼び出すことで取得できます。

instanceOfUndergrads[EUndergrad.Undergrad_0]
于 2013-07-05T07:59:33.000 に答える