Structure is a value type and a collection of variables of different data types under a single unit. It is almost similar to a class because both are user-defined data types and both hold a bunch of different data types. C# provide the ability to use pre-defined data types. However, sometimes the user might be in need to define its own data types which are also known as User-Defined Data Types. Although it comes under the value type, the user can modify it according to requirements and that’s why it is also termed as the user-defined data type.
Defining Structure: In C#, structure is defined using struct keyword. Using struct keyword one can define the structure consisting of different data types in it. A structure can also contain constructors, constants, fields, methods, properties, indexers and events etc.
Access_Modifier struct structure_name
{
// Fields
// Parameterized constructor
// Constants
// Properties
// Indexers
// Events
// Methods etc.
}
CSHARP
using System;
namespace ConsoleApplication {
public struct Person
{
public string Name;
public int Age;
public int Weight;
}
class Geeks {
static void Main( string [] args)
{
Person P1;
P1.Name = "Keshav Gupta" ;
P1.Age = 21;
P1.Weight = 80;
Console.WriteLine( "Data Stored in P1 is " +
P1.Name + ", age is " +
P1.Age + " and weight is " +
P1.Weight);
}
}
}
|
Output: Data Stored in P1 is Keshav Gupta, age is 21 and weight is 80
- Explanation: In the above code, a structure with name “Person” is created with data members Name, Age and Weight.In the main method, P1 of structure type Person is created. Now, P1 can access its data members with the help of .( dot ) Operator.
Copy Structure: In C#, user can copy one structure object into another one using ‘=’ (Assignment) operator.
Structure_object_destination = structure_object_source;
CSHARP
using System;
namespace ConsoleApplication {
public struct Person
{
public string Name;
public int Age;
public int Weight;
}
class Geeks {
static void Main( string [] args)
{
Person P1;
P1.Name = "Keshav Gupta" ;
P1.Age = 21;
P1.Weight = 80;
Person P2;
P2 = P1;
Console.WriteLine( "Values Stored in P1" );
Console.WriteLine( "Name: " +P1.Name);
Console.WriteLine( "Age: " +P1.Age);
Console.WriteLine( "Weight: " +P1.Weight);
Console.WriteLine( "" );
Console.WriteLine( "Values Stored in P2" );
Console.WriteLine( "Name: " +P2.Name);
Console.WriteLine( "Age: " +P2.Age);
Console.WriteLine( "Weight: " +P2.Weight);
}
}
}
|
Output: Values Stored in P1
Name: Keshav Gupta
Age: 21
Weight: 80
Values Stored in P2
Name: Keshav Gupta
Age: 21
Weight: 80
- Explanation: The data members of struct Person is initialized with the help of P1 and the values of data members can be copy to P2 by P1 using ‘='(assignment operator).
Nesting of Structures: C# allows the declaration of one structure into another structure and this concept is termed as the nesting of the structure.
CSHARP
using System;
namespace ConsoleApplication {
public struct Address
{
public string City;
public string State;
}
struct Person
{
public string Name;
public int Age;
public Address A1;
}
class Geeks {
static void Main( string [] args)
{
Person p1;
p1.Name = "Raman" ;
p1.Age = 12;
p1.A1.City = "ABC_City" ;
p1.A1.State = "XYZ_State" ;
Console.WriteLine( "Values Stored in p1" );
Console.WriteLine( "Name: " +p1.Name);
Console.WriteLine( "Age: " +p1.Age);
Console.WriteLine( "City: " +p1.A1.City);
Console.WriteLine( "State: " +p1.A1.State);
}
}
}
|
Output: Values Stored in p1
Name: Raman
Age: 12
City: ABC_City
State: XYZ_State
Important Points about Structures:
- Once the structures go out of scope, it gets automatically deallocated.
- Created much more easily and quickly than heap types.
- Using structure it become easy to copy the variable’s values onto stack.
- A struct is a value type, whereas a class is a reference type.
Difference Between Structures and Class :
Category | Structure | Class |
---|
Data Type | Value Type | Reference type |
---|
Assignment Operation | Copies the value | Copies the reference |
---|
Parameterless Constructors | Not Allowed | Allowed |
---|
Inheritance | Not supported | Always supported |
---|