C#类与结构再次详解

时间:2022-06-25 04:11:05

标签:类与结构

类和结构是 .NET Framework 中的常规类型系统的两种基本构造。  两者在本质上都属于数据结构,封装着一组整体作为一个逻辑单位的数据和行为。  数据和行为是该类或结构的“成员”,它们包含各自的方法、属性和事件等(本主题后面列出了这些内容)。

类或结构的声明类似于蓝图,用于在运行时创建实例或对象。  如果定义一个名为 Person 的类或结构,则 Person 为类型名称。  如果声明并初始化 Person 类型的变量 p,则 p 称为 Person 的对象或实例。  可以创建同一 Person 类型的多个实例,每个实例在其属性和字段中具有不同的值。

类是一种“引用类型”。  创建类的对象时,对象赋值到的变量只保存对该内存的引用。  将对象引用赋给新变量时,新变量引用的是原始对象。  通过一个变量做出的更改将反映在另一个变量中,因为两者引用同一数据。

结构是一种值类型。  创建结构时,结构赋值到的变量保存该结构的实际数据。  将结构赋给新变量时,将复制该结构。  因此,新变量和原始变量包含同一数据的两个不同的副本。  对一个副本的更改不影响另一个副本。

类通常用于对较为复杂的行为建模,或对要在创建类对象后进行修改的数据建模。  结构最适合一些小型数据结构,这些数据结构包含的数据以创建结构后不修改的数据为主。

下面的示例在 ProgrammingGuide 命名空间的*使用三个成员定义了 MyCustomClass。  在 Program 类的 Main 方法中创建了 MyCustomClass 的一个实例(对象),并使用点表示法访问该对象的方法和属性。

namespace ProgrammingGuide     {    // Class definition.         public class MyCustomClass         { // Class members:           // Property.             public int Number { get; set; }            // Method.             public int Multiply(int num)             {                return num * Number;             }                         // Instance Constructor.             public MyCustomClass()             {                 Number = 0;             }         }                    // Another class definition. This one contains             // the Main method, the entry point for the program.         class Program         {    static void Main(string[] args)             {                             // Create an object of type MyCustomClass.                 MyCustomClass myClass = new MyCustomClass();                            // Set the value of a public property.                 myClass.Number = 27;                               // Call a public method.                 int result = myClass.Multiply(4);             }         }     }

封装