ブログ 2016/12/08 小ネタ チェック例外とUnion型 今日の話は、C# 7で入る型スイッチや、さらにその先で予定されている、パターン マッチングや、代数的データ型(特にUnion型)というもので、例外処理の仕方が変わるかも、という話です。 例外 例外にはいくつかの性質があります。 まず、挙動としては、以下の2点が特徴的でしょう。 ロング ジャンプ: 複数のメソッドをまたいで、遠く離れた場所に移動する 型スイッチ: 例外の型を見て分岐処理を行う 例外に含められる情報としては、以下の2つが特に有用でしょう。 メッセージ(M… 続きを読む 2016/12/07 小ネタ インデックス付き foreach foreach ステートメントで、インデックス付きで列挙したいことが時々あります。 今回は、そういうときの対処方法について。 というか、C# 7が待ち遠しくなる話。 配列やList<T>であれば以下のようにも書けます。 for (int i = 0; i < length; i++) { var item = array[i]; Console.WriteLine($"index: {i}, value: {item}"); } IEnumer… 続きを読む 2016/12/06 小ネタ コレクション初期化子 昨日のオブジェクト初期化子に続き、今日はコレクション初期化子の話。 コレクション初期化子ってのは、例えば以下のようなやつのことです。 // この、{} の部分がコレクション初期化子。 var x = new List<int> { 1, 2, 3, 4, 5 }; このコレクション初期化を使える条件は、Add メソッドを持っていて、かつ、 IEnumerable を実装していることです。 最低限の実装をしてみると、以下のような感じ。 class MyList… 続きを読む 2016/12/05 小ネタ オブジェクト初期化子 今日の小ネタは、オブジェクト初期化子について、意外と知られてないらしい話。 問い 唐突ですが問題です。以下の3つのコードはそれぞれどういう意味でしょう。 var x = new Line { A = new Point { X = 1, Y = 2 }, B = new Point { X = 3, Y = 4 }, }; var x = new Line { A = { X = 1, Y = 2 }, B = { X = 3, Y = 4 },… 続きを読む 2016/12/04 小ネタ 式の評価順序 C#小ネタと言いつつ、IL小ネタになりがちだったので、今日はC#小ネタらしく。 最初にちょっとしたクイズ。 まず、中身は何でもいいんですが適当な2引数のメソッドを用意します。 例として、単純な足し算でも用意しておきましょう。 static int F(int x, int y) => x + y; 以下の2つのコードの挙動は同じでしょうか?違うでしょうか? 1つ目: 一時変数を使用 var temp = F(2, 3); var result = F(1, te… 続きを読む 新しい投稿へ 過去の投稿へ
2016/12/08 小ネタ チェック例外とUnion型 今日の話は、C# 7で入る型スイッチや、さらにその先で予定されている、パターン マッチングや、代数的データ型(特にUnion型)というもので、例外処理の仕方が変わるかも、という話です。 例外 例外にはいくつかの性質があります。 まず、挙動としては、以下の2点が特徴的でしょう。 ロング ジャンプ: 複数のメソッドをまたいで、遠く離れた場所に移動する 型スイッチ: 例外の型を見て分岐処理を行う 例外に含められる情報としては、以下の2つが特に有用でしょう。 メッセージ(M… 続きを読む
2016/12/07 小ネタ インデックス付き foreach foreach ステートメントで、インデックス付きで列挙したいことが時々あります。 今回は、そういうときの対処方法について。 というか、C# 7が待ち遠しくなる話。 配列やList<T>であれば以下のようにも書けます。 for (int i = 0; i < length; i++) { var item = array[i]; Console.WriteLine($"index: {i}, value: {item}"); } IEnumer… 続きを読む
2016/12/06 小ネタ コレクション初期化子 昨日のオブジェクト初期化子に続き、今日はコレクション初期化子の話。 コレクション初期化子ってのは、例えば以下のようなやつのことです。 // この、{} の部分がコレクション初期化子。 var x = new List<int> { 1, 2, 3, 4, 5 }; このコレクション初期化を使える条件は、Add メソッドを持っていて、かつ、 IEnumerable を実装していることです。 最低限の実装をしてみると、以下のような感じ。 class MyList… 続きを読む
2016/12/05 小ネタ オブジェクト初期化子 今日の小ネタは、オブジェクト初期化子について、意外と知られてないらしい話。 問い 唐突ですが問題です。以下の3つのコードはそれぞれどういう意味でしょう。 var x = new Line { A = new Point { X = 1, Y = 2 }, B = new Point { X = 3, Y = 4 }, }; var x = new Line { A = { X = 1, Y = 2 }, B = { X = 3, Y = 4 },… 続きを読む
2016/12/04 小ネタ 式の評価順序 C#小ネタと言いつつ、IL小ネタになりがちだったので、今日はC#小ネタらしく。 最初にちょっとしたクイズ。 まず、中身は何でもいいんですが適当な2引数のメソッドを用意します。 例として、単純な足し算でも用意しておきましょう。 static int F(int x, int y) => x + y; 以下の2つのコードの挙動は同じでしょうか?違うでしょうか? 1つ目: 一時変数を使用 var temp = F(2, 3); var result = F(1, te… 続きを読む