読者です 読者をやめる 読者になる 読者になる

インデクサ

インデクサは、プロパティを拡張したようなもので、オブジェクトのメンバに配列のような添字でアクセスできる・・・。 さらに、プロパティと同じく、getとsetでアクセス制限もできる・・・。 オブジェクトの中に、配列やリストのようなコレクションをメンバ…

usingステートメント

これまで、Disposeによるリソース解放は、finallyで手動で行うような形になっていた・・・。 usingステートメントを使うと、IDisposableインターフェイス実装オブジェクトについては、finallyがなくても自動でリソース解放してくれる・・・。CustomReader.cs…

finally

finallyは、tryブロックの中で例外が発生しても発生しなくても実行すべき処理を書く場所・・・。 今回は、2つのファイルを連続して読み込んで内容を出力・・・。 2つ目で例外が発生しても、1つ目のファイルを閉じる処理は実行するような形にする・・・。 Mai…

Hello, world!(C#)

C#のコンソールで・・・。今回は空のプロジェクトで・・・。ソースを追加・・・。コードファイルでHelloWorld.cs・・・。[参照の追加]でSystemを追加・・・。あとは、Console.WriteLineで"Hello, world!"・・・。こんな感じ・・・。Test/HelloWorld.cs at ma…

例外処理

C#の例外処理も、基本的にはJava、C++と同じような感じ・・・。tryブロックで、System.Console.ReadLineで標準入力を読み込み、int.Parseで整数値にして、xに代入する・・・。 (System.Console.ReadLineや、intをクラスみたいに扱える理由とかは、後々で・・…

プロパティ

これまで、privateメンバにアクセスできるメソッドとして"SetXXX"や"GetXXX"などのいわゆるsetter/getterというものを定義してきた・・・。 これらが何故存在するかというと、渡された値を設定時や取得時にチェックして問題があれば別の処理ができるところに…

interface

インターフェイスももちろん作れる・・・。 先頭にinterfaceをつけるだけ・・・。BaseClassを、とする・・・。 iとstrに値をセットするこれまでのもの・・・。ここで数値なら加算、文字列なら連結をするインターフェイスIAddを宣言・・・。また、iとstrそれ…

abstract

C#も抽象クラスを作れる・・・。先頭にabstractとつけると、抽象クラスとなる・・・。 コンストラクタ名やメソッド名を出力しているだけ・・・。ちゃんとした実装は、派生クラスDerivedClassで・・・。 Setだけわざとオーバーライドしていない・・・。抽象ク…

virtual

派生クラスメソッドの定義による基底クラスメソッドの隠蔽はnewで行った・・・。 newでは、派生クラスメソッドが呼ばれるか、基底クラスメソッドが呼ばれるかはインスタンスを代入したオブジェクト変数の型によって決まる・・・。 BaseClass base = new Deri…

new修飾子

いきなり結構飛ぶけど・・・。基底クラスを継承した派生クラスを定義するとき、基底クラスと同じ名前のメンバ(メソッドの場合は引数の数や型も)を定義すると、派生クラスオブジェクトからは派生クラスで定義したメソッドが実行される・・・。 このとき、基底…

foreach文

同じ型のデータを複数まとめたものをコレクションといい、配列もその一つ・・・。 前回は配列から値を取り出すのにfor文を使ったが、配列を含めコレクションならforeach文が使えるので、今回はそれで値を取り出す・・・。配列に値をセットするところまでは同…

配列

配列を定義して、値をセットしたり、値の中身を出力したりしてみる・・・。newで要素数5の配列arrayを生成・・・。arrayの各要素に適当に値を代入していく・・・。for文とConsole.WriteLineで、各要素の値を出力・・・。 array[0] = 7 array[1] = 4 array[2]…

ref

C#で、変数などをメソッドへ参照渡しする場合は、refを使う・・・。2つの変数の値を交換するSwapメソッドを作ってみる・・・。aを10、bを20とする・・・。この時点でそれぞれの値を出力・・・。Swapメソッドを呼ぶ・・・。 参照渡しする場合、変数の前にref…

コンストラクタ

コンストラクタで初期化処理を定義する・・・。引数なしのコンストラクタでは、iを0、strを"-"に初期化する・・・。引数付きのコンストラクタでは、渡されたnをiに、sをstrに代入する・・・。この辺は変わりない・・・。MainClassでは、Class1オブジェクトcl…

クラス

自らクラスを定義し、そのクラスのオブジェクトを使ってみる・・・。Class1クラスを定義・・・。privateメンバのint型フィールドi、string型フィールドstrを準備・・・。整数値と文字列を先程のiとstrにセットするメソッドSetを定義・・・。WriteLineでiとst…

bool型

ここからC#・・・。C#でも真偽値を持つbool型を使える・・・。bool型変数をb1からb3まで用意・・・。 b2はfalseに初期化・・・。 あと、int型xを10に初期化・・・。b1にtrueを代入・・・。この時点でSystem.Console.WriteLineでb1, b2を出力・・・。xが10と…

Mainメソッド

C#はJavaなどと同じようにクラスで構成されている・・・。 なので、メインクラスとなるクラスのMainメソッドがエントリポイントとなる・・・。コンソールに"MainMethod"と表示するプログラムを作ってみる・・・。プロジェクトを新規作成する・・・。 ここで…