이름에서 알 수 있듯이 C#에서는 'struct' 키워드를 사용하여 값 유형을 정의하고, Class는 'class' 키워드를 사용하여 참조 유형을 정의합니다. C#에서는 구조체에 정의된 변수를 스택이나 주어진 변수형에 저장하고, 인스턴스를 구조체 변수라고 합니다. 반면, '클래스'의 경우 인스턴스는 객체로 호출되며 힙 구조의 메모리 단위에 저장됩니다. 생성자와 소멸자의 측면에서 C# 구조체는 소멸자를 가질 수 없지만 클래스는 소멸자를 가질 수 있습니다. 클래스에서는 추상형, 가상형, 보호형 등 회원 분류가 허용됩니다.
다음은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!