C#のFuncジェネリック型とは?匿名メソッドの格納方法と使い方を解説
Funcジェネリック型は、匿名メソッドやラムダ式を格納できるパラメータ化されたデリゲート型です。型パラメータのうち、最後のものが戻り値の型を表し、それ以外が引数の型を表します。これにより、処理内容を変数のように扱うことが可能になります。
以下の例では、4つのFunc型インスタンスを定義して使用します。
Func型インスタンスの定義例
1つ目:intを受け取りstringを返す型
Func<int, string> one = (p) => string.Format("{0}", p);
2つ目:boolとlongを受け取りstringを返す型
Func<bool, long, string> two = (q, p) => string.Format("{0} and {1}", q, p);
3つ目:boolとintを受け取りstringを返す型
Func<bool, int, string> three = (q, p) => string.Format("{0} and {1}", q, p);
4つ目:decimalを受け取りstringを返す型
Func<decimal, string> four = (p) => string.Format("{0}", p);
このように、Funcジェネリック型を使えば、引数の数や型・戻り値の型が異なるさまざまな処理を、統一的な記述で扱えます。なお、Funcデリゲートは最大16個まで引数の型パラメータを持つことができます。
サンプルプログラム
実際にこれらのFunc型インスタンスを定義し、呼び出して表示する完全なコードを見てみましょう。
using System;
using System.IO;
namespace Demo {
class Program {
static void Main(string[] args) {
// 4つのFunc型インスタンス
// 1つ目:intを受け取りstringを返す
Func<int, string> one = (p) =>
string.Format("{0}", p);
// 2つ目:boolとlongを受け取りstringを返す
Func<bool, long, string> two = (q, p) =>
string.Format("{0} and {1}", q, p);
// 3つ目:boolとintを受け取りstringを返す
Func<bool, int, string> three = (q, p) =>
string.Format("{0} and {1}", q, p);
// 4つ目:decimalを受け取りstringを返す
Func<decimal, string> four = (p) =>
string.Format("{0}", p);
Console.WriteLine(one.Invoke(25));
Console.WriteLine(two.Invoke(false, 76756566));
Console.WriteLine(three.Invoke(true, 50));
Console.WriteLine(four.Invoke(1.2m));
}
}
}
Funcデリゲートの実行にはInvoke()メソッドを使用しますが、one(25)のように直接呼び出すことも可能です。
実行結果
25 False and 76756566 True and 50 1.2
このように、Funcジェネリック型を活用することで、ラムダ式として定義した処理を柔軟に呼び出せます。LINQなどでも頻繁に使われる重要な概念なので、しっかり理解しておきましょう。
-
JavaでCLOB型を文字列(String)に変換する方法をわかりやすく解説
CLOB(Character Large Object)は、SQLの組み込みデータ型の一つで、大量のテキストデータを格納するために使用されます。このデータ型を利用すると、最大2,147,483,647文字までのデータを保存することが可能です。 JDBC APIのjava.sql.Clobインターフェースが、このCLOBデータ型を表現します。なお、JDBCにおけるClobオブジェクトはSQLロケーター(locator)を使って実装されているため、実際のデータそのものではなく、SQL CLOBへの論理ポインターを保持している点に注意してください。 MySQLデータベースでは、TINYTEXT、T
-
Pythonで文字列をJSONオブジェクト(辞書型)に変換する方法|json.loadsの使い方を解説
多くのWeb APIでは、データは辞書(JSONオブジェクト)形式の文字列として送受信されます。しかし、文字列のままでは各キーや値にアクセスできないため、意味のある情報を抽出したり、さらに加工を行ったりするには、まずPythonの辞書型へ変換する必要があります。本記事では、Pythonの標準ライブラリであるjsonモジュールを使って、文字列をJSONオブジェクト(辞書型)に変換する基本的な方法を、サンプルコードと実行結果とともに解説します。json.loads()とはjsonモジュールには、以下の2つの主要な関数が用意されています。json.dumps():Pythonのオブジェクト(辞書など