我经常采用 linq2sql 生成的类,并像这样创建一个简单的纯数据类
public class myentity
{
public Guid id { get; set; }
public string name { get; set; }
// etc
}
我没有在这些类中放置方法,我主要将它们用作辅助类,因此我可以很容易地序列化到/从 json 和其他类似操作。
我的问题是,在这种情况下我应该使用结构而不是类吗?
将它变成一个结构似乎是有意义的,因为它或多或少是一个结构的定义,但我不知道这里的性能是否理想,因为我经常在方法之间传递类,但我不知道不需要大量副本,因为结构是值类型。
我经常做的另一件事是使用 Linq2Sql 的延迟执行来返回我自己的 Linq2Sql 类的轻量级版本,而不是它们生成的那个。我不完全确定使用结构而不是类是否会对此处的性能产生一些不利影响。
我如何使用延迟执行的一个例子是这样的
public IEnumerable<myentity> getEntities()
{
return from me in MyEntity return new myentity() { id = me.id, name = me.name };
}
public IEnumerable<myentity> getEntitiesThatStartWith(string s)
{
return from me in getEntities() where me.name.StartsWith(s);
}
最佳答案
我会选择类
。可变的 struct
很少是一件好事。如果你没有看到使用结构而不是类的明显优势,你应该避免它。
具体来说,在您的情况下,使用 struct
会使方法更难修改实例的内容(例如,从 JSON 反序列化并填充一些属性;您必须使用 ref
一直)。
假设 Entity
是一个结构:
List<Entity> entities = ...;
entities[0].Name = "Test"; // won't compile.
关于c# - 我应该为我的 Linq2Sql 数据使用 Struct 而不是轻量级数据类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1412747/