名前のとおり、C# は「struct」キーワードを使用して値の型を定義し、Class は「class」キーワードを使用して参照型を定義します。 C# では、構造体で定義された変数はスタックまたは指定された変数型に格納され、そのインスタンスは構造体変数と呼ばれます。一方、「クラス」の場合、インスタンスはオブジェクトと呼ばれ、ヒープ構造のメモリユニットに格納されます。コンストラクターとデストラクターに関しては、C# struct はデストラクターを持つことができませんが、クラスはデストラクターを持つことができます。クラスでは、抽象型、仮想型、保護型などのメンバー分類が許可されます。
以下は、C# 構造体とクラスのトップ 14 の違いです。
C# の構造体とクラスの主な違いは次のとおりです。
コード:
using System; namespace structAndClass { //creating structure public struct Demo { public int x, y; //parameterized constructor public Demo(int x, int y) { this.x = x; this.y = y; } } public class StructDemo { public static void Main(string[] args) { Demo a = new Demo(50, 50); Demo b = a; a.x = 100; Console.WriteLine("Value of a.x = "+a.x); Console.WriteLine("Value of b.x = "+b.x); } } }
出力:
コード:
using System; namespace structAndClass { public class Demo { public int x, y; public Demo(int x, int y) { this.x = x; this.y = y; } } public class StructDemo { public static void Main(string[] args) { Demo a = new Demo(50, 50); Demo b = a; a.x = 100; Console.WriteLine("Value of a.x = "+a.x); Console.WriteLine("Value of b.x = "+b.x); } } }
出力:
明確に理解できるように、比較表を通じて C# の構造体とクラスの違いをさらに見てみましょう:
Parameter | C# Struct | Class |
Data type | The structure is a value type of data type. | Class is a reference type data type. |
Keyword | The structure can be defined using the ‘struct’ keyword. | The class can be defined using the ‘class’ keyword. |
Storage area | The structure variable is stored either in stack or inline in containing type. | The object of the class is stored in heap. |
Instance creation | The instance of a struct can be created with or without a ‘new’ keyword. | The instance of the class is created using a ‘new’ keyword. |
Assignment | If we make an assignment to a variable of struct type then it creates a copy of the value being assigned. Thus, each variable instructs has its copy of data. | If we make an assignment to a variable of class type then it copies the reference. Thus, two or more variables in class can refer to the same object. |
Constructor | The structure does not contain a parameterless instance constructor. | The class contains a parameterless instance constructor, if not defined explicitly by the user. |
Destructor | It cannot have a destructor. | It can have a destructor. |
Inheritance | The structure cannot inherit from another class or structure.
The structure cannot be used as a base for another structure or class. |
The class can inherit from another class. The class can be a base class for another class. |
Data members | Members of a struct cannot be abstract, virtual or protected. | Members of a class can be abstract, virtual or protected. |
Instance | The instance of the structure is called the structure variable. | The instance of the class is called an object. |
Default access specifier | Members of the structure are public by default. | Members of the class are private by default. |
Usage | The structure can be used for small data structures. | Class is used for the complex data structure. |
Garbage collection | The instance of a struct cannot be garbage collected. | The instance of the class can be garbage collected. |
Variable initializing | Including variable initializer is not allowed while making instance field declarations instruct. | Including variable initializer is allowed while making instance field declarations in a class. |
クラスと構造体の両方は、関連するデータ項目を保持するために使用されます。多数のデータにはクラスを使用し、小さいデータには構造体を使用できます。クラスは参照型でヒープに格納されますが、構造体は値型でスタックに格納されます。
以上がC# の構造体とクラスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。