Type system (ikke færdig endnu) Flashcards

1
Q

Hvad er et objekt?

A

Det er en instans af en klasse eller struct.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Hvordan opretter man en ny instans af en klasse i C#?

A

Man gør det ved at bruge keywordet “new” efterfulgt at klassenavnet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Hvad kan være involveret, når man opretter en ny instans af en klasse?

A

Det kan involvere kald til constructors, ligesom i Java.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Har C# primitiver, eller er alt typed?

A

C# har ingen primitiver, alt er typed.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

I stedet for at bruge constructors, hvilket alternativ kan man bruge til at tildele værdier til fields og properties for et objekt?

A

Object initialisers.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Hvad er object initialisers?

A

De skriver effektivt koden for dig, så man kan tildele værdier til fields og properties.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Hvordan gør man properties tilgængelige for kun object initialisers?

A

Man skal bruge keywordet “init” når man definerer propertiesene.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Giv eksempler på, hvordan bestemte objekter kan skrives på en native måde i C#.

A

int => System.Int32
bool => System.Boolean
string => System.String

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Hvad er structs?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Hvorfor er det smart at bruge structs?

A

Structs bruges i C# for bedre ydeevne, mindre hukommelsesforbrug og når der ikke er behov for identitet eller delte referencer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Hvad er forskellen mellem objekter og primitiver i C#?

A

Objekter er forekomster af klasser eller structs, mens primitiver er datatyper som int, double, bool osv.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Kan typer udledes af compileren i C#?

A

Ja, typer kan udledes af compileren og betjenes, såsom at bruge metoden GetTypeCode() på et objekt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Hvad er operator overload?

A

Det er en ændring af, hvordan operators fungerer for brugerdefinerede typer i C#.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Hvilke typer operatører kan overbelastes i C#?

A

Unary operators: + - ! ~ ++ –
Binary operators: + - * / %
Comparative operators: == != < > <= >=

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Hvordan defineres method overloads på brugerdefinerede typer i C# til operator overloading?

A

De er defineret som offentlige statiske metoder på klassen ved hjælp af “operator” keywordet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Hvad kræves for en unary operator overloading i C#?

A

Skal tage én parameter af samme type og returnere én instans.

17
Q

Hvad kræves for en binary operator overloading i C#?

A

Skal tage to parametre af samme type og returnere én instans.

18
Q

Hvad kræves for en comparative operator overloading i C#?

A

Skal tage to parametre af samme type og returnere en bool-værdi.

19
Q

Hvornår skal operatøroverbelastning bruges i C#?

A

Det bør bruges sparsomt, typisk for typer, hvor der er et eksplicit brugstilfælde, såsom vektoraritmetik.

20
Q

Hvad er tommelfingerreglen for operator overloading?

A

At man skal lade den overloadede metode kalde en anden metode med et rigtigt navn (f.eks. Add, Subtract, Equals).