csharp_struct_1.htm Next
Why structures !!
Compared with Class
  • Struct is less capable of version of a class, but more efficient in performance wise comparing with its class version.
  • Struct is a value type and Class is Reference type, therefore Struct operates directly, without suffering any performance loss. . The image below shows the resemblances


     
  • The New operator is used to instantiate class and stack. The instance in STRUCT object is stored  in Stack, but  New Operator with Class, the object is allocated in HEAP
  • Struct does not create overhead and if you donít have use inheritance and need to store a small group of data, struct is a better choice over class.

 
Struct: Structs are a type of composite data structures composed of several pieces of data, possibly different types.
Defining structs:
Struct <typename>
{
//member Declarations

}
Some Info on struct:
 
  • Strcts are value types and classes are reference type
  • A struct object, goes to stack, and it  is not allocated on the managed heap, and therefore it is not  subject to garbage collection. When we create a new struct object, the new operator is NOT actually invoked. The matrix directly allocated to the function. It is created when a function begins execution, and ceases to exist when function terminates.
  • Every value type is automatically provided with a default constructor that is a constructor that takes no argument. The default constructor zeros out the data members stored with the object of the value type. It is an error to provide an explicit default constructor within a struct definition.
  • Invoking the new operator on a value type simply results in the execution of an associated constructor. If no arguments are passed to the invocation, the default constructor is invoked. If we provide arguments the compiler searches for a constructor matching those arguments.
Struct :
using System;
//struct_simple.cs
//my example on the fly.
namespace simplestruc
{
struct empdb
{
public int id;
public string name;
public int age;
public float sal;

public empdb(int eid,string ename, int eage, float esal){
this.id = eid;
this.name = ename;
this.age = eage;
this.sal = esal;
}
}
class testStruc {
public static void Main()
{
empdb empinfo = new empdb();
empinfo.age = 45;
empinfo.name = "Manas";
empinfo.id = 237;
empinfo.sal = 4500;
//
Console.WriteLine("\n Employe ID : " + empinfo.id);
Console.WriteLine("\n Employe ID : " + empinfo.name);
Console.WriteLine("\n Employe age : " + empinfo.age);

} } }
 
Simple structure with user's input
code

using System;
//struct_simple_read.cs
//my example on the fly.
namespace simplestruc
{
struct playerdb
{
public int id;
public string name;
public int age;
public float sal;

public playerdb(int eid,string ename, int eage, float esal){
this.id = eid;
this.name = ename;
this.age = eage;
this.sal = esal;
}
}
class testStruc {
public static void Main()
{
playerdb playerinfo = new playerdb();
playerinfo.age = 45;
playerinfo.name = "Manas";
playerinfo.id = 237;
playerinfo.sal = 4500;
//
Console.WriteLine("player ID : " + playerinfo.id);
Console.WriteLine("player name : " + playerinfo.name);
Console.WriteLine("player age : " + playerinfo.age);
Console.WriteLine("player sal : " + playerinfo.sal);
//
Console.Write("\n Do you want to add a new player(0=No/1=Yes)? ");
int answer = int.Parse(Console.ReadLine());
//if text there will be an error
if( answer == 1 ){
Console.Write("enter players id : "); playerinfo.id = int.Parse(Console.ReadLine());
Console.Write("enter players name : "); playerinfo.name=Console.ReadLine();
Console.Write("enter players age : "); playerinfo.age=int.Parse(Console.ReadLine());
Console.Write("enter players sal : "); playerinfo.sal=float.Parse(Console.ReadLine());

}
//
Console.WriteLine("\n ---New Player added------ ");
Console.WriteLine("player ID : " + playerinfo.id);
Console.WriteLine("player Name : " + playerinfo.name);
Console.WriteLine("player age : " + playerinfo.age);
Console.WriteLine("player sal : " + playerinfo.sal);
//
} } }