第一种情况:依赖与关联,双向存在
UML类图:
代码参考:
using System; namespace InterdependDemo { class SchoolInfo { private StudentInfo studentInfo; private TeacherInfo teacherInfo; public string SchoolName = "西安航天技师学院"; public StudentInfo StudentInfo { set { studentInfo = value; } } public TeacherInfo TeacherInfo { set { teacherInfo = value; } } public void ShowInfo() { studentInfo.ShowInfo(this); teacherInfo.ShowInfo(this); } } class StudentInfo { private string info; public string Info { set { info = value; } } public void ShowInfo(SchoolInfo s) { Console.WriteLine(s.SchoolName + " " + info); } } class TeacherInfo { private string info; public string Info { set { info = value; } } public void ShowInfo(SchoolInfo s) { Console.WriteLine(s.SchoolName + " " + info); } } class Program { static void Main(string[] args) { StudentInfo s = new StudentInfo { Info = "学生信息" }; TeacherInfo t = new TeacherInfo { Info = "教师信息" }; SchoolInfo sch = new SchoolInfo { StudentInfo = s, TeacherInfo = t }; sch.ShowInfo(); } } }
第二种情况:双向关联
参考代码:
using System; namespace DoubleCorrelation { class Wife { public string wifeName; public Husband husband; } class Husband { public string husbandName; public Wife wife; } class Program { static void Main(string[] args) { Wife w = new Wife(); w.wifeName = "王莎莎"; Husband h = new Husband(); h.husbandName = "张大伟"; w.husband = h; h.wife = w; Console.WriteLine(w.wifeName+"的丈夫"+ w.husband.husbandName); Console.WriteLine(h.husbandName + "的媳妇" + h.wife.wifeName); Console.WriteLine("循环关联测试:"+h.wife.husband.wife.husband.wife.wifeName); } } }
第三种情况:双向依赖<这个不建议>