C#: Этюды, часть 2
Продолжение, начало здесь
Начну с соцопроса: какие Вы знаете способы выполнить код до начала функции Main() (надеюсь, что перечислят все известные мне и парочку неизвестных :) )?
А теперь задачка:
Перед Вами небольшой код, выводящий два символа (кстати, проверьте себя: в каком порядке они выведутся?). Необходимо вывести подчеркивание "_" между этими символами.
Желаю удачи!
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, причем основано оно на совсем других механизмах, но прекрасно работает! )
Начну с соцопроса: какие Вы знаете способы выполнить код до начала функции Main() (надеюсь, что перечислят все известные мне и парочку неизвестных :) )?
А теперь задачка:
Перед Вами небольшой код, выводящий два символа (кстати, проверьте себя: в каком порядке они выведутся?). Необходимо вывести подчеркивание "_" между этими символами.
Конечно, задача была бы тривиальной без ограничений. А они следующие:
- не определять другой метод Main
- не использовать идентификатор Console в качестве имени класса, свойства, поля и т.д. (спасибо irc-юзеру Gopneg)
- не изменять код всех существующих методов: App.Main, X.X, Y.Y
- не изменять определение поля X.y
- не добавлять новые поля в класс X
using System;
class Y
{
public Y()
{
Console.Write("0");
}
}
class X
{
public X()
{
Console.Write("o");
}
Y y = new Y();
}
class App
{
static void Main()
{
X x = new X();
}
}
* 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, причем основано оно на совсем других механизмах, но прекрасно работает! )



комментарии (43)