戻る
C#ノート
変数の種類
-
- 組み込み型 :あらかじめ
- ユーザー定義型
-
- 値型
- 値型の値渡し 実引数をメソッド側の仮引数にコピー
- 値型の参照渡し ref「値を参照渡しとして処理する」
- 参照型
- 参照型の値渡し 参照型のアドレス値をメソッド側の仮引数にコピー
- 参照型の参照渡し 通常が参照渡し
out「引数と因数の前に付けることで呼び出し元の変数にメソッド処理後の値を格納できる。」
トップへ
値
- オペレーター「演算する者」
- オペラント「演算の対象となるもの操作時には未知の者として扱われる」
- リテラル「演算結果やオペラントの中身、認知され値の確定したもの」
トップへ
メソッド
- メソッドのオーバーロード「引数の型と戻値が異なる場合、引数の個数が異なる場合に定義可能。戻値だけ型が異なる場合や引数のみ型が異なる場合には不可」
- インデクサーのオーバーロード「メソッドと同様」
- ローカル関数「メソッド内で定義する関数」
- ブロックスコープ「if,while,for,tryなどの制御ブロック内で定義された変数」
- オブジェクト初期化子「クラス外からインスタンスを作成する場合にフィールドを直接初期化するもの。コンストラクターよりも優先度が高い。」
可変長引数を持つメソッド
- 可変長引数はメソッドに一つ
- 引数リストの末尾にだけ指定可能
トップへ
継承
- 基底クラス
- オーバーライドの可否(virtualを付与するか否か)
- 基本となるメソッド
-
派生クラス
- 基底クラスのメソッド
- オーバーライドされたメソッド
- 派生クラス独自に定義されたメソッド
- 基底クラスは1つだけ
- メソッドの隠蔽はnew修飾子
- 隠蔽された基底クラスのメソッドはbase.メソッド名();で利用可能。
- 派生クラスでnewを付与し同名でメソッドを定義することができる
オーバーライド 基底クラスでvirtualを付与、派生クラスでoverrideを付与することで可能。オーバーライドの禁止はメソッドにsealedを付与。
継承時のコンストラクター
基底クラスのコンストラクター→派生クラスのコンストラクターの順に実行
継承時のデストラクター
派生クラスのデストラクター→基底クラスのデストラクターの順に実行
- sealed はstaticと同時にclassに付与できない(staticクラスは暗黙に継承不可)
- 配下にvirtualを付与できない(派生クラスが存在しないためオーバーライドすることはありえない)
- 配下にprotectedを付与できない(派生クラスを禁止することで、派生クラスからのアクセスはありえない)
トップへ
アップキャスト
「派生クラスから基底クラスへの変換」→常に可能。
ダウンキャスト
「基底クラスから派生クラスへの変換」→常に可能ではない。
トップへ
拡張メソッド
- staticクラスのstaticメソッドである必要がある。
- 第一引数にthisをつけて拡張するクラスを指定する。
- using命令で拡張元のクラスを
トップへ
ポリモーフィズム
「基底クラス型の変数を宣言し、派生クラスのオブジェクトを代入して、関数を呼び出した場合、変数の型ではなくオブジェクトの種類に依存して関数が実行される。つまり基底クラスに宣言された関数とそれを継承したクラスの関数ではオブジェクトに依存して関数は実行される。」
名称
- 抽象メソッド「中身を持たない関数」
- 抽象クラス「抽象メソッドを含むクラス」
トップへ
インターフェイス
「複数継承したい場合の抽象クラス、派生クラスは複数のインターフェイスを持つことができる」
明示的なインターフェイス実装
「異なるインターフェイス同士に同名のメソッドが存在する場合にメソッドの識別を行うことができるようにすること」
トップへ
例外処理
catchブロックの記述順序通りに優先して例外があった場合は処理を行う。
列挙体
データ型に指定できる型
byte,sbyte,short,ushort,int,uint,long,ulong
- 値は以降順列で定まる。
- ToString関数で名前を取得できる。
トップへ
構造体
- new演算子を付けずとも変数を定義した時点でメモリ確保される。
- デフォルトコンストラクター、デストラクターを定義できない。
- 定数、静的フィールド以外に初期値を指定できない。
- インターフェイスのみ継承可能(継承に関する修飾子、staticは利用できない。メンバーにはstaticを利用可)
- コンストラクターですべてのフィールドを初期化しないとならない。
入れ子クラス
- 基底で包含クラスの外からはアクセスできない。
- 入れ子になっていないクラスをトップレベルクラス
- using static トップクラス;と宣言することで外部参照可能。
パーシャルクラス
- 一つのクラスを複数のファイルで分割して定義ずる機能。
- パーシャルクラスでのみ定義可能
- privateメソッドのみ
- 戻値はvoidのみ
- 出力引数outは利用不可。(ref,parmは利用可)
- メソッドがなくてもエラーにならない。
トップへ
ジェネリック
- 型パラメーターを宣言する必要がある
トップへ
コンソールの非表示(初回一瞬だけ表示)
コンソールを表示しないためには、コンソール・アプリケーションのプロジェクト・プロパティの[アプリケーション]タブを開き、C#の場合は[出力の種類]を「コンソール アプリケーション」から「Windows アプリケーション」に、Visual Basicの場合は[アプリケーションの種類]を「コンソール アプリケーション」から「Windows フォーム アプリケーション」に切り替えればよい。
トップへ
SQLの利用
�T.Setting.csの作成
- ソリューションエクスプローラのアプリ名を右クリックしてプロパティーを開く。
- 設定ページで[名前]に任意の名前、[種類]を(接続文字列)、[スコープ]をアプリケーション、[値]には下記を入力
�U.App.configファイルの記述
- タグ内に下記を記述しているか確認。
トップへ
スレッド処理、タスク処理
- ThreadインスタンスにはObjectを引数とする関数しか引数として与えられない。
Threadの場合:
Taskの場合:
排他的処理
排他的処理の書き方
※排他的処理は空のobjectを作りlockで指定した処理をobjectとして保持することで可能となるのかもしれない。(つまり、作成した空のオブジェクトは、処理を保存するための場所として指定処理を格納することを()内に示しているのかもしれない。)
async修飾子、await演算子
- async修飾子をメソッドに付けることで、その内部において非同期処理をawait付きで記述することができる。
- 返却値を参照する必要がある場合にはTask型で記述する。この場合、メソッドを記述する際のreturnはTask<T>で指定したTの型にすることになる。戻り値を参照する場合には、Task<T>.Resultを参照する。
戻り値無:
戻り値有:
トップへ