日期:2014-05-19  浏览次数:20545 次

关于Structure与Class的区别问题,使用哪一个性能更优秀?
我在看PetShop程序时,其数据都是用类来实现的;但是就我来说,用Structure也完全可以实现,查了一些资料,讲了二者的区别,但没指出用哪一种性能更好。我觉得可能Structure更快一些,并且编程也更方便一些,各位高手请指点一二。

另外,PetShop常常定义IList接口,可能是为了绑定吧?但是我觉得绑定可能速度会更慢一些--我也不需要绑定,直接把相关数据赋值,会不会更快一点?比如说本来有一个DataGrid,绑定当然是挺好的;但我定义一个Label,直接把所有的内容变成Table格式,写到这个Label中,会不会速度更快一些?因为对我来说,还可能有一些判定在里面,直接写可能会更快一些;如果用绑定会麻烦一些。

请指点,谢谢各位高手。

------解决方案--------------------
(1)Structure是值类型,class是引用类型。
(2) 一切为了灵活,方便拓展。直接的可能是好了,根据实际情况来做。
------解决方案--------------------
struct是值类型,适用于小数据量的情况;class是引用类型,适用于大小数据。值类型是将数据存放在内存中,而引用类型只在内存中记录了一个地址。

你用Lable来输出一个表格当然可以,其实DataGrid的原理也是如此,只不过它封装成了一个高复用性、带有无数属性、事件、方法、可灵活多变的控件。按你的方法用Label不同的项目得写不同的代码,而用DataGrid不论什么项目都用相同的几个属性、方法...
------解决方案--------------------
值类型是将数据存放在内存中,而引用类型只在内存中记录了一个地址。

------------------------------------------

都是记录在内存中

值类型在堆中,引用类型在栈中

------解决方案--------------------
UP
luck0235(风平浪静时人人都能掌舵)
------解决方案--------------------
ASPNETCODER010()

都是记录在内存中

值类型在堆中,引用类型在栈中
-----------------------------------

说反了吧,值类型在堆栈中,引用类型在堆中。

------解决方案--------------------
.net 中的类 提供更多 更灵活的功能


------解决方案--------------------
结构体好象不好搞继承吧?
------解决方案--------------------
xx
------解决方案--------------------
以前有过讨论,实际上struct是很不应该滥用的。

以下情况不应使用struct:
1、需要继承扩展的类型
2、包含引用类型成员的类型
3、不参与运算的类型
4、字段很多的类型

值类型的优势在于储存在堆栈上,劣势在于值传递。储存在堆栈上所以值类型很适合用来运算,譬如说你要在同一个函数中大量使用同一类型,如int,值类型就很有优势,因为堆栈的速度比托管堆要快很多。值类型的劣势在于值传递,这样就造成无论调用什么函数,值类型都会被复制一份,赋值的时候也会被复制一份。大数据量的值类型显然会带来不小的开销,并且如果需要频繁赋值和函数调用的时候。