C# 重新排列类结构以获得更好的性能

C# 重新排列类结构以获得更好的性能,c#,class,oop,C#,Class,Oop,我有如下的阶级关系 public class CollegeInfo { public int CollegeId { get; set; } public Dictionary<int, DepartementInfo> DepartementInfo { get; set; } } public class DepartementInfo { public int CollegeId { get; set; } public int Depar

我有如下的阶级关系

public class CollegeInfo
{
    public int CollegeId { get; set; }

    public Dictionary<int, DepartementInfo> DepartementInfo { get; set; }
}

public class DepartementInfo
{
    public int CollegeId { get; set; }
    public int DepartementId { get; set; }

    public Dictionary<int, DataGridViewRowInfo> DataGridViewRowsInfo { get; set; }
}

public struct DataGridViewRowInfo
{
    public string Id { get; set; }

    public int CollegeId { get; set; }
    public int RowID;
    public int DepartementId ;

    public string SpecialString { get; set; }        
}

我将只在
DataGridViewRowInfo
中保存数据,很可能我将至少有一个部门,并且在该部门中有一个或多个
DataGridViewRowInfo
,因此如果我需要获取特定对象的详细信息,例如
DepartmentInfo
,我可以从其属性中获取它。但这是否是一种好的做法?

DataGridViewRowInfo是否确实需要其关联的CollegeInfo和DepartmentInfo类的ID,或者您能否在运行时从存储它们的任何集合中推断出这一点?我需要花一些时间获取DataGridViewRowInfo对象(用于搜索等)那一次我需要检查哪个是系,哪个是学院,所以我更喜欢有这些细节。唯一的选择是要么你做了什么,那就是存储其他对象的ID,要么存储对象本身的引用,而不是
int CollegeId
have
CollegeInfo CollegeId
。您甚至可以在构造函数中要求在创建时提供CollegeId和DepartmentInfo。好的@LordWilmore我认为您的想法更好,我还有一个想法,我将作为答案发布,可能是CodeReview的有效候选对象:)DataGridViewRowInfo是否确实需要其关联的CollegeInfo和DepartmentInfo类的ID,或者您能否在运行时从存储它们的任何集合中推断出这一点?我需要在某个时间获取DataGridViewRowInfo对象(用于搜索等)那一次我需要检查哪个是系,哪个是学院,所以我更喜欢有这些细节。唯一的选择是要么你做了什么,那就是存储其他对象的ID,要么存储对象本身的引用,而不是
int CollegeId
have
CollegeInfo CollegeId
。您甚至可以在构造函数中要求在创建时提供CollegeId和DepartmentInfo。Ok@LordWilmore我认为您的想法更好,我还有一个想法,我将作为答案发布,可能是CodeReview的有效候选:)
   public class CollegeInfo
   {  
      public Dictionary<int, DepartementInfo> DepartementInfo { get; set; }
   }

   public class DepartementInfo
   {
      public Dictionary<int, DataGridViewRowInfo> DataGridViewRowsInfo { get; set;}
   }

   public class DataGridViewRowInfo
   {
      public string Id { get; set; }
      public int CollegeId { get; set; }
      public int RowID;
      public int DepartementId ;
      public string SpecialString { get; set; }        
   }