- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C# 匿名メソッドについて)
C#匿名メソッドについての不思議な現象
このQ&Aのポイント
- C#の匿名メソッドについて疑問があります。
- 特に、変数messageがCreateMethodメソッドからリターンした瞬間に消滅するが、匿名メソッドが呼ばれるのはその後ということが不思議です。
- インスタンスされたクラスはMainメソッドを最初に読みに行き、CreateMethodメソッドが実行され、その中でreturnした結果がactionに代入されると考えられますが、不思議な点が理解できません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>では、 >MyAction action = CreateMethod(); >を実行すると、 >actionの中に >{ >Console.WriteLine(message); > }; >が入り、 > >action(); // 出力:Hello! World! >で実行されるということでしょうか? actionに { Console.WriteLine(message); }; が直接入るわけではなく、呼び出すための情報が入るといった方が近いかと思います。
その他の回答 (2)
- wormhole
- ベストアンサー率28% (1626/5665)
回答No.2
CreateMethod()の実行中に匿名メソッドの { Console.WriteLine(message); }; が実行されてると思われているのなら、それは間違ってます。 匿名メソッドが実行されるのは action(); // 出力:Hello! World! です。
質問者
補足
はい、そう思っていました。 action(); // 出力:Hello! World! で実行されていたのですね!!! では、 MyAction action = CreateMethod(); を実行すると、 actionの中に { Console.WriteLine(message); }; が入り、 action(); // 出力:Hello! World! で実行されるということでしょうか?
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
何をいっているのかわかりません. 「その実行した中でreturn”message”が結果的にされる。」とはどういうことですか? どこに return があるんですか? 「そして、それがactionに代入されるという流れ」の「それ」ってなんですか?
お礼
だいぶ理解に近づいたと思います。ありがとうございます。 デリゲートからコツコツ勉強していきます。