C#についてがっつり勉強しようと思い、購入した技術書。
まだまだ序盤だが、評判通りのかなりの良書の予感。
uuc1h.hatenablog.jp
では、前回同様、まとめていきたいといきます。
複数の値の代入方法
このやり方は知らなかったので、メモ。
for (int feet = 1; feet <= 10; feet++) { double meter = feet * 0.3048; // feetが{0}に、meterが{1}に代入される // {0.0000}は、meterの値を小数点第4位まで表示する書式設定 Console.WriteLine("{0}ft = {1:0.0000}m", feet, meter); }
定数について
定数の定義方法は、以下の通り。
// constは、staticと解釈されるので、staticをつける必要なし private const double ratio = 0.3048;
けど、constした定数は、publicにしない方がいいとある。
「けど、他クラスから定数を呼び出す場合は結構あるし、そもそもなんでpublicにするべきなのか?」と思っていると、バージョン管理問題に関連するらしい。
※ここで、バージョン管理問題の詳細は割愛
publicにして、他クラスからアクセスさせたい場合は、static readonlyを使えばいい。
public static readonly double Ratio = 0.3048;
オブジェクト初期化子
オブジェクト生成をする際、各フィールドの初期値を設定する。
Sale sale = new Sale { ShopName = "ぱんや"; ProductCategory = "食品"; Amount = 120; }
Dictionary型をforeachで扱う際
KeyValuePair型を1つずつ取り出す。ここらへん、あんまりピンとこなかったが、ソースで表すとしっくりきた。
Dictionary<string, int> amountPerStore = sales.GetPerStoreSales(); foreach(KeyValuePair<string, int> obj in amountPerStore) { Console.WriteLine("{0}{1}", obj.Key, obj.Value); }
KeyValuePair型は、キーと値がペアになっていて、上記のようにそれぞれ取り出せる。
C#のインターフェイスについて
public class List<T> : IList<T>, ICollection<T>,,,
上記のように記載されていたら、List
そのため、
List<int> list = new List<int>() {1, 2, 3,4, 5}; ICollection<int> collection = list; var count = collection.Count; IEnumerable<int> enumerable = list;
- Listクラスは、ICollection型の変数に代入でき、ICollectionインターフェイスが定義するプロパティ、メソッドが使える。
- プロパティ、メソッドの具体的な動作は、Listクラスに実装されている。
といった点が特徴である。
メソッドの戻り値や引数にインターフェイスを指定しておくと、プログラム修正に強くなる。
例:引数がこれまでList
varによる暗黙の型指定
メソッド内のローカル変数宣言の際、型名の代わりにvarを使うと、コンパイラが自動で型を判断してくれる。
var dict = new Dictionary<string, int>();
なお、代入の右側から型が明らか出ない場合は、varを使用しないこと。
今日は、こんな感じで終わります。
こうやって、まとめると頭に入るけど、やっぱ時間かかるな。