przekazywanie metody dometody.

0

Witam.
Pisze pierwszy program z c# i mam problem poniewaz mam dwie metody statyczne w klasie

class cos{
       public static void abc(int a, int b, bool c){
              //jakis kod
       }
       public static int abcd (_____ , int a, int b, bool c){
             //jakis kod
       }
}

w miejscu podkreslenia mam przekazac metode abc do metody abcd i zupelnie nie wiem jak to zrobic. Licze na pomoc.

1

Stwórz własne delegate o takiej samej sygnaturze co ta funkcja bądź użyj generycznej, Action<>.

0

Kilka sposób, np: http://stackoverflow.com/a/380231 (i inne w tym temacie).

0

tylko ze ja mam napisac tylko ta klase i te 2 funkcje i nic wiecej. Czy delegate moge uzyc w tej klasie?

5

Tak, pozwalam.

0

witam ponownie wszyskto sie kompiluje odpowiednio tylko jak wywołac to w main ?

public class Test{ 
          class cos{
                  public delegate void aabc(int a, int b, bool c);
                  public static void abc(int a, int b, bool c){
                              //jakis kod
                   }
                  aabc dengined = new aabc(abc);
                  public static int abcd (abc  , int a, int b, bool c){
                            dengined(a,b,c); 
                           //jakis kod
                   }
          }
            public static void Main(){
            // ************
            }

}

Jak w miejscu kropek wywołać funkcje abcd?

0

Normalnie.

cos.abcd(cos.aabc,1,2,false));

Ale piszesz kod nieczytelnie. Zawsze wszystko nazywasz w stylu aabcd?

public class Test{ 
          class cos{
                  public static void abc(int a, int b, bool c){
                              //jakis kod
                   }
                  public static int abcd (Action<int,int,bool> dengined, int a, int b, bool c){
                            dengined(a,b,c); 
                           //jakis kod
                   }
          }
            public static void Main(){
                cos.abcd(cos.abc, 1,2, false);
            }
}

albo na fafnaście innych sposobów, włączając w to funkcje anonimowe i wyrażenia lambda.

0

Nie nazywam tylko pisze projekt i po prostu nie chciałem użyć zmiennych z tego projektu. co do tego pierwszego wywołania to nie działa tzn wywala :
" prog.cs(126,39): error CS0122: Test.Function.dengined' is inaccessible due to its protection level prog.cs(126,39): error CS0120: An object reference is required to access non-static member Test.Function.dengined' "

0

co do pierwszego to wiem ze chodziło o zrobienie publicznego a co do 2 to zupiełnie nie wiem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1