C#:練習曲、パート2

続けて、 ここから始めましょう



まず、調査から始めましょう。Main()関数の開始前にコードを実行するためにどのような方法を知っていますか(私が知っているすべてのものといくつかの未知のものをリストすることを願っています:))。



そして今、パズル:

以下に2つの文字を表示する小さなコードを示します(ちなみに、自分で確認してください。表示される順序は?)。 これらの文字の間にはアンダースコア「_」を表示する必要があります。

もちろん、タスクは制限なしに簡単になります。 そして、それらは次のとおりです。



  • 別のMainメソッドを定義しないでください
  • コンソールの識別子をクラス、プロパティ、フィールドなどの名前として使用しないでください。 (irc-user Gopnegに感謝)
  • 既存のすべてのメソッドのコードを変更しないでください:App.Main、XX、YY
  • Xyフィールドの定義を変更しないでください
  • クラス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

そのため、2人の勝者がいます。 メイスが最初で、著者の決定を推測しました: http : //habrahabr.ru/blogs/net/77039/#comment_2241079

bobermaniac habrayuzerは、コンソールの再定義に関する私の制限をエレガントに回避する方法を提案しました: http : //habrahabr.ru/blogs/net/77039/#comment_2241109



ちなみに、Mainの前にコードを呼び出すという問題は依然として重要です。 これまでのところ、最も明白なものが提案されています-クラスの静的コンストラクター。



PPS

突然、別の解決策がSHSEによって提案されましたhttp : //habrahabr.ru/blogs/net/77039/#comment_2243183 、それは完全に異なるメカニズムに基づいていますが、それはうまく機能します! )



All Articles