サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
csharp30matome.seesaa.net
今回は、ラムダ式を使うことによって得られるメリットについて考察します。 ラムダ式について最初から学びたい方は、前回の記事を御覧ください。 前回のコードでは、引数なし、戻り値なしのラムダ式を使用しましたが、今回のサンプルコードでは、引数のあるラムダ式を使用しています。 Action<int>型の変数には、引数int型、戻り値なしのラムダ式を代入出来ます。 (ちなみに、Action<int, int>ならint型2つ、Action<int, int, string>ならint型2つ、string型1つを引数に持つメソッドが代入可能) では、以下のコードを御覧ください。 class Program { static void HeavyJob(Action<int> report) { for (int i = 1; i <= 100; i++) { // 時間のかかる処理を実行していると仮定(
前回の続きです。 今回は、ラムダ式が上位スコープの変数にアクセス出来ることを利用した実用的な例を示します。 Threadクラスは、別スレッドで処理するメソッドをThreadStartデリゲート型で受け取ります。 このThreadStartデリゲートにラムダ式を使用することが出来ます。 以下のコードを御覧ください。 class Program { static void Main(string[] args) { string message = "スレッド内で表示する文字列:"; // 別スレッドで処理するラムダ式 ThreadStart action = () => { for (int i = 0; i < 5; i++) { // 1秒スリープ Thread.Sleep(1000); // Mainメソッドのローカル変数を参照 Console.WriteLine(message +
ラムダ式の解説も終わりに近づいてきました。 今日はラムダ式に使える、汎用デリゲート型の一覧です。 ラムダ式の書き方のバリエーションと簡単な使い方をまとめました。 以下のコードを御覧ください。 class Program { static void Main(string[] args) { // Func // 戻り値int - 引数なし Func<int> func1 = () => 0; // 戻り値int - 引数(int)『引数の型を省略』 Func<int, int> func2 = (x) => x * 2; // 戻り値int - 引数(int)『引数の型を明示』 Func<int, int> func3 = (int x) => x * 2; // 戻り値int - 引数(int)『括弧を省略』 Func<int, int> func4 = x => x * 2; // 戻
C#3.0のラムダ式に関する記事のまとめページです。 1.【ラムダ式】 はじめの一歩 一番簡単なラムダ式の使い方 2.【ラムダ式】 ラムダ式のメリット ラムダ式はメソッドの処理内容をカスタマイズ出来る! 3.【ラムダ式】 定義済みデリゲート一覧 .NET Frameworkで定義されている汎用デリゲート型一覧表 4.【ラムダ式】 上位スコープ変数の参照 実質的にC#のクロージャと言えるラムダ式 5.【ラムダ式】 ThreadクラスとThreadStartデリゲート ラムダ式をThreadクラスで使用するには? 6.【ラムダ式】 ダミーのラムダ式 何も処理しないラムダ式を書くには? 7.【ラムダ式】 汎用デリゲートの使い方 よく使うAction<T>, Func<T>, Predicate<T>型の使い方をおさらい 次回からは、var変数について書く予定です。 今後ともよろしくお願いします。
まずは最も簡単なラムダ式のサンプルコードを見てみましょう。 以下のコードの4行目「() => Console.WriteLine("Hello, World!!");」がラムダ式と呼ばれるものです。 ラムダ式は4行目で定義され、7行目で実行されています。 つまり、action()の行を実行した時に、「Hello, World!!」と出力されるのです。 なぜ、ラムダ式はメソッドのように呼び出して実行できるのでしょうか? static void Main(string[] args) { // ラムダ式の定義 Action action = () => Console.WriteLine("Hello, World!!"); // ラムダ式を実行 action(); // <結果> // Hello, World!! } ラムダ式とは、簡単に言うとメソッド内で定義された即席のメソッドのことです
yield句について最初から読みたい方はこちらからどうぞ。 今回は、foreach文を中断する為の構文、yield breakについて解説します。 といっても簡単なので早速以下のコードを御覧ください。 class BreakableClass { public IEnumerator<int> GetEnumerator() { for (int i = 0; i < 10; i++) { if (i == 5) { // iが5になったらループを抜ける yield break; } // ループカウンタの値を返す yield return i; } } } class Program { static void Main(string[] args) { var breakClass = new BreakableClass(); foreach (int n in breakClass
今回は定義済みデリゲートのお話です。 定義済みデリゲートとは、クラスライブラリで定義されているラムダ式を格納出来る型のことです。 前回までのサンプルコードでは、Actionデリゲート型のみを使用しましたが、 .NET FrameworkにはAction以外にもラムダ式に使用できる型が定義されています。 以下のコードを御覧ください。 class Program { static void Main(string[] args) { // string型の引数1つ、戻り値voidのラムダ式 Action<string> lambda1 = (string message) => /* 括弧の中に型を明示しても良い */ { // 引数で受け取った文字列を表示 Console.WriteLine(message); }; // string型の引数1つを受け取り、int型の戻り値を返すラムダ式
このページを最初にブックマークしてみませんか?
『やさしいC# 3.0まとめblog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く