1 名前:デフォルトの名無しさん (ワッチョイ 5394-4hBO) mailto:sage [2016/12/27(火) 02:07:41.47 ID:HrGPkQcW0.net] 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part125 echo.2ch.net/test/read.cgi/tech/1475930006/ ■関連スレ C#, C♯, C#相談室 Part91 echo.2ch.net/test/read.cgi/tech/1467211515/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■情報源 https://msdn.microsoft.com/en-us/library/gg145045.aspx referencesource.microsoft.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configure
273 名前:デフォルトの名無しさん (ワッチョイ f3bb-3qL8) mailto:sage [2017/01/20(金) 21:46:16.09 ID:ao0q6onS0.net] なんというかイラってくるレス
274 名前:デフォルトの名無しさん (ワッチョイ 7fe1-ws0G) mailto:sage [2017/01/21(土) 01:34:13.79 ID:XoO/Nzrc0.net] >>265 +1は不要だね
275 名前:デフォルトの名無しさん (ワッチョイ 8fcb-YAkb) mailto:sage [2017/01/21(土) 01:34:35.71 ID:O/GZ8TN60.net] >>267 カッコ内の処理が下に記述された処理より後に実行されるのがお気楽でないね 複数書いたらどれが一番最初に実行されるんだろか? ってところを実はよくわかって使っていないことが同僚にバレるのも時間の問題なわけだよ
276 名前:デフォルトの名無しさん (ワッチョイ bf85-ZNqe) mailto:sage [2017/01/21(土) 08:30:00.84 ID:7Cy++wUg0.net] >>269 ありがと〜
277 名前:デフォルトの名無しさん (ワッチョイ 7f4c-VYni) mailto:sage [2017/01/21(土) 11:25:24.95 ID:wJLBUXJS0.net] >>267 通信プロトコルで、48bit時間以上の無受信で一区切りなんだけど、ドライバーでSerialPortクラスのReadTimeoutプロパティ(SetCommTimeouts関数)に完全対応していないものが多いから、そのタイマーを用意すた。 今だったら、Task.WaitAnyの一つをタイマーにしとけば楽チンだったかもね。 ところで、C#でWin32のWaitbleTimerのような、そのまま待機メソッド(Wait, WaitAll, WaitAny)に対応してるタイマーってあるの?
278 名前:デフォルトの名無しさん (アウアウウー Sa67-gIHQ) mailto:sage [2017/01/21(土) 12:31:23.14 ID:iYYQzwCfa.net] ドライバレベルで対応するような機能かなそれ。違うような気がするけど。 ドライバって言ってるんだからシリアルUSB変換ブリッジを使ってるんだろうけど、 だとしたらそもそもUSBが間に入ってるために48bit時間なんて概念が無効なだけだと思うけど
279 名前:デフォルトの名無しさん (ワッチョイ ff3c-j6UX) mailto:sage [2017/01/21(土) 13:03:52.44 ID:1cIKmUbZ0.net] >>273 > ドライバって言ってるんだからシリアルUSB変換ブリッジを使ってるんだろうけど、 あまり知ったかしない方がいいかと...
280 名前:デフォルトの名無しさん (アウアウウー Sa67-gIHQ) mailto:sage [2017/01/21(土) 13:09:00.67 ID:iYYQzwCfa.net] うんお前がね 普通にPCIやExpressのバスにぶら下がる形のシリアルの拡張ボードで 特別のドライバを必要とするものなんか見たことないよ OS標準で最初から入ってるんだから
281 名前:デフォルトの名無しさん (ワッチョイ 8fce-HQXh) mailto:sage [2017/01/21(土) 13:41:03.09 ID:oJxw4Shh0.net] 48bit時間が何ミリ秒なのか知らんけど本当なら間にマイコンとかでブリッジかますような案件じゃねえの PC側で設定したタイムアウトのアバウトさで済む話なのかねえ 業務で使うなら破綻すると思うけど
282 名前:デフォルトの名無しさん (ワッチョイ ff3c-j6UX) mailto:sage [2017/01/21(土) 14:08:54.55 ID:1cIKmUbZ0.net] >>275 だからいちいち無知晒さんでいいから www.contec.co.jp/product/device/comdrv/#pci
283 名前:デフォルトの名無しさん (ワッチョイ 7f4c-VYni) mailto:sage [2017/01/21(土) 14:09:01.72 ID:wJLBUXJS0.net] 272、275が近いね。 シリアルTTLのチップがあって、そのドライバーには関数名のプレースホルダーは用意してるがタイムアウトは機能してないって回答をいただいてる。で、プロトコルのルールに従ってタイマーを用意しただけだ。 もちろん、もうこんな仕事は請けんけどな。 ただ、興味で待機メソッド対応のタイマーってC#であるん?ってのが知りたかっただけ。
284 名前:デフォルトの名無しさん (ワッチョイ cf9d-3qL8) mailto:sage [2017/01/21(土) 14:18:24.01 ID:dBVmTL1r0.net] 48bit時間ってのがどのくらいの長さなのか知りたいだけ
285 名前:デフォルトの名無しさん (ワッチョイ ff17-x7a5) mailto:sage [2017/01/21(土) 14:23:49.09 ID:JwMYXArD0.net] マルチスレッド使いながらある瞬間だけシリアル化したいならそこだけ別関数に切り出して [MethodImpl( MethodImplOptions.Synchronized )]を付けるとお気楽だよ (ある電気メーカーが作ったシステムのバグをそれで直したことある)
286 名前:デフォルトの名無しさん (ワッチョイ 7f4c-VYni) mailto:sage [2017/01/21(土) 14:41:37.57 ID:wJLBUXJS0.net] たしかボーレートの最大が115kだったんで、最短は0.4msecぐらいだったかな…って。 フレーム11ビットで4文字分ぐらい。 で、もうこの話題良いよな?
287 名前:デフォルトの名無しさん (ワッチョイ 13dc-jh1Y) mailto:sage [2017/01/21(土) 14:51:59.06 ID:Poucv/rB0.net] >>280 それthisをロックするから.NETの推奨作法に反してる thisのロックは外に漏れるから予期せずクラス外の排他処理と干渉して パフォーマンスが落ちたりデッドロックしたりする原因になる可能性がある
288 名前:デフォルトの名無しさん (オッペケ Sr87-8S/4) mailto:sage [2017/01/21(土) 18:33:09.25 ID:LuBTyI4Rr.net] WinFormで画像関連の処理(主に合成)をゴリゴリ書いてたらむちゃくちゃ重くなった ゲームって1/60秒とかで膨大なレンダリングと合成を繰り返しつつ、AI処理とかアニメ、スキン処理とかやってるんだよな なんでたかが画像の合成ごときで重くなってゲームだとものすごく速く処理できるのかね? 全然わからん
289 名前:デフォルトの名無しさん (ワッチョイ cf5e-SmTw) mailto:sage [2017/01/21(土) 18:38:02.55 ID:4zEMZhpt0.net] >>283 GDIに全部やらせたら遅くなるな 合成とかはバイト配列で必要な部分だけやって表示するだけ迄に持っていくとか DirectXやUnityに画像処理部分やらせるとか 最後はC#じゃなくC++でやるとかw
290 名前:デフォルトの名無しさん (ワッチョイ 33d6-3qL8) mailto:sage [2017/01/21(土) 18:50:02.22 ID:RZU7JwAh0.net] 実装がクソで遅いこともある 文句を言う前にプロファイラとかで調査しような
291 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/21(土) 19:02:39.13 ID:W/zpHkC+M.net] プロファイラの使い方よくわからんし
292 名前:デフォルトの名無しさん (ワッチョイ f3bb-3qL8) mailto:sage [2017/01/21(土) 19:13:16.83 ID:0VDH7cX80.net] C++と違ってC#にはどうやっても超えられない壁があるんだよ。
293 名前:デフォルトの名無しさん (ワッチョイ 9377-8QYx) mailto:sage [2017/01/21(土) 20:19:14.82 ID:g8nBrPXf0.net] 要所をunsafeにすることで相当効果出る場合もあるけどね。
294 名前:デフォルトの名無しさん (ワッチョイ 1342-sQpi) mailto:sage [2017/01/21(土) 20:28:06.61 ID:AZ4jUWLU0.net] 餅は餅屋 あとopenGLね
295 名前:デフォルトの名無しさん (ワッチョイ f3bb-3qL8) mailto:sage [2017/01/21(土) 21:33:09.90 ID:0VDH7cX80.net] >>288 undafeの突入、脱出のコストが高すぎて、 丸ごとunsafeに入る規模のコードしか高速化できない。
296 名前:デフォルトの名無しさん (ワッチョイ c33c-r8v3) mailto:sage [2017/01/21(土) 22:19:24.72 ID:LzlUxaG40.net] >>287 まあ目指すところが違うから当然だわな
297 名前:デフォルトの名無しさん (ワッチョイ 13dc-jh1Y) mailto:sage [2017/01/21(土) 22:50:54.76 ID:Poucv/rB0.net] やってることが同じならC#とC++で速度なんか大して変わらん 少なくともスクリプト言語みたいに数桁遅いってことはないから、 C#で書いたコードそのものがボトルネックになってるときに そのままC++に書き直したってボトルネックが解消することはまず無い
298 名前:デフォルトの名無しさん (ワッチョイ 83a1-5ScM) mailto:sage [2017/01/21(土) 23:02:05.21 ID:pcFLx4Ty0.net] 越えるも何も基本越えられちゃ困るから壁を作ってる訳で
299 名前:デフォルトの名無しさん (オッペケ Sr87-8S/4) mailto:sage [2017/01/21(土) 23:11:22.69 ID:LuBTyI4Rr.net] それにしてもGDIでのレンダリングとゲーム用のレンダリング、雲泥の差じゃない? 画像処理はGPUで計算させればぶっ飛びで速くなるの? あとポインタ紛いを使えばぶっ飛びになる?
300 名前:デフォルトの名無しさん (ワッチョイ 13dc-wwrd) mailto:sage [2017/01/21(土) 23:15:44.15 ID:Poucv/rB0.net] >>294 GPUを使えば爆速になるのは正しいが、ポインタは要らん 画素にリアルタイムで変換をかけたかったらピクセルシェーダ使え
301 名前:デフォルトの名無しさん (ワッチョイ cf9d-3qL8) mailto:sage [2017/01/21(土) 23:35:53.59 ID:dBVmTL1r0.net] 合成に何に使ってるの? Graphics.DrawImage()はクッッッッソ遅いよ
302 名前:デフォルトの名無しさん (ワッチョイ cf9d-3qL8) mailto:sage [2017/01/21(土) 23:38:32.57 ID:dBVmTL1r0.net] ×:何に ○:何
303 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 00:33:58.14 ID:WHkammw20.net] GDIは速度求めるなら使い物にならない 業務アプリのコントロールのデザイン弄る程度なら十分使える 3Dゲームの画像処理ならGPU処理一択 っても自力でガリガリ書かなくて済む時代
304 名前:デフォルトの名無しさん (JP 0H07-OQjX) mailto:sage [2017/01/22(日) 01:11:33.09 ID:eCbhYovmH.net] >なんでたかが画像の合成ごときで重くなって つーか、具体的にどんな合成やってるか知らないが、画像処理って下手すりゃピクセル単位で チマチマだし、オレの中では基本的に重たそうなイメージがあるけどなあ
305 名前:デフォルトの名無しさん (ワッチョイ f3bb-3qL8) mailto:sage [2017/01/22(日) 01:19:16.26 ID:H+suNOjg0.net] >>292 LINQ使うだけで数桁遅い。それが分からない奴はその程度のコードしか書いたことがないということ。 C#、.netの制約上のボトルネックはC++で消し飛ぶ。
306 名前:デフォルトの名無しさん (オッペケ Sr87-Hq25) mailto:sage [2017/01/22(日) 02:21:36.81 ID:bOybKaZ+r.net] 我慢大会その一
307 名前:デフォルトの名無しさん (オッペケ Sr87-8S/4) mailto:sage [2017/01/22(日) 03:39:23.27 ID:EI5AfIBCr.net] >>295 プログラマじゃないけど前にゲーム業界にいたからピクセルシェーダは使ったことある 使ってみるかな >>296 それですね アルファ合成のときだけBitLocker使ってるけど あとはGraphicsPathとか >>298 そっち系の本買って勉強しようかな ゲームプログラマならc++でやれるんだろうなあ 勉強してみたけど俺にはいろいろ無理だった…
308 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/22(日) 07:39:48.76 ID:4NhSs4FyM.net] Linq遅いマンまだいたんだ Linqじゃなくてお前のコードが酷いだけじゃん
309 名前:デフォルトの名無しさん (ブーイモ MM1f-wwrd) mailto:sage [2017/01/22(日) 08:45:32.72 ID:mrTIs+uVM.net] >>302 Unity使えばいいのに 今時スクラッチで開発なんかしないよ
310 名前:デフォルトの名無しさん (オッペケ Sr87-8S/4) mailto:sage [2017/01/22(日) 10:17:10.34 ID:EI5AfIBCr.net] >>304 まあそれもアリなのかな… たしかにGPUで合成できるし Unityで作った画像編集ソフトかあ
311 名前:デフォルトの名無しさん (ワッチョイ 33d6-3qL8) mailto:sage [2017/01/22(日) 10:45:08.68 ID:kO0RN1SM0.net] >>303 具体例も挙げられないおじいちゃんだから仕方ないね
312 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 10:58:17.59 ID:WHkammw20.net] Linqもラムダ式も一度使うともう戻れねーよな EFと合わせたら生産性ぱねぇし
313 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/22(日) 11:08:50.22 ID:4NhSs4FyM.net] EFは正直どうかと思うが パブリックプロパティだらけになって システムのあっちこっちにビジネスロジックが分散して管理しきれなくなる そうではなくOOPの良い習慣にしたがってビジネスロジックをクラス化する クラスインスタンスの永続化方法も合わせてカプセル化して最小限にとどめる こうしておけばデータアクセス処理に大した工数はかからない 工数削減の夢を見て変なフレームワークに頼って自滅することもなくなる
314 名前:デフォルトの名無しさん (ワッチョイ 13dc-jh1Y) mailto:sage [2017/01/22(日) 11:09:17.59 ID:phG9hQKS0.net] LINQやラムダ式はメソッドの expression body definitions でかなり使いやすくなった ちょっと込み入ってて分かりにくいラムダがあったら手軽にメソッドに括り出して名前を付けられる
315 名前:デフォルトの名無しさん (ブーイモ MM1f-wwrd) mailto:sage [2017/01/22(日) 11:19:16.48 ID:mrTIs+uVM.net] >>308 本来はそのビジネスロジックを実装するときに内部でEFを使うんだよ 所詮シリアライザとクエリビルダにすぎない
316 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/22(日) 11:28:38.11 ID:4NhSs4FyM.net] >>310 だからそれをやるとジワジワとトランザクションスクリプト的な実装になっていって管理が追いつかなくなるってこと
317 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 11:28:58.51 ID:WHkammw20.net] Linqが速度を売りにした技術として登場したわけじゃないわけで。 道具の使い方が悪い例を出して、道具に文句出されてもなぁ。 性能が必要なシナリオなら、システム構成、技術やアルゴリズム、言語を使いわけるものですからね。 業務系の話を例にすると。 Linqのループ処理の遅さは、数桁すら許容できるケースが多く、 DB側で絞ってるのでC#側で大量のループをぶん回すような事はしない。 テキストファイルやDB、メモリ相手のデータでもLinqは透過的に処理できるから便利。 Linqは、コレクションに対する生産性の高さが有益なんであって、 単純なループを例にしてLinqが遅いとしか言えないなら、話にならん。
318 名前:デフォルトの名無しさん (ワッチョイ ff30-QGIP) mailto:sage [2017/01/22(日) 11:31:54.78 ID:0QiRTW2m0.net] 馬鹿だから一つしか覚えられない人間に二つ目を覚えろというのは酷ではありませんか? おそらく高脳様なんでしょうけどド低脳に対する配慮が足りませんよ
319 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 11:58:44.67 ID:WHkammw20.net] >>308 もちろんEFを使うときは、レイヤーをちゃんとわけて、カプセル化する前提ね。 ビジネスロジックも、モデルもサービスも必要に応じてちゃんと分ける。 依存関係の多いDataTableに比べたら、EFはPOCOだから、詰む事は少ないと思う。 ビジネスロジックやトラン処理がどこに来るかは、 サービス層・ドメインモデル・エンティティモデルのどこに入れるか次第だろうね。 ORMやDAC代わりにEF導入する現場なら、余計にね。 管理が追いつくかどうかは、開発の規模と設計、プロジェクト構成次第じゃない? うちは、1ドメインで作らず適度にドメイン分割してるから複雑さは低減できてるし。 CQRSなパターンで組んだら、さらに管理が楽になった。 工数削減の夢を見る奴は、いつの時代も論外だぬw
320 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/22(日) 12:18:58.56 ID:4NhSs4FyM.net] しっかりとレイヤ分割してるならなおさら生ADO.NETでもEFでも大した差はでない ビジネスレイヤまでEFが染み出してくると最初は便利かなと思うが後になって後悔する EFは本来privateであるべきプロパティが野晒しになるからロジックの分散を避けられない
321 名前:デフォルトの名無しさん (ワッチョイ a394-GGaX) mailto:sage [2017/01/22(日) 12:28:22.49 ID:opZW6Xxw0.net] 避けられなくないだろ。避けろよ 「染み出す」ってなんだよ。書くべきじゃない場所に書くな。染み出させるな
322 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/22(日) 12:37:09.50 ID:4NhSs4FyM.net] そう 書くべきじゃないところには書くな これを実践するとEFがビジネスレイヤに染み出してくることはない EFのスコープはデータアクセスレイヤに限定される しかしそうなると生ADO.NETに対してそこまで大きな優位性は得られなくなる 生ADO.NETを使った場合でも結局のところデータをビジネスロジックのクラスインスタンスにデータをマップして使うのだから
323 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 12:45:18.70 ID:WHkammw20.net] レイヤ分割してるなら大差ないというのは確かにそう。 DataTableはNULL周りが良くないんよね。XMLWebサービス時代にはお世話になったが。 で、染み出してくるのはPOCOなクラスであってEFではないよ。 POCOなクラスをそのまま使ってるから生じる問題。 DataTableのプロパティのスコープ制御に相当する機能が EFのモデルには無いと思ってるように聞こえるから、その前提で話をすると。 EF6からはnon-publicなフィールドも、シリアル化可能だから制御可能よ。 private/protectedで隠ぺいしつつ、DBに保存とかも出来る。 6以前でもやろうと思ったら自分でそう書けばできる。
324 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 12:48:38.01 ID:WHkammw20.net] いずれにせよ、便利なとこにだけ目を付けて そういう問題点まで考えずに導入しちゃう現場の方が問題だろうねw 全publicなプロパティで困ってるならご愁傷様です。
325 名前:デフォルトの名無しさん (アウアウカー Sac7-RtDt) [2017/01/22(日) 12:50:26.90 ID:8/XlH/DIa.net] おまえらどんな修行積んだらそんななれるんだよ。。 独学やってる俺からみると心折れそうだわ
326 名前:デフォルトの名無しさん (ワッチョイ f3bb-3qL8) mailto:sage [2017/01/22(日) 12:53:59.02 ID:H+suNOjg0.net] >>307 LINQのサンプル書けば分かる話で、昔から散々言われてたこと。 速度が必要ならLINQ使うな、楽したいならLINQ使え。それだけ。 それをLINQは遅くないだの、C#とC++の速度差はないだのは、全くの捏造、デタラメ。素人の知ったか。 今回の話題で遅いのは画像処理。画像処理に糞遅いLINQ使う馬鹿はいないんだよ、糞ガキ。
327 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 13:20:05.54 ID:WHkammw20.net] >>321 馬鹿にしてるのも、素人発言してるのも俺じゃないのに、 なんでそんな悪態つくのかわからんがwww ちゃんとワッチョイかID見ろよ C#やLinqが、C++並みとか早いと言ってるのは俺じゃないぞ 画像処理かつ性能必要なとこで、Linqで組む奴が居たら馬鹿だろ
328 名前:デフォルトの名無しさん (ワッチョイ c33c-5mR9) mailto:sage [2017/01/22(日) 14:03:47.83 ID:W8T+cplZ0.net] デリゲートってどういうときにどう使ってますか? 使ってみようと思ってるんですけど、、、 パスドラみたいなゲームだとどう使うとよかったりするんですかね?
329 名前:デフォルトの名無しさん (ブーイモ MM1f-wwrd) mailto:sage [2017/01/22(日) 14:31:47.38 ID:q7Ms9629M.net] >>323 お前がこれまでイベントやLINQやラムダを使ったことがあるなら、お前は既にデリゲートを使っている デリゲート型の定義は昔の名残みたいなもんで、今更あえて自分でデリゲートを定義する必要はない
330 名前:デフォルトの名無しさん (アウアウウー Sa67-gIHQ) mailto:sage [2017/01/22(日) 15:08:27.54 ID:w8qlDydna.net] >>323 いきなり人をお前呼ばわりするような奴の話は無視していいと思うw 彼がなぜ見知らぬ他人にそんな横柄な態度を取るのかお察し(略 前にも書いた気がするけど、BCLで実際にどういう使われ方をしているかを見て理解するのが一番早い。 例えばList<T>なんかのSortメソッドにはデリゲート(Comparison<T>)を引数に取るバージョンと インターフェイス (IComparer<T>)のバージョンがあるが、この2つを比べてみるとか デリゲートの意義は変数(入れ物)を作れることにある。 int型の変数にintの値を自由に入れることができ、intのリテラルと同じように式の中で使えるように デリゲート、例えばAction型の変数には引数なし、戻り値なしのメソッドを自由に入れることができ、 普通のメソッド呼び出しと同じように変数の中のメソッドを呼び出すことができる。
331 名前:デフォルトの名無しさん (ササクッテロレ Sp87-5mR9) [2017/01/22(日) 17:22:01.36 ID:9cOLculsp.net] お二方どうもです! いまunityやってて、なんか自分で定義して使ってみたいんですけど、わざわざ定義して使う必要もないのかと思ったり思わなかったり、、
332 名前:デフォルトの名無しさん (ワッチョイ a394-GGaX) mailto:sage [2017/01/22(日) 17:39:15.02 ID:opZW6Xxw0.net] Action や Func という便利な「定義済みデリゲート」があるので (>>325 のいう「 Comparison<T> 」もそう) いまや、自分で定義する必要はあまりないような… 言葉遣いはぞんざいだったけど、>>324 が言いたいのもそういうことだったのでは
333 名前:デフォルトの名無しさん (ワンミングク MM9f-Taza) mailto:sage [2017/01/22(日) 17:45:53.28 ID:mco4N0ihM.net] >>323 ストラテジーパターンを使いたいなぁと思った時にめんどくさいからデリゲートとラムダを使おう その程度の認識でいいよ
334 名前:デフォルトの名無しさん (ワッチョイ 33a1-IReq) mailto:sage [2017/01/22(日) 20:04:36.92 ID:uhRlBKGc0.net] .の意味ってなに? スペースと何が違うの?
335 名前:デフォルトの名無しさん (ワッチョイ 0390-waAN) mailto:sage [2017/01/23(月) 22:56:49.49 ID:+/l1sI5v0.net] 自分でhttpwebrequest、httpwebresponseのラッパークラスを作っているんですが、どうも使いづらいです 通信エラーが起きてもResponseCodeわからないですし、例外もうまくキャッチすることができません こういうクラスってひょっとしてラップしても意味ないですか? WebrequestやDownloadStringなどを使わないのはCookieなどを付与する必要があるためです
336 名前:デフォルトの名無しさん (ワッチョイ 9377-8QYx) mailto:sage [2017/01/23(月) 23:02:45.38 ID:bI3M8V880.net] >>330 今からやるならHttpClient
337 名前:デフォルトの名無しさん (ワッチョイ cf9d-3qL8) mailto:sage [2017/01/23(月) 23:36:42.09 ID:iMdxUfkB0.net] WebClientにCookie持たせる
338 名前:デフォルトの名無しさん (ドコグロ MM7f-j6UX) mailto:sage [2017/01/24(火) 12:50:22.17 ID:HHZbO6egM.net] >>330 意味がわからん... 自分で作ってるなら使いやすいように作ればいいだけじゃないの?
339 名前:デフォルトの名無しさん (ワッチョイ b30d-516J) [2017/01/25(水) 15:07:13.59 ID:3WJkXYG20.net] HttpClient WebClient WebRequest HttpRequest の違いがわかりません
340 名前:デフォルトの名無しさん (ワッチョイ 63a4-QGIP) mailto:sage [2017/01/25(水) 22:04:46.00 ID:Bb3u5ckd0.net] ふーん
341 名前:デフォルトの名無しさん (ワッチョイ 33d6-3qL8) mailto:sage [2017/01/25(水) 22:18:36.99 ID:W75ZhGr50.net] >>334 聞く前にググれ
342 名前:デフォルトの名無しさん (アウアウイー Sa53-T3y8) mailto:sage [2017/01/26(木) 07:18:39.25 ID:hf6GrTPoa.net] >>334 ググったなんて日本語が分からなかったの?
343 名前:デフォルトの名無しさん (ワッチョイ 2613-uaQk) mailto:sage [2017/01/26(木) 09:58:48.02 ID:sSYf7dfw0.net] >>337 ha?
344 名前:デフォルトの名無しさん (ササクッテロラ Sp13-YLIH) mailto:sage [2017/01/27(金) 02:09:00.56 ID:mwRO9ggOp.net] TextBoxの文字をクリックしたときにその行に頭が特定の文字ならアクションを起こすようなものを作りたいのですが TextBoxクラスのGetCharIndexFromPosition(Point)で文字を取得するとクリック位置が文字の上から外れた場所でも取得できてしまいます 文字上でクリックされた時のみを感知したいのですが何かいい方法があれば教えてください
345 名前:デフォルトの名無しさん (ワッチョイ 1ad4-AZYz) mailto:sage [2017/01/27(金) 12:09:25.78 ID:7rtouHaU0.net] 検索(SQLを投げた)結果を非同期でフォーム表示させようとしてます。 SqlCommandを組み立ててBeginExecuteReaderしました。 AsyncCallback 先で、EndExecuteReaderを実行し DataTableに収納させるまではデバッガで動作確認できました。 ここからが問題なのですが DataTableの内容をForm(DataGridView)で表示されようと思いました。 DataGridViewが貼り付いているFormをnewで生成し、DataGridView.DataSourceにDataTableを入れました。 最後にForm.Showでフォームが開くことを期待したのですが、フォームの枠が出るものの中身が真っ白 キャプションは「応答なし」と出て表示も操作もできません。 最初にBeginExecuteReaderした側のメインスレッドは普通に動いてます。 どうやったら、AsyncCallback 先でフォームを新規表示させることができるんでしょうか。
346 名前:デフォルトの名無しさん (ワッチョイ d3c0-y5A3) mailto:sage [2017/01/27(金) 13:41:41.66 ID:f0Kj2+Uu0.net] >>340 デバッガ使っているならForm.ShowのところでDataGridView.DataSourceにDataTableが入っているか見てみれば?
347 名前:デフォルトの名無しさん (ワッチョイ 9719-VXgO) mailto:sage [2017/01/27(金) 14:04:14.64 ID:FcmXFO0M0.net] 今更AsyncCallback系とかどんな環境なのやら サブスレッドでForm触るとろくなことにならないから AsyncCallback内で全データ取得 →FormとかのBeginInvokeでメインスレッドでフォーム作って表示
348 名前:デフォルトの名無しさん (ワッチョイ 1ad4-AZYz) mailto:sage [2017/01/27(金) 14:20:45.68 ID:7rtouHaU0.net] >>341 そこは問題ないです 描画のところでサブスレッドに順番が回ってこないぽい感じです >>342 >今更AsyncCallback系とかどんな環境なのやら イマドキは別の方法があるんでしょうか 確かに、Callbackは面倒です。゜ やりたいのは、時間のかかるExecuteReaderで全てがブロックされることを防ぎたい、ってことです
349 名前:デフォルトの名無しさん (スッップ Sdca-OKVk) mailto:sage [2017/01/27(金) 19:49:21.84 ID:oQLdhHNUd.net] >>343 .NET Frameworkのバージョンいくつよ?
350 名前:デフォルトの名無しさん (ワッチョイ af4a-y5A3) [2017/01/27(金) 21:29:15.85 ID:+Ih6k9xI0.net] 質問です。 object o = new List<string>(); このstringのところを文字列(を格納した変数)で指定したいのですが、どうすればいいでしょうか? object o = new List<"string">(); ← こういうことをやりたい。 よろしくお願いします。
351 名前:デフォルトの名無しさん (ワッチョイ f7dc-ci5U) mailto:sage [2017/01/27(金) 21:35:00.20 ID:sOrVpnzk0.net] >>345 本当に文字列で指定したいのではなく、動的に型を指定してジェネリックリストを作りたいという要求だと仮定して回答 var argType = typeof(string); var listType = typeof(List<>).MakeGenericType(argType); var o = Activator.CreateInstance(listType);
352 名前:デフォルトの名無しさん (ワッチョイ af4a-y5A3) mailto:sage [2017/01/27(金) 21:37:34.16 ID:+Ih6k9xI0.net] >>346 早速の返答ありがとうございます。 そういう意図で合っていると思いますが、その3行をぱっと見では理解不能なので、テストしてきます。
353 名前:デフォルトの名無しさん (ワッチョイ af4a-y5A3) mailto:sage [2017/01/27(金) 21:59:53.20 ID:+Ih6k9xI0.net] >>346 申し訳ないです、質問で出した例えが悪かったです。 本当にやりたいのはJSONのデコードでなんですが、JSON.NETを使って var o = JsonConvert.DeserializeObject<Hoge>(json); このHogeの部分を動的にしたいのです。
354 名前:デフォルトの名無しさん (ワッチョイ 2b4a-H6k8) mailto:sage [2017/01/27(金) 22:04:04.24 ID:7pKAIIad0.net] >>348 Hogeの数だけifかswitchで分ければいいんじゃないか? [] [ここ壊れてます]
356 名前:デフォルトの名無しさん (ワッチョイ af4a-y5A3) mailto:sage [2017/01/27(金) 22:09:45.37 ID:+Ih6k9xI0.net] >>349 ずらずらと並べて書き始めて、 ふと動的に出来ないものかと思ってしまいましたが、 素直にそうやった方が手っ取り早いですかね。 ありがとうございました。
357 名前:デフォルトの名無しさん (ワッチョイ f7dc-ci5U) mailto:sage [2017/01/27(金) 22:09:50.40 ID:sOrVpnzk0.net] >>348 それを動的にやって何がしたいのか激しく疑問 どのみちobject型として扱うしかないんだから DeserializeObject(string)
358 名前: でobject型にデシリアライズすればいいだろ >>349 と被ったが、後で as や is でHogeにダウンキャストするんだったらその選択肢は予め決まってるはずだから、 switch (str) { case “Hoge”: type = typeof(Hoge); break; case ・・・ } みたいにすればいいだけ それでも本当にどうしても文字列で指定しなきゃいけないというなら Type.GetType(“俺の名前空間.” + str) でできなくはないけど、まず意味はないと思う [] [ここ壊れてます]
359 名前:デフォルトの名無しさん (ワッチョイ af4a-y5A3) mailto:sage [2017/01/27(金) 22:50:37.80 ID:+Ih6k9xI0.net] >>351 > それを動的にやって何がしたいのか激しく疑問 自分も質問文を書きながら、そう思われるだろうなと思っていました。 たぶん、こんなことをしたいと思いつく考え方が、そもそも間違いの可能性が高そうなのですが、 なぜこういうことを思いついたかというと、一つの問い合わせに対して返ってくるJSONの型が 複数あったりするので、どうやれば上手くまとまるかな? と考えたのがはじまり。 成功時→ {"person":{"name":"だれそれ","age":20}} 失敗時→ {"noresponse":{"message":"該当なし"}} エラー→ {"error":{"number":1,"message":"error message."}} 頭の文字列(personなど)引っ張り出して、対応する型名(Person)をHashtableなんかから引っ張り出せばいいかなと。 hashtable.Add("person","Person"); hashtable.Add("error","Error"); ... object Json2Object(string json) { string typename = Regex.Match(json, @"\{""([^""]+)").Groups[1].Value var o = JsonConvert.DeserializeObject<$$hashtable[typename]$$> (json); return o; } 呼び出した側では結局as is しますが、こんな発想自体ナンセンスですか?
360 名前:デフォルトの名無しさん (ワッチョイ f7dc-AomC) mailto:sage [2017/01/27(金) 22:55:29.64 ID:sOrVpnzk0.net] >>352 結局呼び出し元でキャストするんならJson2Objectをジェネリックメソッドにすればいいだけでは?
361 名前:352 (ワッチョイ f7dc-ci5U) mailto:sage [2017/01/27(金) 23:00:09.77 ID:sOrVpnzk0.net] いやすまんJSONに含まれるフィールドに応じて型を変えたいってことか 単に Dictionary<string, Type> でよくね?
362 名前:デフォルトの名無しさん (ワッチョイ af4a-y5A3) mailto:sage [2017/01/27(金) 23:07:41.42 ID:+Ih6k9xI0.net] >>354 なんどもありがとうです。 dictionary.Add("person",typeof(Person)); var o = JsonConvert.DeserializeObject<dictionary["person"]>(json); と言うことでしょうか? VS2015 .NET4.6 では出来なさそうなのですが。
363 名前:デフォルトの名無しさん (ワッチョイ f7dc-ci5U) mailto:sage [2017/01/27(金) 23:25:42.83 ID:sOrVpnzk0.net] >>355 var o = JsonConvert.DeserializeObject(json, dictionary["person"]);
364 名前:デフォルトの名無しさん (ワッチョイ af4a-y5A3) mailto:sage [2017/01/27(金) 23:33:36.50 ID:+Ih6k9xI0.net] >>356 なんと!! 自分の調べ不足を痛感しました。 ほんとうにありがとうございました。
365 名前:デフォルトの名無しさん (ワッチョイ 2a4a-y5A3) mailto:sage [2017/01/28(土) 00:50:12.18 ID:4RGYrg++0.net] 斜め読みだが やっぱDictionaryで済む話やなw
366 名前:デフォルトの名無しさん (ワッチョイ 0faf-56sz) mailto:sage [2017/01/28(土) 01:52:46.60 ID:7wXqm53L0.net] >>339 自己解決しました 表示からは見えなくてもTextBox.Textには改行コードが含まれていたのですね GetCharIndexFromPosition(Point)で取得したインデックスの文字ををcharに入れてみて初めて気が付きました 欲しい文字の判定時についでにクリックされた文字が\nではないかを調べることで実現できました
367 名前:デフォルトの名無しさん (ワッチョイ af4a-WsPK) mailto:sage [2017/01/28(土) 10:57:29.19 ID:Pp3LUsbs0.net] zip内の画像ファイルを展開せずに閲覧する場合に基本クラスとその他のライブラリで速度に違いはあるんでしょうか?
368 名前:デフォルトの名無しさん (ワッチョイ 6b64-cWHx) mailto:sage [2017/01/28(土) 11:05:01.86 ID:1xyPMcX/0.net] もっと詳しく、丁寧に質問して
369 名前:デフォルトの名無しさん (ワッチョイ af4a-WsPK) mailto:sage [2017/01/28(土) 11:26:44.22 ID:Pp3LUsbs0.net] zipファイルに格納された画像ファイル(jpgやpngやbmpやgif等)を展開せずにストリームで読み込む場合に 基本クラスであるZipFileクラスやZipArchiveクラスを使用した場合と、 #ziplibやDotNetZipやJ#のvjslib.dll等のライブラリを使用した場合では速度に有意な差が出るのでしょうか?
370 名前:デフォルトの名無しさん (アウアウウー Sa7f-//rF) mailto:sage [2017/01/28(土) 12:01:12.08 ID:XpAKmUmza.net] 実装に差あるから、有意な差はでるだろうな 問題になるほどその差が大きいとは思えないが
371 名前:デフォルトの名無しさん (ワッチョイ 7e5e-y5A3) mailto:sage [2017/01/28(土) 12:04:25.80 ID:s1e/PAHl0.net] >>362 自分で比較してみればいいじゃん 展開でそんなに差は出ないと思うけど※個人の感想です、ってしかならない なんで画像ファイル限定なのか知らんけど pngやjpgだとzipには無圧縮で入っていることが多いからそのまま展開されずに読みだされるけど、その手の話かな?
372 名前:デフォルトの名無しさん (ワッチョイ af4a-WsPK) mailto:sage [2017/01/28(土) 12:16:07.03 ID:Pp3LUsbs0.net] >>363 大した差が無いようであれば基本クラスを使おうと思います >>364 >pngやjpgだとzipには無圧縮で入っていることが多いからそのまま展開されずに読みだされるけど、その手の話かな? そうです 基本クラスと#ziplibは試したのですが差が有るような無いような微妙な感じでした
373 名前:デフォルトの名無しさん (ワッチョイ 9777-QkVH) mailto:sage [2017/01/28(土) 12:20:54.91 ID:GpK52peC0.net] >>365 基本クラスって言い方は紛らわしい。継承関連かと勘違いする。 標準のクラスとか言ってくれ。