2009-05-17 55 views
0

我看到它在数据上下文中使用了很多。从ScottGu的post物体的形状和结构有什么区别?

一个由LINQ和 查询语法提供的真正强大 能力是你定义一个新的类是独立 从数据正在查询的能力 ,并 然后用它们通过查询来控制返回数据的形状和 结构 。

他指的是什么数据的形状?

+6

我不这么认为!你能举一个更详细的例子吗? – 2009-05-17 21:06:41

回答

1

认为形状是对象“api”,而结构是内部实现。在设计良好的系统中,形状将保持不变,而结构可能会发生显着变化。

1

形状是对象的任何空间属性(特别是如轮廓所定义的),而结构是对象的构造方式和其部分的排列方式。当然,这可以适用于任何类型的对象。 :)

3

我认为这些是非正式的术语,而且定义是主观的。我将使用“形状”来指代对象如何与系统中的其他对象配合。 (比较“表面区域”,这是一个粗糙的(没有双关语意图:-)衡量对象界面的复杂性。)我会用“结构”来指代对象是如何在内部设计和实现的。

因此,你可以有一个良好的“形状”,但像绉纸结构的类。这可能比其他方式更容易重构:形状不佳,但实现良好。 (我敢肯定有些人会质疑后者是否可能。)

1

通常,我会认为一个类的形状是该类提供的公共方法和属性。该结构将是内部结构和表示形式的使用。在引用材料的上下文中,我认为通过允许使用匿名或备用命名类定义查询的返回类型,您可以重新定义查询返回的数据,约束和转换其原始形状数据源。

例如,假设您有一个与联系人表相关的用户表。使用LINQ和匿名类作为选择,您可以返回具有主要联系人对象的用户,而无需定义特定的视图;只使用LINQ。

var userWithContact = from u in db.Users 
         select new 
          { 
          Name = u.Name, 
          Address = u.Contacts 
             .Where(c => c.Type = "self").First().Address 
          }; 
相关问题