C#

今日からC#なる言語を勉強し始めた。
CにJavaの特徴をうまく取り込んだ言語だ。

【今日のまとめ】
1.配列の宣言


配列の宣言は方の後ろにを書くことで行う。Javaのようにさまざまな書き方
は許容してくれないようだ。

int
table; //not int table;


一次元配列の宣言
int table;


多次元配列の宣言
string[,] names = new string[5,4]


ジャグ配列の配列の宣言
ジャグ配列は配列の中に配列が入ったもの。宣言→初期化の流れは少し複雑。
配列をひとつインスタンス化した後にforループをまわし、そのループ内で中
入れる配列をインスタンス化しi番目に入れる。

TODO:要補完

2.変数の宣言


変数を宣言する際に読み取り/書き込みのプロパティを設定できる。
聴きなれない言葉ではあるが、宣言した変数がset/get可能かどうかというのを
設定できる。

private string Name
{
  get
  {
    return myName;
  }
  set
  {
    myName = values
  }
}

values変数はsetする際の引数を示す特殊な変数。

#abstract修飾子がついている場合はget内は実装しない

public abstract double Area
{
  get;
}



3.オーバーライド
Javaとかなり違う。new,override,virtualなどの修飾子を使ってオーバーライド
を行う。Hogeクラスと、Hogeを継承したextHogeクラスが存在する。Hogeには
call()メソッドが存在し、extHogeは下記の二つの方法でcall()メソッドを
オーバーライドしている。

・new修飾子をつけてオーバーライドした場合
スーパークラス型の変数にサブクラスのインスタンスを代入した場合は、
スーパークラスのメソッドが呼ばれる
・override修飾子をつけてオーバーライドした場合
スーパークラス型の変数にサブクラスのインスタンスを代入した場合でも、
オーバーライドしたメソッドが呼ばれる。被オーバーライドメソッドには
virtual修飾子がついている必要がある。

newによるオーバーライドのほうがコストが低いらしい。
TODO:なぜかを書く

4.Javaとの比較(概念)
(J)import=(C#)using
(J)jar=(C#)DLL
(J)foreach=(C#)Iterator

Antidote

Antidote

これほしいな