Introduktion till konstruktör i C #

Konstruktör spelar en mycket viktig roll i objektorienterad programmering. Låt oss förstå rollen som konstruktör i C # med hjälp av följande punkter:

  • En konstruktör är en speciell metod som finns i en klass som ansvarar för att initialisera variablerna i klassen.
  • Namnet är samma som klassnamnet.
  • Det körs automatiskt när vi skapar en instans av klassen.
  • En konstruktör returnerar inget värde.
  • Om vi ​​inte definierar en konstruktör tillhandahålls alltid en implicit konstruktör av klassen som kallas standardkonstruktören.

Syntax:

public class Student()
(
//constructor
public Student()
(
//code
)
)

Här är public Student () en metod som inte har någon returtyp, inte ens ogiltig och dess namn är samma som klassnamnet, dvs. 'Student'. Således är denna metod konstruktören för denna klass.

När vi skapar ett objekt i den här klassen med hjälp av:

Student obj = new Student();

Sedan kommer koden inuti konstruktören att köras.

Arbetar med konstruktör i C #

1. Konstruktören initierar datamedlemmar för det nya objektet. Den åberopas av den "nya" operatören omedelbart efter att minnet har allokerats till det nya objektet.

2. Explicit konstruktörer (konstruktörer definierade av användaren) kan vara parameterlösa eller parametriserade. Om den är parametrerad kan värdena som skickas till konstruktören tilldelas klassmedlemmarna.

3. Den implicita konstruktören initialiserar variabler i klassen med samma värde även om vi skapar flera instanser av den klassen.

Exempel:

Koda:

using System;
public class ConstructorDemo
(
public int num = 10;
public static void Main()
(
ConstructorDemo obj1 = new ConstructorDemo();
ConstructorDemo obj2 = new ConstructorDemo();
ConstructorDemo obj3 = new ConstructorDemo();
Console.WriteLine("obj1.num = "+obj1.num+"\nobj2.num = "+obj2.num
+"\nobj3.num = "+obj3.num);
)
)

Produktion:

Bildrepresentation av ovanstående program:

4. Explicit konstruktör med parametrar tillåter oss att initialisera variabler i klassen med ett annat värde varje gång vi skapar en instans av den klassen.

Exempel:

Koda:

using System;
public class ConstructorDemo
(
public int num;
//explicit constructor
public ConstructorDemo(int num)
(
this.num = num;
)
public static void Main()
(
ConstructorDemo obj1 = new ConstructorDemo(10);
ConstructorDemo obj2 = new ConstructorDemo(20);
ConstructorDemo obj3 = new ConstructorDemo(30);
Console.WriteLine("obj1.num = "+obj1.num+"\nobj2.num = "+obj2.num
+"\nobj3.num = "+obj3.num);
)
)

Produktion:

Bildrepresentation av ovanstående program:

Topp 5 typer av konstruktörer i C #

C # tillhandahåller fem typer av konstruktörer. De är som följer:

1. Standardkonstruktör

  • En konstruktör utan någon parameter kallas Standardkonstruktör. Om vi ​​inte definierar det uttryckligen kommer det implicit att tillhandahållas av kompilatorn.
  • I ett sådant fall kan vi kalla det implicit konstruktör. Standard eller implicit konstruktör initierar alla datadelar i klassen med sina standardvärden, såsom alla numeriska fält till noll och alla sträng- och objektfält till noll.

Exempel:

Koda:

using System;
public class DefaultConstructor
(
public int num;
public string str;
)
public class Demo
(
public static void Main()
(
DefaultConstructor obj = new DefaultConstructor();
Console.WriteLine("obj.num = "+obj.num+"\nobj.str = "+obj.str);
)
)

Produktion:

2. Parameteriserad konstruktör

Konstruktör med minst en parameter kallas Parameterized Constructor. Parametrar till konstruktören kan skickas medan klassens instans skapas. Det gör att vi kan initialisera varje instans av en klass med olika värden.

