Avatar billede connorz Nybegynder
26. februar 2007 - 12:37 Der er 7 kommentarer og
1 løsning

Bruge operators som metode parameter

Hejsa

Et hurtigt spørgsmål. Kan man give en metode en operator som parameter? Ville fx være smart i nedenstående eksempel:

delegate bool comparer(byte b1, byte b2);
bool method(byte[] b1, byte[] b2, comparer c) {
  for (int i=0; i<b1.Length; i++) {
    if (!c(b1[i],b2[i])
      return false;
  }
  return true;
}

== operatoren er et eksempel på en "metode", der overholder delegate comparer. Kan man så give "method" == operatoren som parameter på nogen måde?
Avatar billede kalp Novice
26. februar 2007 - 12:48 #1
Nu ved jeg ikke om jeg har forstået dit spørgsmål helt korrekt, men du kan vel lave et interface med en metode og så lade forskellige klasser implementere det interface.

og så kan du lave din funktionalitet i den metode de skal skal indeholde og alle kan sendes som parameter til den metode.
Avatar billede connorz Nybegynder
26. februar 2007 - 12:56 #2
I mit ovenstående eksempel vil jeg fx gerne kunne kalde metoden med:
method(b1,b2,==)

metoden returnerer så true, hvis alle elementer i array'ene er ens (==). Men syntaksen dur ikke. Spørgsmålet er, om man kan angive == operatoren på en anden måde (den overholder jo delegate comparer).

Jeg ved, at jeg jo blot kunne lave metoder, såsom:
bool eq(byte b1, byte b2) {
  return b1==b2;
}

og så bruge min metode:
method(barray1, barray2, eq);

men tænkte at der måske var en mere direkte vej når nu operatoren netop er en "metode", der udfører ovenstående...
Avatar billede kalp Novice
26. februar 2007 - 13:07 #3
Det har jeg ikke set før, men det kan da godt være man kan:)
Jeg ville llave en klasse og sende med istedet.

    class Udregn
    {
        public int Minus(int x, int y)
        {
            return x - y;
        }
        public int Pluds(int x, int y)
        {
            return x + y;
        }
        public bool Ligmed(int x, int y)
        {
            if (x == y)
                return true;
            else return false;
        }
    }

og så kan kalde den metode du har brug for i den..
Avatar billede kalp Novice
26. februar 2007 - 13:09 #4
men ja i det bliver du stadig nød til at sende en ekstra string parameter f.eks som kan fortælle hvilken metode der skal køres.

men det er sende en operator med over har jeg desværre ikke set før.
Avatar billede connorz Nybegynder
26. februar 2007 - 13:12 #5
Jeg kan ikke rigtig se, hvordan den klasse er brugbar til mit eksempel :O
Avatar billede connorz Nybegynder
26. februar 2007 - 13:13 #6
Hmm... mon ikke C# glimrende delegates funktion er et udmærket udgangspunkt...?
Avatar billede kalp Novice
26. februar 2007 - 13:18 #7
Det kan man sikkert.. kan også være noget operator overloading kan benyttes, men du kan lige se hvad der kommer af andre inputs om lidt:)
Avatar billede connorz Nybegynder
15. marts 2007 - 09:08 #8
Hmm... det var der åbenbart ikke rigtig svar på - jeg lukker den her...
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