トップページ⇒tech
1002コメント371KB

C#, C♯, C#相談室 Part92 [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2017/01/28(土) 16:46:53.58ID:op86qfG/
■Visual Studio 2015 Community & Express (無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467211515/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
0083デフォルトの名無しさん2017/02/18(土) 19:51:04.90ID:d0hejx53
panelを2つ貼ってbackgroundcolourを設定しろよ
0084デフォルトの名無しさん2017/02/18(土) 19:58:44.57ID:M4R1Zp6s
それやってるって書いてあんじゃん。読めよw
無理やりオーナードローかform捨てるしかないだろな
0085デフォルトの名無しさん2017/02/18(土) 20:00:20.55ID:n/aPn98B
>>82
なんの目的があるかわからん。
色が分かれていても、別のものを表示している訳ではないの?
0086デフォルトの名無しさん2017/02/18(土) 20:24:06.51ID:jkd676sQ
パネルじゃなくて、ラベルとか影響の少ないコントロールを Z オーダーの一番下に張るのとか出来なかったっけ。
0087デフォルトの名無しさん2017/02/18(土) 20:44:32.17ID:n5oO6gvO
上にコントロール重ねること考えたらパネルが一番楽で無難なんじゃね
フォーム(パネル)の背景設定でもいいけど
>>86
パネル以外だと上にコントロール重ねたら下が見えなくならないかな
0088752017/02/18(土) 22:28:19.09ID:cWaaGg3V
sqliteで作るときに、テーブルをツールで定義してからそのsqlをC#のソースに変換するのが面倒だっから
ツールが有ったら使いたいなと思い聞いてみました

他のDBだと、ソースにテーブル定義を書くなんて無いからちょっと混乱させちまいましたね
面倒でも手でやるのが一番早そうだ
0089デフォルトの名無しさん2017/02/18(土) 22:56:35.91ID:XkQA6zD3
EntityFramework でググれば幸せになれるよ
0090デフォルトの名無しさん2017/02/18(土) 23:07:16.07ID:rCytLmz9
>>88
だからファイル詠み込めよ
なんで動的sqlでもないのにコードに書くんだよ
0091デフォルトの名無しさん2017/02/19(日) 00:04:30.14ID:TkpsmKBX
>>82
サイズ変えないならFormのBackgroundImageに
色分けしたBitmap貼るとかいいんでないの?
好きな背景にもできるぞ
0092デフォルトの名無しさん2017/02/19(日) 00:14:46.31ID:PjLfAeqZ
>82です。みなさんありがとうございます。
説明補足すると、メッセージボックスを自作していて、メッセージボックスのような背景を作りたかったんです。
0093デフォルトの名無しさん2017/02/19(日) 07:54:46.40ID:ngALvOwB
>>88
> 他のDBだと、ソースにテーブル定義を書くなんて無いから
SQL-SERVER 使ってるけど一時テーブル作ったりで普通にあるけど?
0094デフォルトの名無しさん2017/02/19(日) 08:47:37.68ID:iOIH+Q4P
>>92
似たようなことはDock=Top, AutoSize=FalseとしたLabelでよくやる。
0095デフォルトの名無しさん2017/02/19(日) 10:11:31.31ID:93wksAh/
>>89
sqliteでEF使うと致命的に遅いから無理ですわ

>>90
何故に喧嘩腰?

>>93
俺はあまり一時テーブルに頼らずにviewでなんとかするのが好きだから、そこまで思い当たりませんでしたわ
たしかに一時テーブルが正義の場合だって少なくないだろうが
0096デフォルトの名無しさん2017/02/19(日) 10:23:29.24ID:TZ/mXSM2
一時テーブルは保守性が下がりパフォーマンスもスケーラビリティも多くの場合悪くなるのでやめてください
0097デフォルトの名無しさん2017/02/19(日) 10:32:03.79ID:kiv7S6GK
>>96
そう言って糞長いストアド作りまくった挙句に保守できなくなった案件があったと、DBコンサルが笑い話のネタにしてたな
一時テーブル=害悪はどこの文化なんだろ
0098デフォルトの名無しさん2017/02/19(日) 10:41:13.77ID:98lVckOm
一時テーブルは使うけど実行時にcreateするってのは経験ないなぁ
0099デフォルトの名無しさん2017/02/19(日) 10:41:38.21ID:7Avz8j0c
そういうのは結局は開発者の能力の問題
一時テーブルかストアドかはそれほど重要ではない
0100デフォルトの名無しさん2017/02/19(日) 11:34:46.47ID:gpMreema
>>95, >>97
一時テーブルとビューとかストアドとは使いどころが違うと思うんだが何故に比較してるんだろ?

>>98
セッション内でのみ有効な一時テーブルとか使ったことないの?
0101デフォルトの名無しさん2017/02/19(日) 11:42:57.76ID:98lVckOm
>>100
あったあった。そう言われると1度だけ。
あのときは言われたとおりやっただけだから忘れてた。
0102デフォルトの名無しさん2017/02/19(日) 11:52:35.81ID:TZ/mXSM2
>>97
一時テーブルなんてなくてもクソ長くならないし
そもそもストアドなんて保守性の低いものをむやみに使う必要もない
リレーショナルデータベースとは何か勉強しなおしてこい
0103デフォルトの名無しさん2017/02/19(日) 12:29:51.72ID:LQaPeC4X
普通はefを使うもんなの?
0104デフォルトの名無しさん2017/02/19(日) 12:40:55.60ID:zEbYND7D
テーブルがシーケンシャルファイルにしか見えないCOBOL世代の人なんかは一時テーブルとかストアド好きだよね

結局は自分の慣れ親しんだ領域に持って行ってやるのがその人にとってはベストなんだよ
どうせ保守するのは自分じゃないし自社ですらないことも多いからその場でその人員でできるベストを採用しなきゃビジネスとして悪手
流行りや有名コンサルに乗せられて意識たかそうなコードをメンバーのスキルもないのに書こうとする
これが最悪の選択肢

列挙型とswitchで分岐しまくるほうがメンバーにとって理解しやすいならそれがいい
そういう現場では多態性を利用したコードは生産性が落ちる
一時テーブルとストアドも同じでメンバーが理解しやすいというなら保守を受注する会社あるいは保守担当の同僚に心の中で懺悔しつつ採用すべきだ
0105デフォルトの名無しさん2017/02/19(日) 12:43:22.84ID:OMGCNA7z
スレチ
0106デフォルトの名無しさん2017/02/19(日) 12:55:43.81ID:LQaPeC4X
>>104
>テーブルがシーケンシャルファイルにしか見えないCOBOL世代の人なんかは一時テーブルとかストアド好きだよね
新しい世代の人にはどう見えるの?
dbの操作はどういう手法が普通なの?
0107デフォルトの名無しさん2017/02/19(日) 12:58:51.41ID:7Avz8j0c
>>106
大抵の処理は積極的にJOINを使えば1パスで済ませることもできる
0108デフォルトの名無しさん2017/02/19(日) 13:05:26.33ID:NYetswUU
あとは、DBを永続化されたオブジェクトの単なるストレージと見做して
ORMを活用してほとんどC#の中でやってしまうスタイルもある
0109デフォルトの名無しさん2017/02/19(日) 13:10:17.55ID:93wksAh/
速度が問題にならない場面でも速度ばかり気になるのは何故なんだろうな?
だから10倍遅くなるEFはあまり好きじゃない
エントリーみたいなものならEF使ったほうが良いとは思うんだけどね
0110デフォルトの名無しさん2017/02/19(日) 13:13:51.67ID:LQaPeC4X
>>108
そのormというのは75みたいなsql文を実行するんですか?
0111デフォルトの名無しさん2017/02/19(日) 14:09:14.55ID:zEbYND7D
>>106
別に新しくもなんともないけど普通は行あるいは命題の集合に見える
操作は当然DMLで行う(データ操作言語だからね)
0112デフォルトの名無しさん2017/02/19(日) 14:24:55.62ID:7Avz8j0c
近年ではビッグデータ界隈で古典的なバッチ処理が最新技術として復活したけどね
処理を行単位ではなくテーブルからテーブルへの射影と考える粗粒度なバッチ処理は
分散処理や糞遅いスクリプト言語との相性がいい
0113デフォルトの名無しさん2017/02/19(日) 15:04:35.19ID:rTEdd30o
最近EntityFrameworkじゃなくてDapperばっか使ってるわ
0114デフォルトの名無しさん2017/02/19(日) 15:09:45.51ID:MFFmnvDE
真っ当な判断能力があるなら必然的にそうなる
0115デフォルトの名無しさん2017/02/19(日) 15:11:31.44ID:OMGCNA7z
DbExecutor使ってるけど全然更新されなくて悲しい
0116デフォルトの名無しさん2017/02/19(日) 16:48:08.70ID:LQaPeC4X
>>113
Dapperと言うのを調べてみたのですが生のSQLを実行するのと
何が違うのか良く分かりません。Dapperと言うのを使う場合でも
SQL文を実行するんですよね?
何が違うんですか?
0117デフォルトの名無しさん2017/02/19(日) 16:55:48.71ID:JyXmk48j
>>116
Dapperは主にクエリ結果をオブジェクトにマッピングするためのライブラリ
Dapperを使わない場合でもDataTableやDataReaderをそのまま使わずに型安全なオブジェクトに変換してから処理をするだろう?
それを楽に書きたい人のためのものだよ
0118デフォルトの名無しさん2017/02/19(日) 17:11:25.76ID:LQaPeC4X
>Dapperを使わない場合でもDataTableやDataReaderをそのまま使わずに型安全なオブジェクトに変換してから処理をするだろう?
Dapperを使わない場合ですが、DataTableに読み取ったあと、カラムの型は自分では分かっているので順番にデータを取り出して、
その型にキャストして読み出すのはダメですか?
それとも私何か勘違いしていますか?
0119デフォルトの名無しさん2017/02/19(日) 18:11:13.51ID:7Avz8j0c
>>118
それを自動でやってくれるのがDapper
0120デフォルトの名無しさん2017/02/19(日) 20:35:23.16ID:LQaPeC4X
>>119
なるほど。ありがとうございました。
0121デフォルトの名無しさん2017/02/19(日) 20:41:40.94ID:+HIMLleH
Dapper気軽そうでいいね。
0122デフォルトの名無しさん2017/02/19(日) 21:16:27.26ID:PjLfAeqZ
>94
なるほど、ありがとうございます
0123デフォルトの名無しさん2017/02/19(日) 22:55:47.64ID:L+LZlPn0
35:54
↓
10:40
https://www.youtube.com/watch?v=WTdY7h129Mk

https://www.youtube.com/watch?v=8R0luOy8ce8
0124デフォルトの名無しさん2017/02/22(水) 23:33:37.07ID:yhciyQan
質問させてください。
なにかの処理中にフォームなどを起動させておく、以下の処理について。
while(xxx.HasExited == false) //xxxはインスタンス
{
Applcation.DoEvents();
System.Threading.Thread.Sleep(200)
}
この処理はwhile文で回していますが、DoEventsとSleepは、なにか処理が行われるたびに呼び出されると思ってよいのでしょうか。
起動中に
なにか処理する→0.2秒とまる→なにか処理する→0.2秒とまる→… みたいな。

またこのSleepは、現在起動中の処理を一時的に止めると思ってよいでしょうか。
ご教授お願いします。
0125デフォルトの名無しさん2017/02/22(水) 23:52:38.18ID:d6y2GeKl
>>124
何を見たのか誰に教えてもらったのか知らないが、まずはそんなクソコードは忘れよう
DoEventsはVB時代の遺物であり、使用は推奨されない
今時は時間のかかる処理をGUIをフリーズさせることなく実行したい時は
await Task.Run(() => {
 何かの処理
});
と書く
0126デフォルトの名無しさん2017/02/22(水) 23:56:30.83ID:huuz+PNn
その処理だと、全力でDoEventsと0.2秒休むを繰り返すだけだよ
つか、今どきDoEventsとか存在を忘れたほうがいいんじゃないかねえ
0127デフォルトの名無しさん2017/02/22(水) 23:57:19.06ID:954rYVtd
>>124
そのセットは別スレッドの入力待ちのテンプレ
・・・Application.DoEvents()って必要だったっけ?w
それはあいまいだけど、キー入力待ちか外部exeからの返り値待ちで使われている
0128デフォルトの名無しさん2017/02/23(木) 01:32:48.34ID:zQR1bKXh
>124です。みなさんありがとうございます。
最近は推奨されないんですね。
理解としては>127さんのとおり、イベント発生したらDoEventsが実行されると思ってよいのでしょうか。
0129デフォルトの名無しさん2017/02/23(木) 01:40:04.09ID:l1pCIGHb
逆
DoEventsが実行された時に貯まってるイベントを処理する
0130デフォルトの名無しさん2017/02/23(木) 14:52:23.00ID:daVfofu2
C#をCGIぽく使うベストプラクティスとかないだろうか。
普段はcentOS+nginxでJavascriptとRuby/PHP、一部バッチにC#って感じでWebサービス開発してる。

リクエスト毎にサーバ側でC#アプリケーションを引数添えて実行して、戻り値を取得するのは出来るんだけど・・ 。
とても実用には耐えなさそうだし、Webホストとか使うのかと思ったがわからず困ってる。
0131デフォルトの名無しさん2017/02/23(木) 15:24:59.57ID:0G6iEay4
なぜ実用に耐えなさそうだと思うの?
そう思うからには理由あるんでしょ。そこ解決すればいい
0132デフォルトの名無しさん2017/02/23(木) 19:34:00.47ID:osMc+8cA
毎回プロセスつくんの?
0133デフォルトの名無しさん2017/02/23(木) 20:12:55.31ID:OJm2Ca4N
じゃあC#でWebサービス作ればいいじゃないか
0134デフォルトの名無しさん2017/02/23(木) 20:13:27.60ID:u2e4Httf
そんなごちゃ混ぜでちゃんと保守できるの?
0135デフォルトの名無しさん2017/02/24(金) 01:33:54.44ID:eab+BK9O
>>130
ASP.NET Web API
01361302017/02/24(金) 11:37:39.67ID:dB0UjfyS
みなさん、回答ありがとう。

毎回プロセス作るのはオーバーヘッドでかいから、常駐型になるのかな?
その時のやり取りの仕方をSendMessageだったり、ファイル常時監視してキューファイル投げるとかしか知らないんだ。

WebサービスとかASP.NETで調べてたら、やっぱりC#としての回答はこれなのかなって気がしてきたわ。
個人的な宗教上の理由で避けたかったけど、検討してみる。。ありがとう。
0137デフォルトの名無しさん2017/02/24(金) 12:36:59.04ID:YZGHPd2K
>>136
> 毎回プロセス作るのはオーバーヘッドでかいから
それが問題になるようなサイトなのか?
0138デフォルトの名無しさん2017/02/24(金) 15:11:03.84ID:nwaeFCKh
ASP.NET MVCって案外重たいよ
0139デフォルトの名無しさん2017/02/24(金) 15:50:26.31ID:pDljuoBB
そらそうやろ
0140デフォルトの名無しさん2017/02/24(金) 16:13:46.51ID:0wjaf/O/
C#でWindowsフォームアプリケーションを作るための良い解説書はあるでしょうか?
独習C#はもう読み終えたので基本的なことはわかっていると思います。
0141デフォルトの名無しさん2017/02/24(金) 16:41:06.62ID:nwaeFCKh
ゲームしたいです。ゲーム機とゲームソフト買いました。どっちのマニュアルも読みました
早く遊びたいです。次はどんな攻略本読んだらいいでしょう?

ゲームじゃこういうのないのに、プログラミングじゃ多いよな
基本わかったなら何故始めないw
0142デフォルトの名無しさん2017/02/24(金) 16:48:06.10ID:0wjaf/O/
>>141
独習C#ではWindowsフォームの説明がいっさいなかったので、コンソールアプリしか作れないのです。
フォームに特化した解説書かサイトがあればと思い質問しました。
0143デフォルトの名無しさん2017/02/24(金) 17:08:33.80ID:pp6ofCfh
本なんか一冊も読んでないけどWinFormアプリいくつも作っている
就活で役立てたいのならマ板に行って聞いたら?
趣味でやっているのなら向いていない
0144デフォルトの名無しさん2017/02/24(金) 17:45:41.09ID:LZq2xNz5
Formアプリもコンソールアプリもコードベースで作るなら同じって慣れれば分かるけど、最初は分からないよねー
javaのswingで同じこと経験した
0145デフォルトの名無しさん2017/02/24(金) 17:57:21.18ID:m8N/tmCl
本読むやつはプログラミング向いてない
0146デフォルトの名無しさん2017/02/24(金) 18:16:02.45ID:2lTW2QAE
amazonでC#マガジンの海を渡ればWinFormの本が見つかる
0147デフォルトの名無しさん2017/02/24(金) 18:26:49.22ID:2HxY6Dp6
まだWinFormの時代なんだなw
0148デフォルトの名無しさん2017/02/24(金) 18:27:42.45ID:0tWWIcvC
>>145
悪かったな、読んでるよ。
0149デフォルトの名無しさん2017/02/24(金) 18:44:16.34ID:ZTtaAqVi
きちんと勉強したいなら本代はケチんなってばっちゃが言ってた
0150デフォルトの名無しさん2017/02/24(金) 18:44:46.20ID:WmxnDnjh
WPFの本出しても売れないのは明らかだしな
0151デフォルトの名無しさん2017/02/24(金) 18:47:19.91ID:JpyYS2dN
コンソールアプリは明確にmainというエントリポイントがあるが、
GUIはイベントベースから最初の最初は戸惑うだろ。
(どこにコードを書くのかわからない)
ただ、1回やれば分かるが。

で、そのレベルならMDSNのチュートリアルで十分だと思うよ。
https://msdn.microsoft.com/ja-jp/library/dd492171.aspx
これで駄目なようなら向いてないってのは事実だよ。
本買って本格的に学ぶ内容ではない。
(これはWPFだけどどうせ違いも分かってないでしょ。
古いバージョンのを探せばフォームのチュートリアルもあるはずだし)
0152デフォルトの名無しさん2017/02/24(金) 18:49:16.49ID:CB55ejbI
ダブルクリックしてれば何とかなる
0153デフォルトの名無しさん2017/02/24(金) 20:32:10.23ID:DIkdt+H/
肥大化するForm1.cs
0154デフォルトの名無しさん2017/02/24(金) 20:55:52.19ID:2lTW2QAE
ソリューションエクスプローラでファイルを入れ子にする
ttp://wiz.came.ac/blog/2009/09/post-2.html
0155デフォルトの名無しさん2017/02/24(金) 21:52:47.57ID:KBFO5tFR
form動かすのは簡単だけどformのコードを破綻させずに書くのは難しい
少なくとも日本の大半の職業プログラマには無理
悲しいね
0156デフォルトの名無しさん2017/02/24(金) 22:19:08.66ID:ezpXAtZb
動きゃいい
0157デフォルトの名無しさん2017/02/24(金) 23:22:45.93ID:WdGON0E4
最近はウェブでなんとかなるんだが、きちんと本で勉強するべきだと思う。
C++長かったからC#楽勝と思ったけどラムダ式が読めない。
今更独習C#はと思ったが読んでよかった。
0158デフォルトの名無しさん2017/02/24(金) 23:40:01.37ID:nwaeFCKh
ラムダ式使えなくって作りたいものは作れるからな
言語を学びたいのか、プログラミングしたいのか、だな
0159デフォルトの名無しさん2017/02/25(土) 00:07:49.88ID:Hh3bBfOP
ラムダ?

登場してから60年以上たってもLISPが普及してないのが答え。いらん。
0160デフォルトの名無しさん2017/02/25(土) 00:27:59.19ID:N0RLU+6x
俺が使っているのはJavaScriptなんだが、ラムダは超絶便利だぞ。
ただし使わなくても書けるし、いちいちクラスにしてしまう手もあるし、どうにでもなるのも事実だが。

本で学ぶことが必要なのではなくて、いろいろな道具があることを知るのが重要。
今時の言語は全てラムダ使えるんだから、他言語少しでも学んでいればラムダは使えたはず。
その点、C++は古い言語だったのも事実。

ただどう見ても142はそれ以前だろ。
そもそもWPF(というよりHTML)やったほうがいいんじゃないかと思うし。
0161デフォルトの名無しさん2017/02/25(土) 00:54:21.20ID:N9ovtMND
ストラテジー用のインターフェース定義とかいちいちめんどくさい
Func、Action、ラムダでスパッと実装したい
0162デフォルトの名無しさん2017/02/25(土) 00:58:33.11ID:Jm21gNIW
スパッと書く書式、
スパっと書くアルゴリズム、
スパッと書くクラス設計・・・
いつまで経ってもプログラミング始めれず勉強の毎日だぞ
0163デフォルトの名無しさん2017/02/25(土) 01:18:47.75ID:N0RLU+6x
めんどくさい人にはマジでJavaScriptオススメ。
あのデタラメッぷりには最初戸惑ったが、慣れてしまうと相当いい。

ラムダに慣れたいだけなら、スクリプト言語系(JavaScript/Python/Ruby)がマジでいいと思う。
C#のデリゲートって使う前にいろいろ準備が要って面倒だし、
あるのを知ってても使う気にならないでしょ。
俺もVC++しか使ってないころは全く興味なかった。

でもJavaScriptでお気楽にラムダ使いまくった後は、VC++でも使いたくなる。
だってそのほうが楽だと知ってしまったから。
ただ、いちいち型を合わせないといけないのが面倒だったりする。
0164デフォルトの名無しさん2017/02/25(土) 01:26:56.21ID:N9ovtMND
インテリセンス弱いスクリプト系言語は怠け者には向かない
0165デフォルトの名無しさん2017/02/25(土) 01:40:08.63ID:N0RLU+6x
まあIDEに関してはC#が一番上なのだろうね。それは思うよ。
0166デフォルトの名無しさん2017/02/25(土) 01:45:57.08ID:Hh3bBfOP
winform使うにしもてwin32の知識は必要。結局win32ラップだし。
0167デフォルトの名無しさん2017/02/25(土) 01:46:38.10ID:FbflVc2K
ラムダはインテリセンスあってこそやね。
0168デフォルトの名無しさん2017/02/25(土) 02:39:26.60ID:ByE41wZl
これからC#でGUIするんならWPFにしたらいいんじゃない。フォームは古いし。
但し、WPFの本はない、あるけど使えないと云うか価格に見合ってない。いい本あったら教えてもらいたい。
0169デフォルトの名無しさん2017/02/25(土) 07:34:49.62ID:JxD18xMy
WPFやってみたけどやっぱりformのほうがお気楽だから戻ってきてしまった
0170デフォルトの名無しさん2017/02/25(土) 07:54:43.41ID:fA+zhTaO
javascriptのラムダって例えばどんなヤツよ?
0171デフォルトの名無しさん2017/02/25(土) 08:03:07.91ID:vx9FCuam
>>170
今のJavaScriptは (x, y) => x + y のようなC#と全く同じ構文の(というかC#をそのまま真似したんだろうけど)ラムダが使えるよ
もちろん従来の function(x, y) { return x + y; } でもいいし
0172デフォルトの名無しさん2017/02/25(土) 10:39:52.17ID:TcOntMIt
JSだとインテリセンスが弱い?TypeScript使おうぜ
0173デフォルトの名無しさん2017/02/25(土) 12:04:24.91ID:N0RLU+6x
JavaScriptのラムダがC#を真似したと言うのは自意識過剰すぎ。(短縮記法の()=>は真似してる)
インテリセンスはMS発なんだしはっきり言えば全員C#を真似しているからVS環境のTSではよくて同等まで。

JavaScriptは文法的な意味で関数とラムダを区別してない。
だからさらっと書いてそれだけ。

var count = 0;
var count_up = function(){count++;};
var show_count = function(){console.log(count);};

count_up();
count_up();
show_count(); // 2

見りゃ分かるが具しか書いてない。だから論理的にこれ以上お手軽なのはない。
(短縮記法は出来るがあれはタイプ数がケチれるだけ)
ついでに階層もクラスも関数で記述するというデタラメッぷり。
だからそもそも「ラムダなんて使いません(キリッ」みたいなことが出来ない。
(階層がラムダ)

知らなければ意味不明だと思うが、とにかくそういう世界だ。
その状況で慣れると、心理的な障壁が取り除かれる。
ラムダ嫌いって要するにこれだろうし。
0174デフォルトの名無しさん2017/02/25(土) 12:12:40.17ID:TcOntMIt
ES6ならclass構文(内部では関数に変換されるけど)あるからかなり楽になったぞ
0175デフォルトの名無しさん2017/02/25(土) 12:24:18.16ID:S4wbN3RD
ラムダは真似というか普通に輸入だろ
ES6の策定にはMSも主導的な立場のメンバーとして当然参加してるし
0176デフォルトの名無しさん2017/02/25(土) 12:26:33.18ID:IfKbzrsT
>>173はjavascriptやったことない奴でも初見で何してるか分かる
でもこんなの書かれたら初見で見破るの無理でしょ
var res = ((Func<int, int, bool>)((i, j) => i == j))(5, 3);

ラムダ嫌いはラムダが嫌いなんじゃなくて、読みにくいラムダが嫌いなんでしょ
「ラムダなんて使いません(キリッ」じゃなくて「読みにくいラムダなんて使いません(キリッ」なんだよ
0177デフォルトの名無しさん2017/02/25(土) 12:31:25.09ID:N0RLU+6x
>>174
あんなもん所詮慣れ。俺は従来のJavaScriptの構文でも苦労してない。
そしてラムダも所詮慣れ。慣れればどうって事は無い。(難しくは無い)
ただし使わなくても実装できるのは事実で、わざわざ慣れる必要があるかは微妙。
0178デフォルトの名無しさん2017/02/25(土) 12:45:06.30ID:S4wbN3RD
>>176
関数の即時評価はJSでは非常によく使われるテクニックだよ
C#のラムダなんて、本来の副作用がない使い方をするのがほとんどだから可愛いもんだ
JSではガンガン副作用書いていくから超複雑だよ
0179デフォルトの名無しさん2017/02/25(土) 13:25:03.75ID:Hh3bBfOP
>>176
パラダイムが違うものごっちゃにして何がしたいんだ?
やたらカタカナ使う田中康夫やルー大柴の日本語みたいなものだ。
0180デフォルトの名無しさん2017/02/25(土) 13:29:41.99ID:N0RLU+6x
>>176
それは型情報を付加しようとしているから見た目複雑になる。
型情報が無いJavaScriptなら以下になる。

var func = function(i,j){return i==j;};
var res = func(5,3);

もちろん1行でも書けるが、これはJSer以外にはすこぶる評判が悪い。

var res = (function(i,j){return i==j;})(5,3);

そしてこれをアロー関数(短縮記法)で書いたらC#の型情報を落としたものと同じになる。

var res = ((i,j)=>i==j)(5,3);

そもそも「お手軽にやろうぜ」というノリなら型情報が無いほうがよく、
その点がC#だとどうにもフィットしない。


ただしラムダ使い全般が馬鹿なのか、
あるいはJavaScript含めた関数系一般に言える傾向なのかは定かではないが、
おかしな記述で余計複雑にする馬鹿、まさに「木を見て森を見ず」はよく見かける。
奴らは「木」つまり一箇所の記述を最小限にすることに異常にこだわり、
「森」つまり全体を最小限にすることを考えていない傾向がある。
だからラムダ(キリッな奴が出してくるコードが糞なことも多く、
これがラムダを知らない連中にとってラムダを学ぶ価値があるように見えない理由だと思う。
対してオブジェクト指向は「森」を「林」に小分けする手法だから、
オブジェクト指向をきちんと出来ている連中から見れば余計に馬鹿に見えてしまうし。
0181デフォルトの名無しさん2017/02/25(土) 13:31:51.44ID:Hh3bBfOP
これだからemacs使いは嫌われるんだよ。
0182デフォルトの名無しさん2017/02/25(土) 14:43:31.03ID:Qzh8dVTL
関数呼び出しでデリゲート渡すところをラムダ式で書いたりするのが便利だし、プログラムが小さくなり、関連ある記述がまとまり、慣れると読み易い。
まあ、伝統的と云うか、平均以下のレベルに合わせたコーディング規約が幅をきかせているプロジェクトでは忌み嫌われる。
■ このスレッドは過去ログ倉庫に格納されています