首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从C到.net的概念变化是什么

从C到.net的概念变化是什么
EN

Stack Overflow用户
提问于 2010-10-29 16:31:18
回答 4查看 86关注 0票数 0

5-6年前,当我还在学校的时候,我把C作为我的编程语言。在那个时候,我读到了关于struct和一些关于类的知识。

当时我有一个想法,在struct下,我们不能声明函数和其他类似的东西。

结构只允许值类型,它们本身也是值类型。我也生活在同样的老年观念下。3天前,当我和我的同事交谈时,他们证明了struct也可以包含函数定义,构造更多与我想不符的东西。

代码语言:javascript
复制
public struct  abc
{
   int a;
   long b;
    .... //No function nothing else can come here. Only variables
};

但在.net中,我看到了DateTime结构,它有函数、构造器和所有与我多年的旧概念相反的东西。

那么,如果所有事情都可以在结构中完成,那么classes and struct之间又有什么区别呢?

我肯定会有一些很大的不同,因为结构仍然是随.net一起来的,而不是过时的。

这些区别是什么。

还有什么其他这样的概念可以改变一切。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-29 16:56:07

据我所知,您在问C#中的结构和类有什么不同。

关键区别在于结构的行为遵循值类型语义,而类的行为遵循引用类型语义

  • Value类型直接将值存储在内存位置中。如果复制一个结构,值也会被复制,现在有两个值存储在两个独立的内存locations.
  • Reference类型中,将一个值存储在内存位置,另一个指针(或引用)指向该内存位置。如果复制一个类,引用也会被复制,但数据保持不变。现在,您有两个指向同一内存位置的引用。

除此之外,对于可以放在结构中的内容有一些次要的限制(例如没有无参数的构造函数,只有接口继承),但这并不重要。这些限制实际上是相当无关紧要的,你不应该仅仅为了防止继承而选择使用结构。重要的是类型在语义上的行为方式,这是在结构和类之间进行选择时应该关注的问题。

更多信息:

This question有一些很好的答案,可以更详细地解释这种差异。

MSDN page on structs有一些关于限制的很好的信息。Eric Lippart有一篇有趣的两部分博客文章(part1part2),内容是关于struct vs class的细节。

票数 0
EN

Stack Overflow用户

发布于 2010-10-29 16:40:56

如果所有的事情都可以在

中完成,那么类和结构之间的区别是什么呢?

并不是所有的事情都可以用结构来完成。结构是值类型,不能通过引用访问,也不支持继承。

我相信会有一些很大的不同,因为结构仍然是随.net一起出现的,而不是过时的。

结构仍然有一些有限的用途(DateTime作为值类型最有用),但重要的一点是,结构很少使用。当有疑问时,使用一个类。

票数 1
EN

Stack Overflow用户

发布于 2010-10-29 16:41:57

科林说的每一件事,还有一些事情:

  • 结构是值类型。当您将结构赋值给另一个变量时,它会创建实例的副本。两个变量上的赋值函数会改变两个不同的objects
  • Structs不能定义空的构造函数
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4050222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档