代码之家  ›  专栏  ›  技术社区  ›  Shantanu Gupta

从C到.net的概念变化是什么[关闭的]

  •  0
  • Shantanu Gupta  · 技术社区  · 14 年前

    5-6年前,当我在学校的时候,我有C作为我的编程语言。在那时候,我读到了struct和类。

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

    public struct  abc
    {
       int a;
       long b;
        .... //No function nothing else can come here. Only variables
    };
    

    那么有什么区别 classes and struct 如果每件事都能在struct中完成。

    我确信会有一些很大的不同,因为struct仍然使用.net而不是废弃它。

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

    4 回复  |  直到 13 年前
        1
  •  0
  •   Community CDub    8 年前

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

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

    • 值类型 直接将值存储在内存位置。如果复制一个结构,则值将被复制,现在有两个值存储在两个单独的内存位置。
    • 将值存储在内存位置,并将指针(或引用)存储到该内存位置。如果复制类,则会复制引用,但数据保持不变。现在有两个引用指向同一内存位置。

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


    This question 有一些很好的答案可以更详细地解释这种差异。
    MSDN page on structs 有一些关于限制的好消息。 part1 , part2 )关于struct vs类的详细信息。

        2
  •  1
  •   Henk Holterman    14 年前

    如果每件事都可以在struct中完成,那么类和struct之间的区别是什么呢。

    不是所有的东西都可以用结构来做的。结构是值类型,不通过引用访问,也不支持继承。

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

        3
  •  1
  •   Merlyn Morgan-Graham    14 年前

    • 结构是值类型。当您将结构指派给另一个变数时,它会产生执行个体的复本。两个变量上的变异器将改变两个不同的对象
    • 结构不能定义空的构造函数
        4
  •  0
  •   Colin Desmond    14 年前

    MSDN 第条,

    结构还可以包含构造函数、常量、字段、方法、属性、索引器、运算符、事件和嵌套类型,但如果需要多个此类成员,则应考虑将类型改为类。

    结构可以实现接口,但不能从其他结构继承。因此,结构成员不能声明为受保护。