18. オブジェクトの初期化をスマートに書く(2)
初期化子
// Add関数による初期化(Dictionary型)
var dict = new Dictionary<string, int>();
dict.Add("one", 1);
dict.Add("two", 2);
// 初期化子による初期化(Dictionary型)
var dict = new Dictionary<string, int>()
{
{ "one", 1 },
{ "two", 2 },
};
http://cs.hatenablog.jp/entry/2013/06/24/190945
19. 一時的に利用する型の定義を省略する
匿名型
// 匿名型を使わない定義の場合
var characterId = 0;
var characterName = "";
// 匿名型を使う定義の場合
var character = new { Id = 0, Name = "" };
// character.Id
// character.Name
http://ufcpp.net/study/csharp/sp3_inference.html
20. 配列を作成する際に型を省略する
暗黙型付け配列
// 通常の配列作成
var array = new string[] { "1", "2", "3", "4", };
// 暗黙型付け配列
var array = new [] { "1", "2", "3", "4", };
http://gushwell.ldblog.jp/archives/51115733.html
21. 引数の順序を自由に書く
名前付き引数
static int Sum(int x = 0, int y = 0, int z = 0)
{
}
int s1 = Sum(x: 1, y: 2, z: 3);
int s2 = Sum(y: 2, z: 3, x: 1);
int s3 = Sum(y: 1);
http://noriok.hatenadiary.jp/entry/2013/08/18/014408
25. 検索に特化したメソッドを使う(2)
Findメソッド
// 配列の場合
var result = Array.Find(array, n => n == 0);
// List型の場合
var result = list.Find(n => n == 0);
http://www.atmarkit.co.jp/fdotnet/extremecs/extremecs_04/extremecs_04_03.html
26. newで生成するオブジェクトを定数にする
static readonly
// OK
private const int MaxValue = 100;
// エラー
private const Vector2 Position =
new Vector2(100, 100);
// OK
private static readonly Vector2 Position =
new Vector2(100, 100);
http://msdn.microsoft.com/ja-jp/library/aa645753.aspx
27. 安全にキャストする
as演算子
// 失敗したら例外発生
var str = (string)obj;
// 失敗したらnullを返す
var str = obj as string;
http://ichitcltk.hustle.ne.jp/gudon/modules/pico_rd/index.php?content_id=131
31. SQLライクなループ構文を書く(1)
LINQ
// 偶数を検索する
var array = new []{ 1, 2, 3, 4, 5 };
// ループ構文を使用する場合
var result = new List<int>();
foreach (var x in array)
{
if (x % 2 == 0)
{
result.Add(x);
}
}