Constructors In C Sharp
Constructors :-
v Constructor is a special method, which initializes the class member with default values or the value that is passed by the constructors.
Second Example of Private Constructor.
using System;
sealed class Singleton
{
private static Singleton instance = null;
private string name="";
public static Singleton CreateInstance()
{
if(instance == null)
{
instance = new Singleton();
}
return instance;
}
private Singleton(){}
public void SetName(string name)
{
// use this keyword when class field member name and parameter name is same.
this.name = name;
}
public void DisplayName()
{
Console.WriteLine("Value at name is " + name);
}
}
class PrivateConstructorTestTwo
{
static void Main()
{
Singleton s1_instance = Singleton.CreateInstance();
s1_instance.SetName("Amit");
Console.WriteLine("Call DisplayName by first reference variable");
s1_instance.DisplayName();
Singleton s2_instance = Singleton.CreateInstance();
s2_instance.SetName("Gopal");
Console.WriteLine("Call DisplayName by second reference variable");
s2_instance.DisplayName();
Console.WriteLine("Call DisplayName again by first reference variable");
s1_instance.DisplayName();
}
}
--------------------------------------------------------------------------------------------------------------------------------
v Constructor is a special method, which initializes the class member with default values or the value that is passed by the constructors.
v Constructors must have the same name as class name.
v Constructors does not return any types, not even void.
v Constructor can’t be get inherited, although a derived class constructor can call the base class constructor using “base” keyword
v A class has atleast one constructor also known as default constructor.(a constructor without parameter)
v We have to explicitly define a default constructor in case of overloading constructors.
v Constructor overloading means defining multiple constructors of a class with different sets of parameters.
v A constructor can be called another constructor using “this” keyword with in single class.
Types of Constructors
vInstance Constructors :- Instance constructors are specific to an instance of a type and are used to initialize both static and instance fields of the type.
vPublic Constructors (parameterless or parameterized)
vPrivate Constructors (parameterless or parameterized)
vProtected Constructors(pameterless or parameterized)
vStatic Constructors :- Static constructors are used to initialize static field of the type. We can initialize the non-static fields also but for this we require the object reference of that type.
Private Constructor (Singleton Pattern)
v The Singleton pattern defines the class in which only a single instance can exist.
v It is useful for exposing read-only data, and static methods that do not rely on instance data.
v Rather than creating an instance of the class each time, the application obtains a reference to an existing instance using a static method of the class that implements the Singleton pattern.
v If this is the first call to the method that returns the instance, the Singleton creates an instance, populates it with any required data, and returns that instance.
v Subsequent calls to the method simply return this instance. The instance lifetime is that of the application domain.
v It is not possible to inherit a class that has only a private constructor.
-------------------------------------------------------------------------------------------------------
Example of Private Constructor (Singleton Pattern).
using System;
sealed class Singleton
{
private static Singleton instance = null;
private static bool flag = false;
public static Singleton CreateInstance()
{
if(!flag)
{
flag = true;
instance = new Singleton();
}
return instance;
}
private Singleton(){}
public void Display()
{
Console.WriteLine("I am instance member");
}
}
class PrivateConstructorTestOne
{
static void Main()
{
//Singleton s_instance = new Singleton(); this generate an error due to private constructor.
Singleton s_instance = Singleton.CreateInstance();
s_instance.Display();
}
}
----------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
using System;
sealed class Singleton
{
private static Singleton instance = null;
private static bool flag = false;
public static Singleton CreateInstance()
{
if(!flag)
{
flag = true;
instance = new Singleton();
}
return instance;
}
private Singleton(){}
public void Display()
{
Console.WriteLine("I am instance member");
}
}
class PrivateConstructorTestOne
{
static void Main()
{
//Singleton s_instance = new Singleton(); this generate an error due to private constructor.
Singleton s_instance = Singleton.CreateInstance();
s_instance.Display();
}
}
----------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
Second Example of Private Constructor.
using System;
sealed class Singleton
{
private static Singleton instance = null;
private string name="";
public static Singleton CreateInstance()
{
if(instance == null)
{
instance = new Singleton();
}
return instance;
}
private Singleton(){}
public void SetName(string name)
{
// use this keyword when class field member name and parameter name is same.
this.name = name;
}
public void DisplayName()
{
Console.WriteLine("Value at name is " + name);
}
}
class PrivateConstructorTestTwo
{
static void Main()
{
Singleton s1_instance = Singleton.CreateInstance();
s1_instance.SetName("Amit");
Console.WriteLine("Call DisplayName by first reference variable");
s1_instance.DisplayName();
Singleton s2_instance = Singleton.CreateInstance();
s2_instance.SetName("Gopal");
Console.WriteLine("Call DisplayName by second reference variable");
s2_instance.DisplayName();
Console.WriteLine("Call DisplayName again by first reference variable");
s1_instance.DisplayName();
}
}
--------------------------------------------------------------------------------------------------------------------------------
Constructors In C Sharp
Reviewed by Baljeet Singh
on
10:47
Rating:
No comments: