poniedziałek, 21 października 2013

Problem z statycznymi metodami

Może kiedyś się spotkałeś z klasą, która posiadała dwie metoda (jedna statyczna, druga instancyjna) o jednakowej nazwie,ale innych parametrach i wywołanie nie działało tak jak byś się tego spodziewał. Dla zwyczajnej klasy mamy metodę, która przyjmuje object jako parametr.
public class StaticTestClass
{
        public void Do(object str)
        {
            Console.WriteLine("instance: Do");
        }
}

A wywołanie tej metody działa normalnie:
public void Test()
{
  StaticTestClass abc= new StaticTestClass();
  abc.Do("ASD"); 
}

Jeżeli byśmy mieli dodatkową metodę statyczną, która przyjmuje dokładniejszy typ:
public class StaticTestClass
{
   public static void Do(string str)
   {
      Console.WriteLine("static: StaticTestClass.Do");
   }

   public void Do(object str)
   {
      Console.WriteLine("instance: Do");
   }
}

To mamy wtedy błąd kompilacji
public void Test()
{
  StaticTestClass abc= new StaticTestClass();
  abc.Do("ASD"); //cannot be accessed with an instance reference
}



Brak komentarzy:

Prześlij komentarz