無名関数の型推論の例とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 無名関数の型推論の例の意味・解説 

無名関数の型推論の例

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/09/29 09:09 UTC 版)

型推論」の記事における「無名関数の型推論の例」の解説

無名関数型推論においては複雑な状況発生するC#の例を以下に示す。 // 複数デリゲート型を定義delegate void TwoStringAction(string left, string right);delegate void OneParamAction(object o);delegate void TwoParamAction(object o, EventArgs e);delegate void TwoIntegerAction(int x, int y);// メソッドオーバーロード用意する有効化するオーバーロード種類により、型推論可否変化するstatic void SomeMethod(TwoStringAction action) { /* Pattern 1 */ }//static void SomeMethod(OneParamAction action) { /* Pattern 2 */ }//static void SomeMethod(TwoParamAction action) { /* Pattern 3 */ }//static void SomeMethod(TwoIntegerAction action) { /* Pattern 4 */ }static void Main() { // メソッドオーバーロードPattern 1のみの場合全ての文が有効(型推論可能)である。 SomeMethod((o, e) => { /*No-op*/ }); /* 1行目 */ SomeMethod((o, e) => { o = o + e; }); /* 2行目 */ SomeMethod((o, e) => { o = "" + o + e; }); /* 3行目 */ SomeMethod(delegate { /*No-op*/ }); /* 4行目 */} SomeMethod(OneParamAction action) の行を有効にすると、Mainメソッドの4行目の型推論が効かなくなる。4行目の匿名関数引数リスト省略できるため、1引数、2引数のどちらのデリゲート型曖昧になる。 SomeMethod(TwoParamAction action) の行を有効にすると、Mainメソッドの2行目以外の型推論が効かなくなる。1行目のラムダは、2引数で値を返さない複数デリゲート型がある場合曖昧となる。 3行目のラムダは、代入式の左辺にあるoはstring格納できる型でなければならないが、一方で右辺のoとeは暗黙にToString()呼び出されるため、いずれのであってもよく、TwoStringAction TwoParamActionの間で曖昧となる。 2行目のラムダは、oとeの間に適切なoperator+が定義されなければならず、TwoStringAction型と推論される。 SomeMethod(TwoIntegerAction action) の行を有効にすると、Mainメソッドの3行目以外の型推論が効かなくなる。2行目のラムダは、oとeはstringintのいずれでもoperator+が実行できるため、TwoStringActionTwoIntegerActionの間で曖昧となる。 3行目のラムダは、代入式の左辺にあるoはstring格納できる型でなければならないため、TwoStringAction型と推論されるデリゲート型引数に取るメソッド複数用意する場合オーバーロードではなく別名のメソッドとすることで、この複雑性回避できる

※この「無名関数の型推論の例」の解説は、「型推論」の解説の一部です。
「無名関数の型推論の例」を含む「型推論」の記事については、「型推論」の概要を参照ください。

ウィキペディア小見出し辞書の「無名関数の型推論の例」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「無名関数の型推論の例」の関連用語

1
10% |||||

無名関数の型推論の例のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



無名関数の型推論の例のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaの型推論 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS