月曜日, 1月 21, 2008

C#特訓(C#概要-その1)

いきなり、話は脱線するがMicrosoft Visual C# 2008 Express Edition + Subversionができるかどうかを見てみたら、どうやらできないらしい。。。 Visual Stadio用のアドインとしてAnkhってのはあるんだけど、Expressは対応してないらしいです。 非常に残念だ。。。 気を取り直して、本題の「C#概要」を読んだまとめ 1.プログラムの構造と実行フロー Windows フォーム アプリケーション 手続型と違ってイベントドリブンなんですよ~って説明(このあたりはJavaと同じだね) Windowsベースアプリは通常親がすべての状態を参照することができてメッセージのやり取りが可能 これと同じような機能をデリゲーションってのでもできるらしい。(これはそのうち出てくるみたいだからスルーだな) コンソールアプリケーション 基本的にMainメソッドを含む1つのクラスで構成される。 後はC#の構造を覚えるなら公開されているソースコードを読んどきなさい!とのこと、概要に目を通したら見てみよう。 2.名前空間(namespace) Javaでいうところのパッケージですな。
using hoge.hoge;
で呼び出すらしい。 何かサラっと書いてあったのでビビったが、.NET Framework だけでも 80 以上の名前空間があり、1 つの名前空間には最大で数千のクラスがあるらしい。。。JavaDocみたいなのってどこにあるんだ?? 独自の名前空間について、説明では
プロジェクトの各名前空間用に個別のフォルダを作成することをお勧めします。
なんて言ってるんですが、分けなくても動くのかよ。。。 3.クラス 言わずと知れたOOPなクラスですな。
  • newでインスタンス作成
  • 静的(static)とインスタンスのメンバについて、後はstaticクラスもあるよってところかな?staticメンバをインスタンスメンバとして操作すると軽度のエラーが発生する可能性があるそうです。(しかし、何で軽度で済むんだ。。。
  • カプセル化の話(もう、今更だね。。。)
  • 継承については:(コロン)でやるらしい child : parent
  • ポリモーフィズムな話(オーバーライドな話)
  • コンストラクタ(すべてのクラスにあるそうな)ついでに変数の初期値についても説明があった「ゼロ (数値データ型)、false (ブール型)、または null (参照型) 」
  • オーバーロードな話「。オーバーロードにより、コードの柔軟性とわかりやすさが向上します。」(マジですか??
  • デストラクタの話、こいつについてはJavaなら基本的にガベージは自動的にされるので意識しなかった(シリアライズデータをいじるときくらいかな?)。ここでは「アンマネージ リソースを使用する場合を除き、デストラクタの実装が必要になることはまずありません。」とのことアンマネージリソースについては後で説明があると思うのでスルー
  • 構造体について、構造体・・・?なんだこりゃ??現時点ではTypeの一種として認識しておくことにしてスルー
サブのカテゴリとして
  • 方法 : オブジェクトでメソッドを呼び出す
  • 方法 : クラスから継承する
  • 方法 : 既定のパラメータをシミュレートする
  • 方法 : プロパティを宣言する
  • 方法 : オブジェクトにプロパティを設定する
に目を通す。 気になったのは、シール(sealed)クラスってのは継承しないようにした方が良いらしい。(Javaでいうところのfinalのことらしい) プロパティの宣言方法が「おぉー!」って思った。
private string name;
// A read-write instance property:
public string NameProperty
{
  get
  {
    return name;
  }
  set
  {
    name = value;
  }
}
こんなのでいいらしい。 とりあえず、まとめが長くなったので今日はここまで!

0 件のコメント:

failed to read qemu headerのときのメモ

かなり久々。。。 忘れないようにここに書きこんでおく。 ちょっとした手違いで libvirtでイメージを起動しようとすると failed to read qemu header なんておっしゃられて起動しない。。。 vmwareserverを使って...