C#の覚書き

2021年7月27日

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つ目の引数を省略した場合は、デフォルト値が設定される

2021年7月27日.Net,プログラム

Posted by こっぷ