当前位置: 首页 > 编程笔记 >

C#中类与结构的区别实例分析

燕超
2023-03-14
本文向大家介绍C#中类与结构的区别实例分析,包括了C#中类与结构的区别实例分析的使用技巧和注意事项,需要的朋友参考一下

类与结构是C#程序设计中基本的数据类型,而初学者往往不能很好的分清二者之间的区别。本文就以附带实例形式加以说明。具体如下:

一、基本概念:

类:引用类型,存储在堆中,栈中存储引用地址,在方法的传输中只是传输地址的引用,修改指向的对象会影响原有对象的值,传输中消耗内存小。

结构:值类型,存储在堆栈中,传输过程中传输整个对象的副本,修改指向对象的值不会影响原有的对象,传输中消耗内存大。

二、实例代码如下:

class Program
{
    static void Main(string[] args)
    {
      /*声明类对象 并赋值10*/
      TestClass TC1 = new TestClass();
      TC1.x = 10;
      TC1.y = "10";
      Console.WriteLine("/*声明类对象TC1 并赋值10*/");
      Console.WriteLine("TC1 x={0} y={0}", TC1.x, TC1.y);
      TC1.x = 20;
      TC1.y = "20";
      Console.WriteLine("/*修改类对象 TC1 值为20*/");
      Console.WriteLine("TC1 x={0} y={0}", TC1.x, TC1.y);

      /*执行类传递 并修改传递后的值*/
      Console.WriteLine("/*创建类对象 TC2 指向 TC1,并修改 值为10*/");
      TestClass TC2 = TC1;
      TC2.x = 10;
      TC2.y = "10";
      Console.WriteLine("/*类传输过程中传递的是存储在堆栈中的引用地址 传输中消耗内存小 并没有传送存储在堆中的值 所以原有对象受到影响*/");
      Console.WriteLine("TC1 x={0} y={0}", TC1.x, TC1.y);
      Console.WriteLine("TC2 x={0} y={0}", TC2.x, TC2.y);

      /*声明结构对象*/
      Console.WriteLine("/*声明结构对象TS1 并赋值10*/");
      TestStruct TS1 = new TestStruct();
      TS1.x = 10;
      TS1.y = "10";
      Console.WriteLine("TS1 x={0} y={0}", TS1.x, TS1.y);
      Console.WriteLine("/*修改结构对象 TS1 值为20*/");
      TS1.x = 20;
      TS1.y = "20";
      Console.WriteLine("TS1 x={0} y={0}", TS1.x, TS1.y);
      /*执行结构传递 并修改传递后的值*/
      Console.WriteLine("/*创建结构对象 TS2 指向 TS1,并修改 值为10*/");
      TestStruct TS2 = TS1;
      TS2.x = 10;
      TS2.y = "10";
      Console.WriteLine("/*结构传输过程中 会传递整个对象的副本 传输中消耗内存大 所以修改对原有对象不受影响*/");
      Console.WriteLine("TS1 x={0} y={0}", TS1.x, TS1.y);
      Console.WriteLine("TS2 x={0} y={0}", TS2.x, TS2.y);

      Console.ReadLine();
    }
}
public class TestClass
{
  public int x;
  public string y;
}
public struct TestStruct
{
  public int x;
  public string y;
}

代码运行结果如下图所示:

 类似资料:
  • 本文向大家介绍浅析C#中结构与类的区别,包括了浅析C#中结构与类的区别的使用技巧和注意事项,需要的朋友参考一下 一、    结构:值类型,存储在堆栈中,位于计算机的内存逻辑区域中     类   :引用类型,存储在堆中,位于计算机内存的不同逻辑位置 二、   较小的数据使用结构;   将一个结构值传递到方法时,传递的是整个数据结构;   传递一个类,实际上是将引用传递到对象,即只有内存地址;  

  • 本文向大家介绍C#中的类和结构之间的区别,包括了C#中的类和结构之间的区别的使用技巧和注意事项,需要的朋友参考一下 为了区分类和结构,我们首先必须了解,在保存和定义数据的上下文中,结构和类似乎是等效的。这两个都可以定义并在其数据成员中保留一些默认值。但是,如果我们在此上下文之外考虑它们,则与结构相比,类将提供更多的灵活性以及功能。 以下是类和结构之间的重要区别。 序号 键 类 结构体 1 数据类型

  • 本文向大家介绍C语言中结构与数组的区别,包括了C语言中结构与数组的区别的使用技巧和注意事项,需要的朋友参考一下 在C语言中,结构和数组都用作数据类型的容器,即在结构和数组中,我们都可以存储数据,也可以对它们执行不同的操作。 在内部实现的基础上,以下是两者之间的一些基本区别。 序号 键 结构体 数组 1 定义 可以将结构定义为用作容器的数据结构,该数据结构可以容纳不同类型的变量。 另一方面,数组是一

  • 本文向大家介绍C#中out与ref的区别实例解析,包括了C#中out与ref的区别实例解析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#中Out与Ref的区别,可以加深C#程序设计人员对Out和Ref用法的理解,具体分析如下: 一、区别分析: Out和Ref作为参数传递到方法体中,所传递的都是引用地址,两者在操作上本身没有区别。 但Out传递到方法体时,参数会清空,这意味着在方法体内

  • 本文向大家介绍C#枚举类型与结构类型实例解析,包括了C#枚举类型与结构类型实例解析的使用技巧和注意事项,需要的朋友参考一下 本文以C#实例讲解了枚举类型与结构类型的用法,程序主要是通过个人电话本演示枚举类型与结构类型的用法,具体代码如下所示:

  • 本文向大家介绍C#中类与接口的区别个人总结,包括了C#中类与接口的区别个人总结的使用技巧和注意事项,需要的朋友参考一下 一.类与接口的区别 类:描述了一个实体,包括实体的状态,也包括实体可能发出的动作。 接口:定义了一个实体可能发出的动作。但是只是定义了这些动作的原型,没有实现,也没有任何状态信息。 1.接口与类区别: (1)接口有点象一个规范、一个协议,是一个抽象的概念; (2)而类则是实现了这