ラベル C# の投稿を表示しています。 すべての投稿を表示
ラベル C# の投稿を表示しています。 すべての投稿を表示

2009年11月14日土曜日

C#の仕様書を印刷してみた

Visual Studio2005から、C#の1.2と2.0の仕様書を印刷してみた。
中閉じ、とじしろ10mmで約120枚。
印刷して、中央で切って、のり付けして、ハンドドリルで穴をあけて、針金を通して製本テープで留めてみた。
製本はできたけど、切ったときちゃんと中央で切れていなかったのか、背の部分がガッタガタ。

http://www.geocities.jp/ryou_tanoue/

のページをみると、平とじっていう方法みたい。

他に、糸かがりとじっていうのがあるので、今度C#3.0の仕様書を印刷するときにやってみよう。
多分印刷するときに、分冊指定,5枚ごとにすれば多分よさそう。
綿糸は、裁縫のときに使う糸、麻糸は、タコ糸でいいのかな?

2009年11月7日土曜日

C#のswitch文のフォールスルー

できないもんだと思ってたけど、会社のC#教材を読み漁ってたらgoto文で代用できるみたい。
こんな感じ。
int a = 2;
switch (a)
{
case 1:
a++;
break;
case 2:
a++;
goto case 3;
case 3:
a++;
goto case 1;
default:
a = 0;
break;
}


でも、こんなのやるべきじゃないね。

C#の言語仕様のありか

http://msdn.microsoft.com/ja-jp/library/ms228593.aspx
の通り、VisualStudio2008を入れたら一緒に入るみたい、

C:\Program Files\Microsoft Visual Studio 9.0\VC#\Specifications\1041\CSharp Language Specification.doc

を見てみると、おおぅ、C#なんか半歩いく音楽教本みたいだ。日本語でよかった。ページ数は、、、575ページもあるんだ。
とりあえず、ちょっとづつ読むとして、、、下のようなクラス定義があったとして、フィールドの初期化とインスタンスコンストラクタのどっちが先に動くか分かればいいんだけど…

using System.Collections.Specialized;
class cls
{
public cls()
{
this.data.Add(1, "Start");
}
private ListDictionary data = new ListDictionary();
}



2009/11/14追記:
仕様書を見ていてら。
10.11.2 インスタンス変数初期化子
インスタンス コンストラクタにコンストラクタ初期化子が指定されていない場合、または base(...) 形式のコンストラクタ初期化子が指定されている場合は、そのコンストラクタにより、そのクラスで宣言されたインスタンス フィールドの variable-initializer で指定された初期化が暗黙的に実行されます。これは、コンストラクタへのエントリ直後、および直接基本クラスのコンストラクタの暗黙的な呼び出しの前に実行される一連の代入に対応します。変数初期化子は、クラス宣言に出てくる順番どおりに実行されます。

だそうです。
だからいいみたい。