「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>.NET開発]]
--[[LINQ]] > [[ラムダ式って]]
--[[動的言語ランタイム (DLR)]]
--[[.NET の Reflection]]

* 目次 [#dc7c2604]
#contents

*概要 [#fc7bf3b4]
-式木(Expression tree)とは、式(数式)を木構造で表したものの事。
-以前は、1文だけのラムダ式のみ式木(Expression tree)にできた。
-.NET 4 から、強化され DLR で使っている構文木の全機能を備える。

*詳細 [#s384a42b]

**使用例 [#j2e9a579]
実際に、文字列の計算式の計算結果を取得するライブラリでは、~
RPN(Reverse Polish Notation、[[逆ポーランド記法>https://ja.wikipedia.org/wiki/%E9%80%86%E3%83%9D%E3%83%BC%E3%83%A9%E3%83%B3%E3%83%89%E8%A8%98%E6%B3%95]])や~
式木(Expression Tree)を使って計算するライブラリなどがある。

**[[LINQ]]との関連 [#z1813cfa]
[[LINQ]]プロバイダでは、ラムダ式を式木として扱う

*参考 [#tc1ae8a0]
-herara_ofnir3.blogger: [C#]式木入門~
http://ofnirs.blogspot.com/2012/11/introduction-of-expression-tree.html

--全てが式になる,全てが木になる,全てが式木になる - NyaRuRuが地球にいたころ~
http://nyaruru.hatenablog.com/entry/20071230/p1

--式木(Expression Trees) - C# によるプログラミング入門 | ++C++; // 未確認飛行 C~
https://ufcpp.net/study/csharp/sp3_expression.html

-文字列の計算式の計算結果を取得する - .NET Tips (VB.NET,C#...)~
https://dobon.net/vb/dotnet/programing/eval.html

--C# Expression Parser using RPN - CodeProject~
https://www.codeproject.com/Articles/5875/C-Expression-Parser-using-RPN

--逆ポーランド記法と木構造の絵~
https://qiita.com/yumura_s/items/ddb0d143fb0e9a082891

-(プログラミング C# - 翔ソフトウェア (Sho's))
--[C#][ラムダ式][式木] Expression として扱えるラムダ式と扱えないラムダ式~
http://blog.shos.info/archives/2012/11/cexpression_expression.html
--[C#][ラムダ式][式木] Expression の構造を調べてみる~
http://blog.shos.info/archives/2012/11/cexpression_expression_1.html
--[C#][ラムダ式][式木] Expression を使ってラムダ式のメンバー名を取得する~
http://blog.shos.info/archives/2012/12/cexpression_expression_2.html
--[C#][ラムダ式][式木] Expression でラムダ式を作成してデリゲートとして実行する~
http://blog.shos.info/archives/2013/06/csharp_expression4.html
-[[LINQ]]との関連

-[[LINQ]]との関連
--C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~~
https://www.slideshare.net/Fujiwo/20141026-c-c-expression-tree

--[C#][式木][LINQ] IQueryable な Twitter のタイムライン クラスと~
LINQ プロバイダー (プログラミング C# - 翔ソフトウェア (Sho's))~
http://blog.shos.info/archives/2014/12/csharp_expression_iqueryable.html

-neue cc - Expression Treeのこね方・入門編 - 動的にデリゲートを生成してリフレクションを高速化~
http://neue.cc/2011/04/20_317.html

**Sho's [#b8af20e4]
(プログラミング C# - 翔ソフトウェア (Sho's))

***[C#][ラムダ式][式木] [#k1abc4cf]
Expression として扱えるラムダ式と扱えないラムダ式~
http://blog.shos.info/archives/2012/11/cexpression_expression.html

-Expression の構造を調べてみる~
http://blog.shos.info/archives/2012/11/cexpression_expression_1.html
-Expression を使ってラムダ式のメンバー名を取得する~
http://blog.shos.info/archives/2012/12/cexpression_expression_2.html
-Expression でラムダ式を作成してデリゲートとして実行する~
http://blog.shos.info/archives/2013/06/csharp_expression4.html

***[C#][.NET][式木] [#r7680ea8]
メタプログラミング入門

-式木による Add メソッドの動的生成~
http://blog.shos.info/archives/2013/11/csharp_addbyexpression.html
-応用編 - オブジェクトの文字列変換のメタプログラミング (式木編)~
http://blog.shos.info/archives/2013/11/csharp_metaprogrammingpraxisexpression.html

**実装 [#ac242781]
-https://github.com/OpenTouryoProject/OpenTouryo/tree/develop/root/programs/CS/Frameworks/Infrastructure/Public/FastReflection
--https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Frameworks/Infrastructure/Public/FastReflection/EnumToStringByExpressionTreeExtensions.cs

----
Tags: [[:プログラミング]], [[:.NET開発]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS