Как стать автором
Обновить

C#: Этюды, часть 2

Время на прочтение2 мин
Количество просмотров1.5K
Продолжение, начало здесь

Начну с соцопроса: какие Вы знаете способы выполнить код до начала функции Main() (надеюсь, что перечислят все известные мне и парочку неизвестных :) )?

А теперь задачка:

Перед Вами небольшой код, выводящий два символа (кстати, проверьте себя: в каком порядке они выведутся?). Необходимо вывести подчеркивание "_" между этими символами.
Конечно, задача была бы тривиальной без ограничений. А они следующие:

  • не определять другой метод Main
  • не использовать идентификатор Console в качестве имени класса, свойства, поля и т.д. (спасибо irc-юзеру Gopneg)
  • не изменять код всех существующих методов: App.Main, X.X, Y.Y
  • не изменять определение поля X.y
  • не добавлять новые поля в класс X


using System;<br><br>class Y<br>{<br>  public Y()<br>  {<br>    Console.Write("0");<br>  }<br>}<br><br>class X<br>{<br>  public X()<br>  {<br>    Console.Write("o");<br>  }<br>  Y y = new Y();<br>}<br><br>class App<br>{<br>  static void Main()<br>  {<br>    X x = new X();<br>  }<br>}<br><br>* This source code was highlighted with Source Code Highlighter.


Желаю удачи!

PS
итак, у нас два победителя: mace был первым и угадал авторское решение: http://habrahabr.ru/blogs/net/77039/#comment_2241079
а хабраюзер bobermaniac предложил способ элегантно обойти моё ограничение на переопределение Console: http://habrahabr.ru/blogs/net/77039/#comment_2241109

Кстати, вопрос о вызове кода до Main всё еще актуален! Пока предложен самый очевидный — статический конструктор класса.

PPS
Внезапно, еще одно решение предложил SHSE: http://habrahabr.ru/blogs/net/77039/#comment_2243183, причем основано оно на совсем других механизмах, но прекрасно работает! )
Теги:
Хабы:
Всего голосов 25: ↑17 и ↓8+9
Комментарии43

Публикации

Истории

Работа

.NET разработчик
61 вакансия

Ближайшие события

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область