Exempel:

Koda:

using System;
public class ParameterizedConstructor
(
public int num;
public string str;
//parameterized constructor
public ParameterizedConstructor(int num, string str)
(
this.num = num;
this.str = str;
)
)
public class Demo
(
public static void Main()
(
//passing values to constructor while creating instance
ParameterizedConstructor obj = new ParameterizedConstructor(50, "constructor");
Console.WriteLine("obj.num = "+obj.num+"\nobj.str = "+obj.str);
)
)

Produktion:

3. Kopiera konstruktör

Det är en parametrerad konstruktör som tar samma klassobjekt som en parameter. Det kopierar det befintliga objektets värde (som skickas som parameter) till det nyligen skapade objektet instanserat av konstruktören. Vi kan säga att det kopierar data från ett objekt till ett annat objekt.

Exempel:

Koda:

using System;
public class CopyConstructor
(
public int num;
public CopyConstructor(int num)
(
this.num = num;
)
//copy constructor
public CopyConstructor(CopyConstructor obj)
(
num = obj.num;
)
)
public class Demo
(
public static void Main()
(
CopyConstructor obj1 = new CopyConstructor(50);
//passing same class's object as parameter
CopyConstructor obj2 = new CopyConstructor(obj1);
Console.WriteLine("Original object:");
Console.WriteLine("obj1.num = "+obj1.num);
Console.WriteLine("\nCopied object:");
Console.WriteLine("obj2.num = "+obj2.num);
)
)

Produktion:

4. Statisk konstruktör

  • Det kan definieras genom att prefixera konstruktörens namn med ett nyckelord. Det definieras implicit av kompilatorn (om den inte definieras uttryckligen) om klassen innehåller någon statisk variabel.
  • Det är det första blocket som körs i klassen och kommer att anropas automatiskt. Det kommer att köras endast en gång oberoende av antalet klassinstanser. Det är parameterlöst och accepterar inte någon åtkomstmodifierare.

Exempel:

Koda:

using System;
public class StaticConstructor
(
//static constructor
static StaticConstructor()
(
Console.WriteLine("Static constructor executed");
)
public static void Display()
(
Console.WriteLine("\nDisplay method executed");
)
)
public class Demo
(
public static void Main()
(
StaticConstructor.Display();
)
)

Produktion:

5. Privat konstruktör

Konstruktör skapad med privat specificer kallas en privat konstruktör. Vi kan inte skapa en instans av klassen om den bara innehåller privat konstruktör och den inte tillåter andra klasser att härleda från denna klass. Används i klassen som endast innehåller statiska medlemmar.

Exempel:

Koda:

using System;
public class PrivateConstructor
(
public static int num = 100;
//private constructor
private PrivateConstructor()
(
)
)
public class Demo
(
public static void Main()
(
//PrivateConstructor obj = new PrivateConstructor(); //Error
Console.WriteLine("num = "+PrivateConstructor.num);
)
)

Produktion:

Slutsats

Om vi ​​definierar någon typ av konstruktör i klassen kommer det inte att finnas någon implicit konstruktör i klassen som kompilatorn tillhandahåller. Liksom metoder kan parametrerade konstruktörer också överbelastas med olika antal parametrar. Konstruktörer som implicit definieras av kompilatorn är alltid offentliga.

Rekommenderad artikel

Detta är en guide till konstruktör i C #. Här diskuterar vi typerna av konstruktör i C # och dess arbete tillsammans med kodimplementering och utdata. Du kan också gå igenom våra andra föreslagna artiklar för att lära dig mer -

  1. Konstruktör i JavaScript och typer
  2. Vad är slumptalgenerator i C #?
  3. Konstruktör i C ++ och typer
  4. Kopiera konstruktör i C # (exempel)
  5. Statisk konstruktör i Java | Arbetar | tillämpningar

Kategori: