アレがアレでアレ

(できれば)プログラミング関係のことを書きたい

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");

気になったものがあれば追加していきます。

おわり。