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

Comparison<T> デリゲートの使い方

List<T> クラスの Sort メソッドは引数に Comparison<T> デリゲートを取ります。 Comparison<T> デリゲートの定義は次のようになっています。 public delegate int Comparison<in T>(T x, T y) Comparison<T> デリゲートのインスタンスを作成し、List.Sort メソッドを呼び出す</t></in></t></t></t>…

インスタンスメソッドを変数に格納する

インスタンスメソッドを変数に格納するサンプルです。 用途としては、いくつかのメソッドのうちからランダムなメソッドを呼び出したいときに、 一時的に配列に格納したいとき等に使います。 using System; class Test { public void Foo() { Console.WriteLi…

小町算

1□2□3□4□5□6□7□8□9 = 100 という数式の□の中に、+, -, 空白のいずれかを入れて、正しい数式を完成させるプログラムです。 using System; using System.Collections.Generic; using System.Linq; class Program { const int EMPTY = -1; // 空白 const int AD…

select 句を重ねるには into を使う。または let 句を使う

Enumerable.Select メソッドを複数呼び出している式を クエリ式に変換する方法です。 select 句の後ろに into を使う。するとクエリを継続できる。 let 句を使う。 using System; using System.Collections.Generic; using System.Linq; class Program { sta…

Enumerable.Cast<T> は int を long にキャストできない

Enumerable.Cast メソッドで、要素を int から long にキャストすることは出来ないようです。 $ csharp Mono C# Shell, type "help;" for help Enter statements below. csharp> var xs = new[] { 1 }; csharp> xs.Cast<long>(); // System.InvalidCastException E</long>…

引数なしの Any() は、シーケンスが空でないかを判定する

Enumerable.Any() は、以下の 2 種類のメソッドが定義されています。 Enumerable.Any(IEnumerable) Enumerable.Any(IEnumerable, Func<T, Boolean>) 引数を取らないほうの Enumerable.Any() は、シーケンスが空でなければ true を、空であれば false を返します。 $ csha</t,>…