Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Интересная задача


Автор: gambit 1.6.2011, 14:36
Прислали задачку, с неожиданным ответом.

Код

class Program
 {
  static void Main(string[] args)
  {
   Class1 c = new Class1();
   c.Print(null);
  }
 }

 class Class1
 {
  public void Print(Object o)
  {
   Console.WriteLine("Object");
  }

  public void Print(IOException e)
  {
   Console.WriteLine("IOException");
  }

  public void Print(FileNotFoundException e)
  {
   Console.WriteLine("FileNotFoundException");
  }

  public void Print(Exception e)
  {
   Console.WriteLine("Exception");
  }
 }

вопрос, что напечатается на консоли??

ответ несколько удивил, и собственно вопрос, почему такой результат??
Кто знает подскажите пож. Кто не знает, попробуйте. Кто не знает и лень, то в приаттаченом файле ответ и маленькое наблюдение.


Автор: mihryak 1.6.2011, 15:42
при наличии нескольких вариантов, доспускающих последовательный каст, выбирается самый конкретный тип
object -> Exception -> IOException -> FileNotFoundException
добавь, к примеру, ещё ArgumentException, и код перестанет собираться, т.к. типы агрументов методов начнут ветвиться

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)