c concepts constructor
Denna handledning förklarar några av de viktiga begreppen i C # -programmering såsom konstruktör, förstörare, statisk klass, structs och enums:
I en av våra tidigare handledning om objekt och klasser lärde vi oss vad en klass och ett objekt är.
Ett objekt liknar ett verkligt objekt och en klass är en logisk samling av liknande slags objekt. Det är en av de mest grundläggande typerna som finns i C #. I den här handledningen kommer vi att dyka djupt in i de andra relaterade C # -koncepten.
=> Utforska Complete C # Training Series här
I denna handledning kommer vi att lära oss några viktiga aspekter av lektioner och hur vi kan använda dem i våra program. Vi kommer att försöka skapa enkla C # -program baserat på de begrepp som vi lärde oss i våra tidigare självstudier.
Vad du kommer att lära dig:
- Vad är en konstruktör i C #?
- Destruktorer i C #
- Statiska medlemmar i en klass
- Statisk klass i C #
- Structs In C #
- Skillnaden mellan struktur och klass
- Struct: Definition
- Enums i C #
- Egenskaper i C #
- Slutsats
- Rekommenderad läsning
Vad är en konstruktör i C #?
Konstruktören är en speciell typ av metod i C # programmeringsspråk som anropas eller åberopas automatiskt när ett objekt av den givna klassen skapas.
Dess huvudsakliga funktion är att initialisera datamedlemmarna för det nyskapade objektet. En av konstruktörens mest utmärkande drag är dess namn. Det har samma namn som klassen.
Konstruktörerna är i grunden av två typer:
- Standard
- Parameteriserad
C # Standardkonstruktör
Som namnet antyder är standardkonstruktören den grundläggande konstruktören för en klass. Den har inget argument och åberopas direkt när objektet skapas.
public class Program { public Program(){ Console.WriteLine('Constructor has been invoked'); } public static void Main(string() args) { Program p = new Program(); } }
Resultatet av följande program kommer att vara:
Konstruktören har åberopats
Förklaring
Vi har definierat ett konstruktör ”Program” i klassen ”Program”. Nu när vi initialiserar klassen inuti huvudmetoden, anropas konstruktören automatiskt.
Därför kommer det kodkod som vi har hållit inne i konstruktören att åberopas. Här har vi skrivit ut ett meddelande 'Constructor har anropats' inom konstruktörens lockiga hakparenteser, så när vi initialiserar klassen kommer konstruktorn som standard att initialiseras och meddelandet kommer att skrivas ut som utdata.
Parameteriserad konstruktör
Som namnet antyder är parametrerade konstruktörer konstruktören med parametrar. Dessa konstruktörer används för att skicka olika värden till objekten.
public class Details { public Details(int a, int b){ int c = a+b; Console.WriteLine('The sum is: '+ c); } } public class Program { public static void Main(string() args) { Details d = new Details(2, 3); } }
Resultatet av följande program kommer att vara:
Salesforce-administratörsintervjuer och frågor
Summan är: 5
Förklaring
I vårt tidigare exempel med standardkonstruktören har vi vår huvudmetod i samma klass. I det här exemplet har vi huvudmetoden i en annan klass.
Vi har en klass med namnet 'Detaljer' som innehåller en parametrerad konstruktör som accepterar två heltal. Inuti konstruktören skriver vi ut summeringen av heltal. Vi har en annan klass som heter 'Program' som innehåller vår huvudmetod. Inuti huvudmetoden har vi initierat klassen 'Detaljer'.
Som förklarats tidigare, när en klass initieras, anropas dess konstruktörer automatiskt. I detta fall har alltså vår konstruktormetod 'Detaljer' åberopats och när vi skickade parametern under initialiseringen skriver den ut.
Destruktorer i C #
Förstörare är precis motsatsen till konstruktörer. Det är en speciell metod för klassen som åberopas när ett klassobjekt går utanför räckvidden. I likhet med en konstruktör är ett destruktörsnamn också exakt detsamma som det för klassnamnet men med prefixet “~” (tilde).
Destructor accepterar inte heller någon parameter och returnerar inte något värde. Destructor förstör klassobjekten, därför används den huvudsakligen för att frigöra minne efter att programmet har körts. En annan viktig sak att tänka på om destruktorn är att den varken kan överbelastas eller att den kan ärvas.
Exempel på förstörare:
public class Program { public Program(){ Console.WriteLine('Constructor has been invoked'); } ~Program(){ Console.WriteLine('Destructor has been invoked'); } public static void Main(string() args) { Program p = new Program(); } }
Resultatet av följande program kommer att vara:
Konstruktören har åberopats
Destructor har åberopats
Förklaring
Vi använde samma exempel som vi lärde oss konstruktörer. Vi har precis lagt till en destruktör i programklassen (~ Program). När vi initialiserar klassens objekt, anropas konstruktören och klassens objekt skapas. Detta skriver frasen 'Constructor har anropats' till konsolen.
När körningen har slutförts och klassobjektet går utanför räckvidden rör sig programmet mot förstöraren. Destruktorn åberopas sedan, vilket i sin tur förstör objektet. Här har vi skrivit ut ett meddelande inuti förstöraren som skrivs ut för att trösta efter att förstöraren anropas.
Statiska medlemmar i en klass
Medlemmarna i klassen kan förklaras statiska med hjälp av det statiska nyckelordet. När ett objekt deklareras som statiskt, kommer det, oberoende av antalet skapade objekt, bara att finnas en kopia av det statiska objektet.
Att vara statisk innebär att det kommer att finnas en enda instans av medlemmen som kommer att finnas för en given klass. Det betyder att värdet på den eller de statiska funktionerna eller variablerna i klassen kan åberopas utan att skapa ett objekt för dem.
Statiska variabler används för att deklarera konstanter eftersom deras värden kan erhållas direkt genom att anropa klassen snarare än att skapa en instans av den.
Exempel:
public class Details { public static void stat(){ Console.WriteLine('Static method invoked'); } } public class Program { public static void Main(string() args) { Details.stat(); } }
Resultatet av följande program kommer att vara:
Statisk metod åberopas
Förklaring
I ovanstående exempel har vi skapat en klass 'Detaljer' som innehåller en statisk metod 'stat'. Vi har en annan klass 'Program' som innehåller huvudmetoden. I våra tidigare ämnen såg vi hur vi kan initiera en klass för att komma åt metoder. Men som vi diskuterade kan klassiska medlemmar i klassen nås med klassobjektinitiering.
Således har vi i huvudmetoden precis åberopat metoden med klassen direkt utan att skapa något objekt. Programmets utdata körde koden skriven i den statiska metoden. I det här fallet har vi skrivit ut ett meddelande till konsolen.
Statisk klass i C #
En statisk klass liknar en normal klass i C #. Den statiska klassen kan bara ha statiska medlemmar och den kan inte instantieras. En statisk klass används för att säkerställa att klassen inte är instanserad. En statisk klass deklareras med hjälp av nyckelordet statisk före nyckelordsklassen under deklarationen.
Exempel:
public static class Details { public static void multiply(int a, int b){ int c = a*b; Console.WriteLine('Multiplication result is: '+c); } } public class Program { public static void Main(string() args) { Details.multiply(2,8); } }
Resultatet av följande program kommer att vara:
Multiplikationsresultatet är: 16
Förklaring
I exemplet ovan har vi skapat en statisk klass 'Detaljer' och inom den statiska klassen har vi skapat en annan statisk metod 'multiplicera'. Inuti metoden har vi några kodavsnitt som vi vill utföra. Vi har också en annan klass 'Program' med huvudmetoden.
Inuti huvudmetoden har vi åberopat multipliceringsmetoden som finns i den statiska klassen. Om du tittar på vår huvudmetod ser du att vi inte har initierat eller skapat ett objekt för den statiska klassen istället har vi direkt åberopat klassen från huvudmetoden.
Således, när vi direkt åberopar multipliceringsmetoden med hjälp av klassnamnet och genom att tillhandahålla parametrar, kör den koden och skriver ut utdata.
Structs In C #
Värden typ enhet i C # kallas struktur. Det hjälper användaren att lagra relaterad data av flera olika datatyper i en enda variabel. Som sagt är en struktur en värdetypsenhet som innehåller fält, metoder, konstruktörer, operatorer, händelser etc. En struktur deklareras med hjälp av nyckelordet 'struct'.
Funktioner i Structs:
- Det kan innehålla konstanter, metoder, egenskaper, index, operatörer, konstruktörer etc.
- Det kan inte ha någon standardkonstruktör.
- Det kan implementera ett gränssnitt men kan inte ärva med andra strukturer eller klasser.
- Strängar måste initieras med hjälp av ett nytt nyckelord för användning.
Skillnaden mellan struktur och klass
Struct och Class kan på något sätt likna varandra, men de har flera skillnader.
Skillnaderna inkluderar:
- En struktur är en värdetyp medan en klass är en referenstyp.
- Det nya nyckelordet krävs för att initialisera strukturer.
- Structs kan endast ha parametrerade konstruktörer och å andra sidan kan en klass ha både standard- och parametrerade konstruktörer.
Struct: Definition
En struktur kan definieras med hjälp av nyckelordet struct. En struktur kan definiera en ny datatyp med flera olika medlemmar för programmet.
En struktur kan initieras på ett sätt som liknar det för en objektinitiering, dvs. med hjälp av det nya nyckelordet. Eftersom en struktur är en värdetypsenhet är den snabbare att använda än ett klassobjekt. Varhelst det finns ett behov av att lagra data måste vi använda en struct. Å andra sidan, om du behöver överföra data är det lämpligt att använda klass än en struktur.
Exempel:
public struct Cuboid { public int length; public int width; public int height; } public class Program { public static void Main(string() args) { Cuboid cb = new Cuboid(); cb.length = 10; cb.width = 20; cb.height = 30; Console.WriteLine('The volume of cuboid is: {0}', (cb.length*cb.width*cb.height)); } }
Resultatet av följande program kommer att vara:
Volymen på kuboid är: 6000
bästa gratis datorrengörare för Windows 10
Förklaring
I exemplet ovan definierade vi en struct kuboid inuti vilken vi lagrade datatyper för kuboidens längd, bredd och höjd. Vi har ett annat klassprogram där vi har vår huvudmetod.
I huvudmetoden initialiserar vi strukturen 'Cuboid' med hjälp av det nya nyckelordet. Sedan använde vi objektet för att anropa och tilldela värden till datatyperna som är lagrade i strukturen. Sedan utförde vi en operation på variablerna från strukturen och skrev ut resultatet på konsolen.
Så om du vill använda någon egendom, händelser eller metoder måste strukturen initieras med det nya nyckelordet, annars ger det dig ett kompileringsfel.
Enums i C #
Enum är en uppsättning heltalskonstanter och liknar en struktur är det också en enhet av värdetyp. Det används huvudsakligen för att deklarera en lista över heltal genom att använda nyckelordet 'enum' i ett namnområde, klass eller till och med struktur. I enum ger vi ett namn till var och en av heltalskonstanterna, så att vi kan hänvisa dem med deras respektive namn.
Enum kan ha ett fast antal konstanter. Det hjälper till att förbättra säkerheten och kan också passeras.
Funktioner i Enum
- Enum förbättrar läsbarheten och upprätthållandet av koden genom att ge konstiga meningsfulla namn.
- Enum kan inte användas med konstanter av strängtyp.
- Enum kan innehålla konstanter som int, lång, kort, byte, etc.
- Som standard börjar värdet på enum-konstanter med noll
Förklarar enum
Syntaxen för att deklarera enum ges nedan.
enum { list of integer constants };
Alla enumkonstanter har standardvärden. Värdet börjar vid 0 och rör sig uppåt en efter en.
Exempel:
public enum Cuboid{ length, width, height } public class Program { public static void Main(string() args) { int l = (int)Cuboid.length; int w = (int)Cuboid.width; int h = (int)Cuboid.height; Console.WriteLine('The length is :{0}”, l); Console.WriteLine('The width is :{0}”, w); Console.WriteLine('The height is :{0}”, h); } }
Resultatet av följande program kommer att vara:
Längden är: 0
Bredden är: 1
Höjden är: 2
Förklaring
Vi arbetade med ett liknande exempel som vi lärde oss under strukturen. I det här exemplet har vi skapat ett enum som heter Cuboid. Detta enum innehåller tre medlemmar, dvs. längd, bredd och höjd.
Vi har ett annat klassprogram inom vilket vi har vår huvudmetod. En explicit cast har använts för att konvertera enumtypsvariabler till heltalstyp, sedan har vi lagrat deras värden i olika variabler i huvudmetoden och skrivit ut dem till konsol.
Som standard är värdet på det första numret noll, det andra har 1 och så vidare. Följaktligen, när vi skrev ut värdena, fick vi ovannämnda utdata.
Ändra värdet på Enum
Enum tillåter också användare att ändra standardstartindex för medlemmarna. När du har ändrat variabelns startindex kommer de efterföljande medlemmarna att ha sina värden uppdaterade i den stegvisa sekvensen.
Låt oss tilldela ett värde till den första medlemmen i enum som vi definierade i vårt tidigare exempel och se vad som händer:
public enum Cuboid { length = 10, width, height } public class Program { public static void Main(string() args) { int l = (int)Cuboid.length; int w = (int)Cuboid.width; int h = (int)Cuboid.height; Console.WriteLine('The length is :{0}”, l); Console.WriteLine('The width is :{0}”, w); Console.WriteLine('The height is :{0}”, h); } }
Resultatet av följande program kommer att vara:
Längden är: 10
Bredden är: 11
Höjden är: 12
Förklaring
När vi tilldelade enumets första medlem ett värde kommer alla efterföljande medlemmar i enumet att tilldelas med ökningen av det värdet. Som vi har definierat blir det första värdet 10, det efterföljande värdet blir 11 och nästa blir 12.
Användaren kan tilldela valfritt värde enligt eget val och alla medlemmar i enumet kommer automatiskt att tilldelas med ökningen av de användardefinierade värdena.
Egenskaper i C #
Egenskaper i C # är i princip namnet på gränssnittet, klasserna och strukturen. Egenskaper är en förlängning av medlemsvariablerna / metoden för struktur eller klass. De används för att läsa, skriva eller ändra värdet på de privata fälten.
Egenskaper nås precis som fälten. De har accessorer som kan användas för att hämta, ställa in och beräkna värdena. Vi kan också sätta logik medan vi ställer in värden i egenskaperna. Det kan också användas med den privata klassen som begränsar åtkomst utifrån, men samtidigt tillåter det användaren att använda egenskaper för att få eller ställa in värden.
Vad är accessorer?
Accessors of property utgör de uttalanden som kan användas för att läsa, skriva eller beräkna en viss egendom. Fastighetsförklaringen kan innehålla get, set eller båda.
Exempel:
public class Cube { private int side; //Declare a Side property of type integer public int Side{ get{ return side; } set{ side = value; } } } public class Program { public static void Main(string() args) { Cube cb = new Cube(); cb.Side = 5; Console.WriteLine('The volume of cube is :{0}', (cb.Side * cb.Side* cb.Side)); } }
När kodavsnittet ovan har kompilerats och exekverats observeras följande utdata.
Volymen på kuben är: 125
Förklaring
I exemplet ovan har vi en klass 'Cube' inuti vilken vi har förklarat en 'Side' -egenskap av typen heltal. Efter det har vi få och ställa in egenskap där vi har returnerat och tillhandahållit värdet till den variabla sidan.
vilsam webbtjänst intervju frågor och svar i java
Vi har en annan klass 'Program' med huvudmetoden inom vilken vi har initierat Cube-klassen och angett värdet för Side-egenskapen, och sedan har vi skrivit ut det beräknade resultatet till konsolen.
Slutsats
I den här handledningen lärde vi oss om klassens medlemsfunktioner. En medlemsfunktion kan fungera på vilket objekt som helst i klassen där det finns. Vi lärde oss också om konstruktörer och destruktörer.
Konstruktörer initieras automatiskt vid tidpunkten för skapande av klassobjekt medan destruktorer förstör klassen och används huvudsakligen för att ta bort minnestilldelningen efter avslutad körning. Konstruktörer kan vara av två typer, dvs. standard och parametrerade.
Destruktören accepterar inte någon parameter och returnerar inte heller något värde. Både Constructor och Destructors har namn som är exakt samma som klassnamnet. Vi lärde oss också om statiska variabler och statisk klass och hur de kan nås utan att använda några klassinstanser. Vi fick veta att en statisk klass bara kan ha statiska medlemmar.
Vi diskuterade också Structs eller strukturer. Structs är enheter av värdetyp och måste initieras för åtkomst.
Enum och egenskaper för C # diskuterades också. Enum är en uppsättning med namngiven heltalskonstant. På samma sätt som strukturen är det också en enhet av värdetyp. Enum kommer att ha sina medlemmar och varje medlem kommer att ha sitt eget standardvärde.
I slutet diskuterade vi egenskaper, som är en förlängning av medlemsvariablerna / metoden för struktur eller klass. De används för att hämta, ställa in eller ändra värdet på de privata fälten.
=> Se vår kompletta C # träningsserie här
Rekommenderad läsning
- Statisk i C ++
- Arv i C ++
- Klasser och objekt i C ++
- Användning av Selen Select Class för hantering av rullgardinselement på en webbsida - Selen Tutorial # 13
- Runtime Polymorphism In C ++
- Vänfunktioner i C ++
- Hånar privata, statiska och ogiltiga metoder med Mockito
- C # Klasser och objekt: En djupgående handledning med exempel