- 1 名前:デフォルトの名無しさん(ワッチョイ 1e06-m8Mb) mailto:sageteoff [2017/04/22(土) 08:52:00.93 ID:iVvswOrb0.net]
- ■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
www.visualstudio.com/downloads/ ■コードを貼る場合はこちら ideone.com/ ■前スレ C#, C♯, C#相談室 Part92 echo.2ch.net/test/read.cgi/tech/1485589613/ ■次スレは>>970が建てる事。 建てられない場合は他を指定する事。 VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
- 335 名前:デフォルトの名無しさん mailto:sage [2018/05/30(水) 15:57:46.68 ID:OvgslO8CM.net]
- CodeMentorっていう英語のメールニュース取ってるんだが?
- 336 名前:デフォルトの名無しさん mailto:sage [2018/05/30(水) 17
]
- [ここ壊れてます]
- 337 名前::39:32.49 ID:zRdb0GuK0.net mailto: ぼくはメンタリストですが、何か? []
- [ここ壊れてます]
- 338 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 18:07:05.50 ID:ZDpw5PAMd.net]
- 引数ありのdelicateでデリゲートをnewする段階で
関数に引数渡しておくことはできますか? 使うときは引数関係なく実行するだけにしたい delicateじゃなくてもそういう方法があれば教えてほしいです
- 339 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 18:49:53.75 ID:YepGdlhS0.net]
- ない
- 340 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 19:21:37.82 ID:mNqG/VKAa.net]
- >>327
たとえばこれを、 Action<string> a = Console.Write; こうするだけと違うの? Action a = () => Console.Write("Hage");
- 341 名前:デフォルトの名無しさん [2018/05/31(木) 20:29:05.32 ID:XpaqSCj3a.net]
- >>329
普通に考えたらそうなるわな 何がいいたいんやろ
- 342 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 21:18:37.12 ID:ZDpw5PAMd.net]
- >>329
わかりづらくてすみません Actionですね これでちょっとやってみます ありがとうございます
- 343 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 00:56:14.18 ID:v9HhHj/a0.net]
- もしかして delegate? > delicate
- 344 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 01:50:30.82 ID:Kjs/aFNB0.net]
- 痒くなってきた
- 345 名前:デフォルトの名無しさん [2018/06/02(土) 01:19:12.37 ID:te+Rl8LG0.net]
- もうふらっとと統合しろよ
- 346 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 14:30:29.50 ID:sz40x79U0.net]
- 隔離用のスレを本スレに統合って斬新だな
- 347 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 14:10:31.00 ID:kDP+/j8RM.net]
- デリケートって結局なんねことなんや
- 348 名前:デフォルトの名無しさん [2018/06/05(火) 23:17:30.29 ID:vNq9k7GF0.net]
- >>336
関数ポインタ
- 349 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 11:05:26.21 ID:kgKhbEIB0.net]
- わかるように説明しろや!
- 350 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 11:13:20.04 ID:Glbjy1Oa0.net]
- 赤ん坊が庖丁持ったからと言って何かを生み出せるわけでは無し
- 351 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 13:00:14.82 ID:/mNmPD5La.net]
- >>338
「〜とは何か」って哲学論争はたぶん時間の無駄w 実際の使われ方を見て何に使えるかを理解するのがいいよ 禅問答みたいに聞こえるかもしれんが、デリゲートのメリットは デリゲート型の変数を作れること。 デリゲートの使えない従来の言語は、コードの中にdoubleのリテラルしか書けず doubleの変数が作れないようなものだった
- 352 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 22:58:53.30 ID:x4kBoo940.net]
- >>331です
Actionでできました!ありがとうございます。 クロージャー(?)っていうんですかね? 関数の外の値を引数で渡さずに関数内で使うやり方が知りたかったんです。
- 353 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 21:28:18.26 ID:HziEaPXa0.net]
- デリゲート型の変数?????
デリゲート型にすると何かいいことあるのか? デリゲート型にすると何がいいんだ??????何が使えるんだ?????
- 354 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 21:34:22.85 ID:9x16GWRr0.net]
- >>342
ここ読め ufcpp.net/study/csharp/sp_delegate.html
- 355 名前:デフォルトの名無しさん [2018/06/07(木) 21:34:36.55 ID:uqa5AZHUa.net]
- あーこういうの出来たら便利なのにー
って思ったら調べて使えばいいよ 使わんと頭入らないし
- 356 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 21:41:39.12 ID:muNvrUxm0.net]
- デリゲート、デリゲートって、おまえら
青空球児・好児かよ。
- 357 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 23:38:02.20 ID:p05PC41Ra.net]
- >>342
そうじゃなくて、上に書いたように、もしdoubleのリテラルしかコード中に書けなくて doubleの変数が使えなかったらどう困るか考えて
- 358 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 23:51:09.11 ID:HziEaPXa0.net]
- 図にしてくれ
- 359 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 00:56:57.47 ID:057UgUqy0.net]
- 数値を格納する変数は int 型
文字を格納する変数は string 型 メソッドを格納する変数が デリゲート型
- 360 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 01:01:01.34 ID:7BdVtDm70.net]
- なんで
メソッドを 格納する 必要が あるんだよ !
- 361 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 01:20:20.47 ID:vel+6
]
- [ここ壊れてます]
- 362 名前:yPba.net mailto: だから、どうして実数を変数に入れる必要があるの?
入るのはメソッド自身ではなくその参照だけどね [] - [ここ壊れてます]
- 363 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 07:41:09.77 ID:V2PqzfzLd.net]
- >>349
自分の場合はある関数にある処理を追加したい場合とか ある処理は呼び出しもとによって変わったり
- 364 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 07:54:30.62 ID:VEbWNRWu0.net]
- >>351
ピンとこない 処理を追加したいならメソッド自体に書くか、overloadとかを考えちゃう 呼び出し元で処理変えるなら引数で、みたいな
- 365 名前:デフォルトの名無しさん [2018/06/08(金) 07:59:48.51 ID:FRxZCKgGa.net]
- メソッドを引数にして渡してあげられると、実行する側は何をするか気にしないでいいじゃない
- 366 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 08:15:18.51 ID:H4l6t16fM.net]
- なぜデリゲートがあるか?
君も大人になったらわかるよ。 ママ、なんでボクはおチンチン付いてるの? この疑問、時間が解決したろう。
- 367 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 08:30:05.85 ID:V2PqzfzLd.net]
- >>352
今までの処理は極力変えたくない 引数にAction渡して関数はそれを実行 引数のActionはデフォルトにnullをいれておく nullだったら処理しないようにすれば呼び出し元は必ずしも変更する必要がなくなる なんでこうするかってテストするのがめんどいからとか色々
- 368 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 10:53:38.20 ID:p6dJfT33M.net]
- >>355
さっぱりわからない 処理変えたくないメソッド実行 ↓ その結果次第で別のメソッド実行 何故これで済まないの?
- 369 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 11:07:03.52 ID:jzbZ53uGa.net]
- それでも済むよ
例えば繰り返し処理 forなくても書けるだろ。だからforなんて要らないって言ってるようなもん なくてもプログラミングできるが、あれば楽できる
- 370 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 11:49:27.44 ID:SrLrQXUUa.net]
- 済まないw
>>356-357は-π/2〜π/2の範囲の実数の数だけ、それに対応する sinの値を返すメソッドを用意すれば汎用的なsin関数なんかなくて済むと言ってるのと同じ。 だから、どうしてdoubleの変数が必要なのかと。 っていうかこの質問者、本当は分かってて質問してる変な奴だろうね8割方w たぶん2chの他の板によくいる、サヨクを演じて自作自演やってる頭のおかしいネトウヨと似たようなメンタルの持主なんだろうと想像
- 371 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 13:02:11.32 ID:V2PqzfzLd.net]
- >>356
voidだったら"その結果"ってどう受けとる?
- 372 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 13:04:11.27 ID:7BdVtDm70.net]
- 図にしろ・・・・・・・・・ッッツ!!!
- 373 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 13:14:18.16 ID:0qxXZgjd0.net]
- アウアウアーの見本市
- 374 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 19:39:57.11 ID:tyJ42miy0.net]
- なんか揚げ足取りしようとして引っ込みつかなくなってる感
- 375 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 19:42:51.67 ID:sQqhvtlW0.net]
- つ ufcpp.net/study/csharp/misc_delegate.html
- 376 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 20:48:10.00 ID:7BdVtDm70.net]
- つまりメソッドにラムダ式を渡して処理した結果を使ってメソッドの処理をさせるのか?
- 377 名前:デフォルトの名無しさん [2018/06/08(金) 20:53:34.63 ID:KYYD9BLCa.net]
- ごめん。ちょっと何言ってるかわかんない
- 378 名前:デフォルトの名無しさん [2018/06/08(金) 21:00:06.62 ID:E4qbFGXm0.net]
- 結局デリゲートの非同期処理BeginInvokeを使用するってのが
従来大きな役割だったんじゃない? でも今Taskクラスできたから必要なくなった
- 379 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 21:19:27.49 ID:txACZHnFp.net]
- つまりクラス間通信。
- 380 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 12:11:29.33 ID:VOfp/P7BM.net]
- デリゲート(委譲)って名前が悪いのかな
メソッドを他に渡しておいて適宜実行してもらうから委譲ともいえるけどそれは機能の一面しか表してない MVPの人も過去にデリゲートいらねえって言ってたけど理解力が足りてない c#は結構
- 381 名前:「ろんなものがオブジェクトだけどメソッドはオブジェクトじゃない
デリゲートを使えばメソッドをオブジェクト(変数)みたいな感じで扱える 普通の変数とは違って+=で複数のデリゲートをいれることができるのが特徴的 コールバックとして使えるしeventはデリゲートをもとに作られてるので基本的な使用範囲は広い [] - [ここ壊れてます]
- 382 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 12:44:45.38 ID:DBY1R4Jva.net]
- >>368
真面目な話、そういう衒学趣味の文系学生みたいな 文章が一番人を混乱させる。 「c#は結構いろんなものがオブジェクトだけどメソッドはオブジェクトじゃない 」って何やねんw 関数ポインタが分かればデリゲートがどんなものかはその類推でだいたいイメージできる。 機械語をやった経験があれば、関数ポインタなんか、なんだこんなのただのcall命令の アドレッシングモードのことかってすぐわかる でも重要なのは、「デリゲートとは何か」なんか分からなくてもデリゲートは使えるってこと。 「何か」なんか理解しなくていい。それを使って何が出来るかだけ理解すればいい。
- 383 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 12:58:26.33 ID:54mp5fzVM.net]
- そう。ホビープログラマならね
- 384 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 13:02:40.19 ID:Cz/ni8by0.net]
- ホビーじゃないプログラマ「c#は結構いろんなものがオブジェクトだけどメソッドはオブジェクトじゃない 」
- 385 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 13:05:05.70 ID:oQlrsJoz0.net]
- それは無能プログラマ
- 386 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 13:31:49.04 ID:kvLDmgw/0.net]
- >>371
この文何か変か? メソッドはobject型から派生したクラスではないっていう当たり前のことを言ってるだけだろ
- 387 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 13:40:09.88 ID:VOfp/P7BM.net]
- >>369
他の言語ではメソッドもオブジェクトとして扱えるものもある c#はメソッドはオブジェクトじゃない その類推が間違ってるからダメなんだけどなあ… デリゲートは関数ポインタじゃない callでもアドレッシングとも全然無関係だわ 機能的には似たようなものに見えるけど全然別物だ
- 388 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 13:51:37.94 ID:MhKfyDgC0.net]
- >>369
文系学生もプログラミングする時代になったって事だよ。 > 「何か」なんか理解しなくていい。それを使って何が出来るかだけ理解すればいい。 これな。最近の「○○って何ですか」っていう奴らは何なんだ? お前らだって、日本語の全ての漢字を読めるわけでもないだろうに。 「デリゲート」は失敗作だから新言語を作る気がないのなら理解する必要はない。 あれはthis+関数ポインタで、一番近いのはC++の「メンバ関数ポインタ」だが、 無駄に「クラス」「関数ポインタ」「ラムダ」を抽象化しようとしておかしくなってる。 結局ラムダを導入してしまったし、当初の方針は間違いだと認められたことになる。 今後「デリゲート」を採用する言語はないだろうよ。
- 389 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 13:57:35.17 ID:1jan2CXL0.net]
- .NET Core で過去の遺産が全て無くなるかと思ったけどそんなことはなかったぜ
- 390 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 13:59:17.43 ID:VOfp/P7BM.net]
- >>375
誤解したままで最後までつづけるんか?
- 391 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:07:54.32 ID:VOfp/P7BM.net]
- もともと関数がオブジェクトである言語はデリゲートを導入するメリットは少ない
c#にデリゲートが無かったらjavaの様に専用のインターフェイスを継承した無駄なクラスを作らなければならなかった ActionやFuncやラムダがあればデリゲートが必要なかったと言ってるのは何かを誤解してる
- 392 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:19:40.58 ID:MhKfyDgC0.net]
- >>377
理解してなくても使えれば問題ないんだよ。 お前だってPCの起動方法(BIOSとか)知らなくてもPC使ってるだろ。 MSIL読めなくてもC#使えるだろ。 CPUの例外/割り込み機構を知らなくてもtry/catch使えるだろ。 一般プログラマにとってはプログラミング言語は道具であって、それ以上でも以下でもない。 新言語を作りたいのなら学術的に正確に理解することが必要だが、普通の人はそうではない。 それ以前にC#が死ぬ可能性を考えた方がいい。 C#専用の「デリゲート」の理解はつぶしが利かない。 他言語にもある「ラムダ」の理解のほうが重要だ。 デリゲート
- 393 名前:ヘ「クラス」と「関数ポインタ+バインド」で対応した方が良かったと思う。
C#には未だに「バインド」がない=デリゲートでの対応になるが、 実際、後付でバインドすることが出来ないだけ不便だろ。 >>378 Javaみたいなそもそも「関数ポインタ」がなかった糞言語と比較したら駄目だよ。 Cには関数ポインタはあった。 C#はそれを「デリゲート」として拡張した。 他言語は「第一級オブジェクト」として拡張した。 今のところ、後者の方が正解っぽいだろ。 (俺自身にはイマイチ「第一級オブジェクト」である利点/必然性は見えないのだが) [] - [ここ壊れてます]
- 394 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:24:48.97 ID:VOfp/P7BM.net]
- 関数がもしobjectクラスから派生したオブジェクトになるとメンバーを持てることになるんだけど
A.B().ToString()のToStringが B()というメソッド自体に係ってるのか B()の返した戻り値にかかってるのかがよくわからないことになる
- 395 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:25:53.62 ID:54mp5fzVM.net]
- Javaってstaticメソッドを関数インターフェースに渡すときは最適化してくれんの?
- 396 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:30:26.04 ID:AO7Grx3Qa.net]
- 1+2*3
こんな計算式があったときに1+2をしてから3かけて答えは9 こうはならないだろ。それは優先順位を定めてるから。(1+2)*3のようにかけば期待通りになる それと同じで関数がオブジェクトでメンバー持ててもそれに合わせた処理の優先順位を定めればいいだけ
- 397 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:32:21.62 ID:VOfp/P7BM.net]
- 理解しないのと誤解してるのではわかっていないという点では同じだけど
理解してない場合は理解していない前提で行動できる 一方の誤解してる場合は悲惨だ
- 398 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:33:21.85 ID:MhKfyDgC0.net]
- >>380
お前は右結合と左結合を勉強しろ
- 399 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:35:46.47 ID:VOfp/P7BM.net]
- >>384
じゃあどういう風に記述したらオブジェクトである関数のプロパティやメソッドにアクセスできるかここに書いてもらいたいが
- 400 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:36:40.18 ID:MhKfyDgC0.net]
- >>383
お前は日本語を勉強しろ。 俺達は「理解しなくていい」=「完全に理解してはいないという自覚の元で使え」と言っているのであって、 それは「誤解」には繋がらない。 「誤解」ってのは、「理解してない馬鹿が理解しているつもりになっている」事を言う。 例えば、右結合と左結合を知らないお前みたいな馬鹿のことだ。
- 401 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:39:35.51 ID:MhKfyDgC0.net]
- >>385
意味不明。何を書いて欲しいのか分からん。 > A.B().ToString() これはAのメソッドB()を呼んでその戻り値に対してToString()を呼ぶ。 少なくともJavaScriptではそう。 で、何をしたい場合の記述が欲しいんだ?
- 402 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:48:14.18 ID:VOfp/P7BM.net]
- >>387
思い違いをしていた A.B().ToString()とA.B.ToString()で区別できる クラスにフィールドとメソッドを同名にできないから区別できる 右結合と左結合は関係なかったけど
- 403 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:54:44.86 ID:MhKfyDgC0.net]
- >>385
エスパーすると、言いたいことは分かった。 お前は「第一級オブジェクト」も理解しておらず、「誤解」している。ちゃんと勉強しろ。 「第一級オブジェクト」ってのは、通常のオブジェクトと関数オブジェクトを区別しない。 だから書式は当然同じだし、正しく理解していればこの点が疑問になりようもない。 >>388 なら日本語を勉強しろ > B()というメソッド自体に係ってるのか これで何を表現しようとしたか言ってみろ。それは > A.B.ToString() ではないだろ。
- 404 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 15:04:32.47 ID:VOfp/P7BM.net]
- >>386
誤解は悲惨 delegateを削除しろと言って削除してみたらActionもFuncも使えませんでした eventも使えませんでした もちろん言語レベルで変数としてのデリゲートの代わりになるものもありません >>389 > > A.B.ToString() > ではないだろ。 いやいやそこはそのままであってるし普通にそう理解できないのか? A.B.ToString()が正解 逆にどう勘違いしたのか聞きたい
- 405 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 15:06:54.66 ID:VOfp/P7BM.net]
- 本当にC#からdelegateを削除しろって言ってるんだったらどこかおかしい
何にも理解してない
- 406 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 15:06:56.64 ID:AO7Grx3Qa.net]
- プロパティなんて関数オブジェクトみたいなもんだな
プロパティ
- 407 名前:ノ引数渡してぇ []
- [ここ壊れてます]
- 408 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 15:07:41.71 ID:VOfp/P7BM.net]
- >>392
っVB.net
- 409 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 15:18:29.92 ID:MhKfyDgC0.net]
- >>390
日本語で言うと、 > B()というメソッド自体に係ってるのか と理解したって事だよ。 >>391 お前がな。 他言語にはdelegateなんて無いが、何も問題ないだろ。 あれ?って思えないのか? (今すぐ廃止していいかどうかはまた別だが) >>388 > クラスにフィールドとメソッドを同名にできないから区別できる これは先見の明があったかもな。 関数を「第一級オブジェクト」に昇格させるのに文法的制約がない。 Javaに対しての利点にはなり、生き残る道かも。
- 410 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 15:25:50.19 ID:MhKfyDgC0.net]
- >>392
JavaScriptではオーバーライドすれば出来る。 フィールド/メソッドの区別がなく、名前だけだから。 C#的には派生クラスで「プロパティ」「を同名の「メソッド」でオーバーライドだが、 これが型チェック的に無理なのか? しかし名前の重複を許していないのだから、今後の拡張は可能のはずだが。 JavaScriptのデタラメ文法はどうかという奴もいるが、慣れてしまうと、 型あり言語の「型が違うだけ」で色々制約されるのも相当な糞だと気づけるぞ。 型検査はエラーではなく警告に留めるべきで、 プログラマがOKすれば型が不一致でも通してくれた方がマジで楽。 一番近いのはCってことになってしまうが。
- 411 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 15:29:15.96 ID:a58WBe6r0.net]
- ア土曜の昼間からウアウアーの見本市
- 412 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 15:29:59.09 ID:a58WBe6r0.net]
- 友人ゼロのキモオタオッサンは他にやることないのかい
- 413 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 16:02:02.79 ID:kvLDmgw/0.net]
- 他の言語はともかくC#はGUIのイベントの管理にデリゲートのマルチキャスト使ってるんだから無かったら困るだろ
- 414 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 16:54:07.78 ID:DBY1R4Jva.net]
- だからメソッドがオブジェクトかどうかなんて話はただの衒学趣味的な無益な話w
そんな話は「ではオブジェクトって何?」って不毛な議論になるだけでしょw 初心者がデリゲートを理解して使えるようになるための屁の役にも立たないよw >>398 素直に考えればデリゲート自身にマルチキャストの機能を持たせるんじゃなく、 シングルキャストのデリゲートのリストとして実装する方法もあったはず なんか理由があって「こういう」風になってるんだろうが俺には積極的理由はよくわからんね。 ジェネリックをデリゲートで制約できないことと関係があるのかもしれないが なまじマルチキャストなんて機能があるせいで何だかわかりづらくなってる面は否定できないと思う
- 415 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 17:08:52.90 ID:MhKfyDgC0.net]
- >>398
GUIに関してはdelegateの導入は不要だったで決着してる。 GUIにはOOPよりMVCの方が数段マシで、WPFもそうなってるだろ。 onclickにthisがバインドされている意味がそもそも無いんだよ。 決着が付いてないのはデータフロープログラミングをするときだ。 JavaScriptではObject.observeの導入が計画され、一部フィーバーしていたが、ポシャった。 https://www.html5rocks.com/ja/tutorials/es7/observe/ 以下によると、非同期なのが使えなかったらしい。 tech.nitoyon.com/ja/blog/2015/11/18/death-of-oo/ JavaScriptの非同期は最早宗教だが、 はっきり言って無駄に非同期すぎて、余計にやりにくくなっているケースもある。これもそう。 C#は独自eventを実装出来るし、そのためにdelegateが用意されているから、 「データフロープログラミング」を文法的にサポートしているとは言える。 ただ、それ以前に、「データフロープログラミング」が主流ではないが。 お前らも実際、やってないだろ。 関数型の次に来るって事もなさそうだし。 とはいえ、上記の通り、今のJavaScriptではデータフロープログラミングは面倒だし、 getter/setterを頑なに拒むC++ではものすごくウザくなって事実上無理だ。 次の波が来ればevent/delegateも再評価されるかもしれん。
- 416 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 17:12:21.10 ID:MhKfyDgC0.net]
- >>399
> シングルキャストのデリゲートのリストとして実装する方法もあったはず 同感。
- 417 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 17:15:16.30 ID:bMpGWGQ30.net]
- 理解してなくても問題なく使えるからって、それを理解しようとするのは悪い事じゃないけど
もとの発端はなんだったんだこれ
- 418 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 17:28:51.92 ID:AO7Grx3Qa.net]
- デリケートじゃないか?w
- 419 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 17:32:16.71 ID:1jan2CXL0.net]
- >>402
>>327 のデリケートが事の発端
- 420 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 17:43:13.42 ID:VOfp/P7BM.net]
- 誰かさんの大好きなLinqはdelegateの塊なんだけどdelegateなくなっていいのかな
他の実装ではdelegate使ってないけど今の.netではデリゲートで実装されている
- 421 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 18:48:11.73 ID:0oARoVrcM.net]
- デリゲートにラムダ式にLinq大好きだ!
これ無くして生きてけない! チームの誰も読めないから放置されて我が道を歩んでいる。 生産性と品質が高いから客には好評です。
- 422 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 20:25:40.95 ID:7jH+OfQ/0.net]
- >>406
チームの誰もが読めないという事は保守性に欠けると言う事ですね
- 423 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 20:33:41.95 ID:0oARoVrcM.net]
- そうだね。
でも、Linqバリバリ使ったらそうなるよね。 みんなの勉強しろよってこと。
- 424 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 20:39:16.25 ID:h8CnrujR0.net]
- Linqが分からないってのはラムダ式を理解できないってことなの?
- 425 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 20:43:00.38 ID:54mp5fzVM.net]
- 行列計算ライブラリ書いてるときに
おれ掛け算わからんからおれに合わせて全部足し算で実装して おれはいまお前の案件に関わってないけど将来そのライブラリメンテするかもしれんからヨロシクな とか言う同僚がいたらこいち頭おかしいのかなって思うじゃん いやいや掛け算を勉強してからっていうか最低限の単位を取ってからメンテしろよってなるじゃん普通 これがLinqやλやデザインパターンになると当たり前のように底辺至上主義がまかり通る不思議な業界
- 426 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 20:47:26.87 ID:kvLDmgw/0.net]
- LINQはC#にしかないからまだわかるけどラムダ式はいまどきの言語ならほぼ実装してるから知ってないとまずいよね
- 427 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 20:50:03.81 ID:2splWvty0.net]
- linqてC#にしかないのか
- 428 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 20:52:58.46 ID:54mp5fzVM.net]
- Linqにも類似品あるよ
Javaのstreamやpythonのリスト内包表記など というかそもそも単なるiterator patternでしかないからC#が起源ってわけでもない
- 429 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 21:00:28.55 ID:4y2IVpvw0.net]
- Linq以前にIEnumerableの意味が解らない人がいるからどうしようもない
.NET2.0から順に教えろってことかよ・・・
- 430 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 21:03:28.98 ID:MhKfyDgC0.net]
- >>410
と、底辺至上主義がまかり通る所の意識高い系が申しております >>413 どう見てもSQLが起源だろ
- 431 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 21:07:24.39 ID:54mp5fzVM.net]
- >>415
クエリ形式の文法はSQLが起源かもしれんが 実装はSQLとは全く関係がないよ C#などの実装はまさしくiterator patternだけど SQLの実装をiterator patternでやろうとしたら遅すぎる
- 432 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 21:07:34.76 ID:4W3gH+0Ua.net]
- そもそも書けない奴は論外として、使うなってのは同意できる
簡潔に判りやすいラムダ書いてくれりゃいいが、わざとやってんじゃねってぐらい難読化する奴いるからな 正規表現、SQ、掲示板の長文も同じだな
- 433 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 21:12:52.02 ID:0oARoVrcM.net]
- Linqに限らず最近のソフトウェア技術は高度で生産性も高くなってる。
昔も人によって生産性に差が出たが、最近だと理解出来るか出来ないか?ぐらいの圧倒的な格差だ。 理由出来ない人は辞めればいい。 生産性が飛躍的に上がってるので理解出来る奴だけで
- 434 名前:間に合うよ。 []
- [ここ壊れてます]
- 435 名前:デフォルトの名無しさん [2018/06/09(土) 21:17:22.22 ID:ekScYlKMa.net]
- 自称プログラマー(趣味)ならともかく職業プログラマーでLinqすら理解出来ないやついんの?
|

|