Wywoływanie metod statycznych.

0

Witam.
Mam taki kod:

Program.cs

  class Program
    {

        static void Main(string[] args)
        {

            var person = new Person { Name = "Lucas" };
            person.SaySomething();
            Console.ReadKey();
        }
    }

    public static class Extension
    {
        public static void SaySomething(this Person person)
        {
            Console.WriteLine("My name is " + person.Name);
        }
    }

Person.cs

public class Person
    {
        public string Name;
    }

Jakim cudem to działa poprawnie? Metoda SaySomething jest statyczna, czyli jak wiadomo nie może być wywoływana na rzecz konkretnego obiektu. W powyższym przykładzie jest i wyświetla poprawnie. Czy to ma związek z tym, że w parametrze jest podane this Person person? Prosiłbym o wytłumaczenie.

1

Racja, metoda jest statyczna - niemniej, dzięki słowu kluczowemu this metoda SaySomething() jest dodana do (czyli jest rozszerzeniem) klasy Person, tak więc jest od tej pory jakby w tamtej klasie. Czyli można ją wywołać na rzecz obiektu tej klasy.

Możesz zobaczyć opis tutaj: http://stackoverflow.com/questions/846766/use-of-this-keyword-in-formal-parameters-for-static-methods-in-c-sharp.

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