解释和对比 C# 中的值类型和引用类型

通常,C# 中的所有类型都可以分为两大类 -值类型和引用类型。让我们详细看看每种类型。

值类型

值类型的变量直接包含它们的数据。每个变量都有自己的数据副本。因此,值类型的变量不可能修改另一个对象。

值类型可以是以下类型之一 -

  • 所有数字类型,例如int、float和double

  • char和bool类型

  • 结构类型或

  • 枚举类型

值类型 simple 包含值。例如,整数类型包含实际数字,而不是像引用类型那样指向数字的指针。

要创建自定义值类型,您可以使用结构体。例如 -

public struct Point

{

public int X;

public int Y;

}

var p1 = new Point();

在内存中,一个 Point 的实例表示如下 -

当您将值类型的变量分配给另一个变量时,分配操作会创建所分配值的副本。例如,

Point p2 = p1;

引用类型

引用类型的变量存储对其对象的引用。两个不同的变量可能保存对同一个对象的引用。一个变量对对象所做的任何更改对第二个变量都是可见的。

引用类型包括以下类型 -

  • 细绳

  • 班级

  • 大批

  • 代表

  • 界面

例如,您可以创建一个类,它是一个引用类型,如下所示 -

public class Point{

   public int X;

   public int Y;

}

var p1 = new Point();

当你将一个引用类型的变量赋值给另一个变量时,赋值操作只是复制引用,而不是实际的对象。

Point p2 = p1;

示例

using System;

class Program{

   static void Main(){

      var p1 = new Point { X = 10 };

      Point p2 = p1;

     p2.X= 20;

      Console.WriteLine("Value Type");

      Console.WriteLine(p1.X);

      Console.WriteLine(p2.X);

      var u1 = new User { Age = 10 };

      User u2 = u1;

     u2.Age= 20;

      Console.WriteLine("Reference Type");

      Console.WriteLine(u1.Age);

      Console.WriteLine(u2.Age);

   }

}

public struct Point{

   public int X;

   public int Y;

}

public class User{

   public int Age { get; set; }

}

输出结果
Value Type

10

20

Reference Type

20

20

以上是 解释和对比 C# 中的值类型和引用类型 的全部内容, 来源链接: utcz.com/z/341369.html

回到顶部