As the name says, C# uses ‘struct’ keyword to define the value types, and Class uses ‘class’ keyword to define the reference types. In C#, the variables defined in the structure are stored in stack or in the given variable type and the instances are called as structure variable. Whereas, for a ‘class’ the instances are called as objects and are stored in a heap structured memory units. In terms of constructors and destructors, C# struct cannot have a destructor, but a Class can have a destructor. Member classification is allowed in the Class, such as abstract, virtual and protected types.
Below are the top 14 differences between C# Struct vs Class.
Some key differences between C# Struct and Class are as follows:
Code:
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); } } }
Output:
Code:
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); } } }
Output:
Let’s see some more differences between C# Struct vs Class through a comparison table for clear understanding:
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. |
Both class and structure are used to hold related data items. We can use class for a large number of data and can use the structure for small data. Class is of reference type and stored in heap whereas structure is of value type and stored in the stack.
The above is the detailed content of C# Struct vs Class. For more information, please follow other related articles on the PHP Chinese website!