c#中结构struct的用途

知道怎样使,不知道干什么用... 知道怎样使,不知道干什么用 展开
 我来答
Ben
2015-05-25 · 知道合伙人软件行家
Ben
知道合伙人软件行家
采纳数:860 获赞数:2875
认真回答者.

向TA提问 私信TA
展开全部
C#中结构类型和类类型在语法上非常相似,他们都是一种数据结构,都可以包括数据成员和方法成员。
  结构和类的区别:
  1、结构是值类型,它在栈中分配空间;而类是引用类型,它在堆中分配空间,栈中保存的只是引用。
  2、结构类型直接存储成员数据,让其他类的数据位于对中,位于栈中的变量保存的是指向堆中数据对象的引用。
  C#中的简单类型,如int、double、bool等都是结构类型。如果需要的话,甚至可以使用结构类型结合运算符运算重载,再为C#语言创建出一种新的值类型来。
  由于结构是值类型,并且直接存储数据,因此在一个对象的主要成员为数据且数据量不大的情况下,使用结构会带来更好的性能。

因为结构是值类型,因此在为结构分配内存,或者当结构超出了作用域被删除时,性能会非常好,因为他们将内联或者保存在堆栈中。当把一个结构类型的变量赋值给另一个结构时,对性能的影响取决于结构的大小,如果结构的数据成员非常多而且复杂,就会造成损失,接下来使用一段代码来说明这个问题。
  结构和类的适用场合分析:
  1、当堆栈的空间很有限,且有大量的逻辑对象时,创建类要比创建结构好一些;
  2、对于点、矩形和颜色这样的轻量对象,假如要声明一个含有许多个颜色对象的数组,则CLR需要为每个对象分配内存,在这种情况下,使用结构的成本较低;
  3、在表现抽象和多级别的对象层次时,类是最好的选择,因为结构不支持继承。
  4、大多数情况下,目标类型只是含有一些数据,或者以数据为主。
定复2d
2009-04-03 · TA获得超过3196个赞
知道大有可为答主
回答量:2052
采纳率:0%
帮助的人:1934万
展开全部
http://msdn.microsoft.com/zh-cn/library/0taef578(VS.80).aspx
使用结构(C# 编程指南)

struct 类型适于表示 Point、Rectangle 和 Color 等轻量对象。尽管可以将一个点表示为类,但在某些情况下,使用结构更有效。例如,如果声明一个 1000 个 Point 对象组成的数组,为了引用每个对象,则需分配更多内存;这种情况下,使用结构可以节约资源。由于 .NET Framework 包含名为 Point 的对象,因此我们转而调用结构“CoOrds”。

public struct CoOrds
{
public int x, y;

public CoOrds(int p1, int p2)
{
x = p1;
y = p2;
}
}

声明结构的默认(无参数)构造函数是错误的。总是提供默认构造函数以将结构成员初始化为它们的默认值。在结构中初始化实例字段也是错误的。

如果使用 new 运算符创建结构对象,则会创建该结构对象,并调用适当的构造函数。与类不同,结构的实例化可以不使用 new 运算符。如果不使用 new,则在初始化所有字段之前,字段都保持未赋值状态且对象不可用。

对于结构,不像类那样存在继承。一个结构不能从另一个结构或类继承,而且不能作为一个类的基。但是,结构从基类 Object 继承。结构可实现接口,其方式同类完全一样。

与 C++ 不同,无法使用 struct 关键字声明类。在 C# 中,类与结构在语义上是不同的。结构是值类型,而类是引用类型。有关更多信息,请参见值类型。

除非需要引用类型语义,否则系统将较小的类作为结构处理效率会更高。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秒懂百科
2021-01-03 · TA获得超过5.9万个赞
知道大有可为答主
回答量:25.3万
采纳率:88%
帮助的人:1.2亿
展开全部

struct:一种构造数据类型

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zc20081989
2009-04-02 · 超过26用户采纳过TA的回答
知道答主
回答量:92
采纳率:0%
帮助的人:94.6万
展开全部
struct是C#中的结构和类很相似,有的地方都可以通用,最好到msdn里查一下,那里介绍的很详细,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友af663976a
2009-04-02 · 超过64用户采纳过TA的回答
知道答主
回答量:249
采纳率:0%
帮助的人:0
展开全部
结构可以是值类型
你将一个结构对象负值给另外一个对象 他连数据都成员都拷贝一份过去
类是不型的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式