Avatar billede torejensen Nybegynder
26. juli 2005 - 11:05 Der er 4 kommentarer

Brug af operator på en interface referance

Når man forsøger at bruge en operator (f.eks. ==) på en interface referance, ser det ud som om det er Objects implementation der bruges istedet for den der er implementeret på den specialiserede type.

Alternativt kan man jo bruge Equals metoden, som smertefrit kan overloades på den specialiserede type, men det er umiddelbart noget pænere at bruge ==.

Jeg har brug for denne funktionalitet til implementeringen af et ReadOnly interface til en egenudviklet type. Her skulle 2 instancer gerne kunne sammenlignes uden skelen til om den ene er ReadOnly og den anden ikke.
Avatar billede runesoft Nybegynder
26. juli 2005 - 13:02 #1
Et interface er jo netop noget du ikke kan implementere, og hvordan skulle frameworket vide hvilken implementering det skal bruge?

Hvis du absolut vil bruge == (jeg er ikke tilhænger), så kan du jo prøve at lave det som en abstract klasse i stedet.
Avatar billede arne_v Ekspert
26. juli 2005 - 19:27 #2
Der er ikke nogen principiel grund til at man ikke kunne kalde den faktiske
implementering ligesom for metoder.

Men operatorer i C# skal være static og så kan man hverken bruge interfaces
eller en abstrakt basis klasse.
Avatar billede torejensen Nybegynder
27. juli 2005 - 14:23 #3
Det ville nu virke hvis man brugte en abstract klasse istedet for interfacet, men så begrænser man muligheden for at arve fra en egentlig baseklasse.
Avatar billede arne_v Ekspert
27. juli 2005 - 18:31 #4
static metoder er ikke polymorfe
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester