2016-11-01から1ヶ月間の記事一覧

速度のために List クラスに Last 拡張メソッドを定義しようとしたけど要らなかった

やろうとしたこと List<T> の最後の要素を取得するメソッドが欲しい Enumerable.Last メソッドがある だけど、シーケンスを辿るので O(N) で遅いのでは? 先に結論から言うと、IList<T> インターフェース を実装しているなら、 Enumerable.Last は O(N) ではなく O</t></t>…

タプルを == 演算子で比較、Equals() で比較

using System; class Program { static void Main() { var a = Tuple.Create(1, 2); var b = Tuple.Create(1, 2); Console.WriteLine(a == b); // False Console.WriteLine(a.Equals(b)); // True } } 実行結果です。 False True タプルを Dictionary のキー…

2 つの Dictionary をひとつにまとめる

両方の Dictionary に同じキーが含まれる場合は、Sum() で足し合わせます。 using System; using System.Collections.Generic; using System.Linq; class Program { static Dictionary<int, int> Add(Dictionary<int, int> a, Dictionary<int, int> b) { return a.Concat(b).GroupBy(e => e</int,></int,></int,>…

0,1,0,1,0,1... を繰り返すシーケンス

using System; using System.Collections.Generic; using System.Linq; class Program { static IEnumerable<int> ZeroOne() { int n = 0; while (true) { yield return n; n ^= 1; } } static void Main() { Console.WriteLine(string.Join(",", ZeroOne().Take(</int>…