Type system (ikke færdig endnu) Flashcards
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.