Type system (ikke færdig endnu) Flashcards
(20 cards)
Hvad er et objekt?
Det er en instans af en klasse eller struct.
Hvordan opretter man en ny instans af en klasse i C#?
Man gør det ved at bruge keywordet “new” efterfulgt at klassenavnet.
Hvad kan være involveret, når man opretter en ny instans af en klasse?
Det kan involvere kald til constructors, ligesom i Java.
Har C# primitiver, eller er alt typed?
C# har ingen primitiver, alt er typed.
I stedet for at bruge constructors, hvilket alternativ kan man bruge til at tildele værdier til fields og properties for et objekt?
Object initialisers.
Hvad er object initialisers?
De skriver effektivt koden for dig, så man kan tildele værdier til fields og properties.
Hvordan gør man properties tilgængelige for kun object initialisers?
Man skal bruge keywordet “init” når man definerer propertiesene.
Giv eksempler på, hvordan bestemte objekter kan skrives på en native måde i C#.
int => System.Int32
bool => System.Boolean
string => System.String
Hvad er structs?
Det er en datatype i C#, der tillader oprettelse af en sammensat værdi.
Ligesom klasser kan structs have members som fields, properties og metoder, men i modsætning til klasser er structs værdityper i stedet for reference-typer.
Hvorfor er det smart at bruge structs?
Structs bruges i C# for bedre ydeevne, mindre hukommelsesforbrug og når der ikke er behov for identitet eller delte referencer.
Hvad er forskellen mellem objekter og primitiver i C#?
Objekter er forekomster af klasser eller structs, mens primitiver er datatyper som int, double, bool osv.
Kan typer udledes af compileren i C#?
Ja, typer kan udledes af compileren og betjenes, såsom at bruge metoden GetTypeCode() på et objekt.
Hvad er operator overload?
Det er en ændring af, hvordan operators fungerer for brugerdefinerede typer i C#.
Hvilke typer operatører kan overbelastes i C#?
Unary operators: + - ! ~ ++ –
Binary operators: + - * / %
Comparative operators: == != < > <= >=
Hvordan defineres method overloads på brugerdefinerede typer i C# til operator overloading?
De er defineret som offentlige statiske metoder på klassen ved hjælp af “operator” keywordet.
Hvad kræves for en unary operator overloading i C#?
Skal tage én parameter af samme type og returnere én instans.
Hvad kræves for en binary operator overloading i C#?
Skal tage to parametre af samme type og returnere én instans.
Hvad kræves for en comparative operator overloading i C#?
Skal tage to parametre af samme type og returnere en bool-værdi.
Hvornår skal operatøroverbelastning bruges i C#?
Det bør bruges sparsomt, typisk for typer, hvor der er et eksplicit brugstilfælde, såsom vektoraritmetik.
Hvad er tommelfingerreglen for operator overloading?
At man skal lade den overloadede metode kalde en anden metode med et rigtigt navn (f.eks. Add, Subtract, Equals).