ふらっと C#,C♯,C#(初心者用) Part161 (78レス)
ふらっと C#,C♯,C#(初心者用) Part161 http://mevius.5ch.net/test/read.cgi/tech/1739970583/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
16: デフォルトの名無しさん (ワッチョイ 752d-jpvh) [sage] 2025/02/25(火) 19:57:31.81 ID:knCfbka80 ラムダ式をデリゲートに代入する事無く、即値のまま関数として呼び出すにはどう書けば良いのでしょうか? サンプルの1~2行目のように一旦デリゲートに代入してから関数呼び出しするのでなく、3行目のような雰囲気で直接関数として呼び出したいのです。 Func<double, double> func = x => Math.Sin(x); double ret1 = func(2 * 3.14 * 0.5 * 0.5 * 1.73 * 1.73); double ret2 = (x => Math.Sin(x))(2 * 3.14 * 0.5 * 0.5 * 1.73 * 1.73); これだけですとラムダ式・匿名メソッドを使う意味がないのですが、? : の三項条件演算子やswitch式などで選ばれたラムダ式・匿名メソッドを呼び出したい場面がありました。 http://mevius.5ch.net/test/read.cgi/tech/1739970583/16
17: 16 (ワッチョイ 752d-jpvh) [sage] 2025/02/25(火) 20:29:30.95 ID:knCfbka80 半歩前進しました。デリーゲトへの代入式(の戻り値)を使用すれば呼び出せました。 Func<double, double> func; double ret3 = (func = x => Math.Sin(x))(2 * 3.14 * 0.5 * 0.5 * 1.73 * 1.73); ここからデリゲートを消せればシンプルに記述できそうです。 http://mevius.5ch.net/test/read.cgi/tech/1739970583/17
19: 16 (ワッチョイ 752d-jpvh) [sage] 2025/02/25(火) 21:00:58.69 ID:knCfbka80 いくつか書き忘れました。 double型の戻り値を重視したように見えるサンプルですが、実際はvoid型で副作用を持つ関数呼び出しです。 また、複数の関数が並ぶ中で、同じ引数を何度も何度も書きたくない/コピーしたくないというのが動機の一つです。 http://mevius.5ch.net/test/read.cgi/tech/1739970583/19
24: 16 (ワッチョイ 752d-jpvh) [sage] 2025/02/25(火) 22:08:31.81 ID:knCfbka80 >>22 キャストを使う事でデリゲート変数を排除できる事を確認しました。オブジェクトでないラムダ式をオブジェクト化?するところがキモなんですね。 美しさはともかくとして、文字数・タイプ数が減りシンプルになりました。 本当に助かりました。ありがとうございます。 http://mevius.5ch.net/test/read.cgi/tech/1739970583/24
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.016s