5-6年前,当我还在学校的时候,我把C作为我的编程语言。在那个时候,我读到了关于struct和一些关于类的知识。
当时我有一个想法,在struct下,我们不能声明函数和其他类似的东西。
结构只允许值类型,它们本身也是值类型。我也生活在同样的老年观念下。3天前,当我和我的同事交谈时,他们证明了struct也可以包含函数定义,构造更多与我想不符的东西。
public struct abc
{
int a;
long b;
.... //No function nothing else can come here. Only variables
};但在.net中,我看到了DateTime结构,它有函数、构造器和所有与我多年的旧概念相反的东西。
那么,如果所有事情都可以在结构中完成,那么classes and struct之间又有什么区别呢?
我肯定会有一些很大的不同,因为结构仍然是随.net一起来的,而不是过时的。
这些区别是什么。
还有什么其他这样的概念可以改变一切。
发布于 2010-10-29 16:56:07
据我所知,您在问C#中的结构和类有什么不同。
关键区别在于结构的行为遵循值类型语义,而类的行为遵循引用类型语义。
除此之外,对于可以放在结构中的内容有一些次要的限制(例如没有无参数的构造函数,只有接口继承),但这并不重要。这些限制实际上是相当无关紧要的,你不应该仅仅为了防止继承而选择使用结构。重要的是类型在语义上的行为方式,这是在结构和类之间进行选择时应该关注的问题。
更多信息:
This question有一些很好的答案,可以更详细地解释这种差异。
MSDN page on structs有一些关于限制的很好的信息。Eric Lippart有一篇有趣的两部分博客文章(part1,part2),内容是关于struct vs class的细节。
发布于 2010-10-29 16:40:56
如果所有的事情都可以在
中完成,那么类和结构之间的区别是什么呢?
并不是所有的事情都可以用结构来完成。结构是值类型,不能通过引用访问,也不支持继承。
我相信会有一些很大的不同,因为结构仍然是随.net一起出现的,而不是过时的。
结构仍然有一些有限的用途(DateTime作为值类型最有用),但重要的一点是,结构很少使用。当有疑问时,使用一个类。
发布于 2010-10-29 16:41:57
科林说的每一件事,还有一些事情:
https://stackoverflow.com/questions/4050222
复制相似问题