如下举例数据表:
name varchar(20)
code varchar(20)用类:(属性省了)
public class studentc
  {
     public string name;
     public string code;
  }用结构:
public struct students
{
     public string name;
     public string code;
  }实体操作类:
public class student
 {
   string name,code;
   public void update(studentc c)
   {
     name=c.name;
     code=c.code;
     //操作语句...;
    }   //重载
   public void update(students s)
   {
     name=s.name;
     code=s.code;
    //.....
   }
}//调用代码student t=new student();//用类传值
studentc c1=new studentc();
c1.name="one";
c1.code="111";
t.update(c1);//用结构传值
students s1;
s1.name="two";
s1.code="222";
t.update(s1);问题是:t.update(s1)的执行效率是否一定比t.update(c1)的效率高吗?我们常见对实体的构造一般都采用类,而为何不采用结构呢?
请大家发表自己的意见!

解决方案 »

  1.   

    谈谈我的看发:
    结构是值类型,不会被垃圾回收器自动回收,也不会象类那样频繁的进行New操作,所以我认为在性能上结构优于类的,不过类有更好的扩展性,而且类的功能更强大,更具OO性。所以我建议还是楼主还是使用类来构造数据库的实体好点。
    以上是我的愚见,:)
      

  2.   


    1,类可以用属性包装字段
    2,结构是值类型,值类型在函数中做为参数传递或当做返回结果都会深拷贝,也就是说一个结构传递给一个函数后,将会产生一份新的拷贝
    3,结构数组继承自System.Array,所以当把结构放入一个数组将会装箱,反之拆箱。这样会比用类做为实体类 多出很多 拆/装箱操作
      

  3.   

    从oo的角度我肯定会选择类而不会考虑是否用结构!
    在Duwalish中数据实体都是继承DataSet,支持Remoting和序列化,这点结构是做不到的!
    结构是值类型,所以我认为只有数据结构很简单而且不需要扩展的时候,可以考虑结构
    但是性能上的优势不是很明显。因为如果我们传结构参数或复制结构的时候,结构会被复制一份(ref struct除外),而类只要复制引用就可以了。
      

  4.   

    to zjsen(离开中...) :
     结构也可包含属性,从数据实体包装的角度我认为用结构更好些!
      

  5.   

    petshop中用的类没有用结构,似乎在.net平台上类和结构性能差距不大,而类对oo那么有好处,所以就类了
      

  6.   

    我还是趋向于使用类
    实际上,我自己写了一个代码生成器,用于生成数据库表类的代码
    如果你感兴趣,请和我联系[email protected]
    当然,你也可以使用类型化的数据集