3

モジュールに次のコードがあります。

Class Studentdatabase
{
public List <student> studentslist;
public void UpdateStudentDetailsinlist();
}


Class student
{
public string name;
public int age;
public int marks;
public student friend;
}

私のモジュールはこのデータベースにデータを取り込み、このデータベースは別のモジュールで使用されます。

studentslist [0]
name - Trevor
age -12
marks - 33
friend - 
    name - Sam
    age - 12
    marks - 45

studentslist [1]
name - Warren
age -13
marks - 63
friend - 
    name - Sam
    age - 12
    marks - 45

studentslist [2]
name - Sam
age -12
marks - 45
friend - null

私の要件は、学生リスト [2] (サム) が 48 のマークで更新された場合、学生リスト [0] と学生リスト [1] のサムのマークを自動的に更新する必要があることです (逆も)。これをモジュールにどのように実装できますか?

4

5 に答える 5

2

次のように使用できます。

class StudentContext
{
    public List<Student> Studentslist { get; set; }

    public void AddStudent(Student student)
    {
        if (null == Studentslist)
        {
            Studentslist = new List<Student>();
        }
        Studentslist.Add(student);
    }

    public void AddFriend(Student student,Student friendStudent)
    {
        Studentslist.Where(x => x.StudentId == student.StudentId).FirstOrDefault().Friend = friendStudent;
    }
}

class Student
{
    public int StudentId { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
    public int Marks { get; set; }
    public Student Friend { get; set; }
}

public class Test
{
    public static void Main()
    {
        Student student1 = new Student();
        student1.StudentId = 1;
        student1.Name = "A";
        student1.Marks = 100;

        Student student2 = new Student();
        student2.StudentId = 2;
        student2.Name = "AB";
        student2.Marks = 10;

        StudentContext studentContext = new StudentContext();
        studentContext.AddStudent(student1);
        studentContext.AddStudent(student2);
        studentContext.AddFriend(student1, student2);

        student1.Marks = 50;
        student2.Marks = 77;
    }
}
于 2013-10-23T07:14:56.577 に答える
2

まず、主キーとなる識別子 (Guid、int など) が必要です。

データベースに保存する必要がある実際の値は、友人の識別子です。

Class student
{
   public int id;
   public string name;
   public int age;
   public int marks;
   public int StudentFriendId;
}
于 2013-10-23T06:25:26.870 に答える
1

同じ参照を使用する必要があり、すべての場所に反映されます。

例:

Student sam = new Student();
sam.Marks = 45;
//... other sam properties


Student warren = new Student();
// initialize all waren properties
waren.friend = sam;

// do same for trevor
Student trevor = new Student();


List<Student> students = new List<Student>();
students.Add(sam);
students.Add(waren);
students.Add(trevor);

//Now waren/trevor holds same student reference which is in student list so any change in sam will be reflected in friend of waren/trevor
sam.Marks = 48;// reflected at all 3 places.

動作を変更したい場合は、Student(クラスから) 構造体に変更するか、sam のコピー/クローンを友人の waren/trevor に割り当てることができます。

于 2013-10-23T06:22:30.380 に答える
1

次の構造に従い、フレンドにインスタンス全体ではなく id を配置する必要があります

Class Studentdatabase
{
  public List <student> studentslist;
  public void UpdateStudentDetailsinlist();
}


   Class student
   {
      public int id,
      public string name;
      public int age;
      public int marks;
      public int friend; // it will contain id of that friend in student
   }
于 2013-10-23T06:50:43.013 に答える