перегрузка метода и динамическое ключевое слово в C # - PullRequest
3 голосов
/ 29 апреля 2011

Я до сих пор не обновился до 4.0, иначе я бы сам проверил фрагмент кода.Но я надеюсь, что некоторые эксперты могут прокомментировать это.

В следующем коде будет ли вызываться соответствующий метод Print() во время выполнения?Законно ли это в C # 2010 так называть?

public void Test()
{
    dynamic objX = InstantiateAsStringOrDouble();

    Print(objX);
}

public void Print(string s)
{
    Console.Write("string");
}

public void Print(double n)
{
    Console.Write("double");
}

Спасибо!

Ответы [ 2 ]

3 голосов
/ 29 апреля 2011

Да, это действительно работает. Он проверит использование динамического файла во время выполнения и вызовет соответствующий метод, однако вы потеряете почти всю проверку во время компиляции, поэтому я уверен, что это именно то, что вы хотите сделать.

2 голосов
/ 29 апреля 2011

Да, и вы даже можете сделать это:

public dynamic InstantiateAsStringOrDouble() { return 0.5; }

или

public dynamic InstantiateAsStringOrDouble() { return "hello"; }

, и все будет работать как положено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...