C#の覚書き
JavaよりC#だよね♪
目次
null合体演算子
var testCode = GetCode() ?? DefaultCode();
GetCode()の戻り値が
・「null」の場合は、DefaultCode()の値が使用される
・「null」でない場合は、GetCode()の値が使用される
null条件演算子(C#6.0以降)
return testClass?.GetItem;
testClass変数が
・「null」の場合は、GetItemプロパティにはアクセスしないでnullを戻す
・「null」でない場合は、GetItemプロパティの値が使用される
//配列の場合
return tests?[0];
配列の場合は「.」は不要
tests配列が
・「null」の場合は、nullを戻す
・「null」でない場合は、tests[0]の値が使用される
LINQ(LINQで求めた値の要素を1つだけ取り出す)
var max = games.Max(x => x.Price);
var game = games.First(g => g.Price == max);
LINQで求めた値(上記だとPriceの最大値)を持つ要素を取り出す時に、1つのLINQで記述する事はできるが、Maxが複数回呼ばれる事になるので
処理を分けた方が良い
空文字列かの状態チェック
if (message == String.Empty)
message = "空文字でした";
空文字列またはnullかの状態をチェック
if (String.IsNullOrEmpty(message))
message = "空文字またはNullでした";
空文字列または空白文字列またはnullかの状態をチェック
if (String.IsNullOrWhiteSpace(message))
message = "空文字または空白文字列またはNullでした";
文字列が条件を満たしているか状態をチェック
//文字列が数字かどうか判定
var message = "987654321";
if (message == message.ALL(c => Char.IsDigit(c)))
message = "全て数字でした";
区切り文字で配列値を連結する
var test = new [] {"K", "O", "P",};
var testCsv = String.Join(",", test);
//testCsvには、"KOP"が設定される
可変長引数
public string Test(int index, params string[] args) {
return args[index];
}
//呼び出し
//Test(2, "aaa", "bbb", "ccc", "ddd");
//戻り値は"ccc"
オプション引数(C#4.0以降)
//2つ目と3つ目の引数にデフォルト値を設定
public void Test(int aaa, string bbb = "テストです", string ccc = "!!") {
var ddd = bbb + ccc;
}
//呼び出し
//Test(1);
//Test(2, "二番目");
//Test(3, "三番目", "♪♪");
呼び出しで2つ目または3つ目の引数を省略した場合は、デフォルト値が設定される