・using,whileを利用してのファイル読み込み
using( StreamReader sr = File.OpenText("ファイル名")){
While(!sr.EndOfStream){
string line = sr.ReadLine();
・・
}
}
usingキーワードを使用する事で、オブジェクトがいつ使用済みになるのかを明確に出来る。
・静的コンストラクタが呼ばれるタイミングはそのクラスのメンバに対して初めてアクセスされた時のみ
static Person(){ }
・値型から参照型への変換(ボックス化)、参照型から値型への変換(ボックス解除)
<ボックス化>
int x = 100;
object obj;
obj = (object)x;
値型はスタック領域にデータが保存されるが、参照型はヒープ領域にデータが保存され、スタック領域に参照情報が収納される。
String型の足し算によるコピーはCPU,メモリの点から使用しないのが懸命
for(10000回ループ) str += "ABC"
単純に"ABC"が追加されるのではなく、追加元のstrを新たなヒープ領域にコピーし、さらに"ABC"が足される。
ガベージコレクションにより開放がされるまでメモリを占有し続ける。
StringBuilderクラスを使用する。
for(10000回ループ) strbl.Append("ABC") ← 一瞬で終わる。
配列
スタックに参照、ヒープにデータが入る。
何気に便利だが、重いArrayList
ArrayListクラスは複数のデータ型を混在させることが出来る。
ArrayList al = new ArrayList(); al.Add = 123; al.Add = "abc"
なぜか、値の格納時にボックス化を行っているから。
object array = new object[5];
array[0] = (object)123;というイメージか。エラーになってしまったが。
取り出すときは基本的にボックス解除する必要がある。
インデクサ:オブジェクトに対して、配列のようなアクセスを可能にする。Listなどで
List strList = new List();
strList.Add("test"); Console.WriteLine(strList[0]);と アクセスできるがこれはコレクションを扱うクラスではインデクサが設定済みのためである。
Dictionaryクラス
キーと値をペアで管理する。
var obj = new Dictionary<string,int>
最終更新:2015年01月26日 20:26