c concepts constructor
Denne vejledning forklarer nogle af de vigtige begreber i C # programmering såsom konstruktør, destruktorer, statisk klasse, strukturer og enums:
I en af vores tidligere tutorials om objekter og klasser lærte vi, hvad en klasse og et objekt er.
Et objekt ligner et objekt fra den virkelige verden, og en klasse er en logisk samling af lignende slags objekter. Det er en af de mest grundlæggende typer, der findes i C #. I denne vejledning dykker vi dybt ned i de andre relaterede C # -koncepter.
=> Udforsk Complete C # Training Series her
I denne vejledning lærer vi om nogle vigtige aspekter af klasser, og hvordan kan vi bruge dem i vores programmer. Vi vil forsøge at oprette enkle C # -programmer baseret på de begreber, vi lærte i vores tidligere tutorials.
Hvad du lærer:
- Hvad er en konstruktør i C #?
- Destruktører i C #
- Statiske medlemmer i en klasse
- Statisk klasse i C #
- Structs In C #
- Forskellen mellem struktur og klasse
- Struktur: Definition
- Enums i C #
- Egenskaber i C #
- Konklusion
- Anbefalet læsning
Hvad er en konstruktør i C #?
Konstruktøren er en speciel type metode i C # programmeringssprog, der kaldes eller påkaldes automatisk, når et objekt fra den givne klasse oprettes.
Dens hovedfunktion er at initialisere datamedlemmerne til det nyoprettede objekt. Et af de mest karakteristiske træk ved konstruktøren er dets navn. Det har samme navn som klassen.
Konstruktørerne er dybest set af to typer:
- Standard
- Parameteriseret
C # Standardkonstruktør
Som navnet antyder, er standardkonstruktøren den grundlæggende konstruktør i en klasse. Det har ikke noget argument og påberåbes direkte på tidspunktet for oprettelse af objekt.
public class Program { public Program(){ Console.WriteLine('Constructor has been invoked'); } public static void Main(string[] args) { Program p = new Program(); } }
Resultatet af følgende program vil være:
Konstruktør er blevet påberåbt
Forklaring
Vi har defineret et konstruktør “Program” inde i klassen “Program”. Nu når vi initialiserer klassen inde i hovedmetoden, kaldes konstruktøren automatisk på.
Derfor bliver uanset hvilket kodestykke vi har opbevaret inde i konstruktøren påberåbt. Her har vi udskrevet en meddelelse 'Konstruktør er påberåbt' i konstruktørens krøllede seler, så når vi initialiserer klassen, bliver konstruktøren som standard initialiseret, og meddelelsen udskrives som output.
Parametreret konstruktør
Som navnet antyder, er parametriserede konstruktører konstruktøren med parametre. Disse konstruktører bruges til at videregive forskellige værdier til objekterne.
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 af følgende program vil være:
bedste program til at konvertere videofiler
Summen er: 5
Forklaring
I vores tidligere eksempel med standardkonstruktøren har vi vores hovedmetode i samme klasse. I dette eksempel har vi hovedmetoden i en anden klasse.
Vi har en klasse ved navn 'Detaljer', der indeholder en parametreret konstruktør, der accepterer to heltalværdier. Inde i konstruktøren udskriver vi summeringen af heltalene. Vi har en anden klasse kaldet 'Program', der indeholder vores hovedmetode. Inde i hovedmetoden har vi initialiseret klassen 'Detaljer'.
Som forklaret tidligere, når en klasse initialiseres, kaldes dens konstruktører automatisk. Således er vores konstruktormetode 'Detaljer' i dette tilfælde påberåbt, og når vi passerede parameteren under initialisering, udskriver den output.
Destruktører i C #
Destruktører er lige det modsatte af konstruktører. Det er en speciel metode i klassen, der påberåbes, når et klasseobjekt går ud af omfanget. På samme måde som en konstruktør er et destruktørnavn også nøjagtigt det samme som klassens navn, men med et præfiks på “~” (tilde).
Destructor accepterer heller ikke nogen parameter, og returnerer ingen værdi. Destructor ødelægger klasseobjekterne og bruges derfor hovedsageligt til at frigive hukommelse, efter at programmet er udført. En anden vigtig ting at bemærke om destruktoren er, at den hverken kan overbelastes eller arves.
Eksempel på ødelæggere:
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 af følgende program vil være:
Konstruktør er blevet påberåbt
Destructor er påberåbt
Forklaring
Vi brugte det samme eksempel, som vi brugte til at lære konstruktør. Vi har netop tilføjet en destruktor i programklassen (~ Program). Når vi initialiserer klassens objekt, bliver konstruktøren påberåbt, og klassens objekt oprettes. Dette udskriver sætningen 'Konstruktør er påberåbt' til konsollen.
Når udførelsen er afsluttet, og klasseobjektet går ud af omfanget, bevæger programmet sig mod destruktoren. Destruktøren påkaldes derefter, hvilket igen ødelægger objektet. Her har vi udskrevet en besked inde i destruktoren, der bliver udskrevet til konsol, efter at destruktøren er påberåbt.
Statiske medlemmer i en klasse
Klassens medlemmer kan erklæres statiske ved hjælp af det statiske nøgleord. Når et objekt erklæres som statisk, vil der uanset antallet af oprettede objekter kun være én kopi af det statiske objekt.
At være statisk indebærer, at der vil være en enkelt forekomst af medlemmet, der vil eksistere for en given klasse. Det betyder, at værdien af den eller de statiske funktioner eller variabler i klassen kan påberåbes uden at skabe et objekt til dem.
Statiske variabler bruges til at erklære konstanter, da deres værdier kan opnås direkte ved at påkalde klassen i stedet for at oprette en forekomst af den.
Eksempel:
public class Details { public static void stat(){ Console.WriteLine('Static method invoked'); } } public class Program { public static void Main(string[] args) { Details.stat(); } }
Resultatet af følgende program vil være:
Statisk metode påberåbt
Forklaring
I ovenstående eksempel har vi oprettet en klasse 'Detaljer', der indeholder en statisk metode 'stat'. Vi har en anden klasse 'Program', der indeholder hovedmetoden. I vores tidligere emner så vi, hvordan vi kan initialisere en klasse til adgangsmetoder. Men som vi diskuterede, kan man få adgang til klassens statiske medlemmer med klasseobjektinitialisering.
hvordan man skriver test case i excel ark
Således har vi i hovedmetoden netop påberåbt sig metoden ved hjælp af klassen direkte uden at skabe noget objekt. Programmets output udførte koden skrevet inden for den statiske metode. I dette tilfælde har vi udskrevet en besked til konsollen.
Statisk klasse i C #
En statisk klasse svarer til en normal klasse i C #. Den statiske klasse kan kun have statiske medlemmer, og den kan ikke instantieres. En statisk klasse bruges til at sikre, at klassen ikke instantieres. En statisk klasse erklæres ved at bruge nøgleordet statisk før nøgleordsklassen under erklæringen.
Eksempel:
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 af følgende program vil være:
Multiplikationsresultatet er: 16
Forklaring
I ovenstående eksempel har vi oprettet en statisk klasse 'Detaljer' og inden i den statiske klasse har vi oprettet en anden statisk metode 'gang'. Inde i metoden har vi nogle kodestykker, som vi vil udføre. Vi har også en anden klasse 'Program' med hovedmetoden.
Inde i hovedmetoden har vi påberåbt sig den multipliceringsmetode, der findes i den statiske klasse. Hvis du ser på vores hovedmetode, vil du se, at vi ikke har initialiseret eller oprettet et objekt til den statiske klasse i stedet for, at vi direkte har påkaldt klassen fra hovedmetoden.
Når vi således direkte påberåber sig multipliceringsmetoden ved hjælp af klassens navn og ved at angive parametre, udfører den koden og udskriver output.
Structs In C #
Værditypeenhed i C # kaldes struktur. Det hjælper brugeren med at gemme relaterede data af flere forskellige datatyper i en enkelt variabel. Som angivet er en struktur en værditypeenhed, der indeholder felter, metoder, konstruktører, operatorer, begivenheder osv. En struktur erklæres ved hjælp af nøgleordet 'struct'.
Funktioner af Structs:
- Det kan omfatte konstanter, metoder, egenskaber, indeks, operatører, konstruktører osv.
- Den kan ikke have nogen standardkonstruktør.
- Det kan implementere en grænseflade, men kan ikke arve med andre strukturer eller klasser.
- Strigter kræves initialiseret ved brug af et nyt nøgleord til brug.
Forskellen mellem struktur og klasse
Struktur og klasse kan på nogen måde ligne hinanden, men de har flere forskelle.
Forskellene inkluderer:
- En struktur er en værditype, mens en klasse er en referencetype.
- Det nye nøgleord kræves for at initialisere strukturer.
- Structs kan kun have parametriserede konstruktører, og på den anden side kan en klasse have både standard- og parametriserede konstruktører.
Struktur: Definition
En struktur kan defineres ved hjælp af struct-nøgleordet. En struktur kan definere en ny datatype med flere forskellige medlemmer til programmet.
En struktur kan initialiseres på en måde svarende til en initialisering af et objekt, dvs. ved hjælp af det nye nøgleord. Da en struktur er en enhed af værditype, er den hurtigere at betjene end et klasseobjekt. Uanset hvor der er behov for at gemme data, skal vi bruge en struct. På den anden side, hvis du har brug for at overføre data, anbefales det at bruge klasse end en struktur.
Eksempel:
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 af følgende program vil være:
Volumenet af cuboid er: 6000
Forklaring
I eksemplet ovenfor definerede vi en struct cuboid, hvori vi lagrede datatyper til cuboidens længde, bredde og højde. Vi har et andet klasseprogram, hvor vi har vores hovedmetode.
I hovedmetoden initialiserer vi 'Cuboid' -strukturen ved hjælp af det nye nøgleord. Derefter brugte vi objektet til at kalde og tildele værdier til de datatyper, der er gemt i strukturen. Derefter udførte vi en operation på variablerne fra strukturen og udskrev resultatet på konsollen.
Så hvis du vil bruge egenskaber, begivenheder eller metoder, skal strukturen initialiseres ved hjælp af det nye nøgleord, ellers giver det dig en kompileringsfejl.
Enums i C #
Enum er et sæt heltalskonstanter og ligner en struktur, det er også en enhed af værditype. Det bruges hovedsageligt til at erklære en liste over heltal ved hjælp af 'enum' nøgleordet inde i et navneområde, klasse eller endda struktur. I enum giver vi et navn til hver af de heltalskonstanter, så vi kan henvise dem ved hjælp af deres respektive navne.
Enum kan have et fast antal konstanter. Det hjælper med at forbedre sikkerheden og kan også krydses.
Funktioner i Enum
- Enum forbedrer læsbarheden og vedligeholdeligheden af koden ved at give konstante meningsfulde navne.
- Enum kan ikke bruges med strengkonstanter.
- Enum kan omfatte konstanter som int, lang, kort, byte osv.
- Som standard starter værdien af enum-konstanter med nul
Erklæring om enum
Syntaksen for at erklære enum er angivet nedenfor.
enum { list of integer constants };
Alle enum-konstanter har standardværdier. Værdien starter ved 0 og bevæger sig op ad gangen.
Eksempel:
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 af følgende program vil være:
Længden er: 0
Bredden er: 1
Højden er: 2
Forklaring
Vi arbejdede med et lignende eksempel, som vi lærte under strukturen. I dette eksempel har vi oprettet en enum ved navn Cuboid. Dette rum indeholder tre medlemmer, dvs. længde, bredde og højde.
Vi har et andet klasseprogram, inden for hvilket vi har vores hovedmetode. En eksplicit rollebesætning er blevet brugt til at konvertere enumtypevariabler til heltalstype, så har vi gemt deres værdier i forskellige variabler inde i hovedmetoden og udskrevet dem til konsol.
Som standard er værdien af det første enum nul, det andet har 1 og så videre. Derfor modtog vi ovennævnte output, da vi udskrev værdierne.
Ændring af værdien af Enum
Enum tillader også brugere at ændre medlemmernes standardstartindeks. Når du har ændret startindekset for variablen, opdateres de efterfølgende medlemmer deres værdier i den inkrementelle rækkefølge.
Lad os tildele en værdi til det første medlem af enummet, som vi definerede i vores tidligere eksempel, og se hvad der sker:
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 af følgende program vil være:
Længden er: 10
Bredden er: 11
Højden er: 12
Forklaring
Når vi tildelte det første medlem af enum en værdi, så vil alle de efterfølgende medlemmer af enum blive tildelt stigningen af denne værdi. Som vi har defineret, bliver den første værdi som 10, den efterfølgende værdi 11 og den næste bliver 12.
Brugeren kan tildele enhver værdi efter eget valg, og alle medlemmerne af enum bliver automatisk tildelt med forøgelsen af de brugerdefinerede værdier.
Egenskaber i C #
Egenskaber i C # er dybest set det navngivne medlem af interface, klasser og struktur. Egenskaber er en udvidelse af medlemsvariablerne / metoden til struktur eller klasse. De bruges til at læse, skrive eller ændre værdien af de private felter.
Du får adgang til egenskaber ligesom felterne. De har accessorer, der kan bruges til at hente, indstille og beregne værdierne. Vi kan også sætte logik, mens vi indstiller værdier i egenskaberne. Det kan også bruges med den private klasse, som begrænser adgang udefra, men samtidig giver det brugeren mulighed for at bruge egenskaber til at hente eller indstille værdier.
Hvad er tilbehør?
Tilgængere af ejendom udgør udsagn, der kan bruges til at læse, skrive eller beregne en given ejendom. Ejendomserklæringen kan indeholde get, set eller begge dele.
Eksempel:
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 ovenstående kodestykke er kompileret og udført, observeres følgende output.
Kubens volumen er: 125
Forklaring
I ovenstående eksempel har vi en klasse 'Cube', hvori vi har erklæret en 'Side' egenskab af typen heltal. Derefter har vi få og sæt ejendom, hvor vi er vendt tilbage og leveret værdien til den variable side.
bedste gratis websteder at se anime
Vi har en anden klasse 'Program' med hovedmetoden, inden for hvilken vi har initialiseret Cube-klassen og angivet værdien for Side-ejendommen, og derefter har vi udskrevet det beregnede resultat til konsollen.
Konklusion
I denne vejledning lærte vi om medlemsfunktionerne i klassen. En medlemsfunktion kan fungere på ethvert objekt i klassen, hvor den er til stede. Vi lærte også om konstruktører og destruktører.
Konstruktører initialiseres automatisk på tidspunktet for oprettelse af klasseobjekt, mens destruktører ødelægger klassen og bruges hovedsageligt til at fjerne hukommelsestildelingen efter afslutningen af udførelsen. Konstruktører kan være af to typer, dvs. standard og parametrerede.
Destruktoren accepterer ikke nogen parameter og returnerer heller ingen værdi. Både Constructor og Destructors har navne, der er nøjagtigt de samme som klassens navn. Vi lærte også om statiske variabler og statiske klasser, og hvordan de kan tilgås uden brug af klasseinstanser. Vi blev klar over, at en statisk klasse kun kan have statiske medlemmer.
Vi diskuterede også Structs eller strukturer. Structs er enheder af værditype og skal initialiseres for at få adgang.
Enum og egenskaber ved C # blev også diskuteret. Enum er et sæt navngivet heltalskonstant. I lighed med strukturen er det også en værditypeenhed. Enum vil have sine medlemmer, og hvert medlem vil have deres egen standardværdi.
I slutningen diskuterede vi egenskaber, der er en udvidelse af medlemsvariablerne / metoden til struktur eller klasse. De bruges til at hente, indstille eller ændre værdien af de private felter.
=> Se vores komplette C # træningsserie her
Anbefalet læsning
- Statisk i C ++
- Arv i C ++
- Klasser og objekter i C ++
- Brug af Selen Select Class til håndtering af dropdown-elementer på en webside - Selen Tutorial # 13
- Runtime polymorfisme i C ++
- Venfunktioner i C ++
- Mocking private, statiske og ugyldige metoder ved hjælp af Mockito
- C # Klasser og objekter: En grundig tutorial med eksempler