C#の構文メモ
自分がC#書くときにいちいち調べてしまうものとかをメモとしてまとめようと思います。
内容とか順番はバラバラ
??演算子
null合体演算子と呼ばれるもの。
値がnullか判定してnullじゃないときは左、nullのときは右の値が返る
int? i = null; var result = i ?? 1; // iはnullなのでresult = 1
null条件演算子
?.
演算子の前がnullであればnullを返し、nullでなければその後の処理結果を返す。
List<string> s1 = null; List<string> s2 = new List<string> { "a", "b", "c" }; var result1 = s1?.Count; // null var result2 = s2?.Count; // 3
キャスト
()演算子とas演算子でキャストすることができる。
キャストできなかったとき、()は例外が投げられ、asはnullが返る。
()はどんな型でもいいが、asは参照型のみキャストできる。
object a = 1; Console.WriteLine(a as string); Console.WriteLine((string)a);
プロパティ
自動プロパティ
class Person { public int age { get; set; } public int height { get; set; } }
初期値を入れる場合
public int age { get; set; } = 20;
getterだけ必要な場合はset
を消すだけでよい。
getだけのプロパティは初期値を与えるか、コンストラクタで値を設定することで初期化が可能。
class Person { public int age { get; } public int height { get; set; } public Person(int age, int height) { this.age = age; this.height = height; } }
文字列補間
よくある、文字列に変数の値を埋め込むやつ。
言語ごとに微妙に違ったりするので忘れやすい。
文字列の前に$
つけ、{}
の中に変数を入れる。
var age = 10; Console.WriteLine($"ゆうた君は{age}歳です。"); // ゆうた君は10歳です。
小数点
Floor
: 切り捨てCeiling
: 切り上げRound
: 四捨五入
var a = Math.Floor(123.5); // 123 var b = Math.Ceiling(123.4); // 124 var c = Math.Round(123.4); // 123
可変長引数
params
を指定することでメソッドの引数を可変にできる。
配列のみ指定可能。
可変長なので引数を渡さないこともできる。
public static void Hoge(params string[] words) { foreach (var word in words) Console.WriteLine(word); } Hoge("apple", "banana", "strawberry");
気になったものがあれば追加していきます。
おわり。