代码之家  ›  专栏  ›  技术社区  ›  Bastien Vandamme

C#中什么是值类,什么是引用类?

  •  7
  • Bastien Vandamme  · 技术社区  · 16 年前

    value class reference class

    value type reference type ?

    仅包含值的结构 您应该创建以下内容?

    B参考结构

    C值类

    B不正确:您无法创建

    7 回复  |  直到 16 年前
        1
  •  1
  •   Joren    16 年前

    您可能会想到C++/CLI,它与C#不同,允许用户声明“值类”或“ref类” 在C#中,您声明的任何类都将隐式地成为引用类——只有内置类型、结构和枚举具有值语义。 http://www.ddj.com/cpp/184401955

    与ref类相比,值类的功能很少,对“普通旧数据”很有用;即没有身份的数据。由于您在将一个数据分配给另一个数据时正在复制数据,因此系统为您提供了一个默认(也是强制性的)复制构造函数,该构造函数只是将数据复制到另一个对象上。

        3
  •  3
  •   Julien Roncaglia    16 年前

    编辑:值/引用类
    C#中没有“值类”或“引用类”的概念,因此要求定义它是没有意义的。

        5
  •  1
  •   Lucas Wilson-Richter    16 年前

        6
  •  0
  •   Mike Graham    16 年前

    引用类型按引用传递给方法,值类型按值传递;在后一种情况下,方法接收变量的副本,在前一种情况中,它接收对原始数据的引用。如果您更改了副本,则原始副本不会更改。如果您更改了引用的原始数据,则对数据的引用更改的所有地方的数据都会更改。如果用C创建了一个与C#程序类似的程序,通常引用类型就像使用指针的数据,值类型是堆栈上的正常数据。

    数字类型、字符、日期、枚举和结构都是值类型。字符串、数组、委托和类(即,实际上大多数东西)都是引用类型。

        7
  •  0
  •   Ryan Emerle    16 年前

    readonly