C♯言語

  • Microsoftが開発したオブジェクト指向プログラミング言語。
  • WindowsアプリケーションやXBox360やPSVitaの開発が可能。




.NETFramework

Microsoftが開発した実行環境
Windowsに共通プログラミングモデルを提供


名前空間

using Systemと記述されている場合、
Systemという名前空間を使用していることを表す。


エントリーポイント

Main関数から開始される


完全修飾名

定義した名前が所属する名前空間をその都度記述する。
  • System.Console.WriteLine("HW");


変数

予約語は使えない。
使える文字はアルファベット・アンダースコア・2byte文字。


データ型

  • 値型:実際の値を保持
  • 参照型:アドレスを保持


decimal型

ビット長128bitで小数点以下28桁まで正確に表示できる。
値を代入する時は数値の後にMをつける。
  • decimal num = 100.0M;


論理型

Booleanかbool。
trueかfalseを取る。
  • bool = false;


文字型

unicode文字を格納する型。(Char型)
1文字をシングルクォーテーション(')で囲む。
直接文字コードを書いてもいい。


C#のデータ型

値型は構造体で作られている。
  • MaxValue・・・その型の最大値を表す。
  • MinValue・・・その型の最小型を表す。
  • Parse・・・・文字列をそのデータ型にして返す。


WriteLine関数

引数で受け取ったデータを画面に出力する
末尾に自動で改行コードが追加する。
  • Console.WriteLine("ABC" + 100 + 1.0 + 'a');
  • 改行コードが自動的に追加されないWrite関数もある


フォーマット指定子

Cのprintf関数にある変換指定のような記述が可能。
  • Console.WriteLine("num1={0}、num2={1}", num1, num2);


if文

条件式はbool型の値を返す必要がある。


switch文

各case文の最後にbreakが書かれていないとエラーになる。
default文も同様である。
つまり、そのまま下にある次の処理に進まない。
  • これを「フォールスル―の禁止規則」という。


foreach文

先頭から末尾までの処理ループを簡単に行える
  • foreach(データ型 変数名 in コレクション){}
  1. int[] num = new int[]{10, 10};
  2. foreath(int list in num)
  3. {
  4. Console.WriteLine(list);
  5. }
  6.  


オブジェクト型

どんな値でも代入出来る。
  • object obj;
値ではなく参照を保持している。
  • 値型からオブジェクト型に変換することを「ボックス化」という。(参照型の代入はこれに含まれない)
  • オブジェクト型を値型に直す場合は同じ型でキャストする。これを「ボックス化解除」という。


is演算子

参照型の値が指定した型であるか判定する。
trueかfalse。
  • object obj = 10;
  • obj is int;


as演算子

参照型の値を指定した型でキャストする。
キャストに失敗するとnull。
  • object obj = 10;
  • string str;
  • str = obj as string;


文字列型

Stringクラスで表す。
  • Length・・・文字列の長さを返す
  • CompareTo・・・比較する
  • IndexOf・・・検索する
  • Copy・・・コピーする


配列

データ型[] 配列名 = new データ型[要素];
  • 添字で上限や下限を1でも超えると実行時エラーになる。


多次元配列

データ型[] 配列名 = new データ型[要素数,要素数];


ジャグ配列

多次元配列の長さを可変にする。
  • int[][] list = new int[2][]; // 行数指定
  • int[0] = new int[2];
  • int[1] = new int[3];


クラス

  1. class クラス名
  2. {
  3. アクセス指定子 データ型 変数名; // 変数宣言
  4.  
  5. // 関数宣言
  6. アクセス指定子 戻り値型 関数名(引数)
  7. {
  8. 処理;
  9. }
  10.  
  11. }
  12.  
  • メンバ一つ一つにアクセス指定子を設定。
  • クラスは参照型なので必ずオブジェクトを生成(new)する。
  • コンストラクタは生成時に1度だけ呼ばれる。
  • デストラクタはガベージコレクションで破棄されるタイミングで呼ばれる。
  • refは本来関数の引数がコピーされた値を渡す所をそのまま与え書き換える事を可能とする。
  • outは参照を渡す時に初期値を設定したくない時に使う。
  • 可変長引数は関数に渡す引数の数を動的に決める。
  • 静的メンバとクラスは宣言時に実体が生成されオブジェクトを作成しなくてもクラス内からアクセス出来る。
  • プロパティとは変数の値を設定・取得する機能。(get{} set{})


インデクサ

メンバ変数の配列をクラスの配列のように扱える。

  1. 型 this [インデックスの型 インデックス名]
  2. {
  3. get{}
  4. }
  5.  

継承

あるクラスを引き継ぎ、新しいクラスを作る。

  • 名前の隠蔽
+ ...
派生先メンバが呼び出され、基本クラスのメンバが隠蔽される。
基本クラスのメンバを使用したい場合はbaseキーワードを付ける。
  • 抽象クラス
+ ...
派生先で定義してほしい関数などを記述する。
クラスの前にabstractキーワード
  • 継承不可能にする
+ ...
sealedキーワードを付ける
  • クラスを分割定義する
+ ...
クラスの前にpartialキーワードを付ける。
※同一クラス内でも分割可。意味は無いが。


インタフェース

抽象クラスのみのクラスが定義される。
  • 宣言:interface インタフェース名
  • 使用:class クラス名 ; 基本クラス名, インタフェース


構造体

  • 構造体は値型。
  • 継承不可。(インタフェース可)
  • 初期化子使用不可。
  • コンストラクタは引数無しでは定義不可。
  • デフォルトコンストラクタはメンバを0で初期化する。
  • デストラクタは定義不可。
  • staticを付けると静的メンバになり、クラス名からアクセス可。



ファイル入出力

  • バイトベース
+ ...
[バイトベースの読み書き]
FileStreamクラスを使用する。
  • FileStream(string filename, FileMode mode)

オープンモード
  • FileMode.Create:ファイル新規作成。同名ファイル存在時上書き。
  • FileMode.Open:同名ファイルを開く。
  • FileMode.Create:ファイル存在時は開き、なければ新規。
  • FileMode.Append:追加書き込みで開く。

読込・書込専用にする場合、別のコンストラクタを使用。
  • FileStream(string filename, FileMode mode, FileAccess how)

アクセスモード
  • FileAccess.Read:読込専用
  • FileAccess.Write:書込専用
  • FileAccess.ReadWrite:両用

ReadByte関数
  • int ReadByte()
ファイルから1バイト読み込む。

WriteByte関数
  • void WriteByte(byte b)
ファイルに1バイト書き込む

close関数
  • void close()
ファイルを閉じる
  • 文字ベース
+ ...
[文字ベースの読み書き]
StreamReader・StreamWriterを使う。FileStreamのラッパーライブラリ
  • StreamWriter(string filename, bool appendFlag)
appendFlagにtrueの場合、追加書き込み指定。
  • StreamReader(string path)

Write関数
  • void Write(string value)
引数で受け取ったデータを文字列として書き込む
オーバーロードされていてさまざまな型の値を文字列にして書き込める。

WriteLine関数
  • void WriteLine(string format, object arg0)
引数で受け取ったデータを文字列として書き込む。
自動的に改行コードが追加される。

Read関数
  • int Read()
ファイルから1文字読み込んで返す。

ReadWrite関数
―string ReadLine()
ファイルから1行読み込んで返す。


Windowsフォームアプリケーション

  • Application.Run関数
メッセージループで開始して引数で渡されたフォームを表示する。


イベント

クリックされた、キーが入力された等の挙動

イベント駆動式
フォームアプリケーションはイベント等が発生すると
対応するプログラムが実行される。

イベントハンドラ
イベントが発生した時に呼び出される関数。
最終更新:2013年08月02日 14:06