1 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 19:32:42.28 ID:70UTtyrn0.net] 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■関連スレ C#, C♯, C#相談室 Part93 https://mevius.5ch.net/test/read.cgi/tech/1492818720/ ■前スレ ふらっと C#,C♯,C#(初心者用) Part137 https://mevius.5ch.net/test/read.cgi/tech/1523004019/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■情報源 https://msdn.microsoft.com/ja-jp/library/gg145045.aspx https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index https://msdn.microsoft.com/en-us/library/gg145045.aspx referencesource.microsoft.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
331 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 14:59:10.81 ID:FPh9h90J0.net] インスタンスが必要かどうか。 stringクラスのCompareメソッドとCompareToメソッドが良い例。 前者はパラメータがnullでも通るが、後者はインスタンスが無いとダメ。
332 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 15:53:58.50 ID:B40aLJ4va.net] インスタンスメンバーを参照してないならstaticにしてる でも必ずすべきとは思わない 仮に日本語にして考えてみる 人間クラスに "はピヨです()"メソッドをそれぞれ実装すると if(人間.はピヨです(彼)) {〜} と if(彼.はピヨです()) {〜}; これを見るとstatic はおかしいと思うがstaticにすることが多い
333 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 16:01:01.51 ID:B40aLJ4va.net] 誤解を招くような書き方だけど上のHogeなら間違いなくインスタンスメソッドにする
334 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 19:39:44.60 ID:2rJMn7sUa.net] あー、ちょっとわかってきたかもです 主語というか、意味的に、表現したい意図に近い方を選ぶ感じですかね とりあえず今回の例で言うと、インスタンスメソッドにすることにします
335 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 22:41:11.75 ID:oc0D76610.net] RuntimeHelpers.PrepareMethod(RuntimeMethodHandle)の挙動が理解できない・・・
336 名前:このコードでm2にPrepareMethodを使うことは不可能ですか? == using System.Runtime.CompilerServices; class B<T> { public void M() { } } class C1 : B<int> { } class C2 : B<string> { } class Program { static void Main(string[] args) { var m1 = typeof(C1).GetMethod("M").MethodHandle; var m2 = typeof(C2).GetMethod("M").MethodHandle; RuntimeHelpers.PrepareMethod(m1); // 問題なし RuntimeHelpers.PrepareMethod(m2); // System.ArgumentException: '指定されたジェネリックのインスタンス化は無効です。' } } == [] [ここ壊れてます]
337 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 22:44:20.11 ID:QRnSOnuU0.net] >>322 別にそんなとこ気を使っても一円の利益にもならんというアドバイスも 心の片隅においておいてくれ
338 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 06:43:38.75 ID:ZicgrVNId.net] Cでエクセルを扱っていろいろするときはやっぱcsvにしておいた方がいいのかね?
339 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 09:40:20.28 ID:UGstrjJ10.net] >>316 匿名型、で調べてみるといい
340 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 13:28:49.32 ID:kZGjx8UI0.net] >>325 何をやりたいか次第だけども、 csvで完結出来るのならcsvがいい
341 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 15:48:14.07 ID:VkL9wLVWp.net] 下手にxls使うと勝手に型変換してくれるからめちゃくちゃになるんだよな。
342 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 19:05:45.76 ID:Eyd8ciC/M.net] 複数のアプリで1つのserial portを使いたくて、dllで受けて受信データによって別々のイベントを発生させ、複数のアプリに受信させようと考えました。 dll内のSerialPortをstaticで持てば共有できるかと思ったのですが、staticで宣言しても呼び出し元が別プロセスだと共有されないようですね。 何かいい手はないでしょうか。
343 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 19:33:53.09 ID:cLV89PFx0.net] シリアルポートと通信するサーバを作って 必要な数だけクライアントを待ち受けるのが楽なんじゃないの プロセス間通信はソケットやパイプとか適当なものを使う
344 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 20:12:38.21 ID:4yQE+Bm50.net] >>323 コレじゃダメかい? https://stackoverflow.com/questions/31754418/runtimehelpers-preparemethod-not-working-when-called-with-funcstring-created-i
345 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 22:11:07.14 ID:VkL9wLVWp.net] 複数のアプリにどうやって通信データを振り分けるかの方が興味あるわ。
346 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 22:41:58.18 ID:ezuUhY+H0.net] つ MSMQ
347 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 23:21:02.53 ID:KXFiZVY30.net] そもそもWindowsのシリアルポートって複数のアプリで共有(同時オープン)できるのか?
348 名前:デフォルトの名無しさん [2018/06/27(水) 23:25:13.59 ID:YJH26+lwa.net] シリアルポートはなんかが掴んでたらだめだよね
349 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 23:39:03.37 ID:kv/Gz/3da.net] だから質問してるんでしょw 質問者は他のアプリが占有中でも無理矢理割り込む方法を聞いてるわけじゃなく、 自作アプリの複数のプロセスで共有する方法を聞いてる
350 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 23:42:52.29 ID:lEu9Ds2F0.net] ない
351 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 23:50:05.06 ID:KXFiZVY30.net] だからそもそもシリアルポートは複数のプロセスで共有できないでしょって言ってるんだが どうすべきかは>>330 さんがとっくに示してるわ
352 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 23:57:16.85 ID:kv/Gz/3da.net] 馬鹿にも程があるな...
353 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 00:02:45.40 ID:o5j8xzNra.net] 言ってるんだが いつも思うけど、こういう口調って馬鹿の間で流行ってるのかねw
354 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 00:39:46.48 ID:M7FH9WysM.net] シリアルポートに限らずdllのstatic変数が共有できないのですが、共有したい需要ってないのでしょうか?共有したい場合はどうするのがよいのでしょうか?
355 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 01:01:35.03 ID:wDYBzoR70.net] >>332 俺も
356 名前:アれが疑問だ 仮にサーバーが受けたとして どうやって俺宛か判断するんだ? [] [ここ壊れてます]
357 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 01:12:05.63 ID:5aYb43f30.net] dllのstatic云々はおいといてメモリマップトファイルならC#でも使えたかな C++ならデータセグメントを共有メモリにできる どちらにしろプロセス間の排他制御が必要
358 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 01:31:16.24 ID:o5j8xzNra.net] >>342 宛先なんかなく、単に全部のアプリに同じデータがブロドキャストされれば 十分って場合もあるでしょ 例えばシリアル経由で計測器か何かのデータが送られてくるとして、 (1) 画面表示だけするアプリ (2) エクセルにログを保存するアプリ (3) 計測データを使って何か他の機器を制御するアプリ 何かの都合でこんな風に複数のアプリに分けて作る必要があるのかもしれない
359 名前:デフォルトの名無しさん [2018/06/28(木) 01:38:37.90 ID:KZQYx/g/0.net] C#でのSelenium操作についても質問していいですか?
360 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 05:25:02.37 ID:mpKH796a0.net] >>331 レスどうもです!下のようにして上手くいきました こうなってくるとm1に対する方法はたまたま問題が起きないだけで m2やm3の方法のほうが望ましいように思えてきましたがそういう認識であってますか? == using System.Runtime.CompilerServices; class B<T> { public void M() { } } class C1 : B<int> { } class C2 : B<string> { } class C3 : B<int> { } class Program { static void Main(string[] args) { var m1 = typeof(C1).GetMethod("M").MethodHandle; var m2 = typeof(C2).GetMethod("M").MethodHandle; var m3 = typeof(C3).GetMethod("M").MethodHandle; RuntimeHelpers.PrepareMethod(m1); // 問題なし RuntimeHelpers.PrepareMethod(m2, new[] { typeof(string).TypeHandle }); // 問題なし RuntimeHelpers.PrepareMethod(m3, new[] { typeof(int).TypeHandle }); // 問題なし } } ==
361 名前:331 mailto:sage [2018/06/28(木) 07:24:39.78 ID:TtGcC5rD0.net] >>346 (確固たるソースに基づく訳じゃないので推測だけど)値型か、参照型かじゃない? 参照型の場合は TypeHandleを指定する必要がある、ってこと。
362 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 07:34:23.33 ID:wMDqdzUG0.net] >>341 よく解らんけどdllってアプリごとにメモリに個別に展開されて初期化されるからソースコード上で同じ変数名にアクセスしても実態は違うので共有できないのは当たり前なきがする
363 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 08:01:29.47 ID:M7FH9WysM.net] Cとかって共有されなかったっけ?よく覚えてないけど。
364 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 08:16:48.89 ID:h/Ekqdxpa.net] されるわけないだろ 何のためにプロセスがあると思ってるんだ
365 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 09:27:13.22 ID:9GisGdyJ0.net] ないって言ってんのにな 死ぬまで悪あがきしてればいいよ
366 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 10:06:45.02 ID:uTPw2MsS0.net] 何がしたいのか知らんけど、Win2k時代にシリアル通信のロガー作ったことある。あんときは、DLLをフックしてCreateFile,ReadFile,WriteFileのデータをトレースしたが、ハッキリ言ってやめたほうが良い。
367 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 11:08:48.44 ID:mI3gmfcxp.net] ロガーだけならどこぞの口でforkすりゃいいだけだろ。 通信内容を振り分ける仕組みだと思ってたから無理って話してんだよな。
368 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 11:17:35.66 ID:uTPw2MsS0.net] 親がシリアル掴んで、名前付きパイプで子に振り分けるかなぁ。
369 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 12:52:45.79 ID:q5PWc0B3M.net] >>332 , >>342 , >>353 受信データによって って書いてるから何らかのプロトコル決めてて、アドレスとかポート番号とかの振分け用の情報あるんだろ LANケーブルは1本でも複数のプロセスで共有してるのと同じ ここまで書けばよほど頭の悪い奴でなければわかると思うが>>329 が言うようなことは実現可能 nobikko-nobinobi.hatenablog.com/entry/2017/09/13/234555 ただC#だけでできるかどうかは知らん
370 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 12:53:45.63 ID:q5PWc0B3M.net] >>349-351 無知自慢乙
371 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 13:12:07.43 ID:wMDqdzUG0.net]
372 名前:同じDLLのstatic変数がそれを使ってることなるプロセス間で同じメモリの場所を参照するかってことじゃないの? [] [ここ壊れてます]
373 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 13:48:50.61 ID:f040o02ua.net] >>356 残念だけどそれはプロセス間の共有メモリの話であってシリアルポート共有じゃないよ シリアルポートは排他でしか開けないので他の人が書いてるようにシリアルポートをサービスで開いておくしかない それがどのような形をとるかはいろいろある
374 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 15:13:33.45 ID:5RaMOuHjM.net] 通信量など条件にもよるけど、 シリアル受信プログラムは、データの種類によって接頭語+日時名のファイルを作る。 各アプリはファイル監視して自分用のを実行する。 とかユルイ連携にするのも手かと。同時開発しやすいしテストやトラブル対処も楽。
375 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 15:19:28.79 ID:poFZ3+du0.net] ASP.NET CoreにはJavaの@Transactionalのような仕組みはないのですか? DispatchProxyを使ってトランザクション管理を自前実装してますがより一般的な手段があるなら乗り換えたいです
376 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 15:21:33.85 ID:pHy9VzUja.net] 今時232C使ってるようなデバイスでそんな振り分けが必要なデータなんか送ってくる可能性は低いと思いうけどねw I2Cとか485をエミューレートしてるとかなら知らんけど そんなデバイス聞いたことないけどさ アプリ作るのも、ブロードキャストして要らないデータはアプリ側で捨てる方が簡単で 保守性も高いでしょう
377 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 16:53:51.04 ID:uTPw2MsS0.net] どーせ、RS485/LAN変換器とか絡んでるんじゃね
378 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 17:08:19.49 ID:mI3gmfcxp.net] 普通のシリアル通信にコンフリクト回避のネゴエーショ等の機能は存在しないんだが、どうするつもりなんだろうな。 RS422規格の通信にするにしても、ドライバーが対応してないと難しいよな。ハードフロー制御なドライバーにして後はハードに頑張ってもらうのかな?
379 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 17:10:29.45 ID:mI3gmfcxp.net] あ、先に書かれてたか。
380 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 17:49:10.63 ID:Hec9+XaU0.net] LANはシリアル通信ではないのだが・・・
381 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 18:13:18.29 ID:q5PWc0B3M.net] >>358 >>329 は受信によってイベントを発生させるとか書いてるからサービスでないといろいろ面倒だが、単にポートの読み書きを共有するだけならサービスなんていらんよ
382 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 18:17:20.09 ID:q5PWc0B3M.net] >>361 まーた、俺の環境ではそんなデータはあり得ない(キリッ ってか いちいちマウント取りに来なくていいよ
383 名前:デフォルトの名無しさん [2018/06/28(木) 18:25:00.98 ID:hgy03eod0.net] また必死なのが沸いてるなァ
384 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:07:13.57 ID:mpKH796a0.net] >>347 ありがとうございます いろいろ試してみたところ、書いてもらった通りメソッドを宣言したオブジェクトのジェネリック型引数が 全部値型ならPrepareMethodの第2引数は要らないみたいです でも値型と参照型が混在する場合は参照型のハンドルだけ渡せばいいというわけではなくて 値型のものも含めて渡す必要があるみたいなので、 やっぱり基本的にメソッドを宣言したオブジェクトがジェネリック型引数を持つなら 第2引数は必要と考えたほうが安全な気がします
385 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:15:51.58 ID:UR04nmTq0.net] 君たちマニアックすぎよ! 初心者用だぞ!
386 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:19:04.65 ID:u+1Q3Zjpa.net] >>367 こういう馬鹿みるちいつも思うけど、それやってるのはお前なんだけど... 馬鹿にも程があるなほんと
387 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:24:04.13 ID:q5PWc0B3M.net] >>371 >>368
388 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:29:53.64 ID:u+1Q3Zjpa.net] >>372 これやるのも2chの馬鹿の特徴だよね これ見るといつも思うが、こういう馬鹿には自分自身を見る自意識がないのかね。 お前
389 名前:自身がやってることは何なんだw それ以前に必死だったら何なのかね。意味が分からん まるで「お前ウンコした!!!」って騒いでる中学生だけど、ガチでそのあたりで精神年齢止まってる可哀想なお方なんだろうけどね [] [ここ壊れてます]
390 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:35:28.68 ID:OkcoTao20.net] >>373 >>1 読め
391 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:36:30.54 ID:u+1Q3Zjpa.net] 232C使うようなデバイスでアドレスだのポート番号だの、振り分けが必要なケースなんかレアだろう、 (質問者もそんなこと言ってない)ってのはごく普通の感想だと思うけど、異論があるならできれば 具体例上げて反論すればいい。 マウントがどうとか中学生じみたことしか言えない馬鹿は黙ってろって いい歳こいて恥知らずかよ
392 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:37:46.81 ID:u+1Q3Zjpa.net] >>374 いう相手を間違えてるよ馬鹿 こういう馬鹿も2ch名物だな
393 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:41:07.48 ID:OkcoTao20.net] >C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください 読めないのは誰なのか
394 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:44:26.95 ID:5xE/3ALJ0.net] slip も知らない奴にほざかれてもな あと産業用ならRS-485はまだまだ現役 https://www.fujiele.co.jp/semiconductor/step/engineering/20171219-1/
395 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:46:09.46 ID:wDYBzoR70.net] 結局、物理的な線は一本なんだろ? なんで他アプリ全員に配るんだ?
396 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 20:21:27.00 ID:u+1Q3Zjpa.net] >>377 お前自身も読めてない。いってるそばから「俺だけ特別」クンか そもそもなぜ喧嘩を売った側でなく売られた側を非難するのか 馬鹿だろお前。
397 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 20:25:36.86 ID:u+1Q3Zjpa.net] >>379 それは愚問。 ただ、昨日から言ってるように、現実的に考えれば質問者がやりたいことは >>344 みたいな感じである可能性が一番高いと思う。 もちろん、仮想的な複数の通信チャンネルを実現したい可能性も否定はできない
398 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 20:38:08.78 ID:9GisGdyJ0.net] 「自分自身」と「馬鹿」って来たら例外を握り潰す君だから そいつこのスレに12年いるぜ
399 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 20:40:32.24 ID:9GisGdyJ0.net] 年いくつだろ Hagexを刺した統失くらいはあるのかなw
400 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 20:44:45.44 ID:9GisGdyJ0.net] あとは「口調」「中学生」「精神年齢」は定番ワード
401 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 20:47:01.29 ID:u+1Q3Zjpa.net] >>382 こいつもいつも思うけど、これで自分をおかしいと思わないんだから幸せでいいよねw 前から誰のこと言ってるのか知らんけど、この意味不明な粘着質、普通にストーカーと同じメンタルだ
402 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 20:53:26.04 ID:u+1Q3Zjpa.net] そもそも匿名掲示板で誰かを「特定」して付きまとってやろう、って動機が理解不能だけど、 普通の人間だったらそんな動機を持つ俺って異常なんじゃないかと悩むと思うんだけど... いや悩まなくても、多少知恵がある人間なら、それって(2chにはよくいる)負けを認めるだけの 精神的強さを持たない弱者の「精神勝利法」なんじゃないか、とか思うと思うんだけど
403 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 21:27:08.49 ID:wMDqdzUG0.net] 必死だな。
404 名前:312 mailto:sage [2018/06/28(木) 22:49:06.80 ID:RNZwZaAN0.net] 遅レスですがobjectをdynamicに変えて値を取る事が出来ました こんな便利な型があるんですね ありがとうございました
405 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 07:02:58.46 ID:41EVR+sW0.net] 動機ねえ、スレが荒れそうだからかな 俺に反応して貰って、俺が反応を無視すれば、とりあえず収まるんだよ そう、いつものことだ
406 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 07:26:58.04 ID:mdiAhzMH0.net] >>375 232cは物理層の規格や。今だってモデムやTNC繋げる人もいるさ。
407 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 08:53:11.26 ID:HPFHtU9c0.net] >>329 答え出てると思うけど プロセスは3つにする 1つのプロセスはシリアル通信のサービスを提供 他の2つはクライアントとしてシリアル通信の要求をだす 要求はQueueで排他する等で安全策取る プロセス間通信は適当に(ipc使えば簡単かな)
408 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 08:55:21.96 ID:HPFHtU9c0.net] >>391 あ、、、要求じゃなくてサーバーが自走して受信のイベントをクライアントに出すのか でもそれも可能だからね
409 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 09:17:28.48 ID:VFzCkUQ4r.net] おお、コンプリティッドタスク!!! 使ってみよう ありがとうございました
410 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 10:32:36.67 ID:eG0vtZS/M.net] ipcは死んだ技術なのかと思ってたけどつかってる人いるんだね デバッグ環境ではうまくいくけど実環境でこけることが多いから最近は使ってなかった
411 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 10:33:59.19 ID:1XSLHtbi0.net] electronでもつかうことね
412 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 12:38:26.74 ID:8d6UIl5Q0.net] 配列内の文字列がtargetStrに含まれてるかどうかを調べるコードなのですが いまどき風な書き方ってありますか? var words = new string[] { "ああ", "いい" }; foreach (var word in words) { if (targetStr.IndexOf(word) != -1) { // hit } }
413 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 12:45:50.64 ID:iCnCbkLdd.net] >>396 Contains
414 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 13:54:50.63 ID:6eaCpSu00.net] >>396 targetStrの中に"ああ"や"いい"が含まれている判定はIndexOfでいいんじゃね? ループつかわないでLINQのAnyメソッドにしておくとか
415 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 13:59:23.95 ID:6eaCpSu00.net] あ、すまん。おらの見ないでよかと。>>397 見てなかったorz
416 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 16:12:15.55 ID:tWLgdBQo0.net] まぁ、words.Any(word => targetStr.Contains(word)) ですっきり書こう、が今時?なんかなぁ?
417 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 16:54:35.36 ID:Z9lwbPEL0.net] >>400 それ、words.Any(targetStr.Contains) でいけるよ 仮引数いらん
418 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 17:33:42.32 ID:+TbsbPax0.net] >>400-401 https://qiita.com/Temarin/items/4ac0de4f395dcecf5eec このページでは .Where( string.IsNullOrWhiteSpace ); よりも .Where( x => string.IsNullOrWhiteSpace( x ) ); を推奨してるけどいまいちよく分からないから詳しい議論を聞いてみたい
419 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 17:56:22.21 ID:n04C+v3iM.net] >>402 お前は何回Where呼ぶつもりやねんと Whereの引数に渡すデリゲートのnewがネックになるほどタイトなループでWhere呼ぶなら、明らかにその設計自体が問題 どうでもいい机上の空論だから全く気にする必要はない 通常は、そんなことよりもラムダが間に一枚入ることによるメソッド呼び出しのオーバーヘッド増加のほうが問題になる
420 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 18:01:54.20 ID:NMkrO0hpd.net] 仮引数を省略してるというより渡してるものが違うだろ。 たとえフレームワークの関数でも、関数自体は俺も渡したくはないな。 xとか付けるやつは意識してないだろうが、引数名も有意義だし。 そもそもこれぐらいならインライン展開されるだろうし。
421 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 18:06:39.91 ID:Z9lwbPEL0.net] 関数を第一級オブジェクトとして取り回したくないならLinqなんぞ使わず
422 名前:素直にループした方がいいよ [] [ここ壊れてます]
423 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 18:31:03.18 ID:fLw6tHLKM.net] 最近はクエリスタイルも悪くないかなって思えてきた 単純に記号が減って読みやすいし ループで書いたらネストするようなクエリを書きやすい Effective C#でもサンプルコードにクエリ形式を使ってるね
424 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 19:20:37.69 ID:ldv2G5QsM.net] >>404 関数型の世界では関数をそのまま渡すほうが好まれるよ その方がより宣言的だからな ラムダはダサい
425 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 19:30:19.44 ID:NMkrO0hpd.net] 一級オブジェクトとして関数渡してんじゃん?ラムダでも。Funcがdelegateなのが気に食わんのかな。 ダサいってのは主観的な気がする。
426 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 19:40:00.41 ID:Z9lwbPEL0.net] あれ、主張がわからんくなってきた 関数を引数にするのはいいけど、その場合必ずラムダで無名関数作ってから渡したいって話なのか
427 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 19:42:32.14 ID:HOtQS3nQa.net] >>408 Haskellとかやってみたらわかるぞ 関数型ワールドでは徹底的にプレースホルダを省くのがクールと見做される 理由は知らん
428 名前:396 mailto:sage [2018/06/29(金) 20:03:36.51 ID:8d6UIl5Q0.net] 皆様ありがとうございます! 高度過ぎて理解できてませんがContainsとLINQ any調べてやってみますm(_ _)m
429 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 20:08:45.96 ID:MGdViK9A0.net] >>410 そこら辺は言語毎の宗教だろ 他言語を持ち出して比較するのはフェアじゃない
430 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 20:19:05.54 ID:4EyMIKKY0.net] 宗教というか、純粋関数型言語とマルチパラダイム言語で記法を比べられてもな
431 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 20:32:19.73 ID:Z9lwbPEL0.net] >>410 ポイントフリースタイルにこだわりすぎるのはHaskell界隈でも嫌われてるから あんま変な誤解を植え付けんでくれ 仮引数があった方がわかりやすいならつければいい ただ今回のContainsに関してはそれでわかりやすくなる要素が見当たらないので何とも まぁどっちでも普通に読めるから、どっちでもいいよもう
432 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 13:03:37.19 ID:stDx+Xo5a.net] デリゲートとラムダ式は別物 メソッドにラムダ式を渡してると思って実際は変換されたデリゲートを渡してる場合もある メソッドのシグネチャーを見てラムダ式をわたしてるのかデリゲートを渡してるのか意識すべき
433 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 13:20:07.97 ID:wYh1ox1V0.net] やっぱりラムダ式とかデリゲートとか難しい… >>415 メソッドに渡すのは常にデリゲートだと思ってました ラムダ式を渡す場合とデリゲートを渡す場合、それぞれの例を教えてもらえませんか?
434 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 13:26:42.98 ID:stDx+Xo5a.net] >>416 ちょっと書いてたことはあいまいで間違っていたが詳しく知りたいなら c# ラムダ式 式木でググる
435 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 13:47:21.51 ID:+7yWvOiaM.net] >>415 お前は何を言ってるんだ ラムダ式は文法要素上はメソッドの一種 メソッドだからデリゲートに暗黙的にキャストされる
436 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 13:51:28.53 ID:1b356axK0.net] ラムダ式を渡してるって、その日本語自体がおかしい事に気づくべき。
437 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 13:52:29.78 ID:wYh1ox1V0.net] >>417 勉強になります >>415 の真意は↓の中で4行目だけはコンパイルできないから気をつけましょうということですか? Func<string, bool> a = s => string.IsNullOrEmpty(s); Func<string, bool> b = string.IsNullOrEmpty; Expression<Func<string, bool>> c = s => string.IsNullOrEmpty(s); Expression<Func<string, bool>> d = string.IsNullOrEmpty; このあたりのことがとてもあやふやなので解釈が間違っていたらぜひ教えてほしいです
438 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 15:08:20.00 ID:d8PLC79S0.net] そんなのいいから早く完成させろよ
439 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 15:12:03.88 ID:/Bfo044u0.net] ところで words.Any(targetStr.Contains) とか Func<string, bool> b = string.IsNullOrEmpty; とか これいつからできるようになってたの? ラムダ式導入時からできてた?
440 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 15:18:18.92 ID:+7yWvOiaM.net] >>422 C#2.0からだからラムダより前 今では誰も使ってない匿名メソッドと一緒に入った 匿名メソッドもラムダもメソッドなので、メソッドからデリゲートへの暗黙変換がないと 匿名メソッドもラムダもデリゲートをいちいち明示的にnewしないといけなくなる
441 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 15:23:28.91 ID:EEKpc4BGa.net] >>422 ラムダ式は関係ないよw C#2.0からデリゲートのインスタンスを明示的にnewしなくてもよくなった ufcpp.net/study/csharp/sp_delegate.html#definition words.Any(targetStr.Contains) ; は words.Any(new Func<string, bool(targetStr.Contains)); の省略記法
442 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 17:23:22.11 ID:VzcFRgA/0.net] オマエラ、 今夜ぐらいは仕事の事を忘れて肉でも食いにいけよ
443 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 09:33:02.24 ID:6nQmCY/K0.net] あぁそうか、そういえばそのままなデリゲートだったね すっかり忘れてたww
444 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 21:21:17.36 ID:btMzwCPv0.net] 直撮りで申し訳ないんですが youとenemy のHP表示→それぞれ1〜9の値を引くの処理をどちらかのhpが0になるまで続けるように組んだつもりなんですが、whileより上の部分と下の部分しか反映されませんでした どうしたら上手く処理出来るでしょうか https://i.imgur.com/HbKFSfr.jpg
445 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 21:25:37.50 ID:Y9X1m4Hz0.net] >>427 >= 0
446 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 21:30:15.05 ID:btMzwCPv0.net] >>428 なるほど、確かにこれじゃあ条件が「hpが0以下の時」になっちゃってますね 助かりましたありがとうございます!
447 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 21:36:19.75 ID:aT7of7CF0.net] わろた
448 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 21:36:50.28 ID:aT7of7CF0.net] 微笑ましさで、ね。
449 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 21:40:16.96 ID:gdUYHRxe0.net] >>428 =いらないんじゃないか >>427 while (you > 0&& enemy > 0){ もしくは while (true) { (処理) if (you<=0||enemy<=0) break; }
450 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 21:43:42.29 ID:btMzwCPv0.net] >>432 両方hpが無くならないと終わらなかったので後者を使わせて貰いました 参考になります!
451 名前:デフォルトの名無しさん [2018/07/03(火) 19:38:57.82 ID:uKdaL+TvM.net] スクレイピングで、xpathや属性から要素を特定取得できると思いますが、逆に属性を取得することって、できるのでしょうか? @class=取りたい属性←この値です
452 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 19:53:05.05 ID:obHlRFH50.net] パーサーなに使ってるか知らんけど xpath指定で値とれるなら属性指定すればとれるでしょう
453 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 19:56:50.40 ID:BhHhKgjH0.net] ロケーションステップの末端に /@取りたい属性 をつければ取れるだろう あまりこのスレとは関係ないけど
454 名前:デフォルトの名無しさん [2018/07/03(火) 20:15:00.81 ID:3h3fF2lx0.net] >>435 >>436 その属性を取りたいんですよ。
455 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 20:40:16.29 ID:BhHhKgjH0.net] だからぁ /@class だっつうの
456 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 20:43:41.32 ID:BhHhKgjH0.net] 見直すと436の説明が悪かった
457 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 21:57:38.45 ID:c8nUoQXQM.net] 属性 "名"がほしいのか 属性 "値"が欲しいのかがわからないよな
458 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 00:07:29.57 ID:OxUMeZjO0.net] 要素の属性を全部取得する https://hokaccha.hatenablog.com/entry/20130819/1376895914 要素の属性を全部取得したいんだけど、 jQuery ではできないっぽい。 DOMの element.attributes を使えばいける
459 名前:デフォルトの名無しさん [2018/07/04(水) 01:32:51.59 ID:QI
] [ここ壊れてます]
460 名前:UWNU3h0.net mailto: >>440 属性の値がほしいんですね、名前はtagNameでとれるので [] [ここ壊れてます]
461 名前:デフォルトの名無しさん [2018/07/04(水) 01:43:11.66 ID:QIUWNU3h0.net] id="→sample←" webページ上の値じゃなくて、→←で囲ったsampleという結果がほしいんです。
462 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 04:05:11.91 ID:/r54tfMO0.net] >>345 と >>434 は同じ人か? seleniumの話なら webDriver.Url = @"https://www.seleniumhq.org/"; IWebElement element = webDriver.FindElement(By.Id("promo")); element.FindElement(By.XPath("a")).GetAttribute("id");
463 名前:デフォルトの名無しさん [2018/07/04(水) 05:51:54.18 ID:QIUWNU3h0.net] >>444 ありがとうございます。試してみます。
464 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 07:03:48.24 ID:nlc5wO39d.net] C♯勉強したんだけどネットに参考になるサイトないですか? VBAはこれで勉強してネットで使いながらそこそこは出来るようにはなりました。何かを作りながら取り敢えず基礎的仕組みを理解出来ればと思ってます。 https://for-guests.com/excel-vba-6006/
465 名前:デフォルトの名無しさん [2018/07/04(水) 07:55:26.39 ID:zwHbS25H0.net] >>446 ↓とりあえずはここかな https://dobon.net/
466 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 08:50:06.90 ID:oGtdQ8QA0.net] いやいや未確認飛行だろう
467 名前:デフォルトの名無しさん [2018/07/04(水) 09:30:12.33 ID:rFQM1K2RM.net] >>444 無事に目的を果たせました! 感謝です。
468 名前:デフォルトの名無しさん [2018/07/04(水) 15:02:10.32 ID:x3V5psFC0.net] PC上からC#で制御できる汎用IO製品って安いのないんかな? Raspberry PiについてるGPIOみたいなのが欲しいんだけど
469 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 15:06:52.68 ID:ZJ2LKM3Q0.net] デバドラの認証コストだけでも結構なお金がかかるからなぁ
470 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 15:11:38.24 ID:BdK+b5Vga.net] Arduinoがいいよ
471 名前:デフォルトの名無しさん [2018/07/04(水) 16:48:56.19 ID:n4h9hTEh0.net] 超面白い https://goo.gl/k4ehdm
472 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 17:14:18.28 ID:Ub7D34vBa.net] >>450 あんまり安くもないがこんなのとか akizukidenshi.com/catalog/g/gK-01977/ このICの本来の用途はGPIOじゃないが、GPIOとしても使えたはず。 でも8本 + αしかないし使い方に癖があった気がする。
473 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 19:26:55.57 ID:x1yYTdeNp.net] むしろラズパイやらArduinoとシリアル通信させてそちらのgpioに何か繋ぐ方が、安心安全いざショートしちゃったとかのアクシデントの時にも安く済むよ。
474 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 19:51:54.95 ID:F41Mlataa.net] >>454 それシリアル USBパラレル変換モジュールの方では?
475 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 20:05:13.89 ID:acN7B5+I0.net] Attiny85のV-USBで遊んでるarduino互換 完成品にDigisparkってのがあるけど尼とかで数百円 https://www.amazon.co.jp/dp/B0154PL3QA/
476 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 20:23:47.96 ID:Ub7D34vBa.net] >>456 だから >このICの本来の用途はGPIOじゃないが、GPIOとしても使えたはず。 って前置きしてるでしょ。 確認してみたけど、ちょっと変則的だけど一応使えるよやっぱり パラレルの方(FT245)のICもGPIOとして使えるが(こっちも本来はそういう用途じゃない。ちなみにこっちは使用経験あり) こっちの方がちょっとだけ高価でGPIOとして使えるピン数も少ない akizukidenshi.com/catalog/g/gK-01799/
477 名前:デフォルトの名無しさん [2018/07/04(水) 21:43:30.53 ID:rQfJfUyF0.net] >>454 取説見るとデジタルI/Oは5本みたいだが。
478 名前:デフォルトの名無しさん [2018/07/04(水) 21:46:57.76 ID:gFgZc5FG0.net] AWK
479 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 22:01:51.27 ID:Ub7D34vBa.net] >>459 スレ違いだけど、このドキュメントのP3に書いてある特殊機能があるんよ www.ftdichip.com/Support/Documents/AppNotes/AN_232R-01_Bit_Bang_Mode_Available_For_FT232R_and_Ft245R.pdf 最低8本は使える 残りのプラスアルファーがどういう風に使えるかは、たぶんドライバーのAPI アプリケーションノートに書いてあると思うが、さすがに面倒だから読んでない
480 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 23:48:29.40 ID:acN7B5+I0.net] FTDIのはドライバ必須だし HIDとかで繋がるやつ揃えた方が楽だよ
481 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 23:51:36.78 ID:acN7B5+I0.net] HIDというか標準クラスね 例えばArduino Leonardo相当であれば何にでも化けられる
482 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 09:53:48.98 ID:4AVSF7Vxp.net] HIDって、出力ディバイスにも使えたっけ?
483 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 11:12:32.85 ID:zf6L08GCa.net] digisparkというのを使ってたけどHIDデバイスに見えて入出力OK 昔は300円以下で送料無料で中国から買えたんだけど値上がりしちゃった
484 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 15:50:31.35 ID:P71/Py9I0.net] C♯でMySQLを操作したいのですが楽に扱えるライブラリはありますか? EntityFrameworkを使いたいのですがイマイチ接続できないので 一応昔にSQL書いて操作するパターンも作ったことありますが出来ればせっかくなのでやり取り楽な風にできればと思ってます
485 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 16:03:16.41 ID:I27lRIcu0.net] LinqConnect
486 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 18:53:29.35 ID:/h700nZmM.net] Dapper
487 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 20:00:51.78 ID:P71/Py9I0.net] ありがとうございます Dapperの存在忘れてましたこちら使い方少し調べてみます LinqConnectも調べましたが環境整えるところからなので余裕ができたらこちらも調べてみます
488 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 20:12:43.80 ID:LKNZKA8z0.net] >>464 昔からあるUSB-IOもHIDだよ
489 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 14:19:45.98 ID:v98PP3uI0.net] 教えてください Power1とPower2はxのn乗を求める関数だそうなのですが なぜPower2がxのn乗になるのかさっぱり分かりません しかもPower2の方がPower1よりも効率がいいらしいです よろしくお願いします double Power1(double x, uint n) { double power = 1; while (n > 0) { power = power * x; n = n - 1; } return power; } double Power2(double x, uint n) { double power = 1; while (n > 0) { if (n % 2 == 1) power = power * x; x = x * x; n = n / 2; } return power; }
490 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 14:26:00.38 ID:CcG3LQ040.net] double power = 1.0; の方が効率がいいぞ
491 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 15:02:32.12 ID:W35a98bMa.net] >>471 高校数学やん x^(a +b) = x^a + x^b x^(a * b) = (x^a)^b
492 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 15:02:47.67 ID:M3cpa2kAa.net] >>471 これでわかるか? x^n = { nが2で割り切れるとき x^(n/2) * x^(n/2) 割り切れないとき x^((n-1)/2) * x^((n-1)/2) }
493 名前:474 mailto:sage [2018/07/06(金) 15:03:33.89 ID:M3cpa2kAa.net] すまん訂正 割り切れないとき、はこれにxを掛けてくれ
494 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 15:04:04.87 ID:W35a98bMa.net] >>473 ん゛? × x^(a +b) = x^a + x^b 〇 x^(a +b) = x^a * x^b
495 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 15:31:31.99 ID:v98PP3uI0.net] >>472 ありがとうございます 定数だけの四則演算やキャストはコンパイルの時点で行われるから 効率に影響は無いと習ったのですがこの場合は違うのですね キャストがコンパイル時と実行時のどちらで行われるかを判断する 簡単な方法があれば教えてほしいです >>473 >>476 ありがとうございます 指数法則が関係あるのですね これをヒントにもう一度考えてみます >>474-475 ありがとうございます 教えてもらったことをヒントに再帰を使ってxのn乗を作ってみたのですが この関数はあってますか? でも、やっぱりなぜPower2がxのn乗になるのかよく分かりませんでした double Power3(double x, uint n) { if (n == 0) return 1; else if (n % 2 == 0) return Power3(x, n / 2) * Power3(x, n / 2); else return Power3(x, (n - 1) / 2) * Power3(x, (n - 1) / 2) * x; } [] [ここ壊れてます]
497 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 15:54:12.85 ID:W35a98bMa.net] >>477 こうじゃない? いい加減に書いたから間違ってたらごめん double Power(double x, uint n) { if (x == 0) return 0; if (n == 0) return 1; if (n == 1) return x; return n % 2 == 0 ? Power(x * x, n / 2) : Power(x * x, n / 2) * x; } 要するに、 x^(a + 1) = x^a * x x^(2 * a) = (x * x)^a
498 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 16:10:07.44 ID:v98PP3uI0.net] >>478 ありがとうございます そのPowerを再帰を使わずに書くと>>471 のPower2になるということですか? なんだか分かりそうな気がしてきたのでその方向でもう一度考えてみます!
499 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 16:12:36.64 ID:W35a98bMa.net] あー直接関係ないけど、0の0乗って1でいいんだな
500 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 17:25:12.79 ID:v98PP3uI0.net] お陰様で>>471 について理解できたと思います どうもありがとうございました! >>480 言われてみると、>>471 のPower1やPower2では0の0乗が1になりますが >>478 のPowerだと0の0乗が0になりますね 調べてみたらWikipediaに「0の0乗」というページがあって 確かに0の0乗を1と考えることが多いと書いてありましたが それ以外の考え方もあるみたいです
501 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 17:29:05.92 ID:Utskd+YBa.net] 0乗が1以外になる考え方なんてあるんだ 単位元の1に何も掛けないんだから常に1だと思ってた
502 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 22:25:57.54 ID:cMQzyLwk0.net] 高速冪乗法でググれって感じだ
503 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 00:10:19.78 ID:PwTdVeWu0.net] >>471 の件ではどうもありがとうございました もう一つ質問させてください 以下のPopulation1とPopulation2は同じ結果になるそうです Population1は>>471 のPower2によく似てるので これは指数計算の変形だと思うのですが、 Population2でも同じ結果になるのが理解できません 何度もすみませんがよろしくお願いします uint Population1(uint n) { uint population = 0; while (n > 0) { if (n % 2 == 1) population = population + 1; n = n / 2; } return population; } uint Population2(uint n) { uint population = 0; while (n > 0) { population = population + 1; n = n & n - 1; } return population; }
504 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 00:10:35.11 ID:PwTdVeWu0.net] >>482 確かにWikipediaによれば 半群Sが単位元1をもつならSの元aの0乗は1になるので Sが零元0ももつなら0の0乗は1になるそうです・・・なんのこっちゃw >>483 ありがとうございます Power2はちゃんとした名前のついたアルゴリズムだったんですね この分だとPopulation2にも名前がついてそうですが それらしい情報を見つけることができなかったので もしご存知だったら教えてもらえると嬉しいです
505 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 00:33:06.38 ID:cboIXbsqa.net] >>484 面白いねw 要は1が立ってるビットの数を数えてるわけだと思うけど、 Population2の方は >n = n & n - 1; これやると1が立ってる最下位ビットが消えるんだなw 名前は知らないごめんね
506 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 00:57:48.65 ID:PwTdVeWu0.net] >>486 ありがとうございます ビット演算については分かってるつもりだったのに全然でした・・・ ヒントを貰って下のようなプログラムを試してみたら 確かに最下位ビットが順に消えていって感動です uint n = 4649; while (n > 0) { Console.WriteLine(Convert.ToString(n, 2)); n = n & n - 1; } 【実行結果】 1001000101001 1001000101000 1001000100000 1001000000000 1000000000000 でも結局n = n & n - 1;で最下位ビットが消える理由が 理解できていないのでもう少し考えてきます
507 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 01:08:23.64 ID:cboIXbsqa.net] >>487 デクリメントした時、 (1) ボローが発生しなくなる
508 名前:桁(つまり、最下位の1の桁)はデクリメントの前は1、後は0 (2) その下位の桁はデクリメントの前は0、後は1 (3) 上位の桁の値は変わらない なんだから、前後の値の論理積は必ず最下位の1まで0になる [] [ここ壊れてます]
509 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 01:35:58.15 ID:PwTdVeWu0.net] >>488 とてもわかり易い説明ありがとうございます!お陰様で理解できました 実はこの説明を読むまでn & n - 1は(n & n) - 1という意味だと思ってて、 それならn - 1と同じじゃないのかと思いながらも トンチンカンなことを言ってしまうのが怖くて黙ってたのですが、 こんなことなら変なプライドは捨ててさっさと疑問をぶつければよかったです この問題を考えていて、少しビット演算に慣れてきた気がします 使い道があるかどうかは分かりませんが、 n = n & ~(n - 1);だと逆に最下位ビット以外を消すことができるんですね とにかく、どうもありがとうございました
510 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 01:57:17.51 ID:PwTdVeWu0.net] 今更ですがPopulationってビットの人口ってことだったんですね・・・ Wikipediaにもページがバッチリありました https://en.wikipedia.org/wiki/Population_count
511 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 07:04:40.39 ID:jG1Ln0tj0.net] すいません Pawar はx^nですか
512 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 18:20:25.33 ID:xch9dzoq0.net] C#で予め用意されているクラス(Mathなど)のソースコードを見ることは可能ですか? 勉強がてら、どんな風に書かれているのか見てみたいのですが・・・
513 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 18:25:45.35 ID:30ihGmDyM.net] >>492 ここにある ちなみにMathは大部分が直接CLRに組み込まれていてC++で実装されているからあまり参考にはならんぞ https://github.com/dotnet/corefx
514 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 18:28:37.54 ID:cyf+ZGJha.net] そっち?
515 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 18:35:29.39 ID:nZLHvKy0a.net] さすがに今更 Reference Sources は時代遅れだろ Coreの方がコンパクトに纏まっててわかりやすいし、コピペしても捕まらないし
516 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 21:12:55.79 ID:gKVOSzfp0.net] 他人の書いたライブラリとか使おうと思っても仕様書もどう読めばいいかあまりわからなくて いつも他人様の書いたコード見てやっとなんとなく使い方理解できてるんですが サラサラかける人はどういう見かたしてるんですか?サンプル見てメソッド見ればもうわかるのですか?
517 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 21:24:10.82 ID:Sa3mysoT0.net] >>496 ソースのメソッド見て中身理解するのは仕様書読むよりも難しくないか メジャーなライブラリなら例を書いているサンプルがネット上にいっぱいあるし そうでなくてもある程度自分で試しながら理解したらいいと思うが
518 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 21:27:00.32 ID:30ihGmDyM.net] >>496 サンプル見ればだいたい分かるよ お前も新しいフリーソフトとかWebサービスとか使うときマニュアル見なくてもだいたい分かるだろ? それでお前の母ちゃんや友人に何で分かるのか聞かれて何て答える? それと同じことで、経験を積むとパターンやライブラリの作者の考えが読めるようになってくる
519 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 22:41:26.27 ID:E0dVopgVM.net] 簡単だよ こういう処理がしたいならメソッドにこういう文字列が含まれてるはずだよな インテリセンスカチャカチャほらみろ有ったぞ 次は引数をドキュメントコメントで調べて入力 コンパイルエラー消えたよしこれでオッケー ビルドして起動したら…はい動いたおわり だいたいこんな感じ 今はライブラリも開発環境も優秀すぎて楽だよほんと
520 名前:デフォルトの名無しさん [2018/07/07(土) 22:50:08.17 ID:paMTBjoR0.net] 右クリックして定義見ればよくね?
521 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 23:30:31.81 ID:iY8uTCL40.net] LINQ使った最近のデザパタ紹介しているサイトや書籍ってある? どこもなんか古いコードで
522 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 23:40:48.02 ID:Xo0ZcSzF0.net] >>501 誰も使ってネーからって気づけw
523 名前:デフォルトの名無しさん [2018/07/08(日) 00:27:29.44 ID:7kODHcAp0.net] >>501 linqの古いコードって、例えばどんなん?ラムダ使ってない奴のことかな?
524 名前:デフォルトの名無しさん mailto:sage [2018/07/08(日) 00:45:39.18 ID:ijnRC5hf0.net] >>503 日本語
525 名前:デフォルトの名無しさん mailto:sage [2018/07/08(日) 02:13:34.73 ID:8SSmHvWN0.net] 性懲りもなくよう相手にするなあこのクサレ脳みそども
526 名前:デフォルトの名無しさん mailto:sage [2018/07/08(日) 11:15:40.05 ID:YcDPlOAza.net] 他のスレでデザパタと略す奴は例外なくクソって言う風潮があるから その略称は使わないほうがいいw
527 名前:デフォルトの名無しさん mailto:sage [2018/07/09(月) 15:36:56.63 ID:Uwu2BFrsM.net] LinqというかDBアクセス系のパターンの事ならリポジトリパターンやイベントソーシング・CQRSあたりかな MSの黒本 C#実践開発手法 はどうだろう あとRxも押さえとけば
528 名前:デフォルトの名無しさん mailto:sage [2018/07/09(月) 23:28:49.95 ID:8W0J0prF0.net] 名前付きパイプでプロセス間通信するとき、できるだけ遅延を小さくするためにすべきこと、したほうがいいことがありますか?
529 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 03:23:37.00 ID:LdlDw2V90.net] ポータブルなASP.NET実行環境はありますか? 勝手にソフトインストール出来ない環境で使いたい為、Tomcatのように、設定ファイルで設定してexe起動するだけのタイプを探しています。
530 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 03:44:47.11 ID:wzF2q8B9a.net] >>509 .NET CoreとASP.NET Core SCDでデプロイして内蔵サーバーのKestelで動かす CoreはMVC系なので509が知っているASP.NETとは別物かもしれないが
531 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 07:07:05.03 ID:1Wfv3KWad.net] formが3つがあってそれぞれ仮にa,b,cとして、a,b,cの中にコンボボックスがいくつかあってaのコンボボックスの一つにエクセルをdbで読み取って?コンボボックスに値を入れました。 以降もコンボボックスに入れてくんですけど、違いがブック名とシート名でコードをまとめたい時はどこにどのように書けばいいですか? 今はform aのloadに一つ書いてます。
532 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 08:43:35.96 ID:wzF2q8B9a.net] class Configurations { 各コンボボックスに入れるべき値をそれぞれプロパティとして定義 } interface IConfigurationsSource { Configurations GetConfigurations(); } class ExcelConfigurationsSource : IConfigurationsSource { private readonly string book; private readonly string sheet; public ConfigurationsSource(string book, string sheet) { this.book = book; this.sheet = sheet; } public Configurations GetConfigurations() { return Excelシートから読み取ってConfigurationsに詰めて返す(book, sheet); } } こういうのを作って使い回す
533 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 10:08:29.34 ID:DQNNzOip0.net] クラスを継承して機能を共通化するのとインターフェースで共通化するのと何が違いますか?
534 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 10:27:34.35 ID:u496riIwM.net] いろいろなレベルでの回答があるが インターフェースはMIX可能 継承の濫用は保守困難になりがち インターフェース意識した方が設計的にスマートな事が多い c#8で事情は大きく変わるが
535 名前:デフォルトの名無しさん [2018/07/10(火) 13:38:42.06 ID:vEF725PNp.net] クラス継承は切り離せないが、インターフェースなら切り離せる。
536 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 15:17:35.18 ID:ptn/0Y0d0.net] >>493 即レス
537 名前:感謝です 勉強になります ありがとうございました [] [ここ壊れてます]
538 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 15:18:53.33 ID:6gd4tcDd0.net] え、8ってどうなるん・・・
539 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 15:59:38.63 ID:lFSMnKMw0.net] そらもうアレよ
540 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 17:43:22.36 ID:pIJZecgId.net] おジャ魔女どれみc#
541 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 19:00:19.81 ID:1Wfv3KWad.net] >>512 レベルが高過ぎてさっぱりです。 これはクラス追加してクラスに書く感じですかね? クラス=VBのモジュールって感じでいいんですかね?
542 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 19:04:58.17 ID:WX+x+qIF0.net] >>514 > c#8で事情は大きく変わるが C#8ではnull非許容が標準になるという噂は聞いたことがあるのですが、 この話は検索してみてもなんのことを仰っているのか分かりませんでした とても興味があるので、ぜひ詳しく教えていただけないでしょうか
543 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 21:19:40.32 ID:vJrIcc2p0.net] >>521 インターフェースのデフォルト実装が導入されることかな。 .NET ランタイムにも手が入るそうな。
544 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 21:45:00.39 ID:WX+x+qIF0.net] >>522 レスありがとうございます! ただこれだけを聞くとC#8でインターフェースの価値が更に上がるように思うのですが、 >>514 さんはインターフェースの価値を説かれた上で 「c#8で事情は大きく変わる」と仰っていているので、他の機能に拡充が図られるなどで インターフェースの価値が相対的に下がると仰っしゃりたいように感じました 実際にはそういうわけではないのでしょうか? いずれにしても、インターフェースのデフォルト実装は便利そうで楽しみです あと、それほどいろいろと手を入れるなら、 IList<T>が共変なIReadOnlyList<out T>と反変なIWriteOnlyList<in T>を 継承するようにするとか、そういう変更もあると嬉しいな〜と素人ながら思ってみたりw
545 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 22:52:33.99 ID:uwEab9SB0.net] めっちゃ詳しいw
546 名前:デフォルトの名無しさん [2018/07/10(火) 23:47:58.27 ID:vJrIcc2p0.net] >>523 IWritableListとIReadableListみたいな名前ならともかく、 それじゃわざわざOnlyって強調した単語使ってる意味がなくなるから悪手だろ
547 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 00:12:23.28 ID:08+HRZoYa.net] >>525 既にList<>はIReadOnlyList<>を実装してるんだから今更だろ。 IList<>がIReadOnlyList<>を継承できない理由は、インターフェイスメンバの明示的実装を壊すから IList<>に宣言されてたメンバのうちIReadOnlyList<>と被るものを全部削除したとしたら、IList<>のメンバを明示的実装している既存のクラスが全滅する
548 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 00:40:08.40 ID:OI/RESej0.net] 誤解を与えてすまん c#8でインターフェースのデフォルト実装がサポートされるので価値は高まるという認識でok null不許容も含めて大きく変わるねえ
549 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 00:50:36.62 ID:OI/RESej0.net] null非許容を乱暴に説明すると 参照型の変数にnullが入らないのがデフォになる。よって多くのシナリオでnull落ちになるケースが激減する。基本的にプログラミングが楽になる。 変数にnull許可する場合には明示的に宣言が必要になる。 既存のソースに対しては破壊的変更になるからコンパイルオプションとかになるんじゃないかな。
550 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 01:02:22.00 ID:veaNU89qM.net] OOP的にも綺麗でテーブルが正規化されてればnull非許容は受け入れられるかもね 業務システムではあまり役に立たなそうだ
551 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 01:04:51.55 ID:zbj7oPBja.net]
552 名前:>よって多くのシナリオでnull落ちになるケースが激減する。基本的にプログラミングが楽になる。 岩永氏の例の記事にもそう書いてあるが、何度考えてもこれは逆だと思うなw いわゆる「例外を握りつぶす」筋悪コードと同じ弊害をもたらすだけだろう [] [ここ壊れてます]
553 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 01:08:15.17 ID:veaNU89qM.net] 凄まじい列数でほとんどがnullのテーブル あれをなんとかしないとアプリケーションからnullを排除することは難しい インフラの問題だからホスト言語のちょっとした改善でどうにかなるものじゃない
554 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 01:22:37.10 ID:OI/RESej0.net] 最近の言語がそういう流れだからだろうね DB絡みに外部結合やORM、既存ライブラリやサービスがある以上、null考慮は回避できないだろうから使い分けになるだろうね nullまみれのテーブルも いまだにみかけるし 新規コードでサクサク組んでいくには便利やと思う
555 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 01:24:04.27 ID:mrqtDgK70.net] >>525 レスありがとうございます 確かに、ReadOnlyという言葉がIReadOnlyList<>を継承するものにかかっていると考えると IList<>がIReadOnlyList<>を継承するのは妙な感じですね ただ現実として、>>526 でも指摘していただいているようにList<>はIReadOnlyList<>を 実装していますので、ReadOnlyという言葉はあくまでIReadOnlyList<>自身にかかっていると とらえてしまってもいいのかなと考えています その現状の言葉遣いが間違っているのだから直すべきだというご主張なら、 実現可能性は私には難しくて分かりませんが、とても興味深いご意見だと思います >>526 レスありがとうございます 書いていただいた文章を読むと、インターフェースは継承元のインターフェースと 同じ名前のメソッドを持てない、もしくはインターフェースの明示的実装に悪影響があると 考えていらっしゃるように見受けられたのですが、この部分がよく理解できなかったので 申し訳ないのですが詳しくご説明していただけるとありがたいです >>527-528 レスありがとうございます 私の方こそ、変な深読みをしてしまい失礼しました 私は初学者なので機能の増強は単純に楽しみなのですが、 既存のソースを多くお持ちの方にとっては大幅な変更はいいことばかりでもないのですね >>528-531 興味深いお話をどうもありがとうございます 自分からnull非許容の話を出しておいて恥ずかしいのですが、 実はこれが具体的にどういうものなのかほとんど理解できていないのです var a = new string[1]; は許されるのか?とか、許されるならそれは var a = new string[1] { string.Empty }; と同じ意味なのか?とか、 もしそれが正しいなら、クラス毎に Empty 的なものを用意しないといけないのか?とか 疑問は膨らむばかりです
556 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 01:52:22.43 ID:OI/RESej0.net] シンプルなコードで良い疑問やなあ 実際導入されたら混乱しそう… 右辺のArrayがnullを許さないからコンパイラに怒られそう 初期値入れたらいけそう もし仮にstringの規定値がemptyになる仕様になれば初期化無しでもコンパイルとおるかも c#7系以前と同じ挙動にするなら var a = new string[1]?; という記述になるはず List系使うから配列を生で使う機会は減ったけどね
557 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 01:53:31.50 ID:OI/RESej0.net] 恐ろしい子!
558 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 04:05:50.95 ID:xb7b/JPY0.net] C#の話じゃないかもしれませんが、 LAN上の他のPCと通信するにはTCPorUDPしかないですかね? ポート開けようとすると管理者のパスワード要求されるので そういうのに影響されない方法があれば教えてください サーバー上にファイル作って共有しようかとも思ったのですが ロックとか速度とかちょっと使いにくいので
559 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 07:45:57.48 ID:08+HRZoYa.net] インターネットに出れるんならAWSでSQSかKi
560 名前:nesisでも使えば [] [ここ壊れてます]
561 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 08:15:13.05 ID:RuBHX//DM.net] >>536 RAWなら好きなもの送れるでしょ
562 名前:デフォルトの名無しさん [2018/07/11(水) 08:54:54.59 ID:NAmdOA29M.net] ネットワークプログラミングの定石学びたいっす
563 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 09:14:18.75 ID:RuBHX//DM.net] レイヤー無視なら Multi-object Multi-lingual Document Intermediary の仕様書でも
564 名前:デフォルトの名無しさん [2018/07/11(水) 09:42:14.12 ID:DD+vdWYvp.net] >>536 TCPやUDPじゃないと関所を通れないからなぁ
565 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 10:03:35.37 ID:/J4Azv5gd.net] ポート開けたくないな、名前付きパイプのRemotingは? sambaのポートが開いてりゃ疎通できた気がする。
566 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 10:03:54.68 ID:/J4Azv5gd.net] ないな→ないなら
567 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 12:51:43.31 ID:vn5tWIshM.net] >>536 > ポート開けようとすると管理者のパスワード要求されるので 要するになんか管理者に知られずき通信したいんだろ 悪事に加担する気はない
568 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 12:56:39.30 ID:fg0dx/vD0.net] アホか くだらないことを書き込む前に少しは推敲しろ
569 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 13:59:27.90 ID:cb0VPk/Kd.net] >>544 aho
570 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 16:51:29.67 ID:xb7b/JPY0.net] ありがとうございます まずは名前付きパイプを調べてみます
571 名前:デフォルトの名無しさん [2018/07/11(水) 16:58:41.62 ID:DD+vdWYvp.net] バイブにたかしとかりょうとか名前付けて愛用してんのかなぁ…
572 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 17:39:37.83 ID:kzvuO0/N0.net] >>534 レスありがとうございます >右辺のArrayがnullを許さないからコンパイラに怒られそう >初期値入れたらいけそう 確かにそんな気がしますね でもそうなると大きな配列とは相性が悪そう・・・ >もし仮にstringの規定値がemptyになる仕様になれば初期化無しでもコンパイルとおるかも それが一番わかりやすそうですね ただ、stringはともかくStringBuilderの規定値とかどうすればいいのかさっぱり見当がつきません >c#7系以前と同じ挙動にするなら >var a = new string[1]?; >という記述になるはず ?の位置は[1]の前ですか? まあ書き方はともかく、もしvar a = new StringBuilder[100];とすると 自動的に100個のStringBuilderのインスタンスが作られるなら、 そのような動作を望まなければ配列の要素の型はnull許容にしたほうが良さそうですね そうすると、例えばジェネリック型を使うときにはstringのような型とStringBuilderのような型の 区別をつけたくなることもありそうですし、ジェネリック型制約に新しく where T : immutable(intやstringは許すけどStringBuilderは許さない)が 追加されたり・・・とか妄想してみましたw
573 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 17:57:29.81 ID:g/mYMck9M.net] プログラム素人で恐縮ですが、for文のスコープの中に変数を宣言するとメモリの無駄使いになるでしょうか? for(;;) int hoge =1; のような書き方です for文に入る前に宣言した方が作法的に良いのであればそうしたいと思い
574 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 18:16:12.97 ID:I//Y0R5O0.net] コンパイラが最適化するのじゃないか? 初心者は、そんな事を考えずに、なるべく狭いスコープで宣言した方が良い。 処理に、10秒以上掛かるのなら、その時に考えても良いけど 「Effective 何々」などの本を読むと、書いてあるかも知れないけど
575 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 18:20:39.15 ID:L0DC21nsM.net] >>550 C系の言語では基本的に一箇所で宣言された変数はメソッド全体で一つしか作られない C#の場合はクロージャが絡んだりすると変わってくるけど、基本的にはそういう思想で設計されてる 気にせず必要最小限のスコープで宣言せよ
576 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 18:31:22.94 ID:vn5tWIshM.net] >>545-546 そんなレスしかできないからお前は🙅なんだよ w
577 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 18:40:26.95 ID:sApF7MBC0.net] >>550 IL見ればあなたの悩みは全て解
578 名前:決しますよ [] [ここ壊れてます]
579 名前:デフォルトの名無しさん [2018/07/11(水) 20:26:56.12 ID:DD+vdWYvp.net] あーでも>>550 みたいな書き方すると突っ返されるメーカーあるよな。 無駄な作業させてるって自覚無いんだろうかなぁ
580 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 20:31:34.49 ID:L0DC21nsM.net] >>550 みたいな書き方してるコードってたいてい他の部分もクッソ汚いから、とりあえず突き返すのはわりと賢明なやり方
581 名前:デフォルトの名無しさん [2018/07/11(水) 20:35:01.60 ID:DD+vdWYvp.net] スコープ毎にスタック操作なんかしないし、汚くてもオプティマイズされたら面影も無いし、イジメでしか無い罠
582 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 20:39:44.95 ID:sCxl2UHN0.net] >>549 このレスからにじみ出る頭のよさ
583 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 00:31:45.14 ID:07VYm5500.net] var すら毛嫌いされちゃうとこなのでコードレビューなんかやったらストレスで禿げるわ
584 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 01:31:48.84 ID:Mt10qC0c0.net] それぞれのコーディング規約に従えばいいんじゃないですか
585 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 02:20:50.58 ID:uvVknaw70.net] >>555 さすがに>>550 のコードは例としてはあれだが C#でforの中でしか使わん変数をforの外で定義しろと? どんなメーカーだよ。つかメーカーってなんのメーカーだよ
586 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 05:53:25.42 ID:ddTdn7l60.net] C#8のデフォルトインターフェースメソッドって、 インターフェースでほぼコーディングを終わらせてしまうことも可能、 って解釈で良いのかな。
587 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 06:34:40.79 ID:0C7UQQhF0.net] クエリとlinqとlinqToXmlの違いがなにかよくわからないです これらはなんですか クエリはfromやselectとか思ってたのですが "from a 〜 select a"も "XXXXXX.Select(〜)" の両方ともクエリ? linqの中にクエリがある感じですか? 用語の違いを知りたいです
588 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 06:53:16.73 ID:TSQ/qQegM.net] >>561 C組込上がりが閑職で社内システムを任されるとありそう 関数の先頭で宣言しろ宣言
589 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 07:09:00.83 ID:8dshyEbGd.net] >>563 メソッド式とクエリ式でググれ
590 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 07:38:41.95 ID:VF8Jnm1rH.net] NumericUpDownで、ホイール下回転で値をUpさせる方法ないですか?
591 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 08:08:47.97 ID:CB78gZS5M.net] >>562 ライブラリ実装者が破壊的変更の影響を最小化 細かいパフォーマンスを最適化 するためのものなので乱用しないで 拡張やダイヤモンド継承による名前の重複など問題はまだ残ってる
592 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 09:04:57.23 ID:FtAr8eR70.net] >>553 管理者のパスワードって、単なるスーパーユーザーのパスワードのことだろきっと
593 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 12:49:07.46 ID:96DaRN210.net] だったらなんなんだよ
594 名前:デフォルトの名無しさん [2018/07/12(木) 15:12:12.67 ID:iIGcGb6Z0.net] 久しぶりにまたC#勉強してみようかと思ってるんだけど 最近の動向ってどうなの?雑誌でもあまり見かけなくなったけど
595 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 15:52:53.09 ID:Yg7MNvpld.net] さあ、プログラミングの雑誌読んでる奴は最近少ないでしょ プログラミング情報は基本ネットだからな
596 名前:デフォルトの名無しさん [2018/07/12(木) 16:16:23.83 ID:S+gZjDN60.net] >>570 マイクロソフトはAndroidのアプリC#で作る環境起こしたり結構力入れてる
597 名前:デフォルトの名無しさん [2018/07/12(木) 16:37:53.91 ID:iIGcGb6Z0.net] >>572 へえ〜そうなんだ 金のにおいプンプンするね
598 名前:デフォルトの名無しさん [2018/07/12(木) 16:40:31.97 ID:iIGcGb6Z0.net] そういえばWindowsフォンとかいうのもあったね
599 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 16:45:06.48 ID:Mt10qC0c0.net] >>572
600 名前:iOSもな [] [ここ壊れてます]
601 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 17:23:36.80 ID:S4vKnl6/d.net] 雑誌とか書籍とか、本屋の棚を見てると勢力図が判るね。 Python強い。
602 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 17:25:15.60 ID:PtJZmudoM.net] MVC使ってるんですが、アルゴリズムをSQLに書くのは邪道でしょうか? Modelを用意している時点でC♯でアルゴリズムを書くのが正攻法なのかなという気がして でもクエリにある程度書いた方がパフォーマンスは良さそうで悩んでいます
603 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 19:07:16.04 ID:MbhSnhO70.net] >>566 NumericUpDownの派生コントロールを作ってOnMouseWheelを書き換える 方法 : 既存の Windows フォーム コントロールから継承する https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/how-to-inherit-from-existing-windows-forms-controls コード例 public class NumericUpDownEX : NumericUpDown { protected override void OnMouseWheel(MouseEventArgs e) { if (null == e) return; decimal m = this.Value; int a = e.Delta > 0 ? -1 : 1; m += a * this.Increment; m = m > this.Maximum ? this.Maximum : m; m = m < this.Minimum ? this.Minimum : m; this.Value = m; } }
604 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 19:39:16.71 ID:5nesTxgP0.net] どうでもいいことだけどEventArgsがnullで渡ってくるケースってあるの?
605 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 20:09:54.21 ID:yTzbc7hIM.net] >>577 邪道です ビジネスロジックがSQLを侵食すると保守性が下がりスパゲティクエリが量産されます 結果的にパフォーマンスも劣悪なものとなるでしょう
606 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 21:06:22.46 ID:uvVknaw70.net] そのSQLはどこに書かれているのだね
607 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 06:58:05.36 ID:DDbEgWasM.net] SQLはクエリ管理クラスでC♯で管理してます ストアドで書かれてたらC♯がどうこういう話では無いですね つかストアドは世間様の開発では一般的なのでしょうか 改修に弱そうなイメージがありシステム構成の検討任されたら自分なら選択しなさそうですけど
608 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 08:21:33.93 ID:KJTjy0eMM.net] ビジネスロジックをストアドに集めるってのは 見たことあるなぁ。 既存言語はFEP構築だけに使う。 どちらかに徹底してりゃ良いんじゃね。鼻ホジ
609 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 12:34:59.94 ID:p9f6lddDD.net] >>583 システムのリプレイスとデータベースのリプレイスのどちらが多いかだよな 後者でストアド依存は死ねると思う
610 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 14:43:56.67 ID:0KYXvOut0.net] DBのバージョンアップじゃなくてリプレイスで システムをリプレイスしない案件なんてほぼ考えられん
611 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 15:22:59.85 ID:r56MKyepM.net] 可能な限り全部SQLでいいよ 多くの場合SQLの方が圧倒的に簡潔だしテストも容易だし ストアドは管理が面倒だし見通しも悪いからソースに書きたいが
612 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 16:31:35.87 ID:JMEmIQPoM.net] SQLに書いてもいいけどシステムが死ぬまで面倒を見て、他のメンテナーに迷惑をかけないでくださいね
613 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 14:54:07.96 ID:pS7j55swr.net] データベースにSQLite使ってるんだけど、データ量が増えたらSELECTがクッソ重くて無反応になる 無料でもっとまともなDBってないかな?
614 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 14:57:09.03 ID:8JxBJ14s0.net] そもそもインデックスとか ちゃんと使ってるのかね
615 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 15:00:44.83 ID:pS7j55swr.net]
616 名前:もちろん [] [ここ壊れてます]
617 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 15:02:50.58 ID:LIsDU/xsM.net] PostgreSQLだな
618 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 15:06:32.58 ID:EtwCAyCb0.net] C#から使うならSQLServerでしょ
619 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 15:26:32.37 ID:pS7j55swr.net] どちらも無料なの?
620 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 15:40:56.72 ID:jYJ6FXN8a.net] >>579 nullで渡すと
621 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 15:44:26.58 ID:3U2LRmJo0.net] 標準ライブラリのことでは?
622 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 16:03:24.84 ID:DkLuqI8LM.net] プライベートの開発ではpostgresql一択
623 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 16:12:40.69 ID:XotIEGF50.net] >>588 データ量がどのくらい増えたとかテーブルのスキーマ構成とかSELECT文みてみないとなんとも言えんな DBMS変えたら劇的に変わるもんでもないし
624 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 16:56:06.37 ID:pS7j55swr.net] >>596 売るアプリだから無料のがよい >>597 すまんすまん indexの順番変えたらかなり改善した 複合indexを先に設定して、その後単一index作ってた これを入れ替えた感じ
625 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 16:57:19.10 ID:pGWO+29la.net] 無料ならSQLServerはかなり制限がある PostgreSQLは完全に無料で、性能・機能とも圧倒的に上 SQL ServerはWin上でGUIでお手軽に運用できるしMS製品で完結するのでドカタには愛されてる
626 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 16:59:28.09 ID:3U2LRmJo0.net] 俺はデータをカテゴリに分けてそれぞれに専用のテーブルを用意して振り分けて高速化したことある
627 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:06:29.29 ID:zT+O/n6K0.net] PostgreとMySQL比べるとどんな感じ?
628 名前:デフォルトの名無しさん [2018/07/14(土) 17:06:52.80 ID:bK14KKak0.net] >>599 かなりって例えば? ストアドも使えるしDBサイズも10GBまで使えるし基本問題ないっしょ。サイズ超えそうになったらバックアップDBとしてアーカイブすりゃいいしね。C#ならSQLServerがいいよ
629 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:09:02.22 ID:zT+O/n6K0.net] 俺もSQLServer使ってたけど10GB制限がキツイし全てのレコードを読めないと不都合だから別のDB探してたけどMySQL使おうかと思ってたところだった
630 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:18:11.14 ID:DkLuqI8LM.net] MySQLは共通テーブル式が使えなくて捨てた
631 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:25:20.01 ID:FtH+pgzSM.net] >>601 最近はPostgreSQLも盛り上がってるね PostgreSQLは機能が非常に豊富で極めて柔軟、非定形データだろうが地理空間情報だろうが何でも扱える ライセンスもMySQL(GPL)より緩い
632 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:25:32.60 ID:pS7j55swr.net] >>599 まじか postgreに変えようかな >>602 10GBならかなり余裕あるね ならSQLServerも良いかなあ MySQLはWebアプリではよく使ってるけど そもそもわかってないことがあるんだけど、SQLってSQLサーバーで動いてるわけじゃん? SQLite以外はWinFormアプリで作ったアプリだけで動かないの? SQLアプリみたいなのが生成されるの?
633 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:27:38.30 ID:3U2LRmJo0.net] マシンにDBサーバーをたてるんだろ
634 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:30:16.00 ID:zT+O/n6K0.net] >>604-605 なるほどありがとう それならせっかくだしそっちにしてみようかな SQLServerはEntityFramework簡単に使えたけどもPostgreSQLもライブラリとか使いやすいのかな? MySQLは接続文字列がおかしいのかテーブル指定がおかしいのかイマイチ上手く動かせなかった
635 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 19:18:56.84 ID:VO5okbkP0.net] ASP.NET Core MVCはオワコンになって今後はASP.NET Core Razorが主流になっていく感じですか?
636 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 19:54:51.34 ID:GmLXhPvN0.net] >>609 お前なんか勘違いしてんぞ
637 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 10:06:31.58 ID:vbOfg8AFM.net] 今は各言語ごとにフルスタックのフレームワークがある
638 名前:ッど無駄に見える どれか一個がセンターにあって後は各言語対応のAPI提供というパターンにならないのか [] [ここ壊れてます]
639 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 10:20:38.72 ID:aio6qM3qa.net] 少なくとも.NETはASP.NET Coreが統一フレームワーク
640 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 10:33:05.77 ID:X2092vNg0.net] まさに.NETのことだね
641 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 10:46:24.73 ID:CFAGuM1zM.net] 各言語ごとにフルスタックフレームあるけど シェア3位のdjangoすら5%以下らしい それ以下のASP.Net coreの存在意義がかなり薄いと思うけどないといけないものなのか
642 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 10:54:00.74 ID:7Enq42ndr.net] 現実 https://hotframeworks.com
643 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 10:55:19.57 ID:7Enq42ndr.net] Coreは存在すらしていないっぽいな
644 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 10:59:15.18 ID:upsCSZLnM.net] 検索でClassic ASP.NET/MVC/Coreは区別がつかないから混ざってるんだろ
645 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 11:08:09.00 ID:p0LeSK9sd.net] Coreじゃなくても.NETなら多言語対応だし
646 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 12:32:26.47 ID:mrrFOD8id.net] >>616 StackOverflowのデータ見てみろよ
647 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 12:53:44.01 ID:7Enq42ndr.net] なんかSQLiteがおっせーって書いた者だけど、他のサーバー型SQLよりぶっ飛びで速いんだな このまま使い続けるか
648 名前:デフォルトの名無しさん [2018/07/15(日) 14:17:55.92 ID:LJ5Na9vP0.net] >>620 速度求めるならメモリ使えば? DBのinoutは別スレッドでコントロール
649 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 19:34:53.12 ID:Bovqh3Um0.net] 使ったことないからよく知らんけどローカルファイルへのアクセスだからレイテンシが小さいとか?
650 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 20:22:37.76 ID:5Xgvchi7M.net] javaに比べると圧倒的に仕事が少ないC#ですがjavaの有償化で仕事は増えるでしょうか
651 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 20:38:51.55 ID:BpM21w6AM.net] レガシーJavaをすぐさまC#に移植するってのは現実的じゃない レガシーの面倒を見るためにとりあえず金を払ってライセンスを買うしかない ライセンス買ったならじゃあいいかとなってJavaを引き続き使っていくことになる
652 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 20:54:44.00 ID:31mTAsFB0.net] Java厨ザマアw
653 名前:デフォルトの名無しさん [2018/07/15(日) 20:57:17.95 ID:OJzI1T4t0.net] でもC#は無料なの? いいえ、有償です
654 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 20:59:55.51 ID:WCfEKFtx0.net] 大人しくオラクルのケツ舐めて1CPUあたり25ドル払っとけって
655 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 21:00:24.79 ID:31mTAsFB0.net] 2ドルだろ
656 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 01:40:16.05 ID:0WZqyTt50.net] application/jsonを使ったRPCの実装方法でスタンダードなやり方ってありますか? ぐぐってもREST APIの実装方法ばっかり出てくるんですが…
657 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 03:10:13.20 ID:yOmS9IaY0.net] >>629 .netならWCFかWEB API REST APIは主流だが 規模的に保守が辛くなるなら gRPC gatewayも良いと思う
658 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 03:53:04.58 ID:M+rWa9nq0.net] >>609 MVCのVの部分がRazorエンジンになっただけやで。
659 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 10:04:00.08 ID:R/aUtilHr.net] >>621 アプリ起動時とかにSQLからメモリテーブルにコピーして、追加更新削除があれば別スレッドでinoutする感じ?
660 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 15:04:39.14 ID:f5ww7Pxw0.net] プログラミング初心者なんですが、Randomオブジェクトの扱われ方がよく分かりません なぜ別にクラスを作らなくてもインスタンスを生成出来るのでしょうか
661 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 15:14:56.71 ID:Tg2I8Krt0.net] >>633 「なぜ class Random { ... } とクラスを定義しなくても new Random() と書けるのか?」 という質問なら、「Random クラスは最初から
662 名前:闍`されてるから」が答えになると思います 質問の意図が違うなら、「XXXと書くのが正しいと思うが、実際にはYYYと書くのはなぜか?」 というように具体的なコードを交えてもう一度質問してもらえませんか? [] [ここ壊れてます]
663 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 15:17:03.84 ID:f5ww7Pxw0.net] >>634 それで合ってます 返答どうもです
664 名前:デフォルトの名無しさん [2018/07/16(月) 15:18:23.77 ID:MLoWNAtR0.net] usingで指定されて無いと幾ら最初から有っても使えないけどな。
665 名前:デフォルトの名無しさん [2018/07/16(月) 15:19:55.32 ID:MLoWNAtR0.net] そう言う意味では、最初からusingでネームスペースが指定されているって言わないと正しくない。
666 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 15:21:33.95 ID:fVJkfJ21M.net] JSFみたいな使いやすいフレームワークねえかなぁ C#は言語そのもののセンスは良いけどエコシステムがショボいよな
667 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 15:50:12.73 ID:jQHectJ10.net] >>636 namespace省略せずに書けば使えるぞ
668 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 15:55:20.48 ID:N67OeEDm0.net] >>634 みたいにも?
669 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 15:58:33.82 ID:XBIjWYki0.net] >>640 書けないけど「使える」 >>636 > usingで指定されて無いと幾ら最初から有っても使えないけどな。 自分の書き込みぐらい覚えとけ
670 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 16:00:41.87 ID:CrUViZU+0.net] 偶にこういうコード見かけるんだけど、コーディング規約に全部書けとかあるのかな? using System.IO; 略 System.IO.File.ReadAllBytes(hoge);
671 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 16:54:46.97 ID:jQHectJ10.net] 自分が作っていないクラスを使用するのに必要なのはアセンブリ/COMの参照設定。 (基本的なアセンブリは最初から設定されてる) usingするかはどうかは別の話。 参照していないのにusingだけ書いてももちろん使えない。
672 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 17:47:55.17 ID:SOPUXhzxM.net] >>642 そのスコープのFileクラスの定義が重複している場合 曖昧さを解消するために名前空間を全て書く必要がある 普通は標準ライブラリと名前が衝突する事態の方を避けるだろうけど
673 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 18:31:19.12 ID:zG1+5npqa.net] >>642 そんな不合理な規約はないと信じたいねw あえてフルネームで書くことを肯定できる(少なくとも否定的に思わない)ケースは そのソースファイルでその名前空間の要素そ参照するのが1、2か所しかない場合ぐらいかなあ 意見は分かれるかもしれんが、バッティングを避ける目的ならエイリアスを使うのが普通でしょう using IO = System.IO; みたいに
674 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 19:06:40.67 ID:XBIjWYki0.net] >>645 > そのソースファイルでその名前空間の要素そ参照するのが1、2か所しかない場合ぐらいかなあ それならusingも書かないだろ、バカかよ
675 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 19:11:38.45 ID:zG1+5npqa.net] 何言ってるのか意味わからないねw
676 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 19:29:52.77 ID:65+uaC9H0.net] その名前空間を使うのがここだけだと思ってフルで書いたが やっぱり他でも使ったのでusing追加した 元の箇所は直していない まあ、そんな感じじゃないかと
677 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 19:56:41.16 ID:Tg2I8Krt0.net] >>634 に不適切なコードを書いたために混乱を招いてしまいました また、 >>643 で適切な補足をしていただいていますが、 初めからこのような補足が必要ないようにできているだけでも 混乱は避けられたかもしれません。大変失礼しました
678 名前:デフォルトの名無しさん [2018/07/16(月) 21:01:32.11 ID:MLoWNAtR0.net] 同じ名前のクラスがあるんだよw だからフルネームで書かないと怒られるんだw
679 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 21:45:18.03 ID:PnkuF1BZ0.net] >>650 あるあるw バッティングすると悪夢なのなw 曲線をPathって名前にしてファイルパスもPathって名前にして usingを呼んじゃってからエラーが出たぜハイ直せってやられると最悪 せめて改名してからusing呼べやクソがって思うんだが 馬鹿な奴に限ってバッティングさせるし作業手順も
680 名前:考えない しかもそれでコミットしてくる [] [ここ壊れてます]
681 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 22:03:10.98 ID:0I7EzBy0r.net] []で読み込むDLLの意味がよくわからない どこで呼んでもいいみたいだけど、あれってどういう仕組みなの?
682 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 22:12:47.48 ID:Fqt7znsC0.net] ランタイムがLoadLibraryなりで動的にロードしてよろしくやってるだけやで ネイティブ側を書いたことないとイメージしづらいのかもしらんが
683 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 22:24:51.27 ID:fVJkfJ21M.net] >>651 バッティングどうこうよりもファイル操作と図形操作を同じファイル内に実装してる時点で最悪だね 誰が悪いかというとそんな設計書を書いたバカが最悪だ
684 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 22:25:49.96 ID:N67OeEDm0.net] アホかな?
685 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 22:32:54.10 ID:PnkuF1BZ0.net] >>654 いや、別だよ でもたまたま引っ張ってきたusingにPathが入っててバッティングしちゃったんだ .netframeworkにはじめから入ってるPathも入ってかなり手強かったよ
686 名前:デフォルトの名無しさん [2018/07/16(月) 22:50:59.26 ID:MLoWNAtR0.net] いやいや、それは例えが悪いだけで、マイクロソフト様ですら同じ名前のクラス名付けてて、たまにどっちだボケって聞いて来るからなぁ
687 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 23:09:50.26 ID:m2D0dvJF0.net] >>638 JSFときたかwww 具体的に何が足りないと?
688 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 23:16:42.09 ID:fVJkfJ21M.net] >>658 足りないってほどじゃないんだけどねー 直感的に挙動を理解しやすいJSFと比べてこっちはちょっと推測しにくい感じ これを変えたいなら多分こうだろってのが閃きにくい ドキュメントみれば解決するけど見ないでなんとなくで解決したいんだよね
689 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 23:17:22.95 ID:m2D0dvJF0.net] >>659 具体的に
690 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 23:23:08.13 ID:tD8bNggya.net] >>657 Managed DirectXは酷かった 嫌がらせレベル
691 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 04:59:27.29 ID:KftlrzGo0.net] blockingcollectionを使ってキューを作ろうと思ってます そのキューの中にデータを取り出すのではなく、データがあるかないかを確認したいのだけども それってどうやって実現できるでしょうか?
692 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 07:44:52.51 ID:xIcozahsa.net] >>662 できない BlockingCollection.GetEnumeratorで取得した列挙子は既にコレクションから削除された要素を返す可能性があるから、要素の存在確認には使用できない それが必要なら普通のQueueをロックして使おう BlockingCollectionはProducer-Consumerパターンを実装するための特殊なコレクションで、取得と消費は基本的に分離不可能な操作として扱う
693 名前:デフォルトの名無しさん [2018/07/17(火) 08:21:55.96 ID:9WzYNMpJ0.net] なぜキューを使わず違うものでキューみたいなものを作るのか?
694 名前:デフォルトの名無しさん [2018/07/17(火) 09:13:46.43 ID:JRPSvXt/0.net] 【毒素ためる、制汗″】 Ban、Ag、 8×4が <乳癌> <鼻炎> <ワキガ> の原因になっている!? rosie.5ch.net/test/read.cgi/liveplus/1531621398/l50 くさいくさい
695 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 09:57:15.28 ID:ZMugNBvxM.net] >>662 Count
696 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 11:05:47.08 ID:we+kZK/d0.net] >>662 Any()はだめ?
697 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 12:01:54.65 ID:5aCAbGPrH.net] >>633 ランダム、つまり白い悪魔と異名を取ったモビルスーツの事だ 常識なので覚えるように
698 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 12:04:20.14 ID:5aCAbGPrH.net] >>633 ランダム、つまり疑似乱数を生成するクラスだ 疑似乱数は自前で作るのも簡単だから適当にに作って
699 名前:ンるのも一興だな [] [ここ壊れてます]
700 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 12:10:59.29 ID:G5IVIkIla.net] >>667 食べるが側が自分だけじゃないなら>>663 の言うととおりだめなんでしょう その場合もコレクションに出し入れがあったことを検出する簡単な方法があれば スキャンしている間に出し入れが行われなくなるまでリトライすることで実現できそうだけど、 そういう簡単な方法はないっぽい。 もっとも、仮に実現できたところで排他制御できないなら検査の後の状態は保証できないわけで、 どんだけ意味があるのか疑問ではある
701 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 17:47:09.52 ID:bja0VNMZd.net] >>663 >>666 >>667 レスくれた方ありがとう やりたいこととしてはcountとpeekを駆使することでなんとか実現できそうだという結論になりました キューに対してpeekすると、じゃあ今度はいつ削除するの?とかなりそうだけどもpeekでなんとかします
702 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 19:12:27.90 ID:TPR76IZRM.net] この本読み込めば中級者って本ないん? 独習C#新版と 実戦で役立つc#プログラミング あたりですか?
703 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 19:14:26.70 ID:LTVxWI1Y0.net] BlockingCollectionはコレクションの要素が取れるまでブロックし続けるから、peekとか削除とか考えずに済むから楽なのにな まあ>>670 の通り他と連動してコレクションにとどめておく必要があるんだろうけどさ
704 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 21:31:50.07 ID:k6KsTxhHM.net] >>672 プログラムは本を読んだから中級者みたいな世界じゃないと思う 年間に1000行程度のアプリを10本ぐらい作って3年ぐらいしたら中級かなって思う
705 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 21:58:58.79 ID:0bp3oS7H0.net] コピペを繰り返していたら3年やろうが10年やろうが初心者のままだぞ気をつけろ
706 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 21:59:23.64 ID:JBBJUfmR0.net] いや、今ならVRエロゲ一本作れば中級者
707 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 22:03:58.19 ID:vVWTH+iBM.net] むやみに書くより良書を読んだほうがいい 読んだ内容を実践して身につける
708 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 22:10:31.97 ID:JBBJUfmR0.net] 俺は〜の作り方的な 作り進めていく形式のがオススメ
709 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 22:19:09.18 ID:8FZ8qVPxM.net] 〜の作り方的な本は、言語が分かってない段階だと本当に手順を追うだけになってしまって何一つ頭に残らないからお勧めできない まあ頭使わずに何かやってる気にはなれるから勉強が苦手でどうしてもモチベーションが続かない人にはいいのかもね
710 名前:デフォルトの名無しさん [2018/07/17(火) 22:28:45.89 ID:A75xOI8y0.net] おらにも良書おしえい
711 名前: mailto:sage [2018/07/17(火) 22:28:56.55 ID:cS4zRgZd0.net] >>674 結構ハードルが高いですね…
712 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 22:58:06.26 ID:s7VdXjPi0.net] 一番いいのは作りたいアプリがあってそれを作る。アプリ作りを通して色々考えることがでてきだろう。最初は一人よがりなプログラムになるかもしれんがそれが第一歩だな。
713 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 23:18:31.59 ID:JTS2mYBv0.net] >>672 MSの公式ドキュメント
714 名前:デフォルトの名無しさん [2018/07/17(火) 23:27:52.79 ID:A75xOI8y0.net] ここまで0冊
715 名前:デフォルトの名無しさん [2018/07/17(火) 23:32:23.19 ID:A75xOI8y0.net] >>672 まずは独習でいいと思う これで基本機能が理解できたら Linqや非同期、マルチコア専門の教本もあるから気になったら読めばいい これらは重要だし独習が終わればよく理解できると思う 実践で役立つ〜はちょっとわからない
716 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 23:39:41.63 ID:JKMrilxjd.net] 書籍なんて最近手出してないけどeffectiveって無いの? C+やstlでは結構お
717 名前:世話になったけど [] [ここ壊れてます]
718 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 23:41:42.83 ID:ofYg0nnt0.net] >>674 10万行の間違いだろ。
719 名前:デフォルトの名無しさん [2018/07/17(火) 23:47:31.06 ID:WCI1fetR0.net] >>686 昔からあるぞ。 最近のだと、More Effective C# 6.0/7.0が既に出てて、Effective C# 6.0/7.0ももうすぐ出る予定。
720 名前: mailto:sage [2018/07/17(火) 23:52:58.90 ID:cS4zRgZd0.net] >>672 独習C#新版が終わったらレポートよろしくね
721 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 00:21:32.09 ID:WfV71rrt0.net] dotnet aspnet-codegeneratorってwindowsでしかうごかんの?
722 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 02:04:04.67 ID:ohWLsVDp0.net] >>688 やっぱあるよね 感覚的にはeffectiveに書いてある内容がとりあえず理解できて実践しだしたら中級者なイメージ 上級者っていうとmvpクラスと同等の知識レベルとかになるのかなぁ mvpもいろいろあって基準としては曖昧かもしれんが
723 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 02:09:13.63 ID:ohWLsVDp0.net] 1000行なんて時には1日で書く程度のアプリ10本作ったところで… だからって10万行のアプリなんて、それほんとに10万行必要だったの?プラグイン1個居れたら数万行不要になるんじゃない?って気もする そもそも行数で語る時点でおかしい訳だけど プログラム未経験は別として経験者なら一言語の中級者になるのに3年もかけてたら上級者になる頃にはその言語消えてんじゃね?って思う
724 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 07:35:29.71 ID:604NWUGLd.net] 一時的にスリープのように任意のスレッドの処理を停止させて 別スレッドがある処理をしたら停止スレッドが動き始めるような形を作りたいです waitforsingleobject以外に実現方法ありますか
725 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 07:37:13.37 ID:gGGdDmmqd.net] >>693 なぜそんなことしたいの?
726 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 07:40:12.26 ID:604NWUGLd.net] >>694 Aスレッド、Bスレッドがあって Aスレッドはたまっているリクエストを非同期で投げ続けています リクエストは一つずつ送らないといけない制約があるため その応答が来るまでAスレッドを停止させたいです 応答というのがBスレッドの処理です
727 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 07:51:29.32 ID:gGGdDmmqd.net] >>695 普通にasync/awaitじゃだめなの?
728 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 09:20:45.30 ID:W2UhJLr+0.net] 待機するAスレッドがUIスレッドとかいう状態でもなければ それこそ関数直接コールでも良さそうなもんだけど
729 名前:デフォルトの名無しさん [2018/07/18(水) 10:14:35.95 ID:IWAo5nUlp.net] じゃあセマホ使えよ。
730 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 12:17:19.01 ID:TKyRL/+ma.net] A案:リクエストのキューを投げる側ではなく受ける側に持たせる B案:リクエストを投げるメソッドのデリゲートのキューをリクエストを受ける側に持たせる
731 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 13:53:18.95 ID:imuZ+lX20.net] 会社クラスを作りインナークラスで部署クラスを作ったのですが、インナークラスの使い方として間違っていないでしょうか なんかMS意図と違う使い方をしてる気がしておりまして
732 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 14:21:30.22 ID:JHZwBCBgM.net] 間違いです
733 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 14:39:45.10 ID:zONoZYnW0.net] IT業界は部署ごと社外に出向させられるとか日常茶飯事ですからね。
734 名前:デフォルトの名無しさん [2018/07/18(水) 19:00:56.71 ID:9N0yBnKk0.net] listviewを使って画像をドラッグした位置に挿入できるようなものを作りましたが、サムネイル表示(ViewプロパティをView.LargeIconに設定)だと移動後に一番後ろに来てしまいます 、どうすれば自由に画像を入れ替えれるのでしょうか?
735 名前:デフォルトの名無しさん [2018/07/18(水) 19:50:12.60 ID:yFSY1wbO0.net] >>692 >1000行なんて時には1日で書く程度のアプリ10本作ったところで… これも内容によるけどな 10本作る間に誰に見られても恥ずかしくないコードが
736 名前:書けるようになれば… [] [ここ壊れてます]
737 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 21:41:28.47 ID:ojmeEx4e0.net] >>704 内容にもよるんだろうけれど、きちんと動くプログラムを10本完成させたっていうのであれば、それなりに評価してよいと思う。
738 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 21:49:23.42 ID:GTM6kR3M0.net] 仕事の山越えたからと社内文章読んでたら我が社のコーディング規約にvarとLINQ禁止とデカデカと書いてあってて笑ったwww
739 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 21:53:50.99 ID:iepCQJFn0.net] 就職ガチャ失敗おめでとうございます
740 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 22:21:17.43 ID:ptS24Bkdd.net] >>706 LINQ禁止ってラムダ式使ったらだめってこと?
741 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 22:30:15.87 ID:MKYFu03e0.net] varだめってリテラシーならラムダもダメだろうね
742 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 22:41:34.30 ID:62X+9Moaa.net] 短いコードのアプリでもちゃんと一般人の使用に耐えうるようになってるならいいだろう 機能的には十分でも無秩序にボタンが並んでるアプリは見ててつらい
743 名前:デフォルトの名無しさん [2018/07/18(水) 23:09:23.95 ID:/cNHsX3ta.net] コントロールそこそこおいたまともなアプリなら1000行じゃおさまらんやろ
744 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 23:29:19.34 ID:p8keSf810.net] >>706 C#の公式コーディング規約に真っ向から対立www
745 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 23:39:58.45 ID:rt2OOdjJ0.net] ラムダ式禁止とかC#使う価値半減だな
746 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 23:43:15.56 ID:dMzTHkZAM.net] λ縛りはBダッシュ縛りマリオぐらいキツイ
747 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 23:46:14.58 ID:L7ofGWBt0.net] h
748 名前:デフォルトの名無しさん [2018/07/19(木) 00:18:15.44 ID:mgU85F4C0.net] varってスコープが決まってたりよく使うもんだと思ってるんだけど 違うん? あとコンパイル時に推論されるから実行速度には影響ないって考えていいの?
749 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 00:29:07.38 ID:iwebbGhU0.net] >>716 明示的に型を示しても実行速度は変わりません
750 名前:デフォルトの名無しさん [2018/07/19(木) 00:29:37.74 ID:mgU85F4C0.net] >>717 ありがとうございます
751 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 00:34:23.22 ID:4jMcHp760.net] var myTable = new Dictionary<string, string>(); myTable.Add("Hokkaido", "Sapporo"); myTable.Add("Iwate", "Morioka"); myTable.Add("Miyagi", "Sendai"); //*1 var b = myTable.ContainsKey("Iwate"); if (b == true) { //*2 var s = myTable["Iwate"]; MessageBox.Show(s); } Dictionaryから特定の要素を探して、あれば表示するんですが この*1 *2 をLINQを使って1行にしたいんですが、どうすればいいですか?
752 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 00:38:57.36 ID:5TJBBc7u0.net] 継承について スーパークラスAに始まり class B : A class C : B class D : C となった場合、 Dクラス内でAやBのクラスのフィールドやメソッドをを使いたくなった場合には それぞれをインスタンス化をすれば使えると思いますが、 継承されていない場合はどうすれば良いのですか? 例えば、 スーパークラスX class Y : X class Z : Y とい場合、class Aのメソッドやフィールドを使いたくなったときは、 どうやってクラスAを持ってくるのでしょうか? 継承をしなくても、そのクラスのメソッドやフィールドを持ってくる方法はありますか?
753 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 00:46:06.47 ID:9fGOJ2HHa.net] コンポジション ZのフィールドやプロパティにAをもたせるだけ
754 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 00:56:15.63 ID:OslD0F820.net] >>719 LINQ は集合に対して使うものなので、その例だと必要ない if (myTable.TryGetValue("Iwate", out var s)) { MessageBox.Show(s); } 対象が
755 名前:。数あるならこう var list = new[] { "Hokkaido", "Iwate", "Tokyo" }; var q = list .Where(x=> myTable.ContainsKey(x)) .Select(x=> myTable[x]); foreach (var s2 in q) { MessageBox.Show(s2); } [] [ここ壊れてます]
756 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 01:05:12.94 ID:EPnya5cJa.net] >>719 LINQ全く関係ないけど比較的新しいC#ならこう書ける if (myTable.TryGetValue("Iwate", out var s)) MessageBox.Show(s); どうしても単一ステートメントにしたいなら myTable.TryGetValue("Iwate", out var s) ? MessageBox.Show(s) : DialogResult.None; とか (myTable.TryGetValue("Iwate", out var s) ? (Action<string>)(x => MessageBox.Show(x)) : (Action<string>)(_ => {}))(); とか書けなくはないけど俺ならこんなの書いてきやがったらコードレビューで突き返す
757 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 07:22:53.40 ID:Y653MTcJd.net] >>696 awaitでは上手く実現できなさそうな構造でした https://msdn.microsoft.com/ja-jp/library/system.threading.monitor(v=vs.110).aspx monitorクラスを使って実現できそうだなとなりました ただこれのシグナルを投げるpulseとpulseallの違いがよくわかりません pulseは変数で渡したオブジェクトのスレッドを、pulseallは渡すオブジェクトとか関係なくwaitで止まってるすべてのスレッドを動かす?
758 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 07:52:34.10 ID:pmdFJ8GPd.net] >>724 >awaitでは上手く実現できなさそうな構造 なぜ?
759 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 07:53:35.73 ID:EPnya5cJa.net] >>724 つまりProducer-Consumerだろ? まさにBlockingCollectionのユースケース
760 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 10:16:19.48 ID:cAPUq0O30.net] Aそのものは非同期(バックグラウンド)で動く必要があるとして そもそもBが非同期で動く必要性がわからん かならず応答きてから次をよぶんだろ?
761 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 11:39:51.48 ID:wWZN809Va.net] むしろ一番の疑問は、 >リクエストは一つずつ送らないといけない制約がある のであれば、キューを持つべきなのはリクエストを送る側ではなく受ける側なんじゃないか、 なぜリクエストを送る側に受ける側の都合に合わせる負担をさせるのか、 ってことだと思うけど、まあ話が曖昧過ぎてよくわからんね。
762 名前:719 mailto:sage [2018/07/19(木) 12:02:04.85 ID:4jMcHp760.net] >>722 自分のコードだと野暮ったくて古い感じがしたんですが out var なるものを使ってすっきりさせるんですね >>723 最近、ラムダ式やLINQを始めたんで↓みたいにメソッドチェーンで繋げたかったんですが これだとやりすぎなんですねw >> myTable.TryGetValue("Iwate", out var s) ? MessageBox.Show(s) : DialogResult.None; とか >> (myTable.TryGetValue("Iwate", out var s) ? (Action<string>)(x => MessageBox.Show(x)) : (Action<string>)(_ => {}))(); >> とか書けなくはないけど俺ならこんなの書いてきやがったらコードレビューで突き返す ありがとうございました
763 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 12:23:58.43 ID:apArmWopd.net] 見やすくしたり行数減らす為の機能なのに一文に無理やり詰めたら見づらいだろうしな LINQ使わなくても ;で終わらせた文を一列にずっと書き続けてたらなんだこいつってなるだろうし
764 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 12:45:19.73 ID:7c8TqsUTM.net] MQ使えよ
765 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 13:14:15.48 ID:kD3lyTPJr.net] varのメリットってなに?
766 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 14:01:22.48 ID:goaSBPuMd.net] >>732 定期的にこのスレを荒らすメリットがある。
767 名前:デフォルトの名無しさん [2018/07/19(木) 14:35:28.55 ID:3tSlXwR10.net] 10年で1スレも消費できないムラダ厨がまた初心者スレで暴れてるのか。
768 名前:デフォルトの名無しさん [2018/07/19(木) 15:40:49.42 ID:afTcWGfVp.net] >>728 送る側で待たないと仕事を溜め込んだ受け側が最悪死ぬか無視する様になるぞ。
769 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 16:09:05.04 ID:wWZN809Va.net] >>735 意味わかんないよ キューが満杯ならエンキューできないだけ。 そして、キューが満杯になるような事態が起こるかどうかは、キューを送る側受ける側 どちらが持つかという設計の問
770 名前:題とは何も関係がない。 送り側が持てばそんな事態は起こらない、などとはまったく言えない [] [ここ壊れてます]
771 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 16:13:58.11 ID:GVBKISLp0.net] 共有メモリにFIFO作りたいのでサンプルコードください
772 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 19:27:54.48 ID:FFg3mKaqa.net] >>737 基本的にスレチだな
773 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 20:33:54.32 ID:AM4tPqCx0.net] >>737 マルチ乙
774 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 20:34:49.77 ID:m5MPu7YPM.net] バックグラウンドジョブをメモリに置いて管理するとクラッシュした時につらいのでやめてください
775 名前:デフォルトの名無しさん [2018/07/19(木) 23:06:52.57 ID:afTcWGfVp.net] >>736 少なくとも送る側が待てばたまらないし、待たすからには大元まで遡って待たせることが出来る。 受け側で貯めちゃうと、そんなコントロールすらできない。
776 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 23:10:07.57 ID:3HXgvZll0.net] >>737 MemoryMappedFileクラスで共有メモリを作って、そこにリングバッファを作れば良い。 サンプルコード? と言う名の丸投げは知らんw
777 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 23:16:09.86 ID:GVBKISLp0.net] >>742 ありがとうございます
778 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 23:24:45.38 ID:OO5CyzUia.net] >>741 何を言ってんの。 ちゃんと自分の頭で考えて言ってる? キューの容量が100だとする。 リクエストが100まで溜まってしまうかどうかは、キューをどちらが持つかと関係ないでしょ。 スループットはリクエストの処理能力で決まるんであって、キューをどっちが持つかで決まるんじゃない。 当たり前でしょ。 送る側が待てばたまらない? それは受ける側がリクエスト拒否したらたまらないと言ってるのと同じ 君の世界じゃ、バケツリレーの余分なバケツの置き場所を送り元におくか送り先に置くかで バケツの輸送能力(単位時間あたりの送れる水の量)が変わるの? 変わるわけがないでしょ 頼むよマジで
779 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 00:04:31.35 ID:K42rKqTp0.net] >>721 ありがとうございます すみません、コンポジションというのはどういう手法なのでしょうか? 調べてはみたのですが解説しているサイトが見つからなくて・・・
780 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 00:15:51.43 ID:v/t2rOLx0.net] >>745 クラスのインスタンスをメンバ変数などに設定して持つ
781 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 00:16:43.45 ID:Cn0RK5hEM.net] 配置計画 GOFはそちらを優先して説明しているが
782 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 01:07:34.53 ID:AsTO3swr0.net] 持つと待つ 混ざりすぎじゃねぇの? 待つって言いたいんだよね?
783 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 06:49:01.24 ID:rjUp7fMrM.net] きたです https://i.imgur.com/F20EZn1.jpg
784 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 09:57:40.63 ID:KW0DEJnu0.net] >>748 >>744 の文中の持つは持つで間違ってないと思う
785 名前:デフォルトの名無しさん [2018/07/20(金) 10:43:27.30 ID:aSukBuZjp.net] >>744 だから、貯め無い様にするには、送る側、更にそこに送る側、更に大元の送る行為を辞めされはいいって話。 わかる? 通信のフローコントロールの話と同じなんだよ?
786 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 10:47:52.01 ID:j2kgPlBya.net] >>751 まだ言ってるのか。 君の世界では >送る側、更にそこに送る側、更に大元の送る行為を辞めされはいいって話 これが可能かどうかはリクエストのキューをどちらが持つかに依存するのか。 キューをリクエストの受け側が持ったらそれは出来ないのか。 意味が分からないよ 何が >通信のフローコントロールの話と同じなんだよ? だw 馬鹿過ぎて笑える
787 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 10:50:07.22 ID:GHEf7JCUM.net] よそでやってくんねーかなクソカス
788 名前:デフォルトの名無しさん [2018/07/20(金) 10:50:53.38 ID:aSukBuZjp.net] おまえ、目悪過ぎて呆れるわ。 持つなんて一言も言って無いだろw 待つだw マツ。 キューをどっちが持ってるかなんて話はしてない。
789 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 11:06:3
] [ここ壊れてます]
790 名前:9.88 ID:KI/QuNIvM.net mailto: アスペルガーの人はひとつのことしか同時にわからないから 二つ話題があることに気がつかない その話題は持つであってるよ [] [ここ壊れてます]
791 名前:デフォルトの名無しさん [2018/07/20(金) 11:16:02.27 ID:aSukBuZjp.net] >>755 まあ普通は受け取る側に郵便受けが無いと受け取る人はいちいち局留めの郵便を受け取りに行かなきゃならないんだけど、まあ、それはどちらでも機能するからあんまり争点にはならないけどね。
792 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 13:07:56.71 ID:aSN8UD58d.net] バケツリレーの喩えでもスループットは変わっちゃうんだよな。 受け側に送信側が送信する総量より大きいバッファを持てば、スループットは水の入ったバケツを運ぶ時間に依存するだけで済む。 キューがそれより遅ければバケツを引き渡すために時間が余計にかかるわけだから、スループットは落ちる。 送信側にキューを持ったところで、送信側は送信処理に対して同期的に処理しないだけで済むだけで、そのキューからの送出がどんどん遅れるだろう。受け取ってくれないなら。
793 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 13:54:59.01 ID:gB9GbXMP0.net] >>693 ,695「スレッドを協調して動かしたいです、制約あるんで」 凡人の回答「○○使えよ」 天才の回答「制約が悪い」
794 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 21:28:53.81 ID:OAXfUTo30.net] c=(a*a+b*b) c=System.Math.Sprt(c) これでcの平方根を出そうとしたのですがSystem.MathにSprtの定義がありませんと出ます sharedevelopを使っています
795 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 21:32:35.58 ID:XkM+nwLwM.net] SQRT
796 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 21:35:00.80 ID:6RzmSKAyM.net] エディタの不具合だろ SharpDevelopなどという化石は今すぐアンインストールしてVSかVSCodeを使え
797 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 21:44:14.53 ID:XkM+nwLwM.net] 平方根の綴りが違う
798 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 22:17:34.54 ID:7jIkQpVM0.net] square rootだからねぇ
799 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 00:28:32.93 ID:WdWG9X6t0.net] ありがとうございます 解決しました
800 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 06:52:38.43 ID:HGZKU0EK0.net] スパート!
801 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 13:53:42.54 ID:aw31/LTY0.net] >>754 もともと >キューを持つべきなのはリクエストを送る側ではなく受ける側なんじゃないか、 にたいして >送る側で待たないと仕事を溜め込んだ受け側が最悪死ぬか無視する様になるぞ。 ってレスしてるのが発端なんだが どうでもいい良いしよそでやって欲しいけど
802 名前:デフォルトの名無しさん [2018/07/21(土) 14:14:10.21 ID:IqGIA9LU0.net] 話題が一変してんのにわざわざ掘り返すなよw 言ってる事とやってる事が矛盾してんぞw
803 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 15:42:07.60 ID:8fBGWCJL0.net] レスバトルって奴だろ 最後に言及した方が勝ちなんだって これ見るといつも思うが、こういう馬鹿には自分自身を見る自意識がないのかね
804 名前:デフォルトの名無しさん [2018/07/21(土) 20:00:10.16 ID:rsQP0F780.net] たすけて! Parallel.ForEachの中でデータグリッドの内容を更新してるんだけど 途中で爆発します データグリッド全体に✕って出て非表示になる データグリッドの更新処理はlockで囲ってても競合は起きちゃうものですか?
805 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:05:25.49 ID:CBiNHREt0.net] まず原因を切り分けろ Parallel.ForEachを外しても爆発するか確認するんだ
806 名前:デフォルトの名無しさん [2018/07/21(土) 20:07:27.16 ID:rsQP0F780.net] >>770 パラレルの外出すと機能するけど そうすると全処理終わってから一回しか更新されない…😌
807 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:08:57.28 ID:gktKld7A0.net] >>771 UIはUIスレッドからしか操作出来ない Parallel.ForEachの処理は別スレッドで実行される
808 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:10:43.13 ID:BEEMYUE30.net] >>771 Action<TLocal> local
809 名前:Finally の引数をとるオーバーロードを使ってみたらどうでしょう? [] [ここ壊れてます]
810 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:10:44.76 ID:H6KFndt4M.net] >>768 君のレスを見るといつも思うが、こういう特徴のある口調のレスを繰り返す人には自分自身を見る自意識がないのかね
811 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:10:59.84 ID:nH897ECr0.net] invokeするか、ContextにPostするしか無いんじゃないかな
812 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:22:09.68 ID:3bWsh9tI0.net] >>774 >>774
813 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:22:10.55 ID://qCwfF7a.net] 爆発w
814 名前:デフォルトの名無しさん [2018/07/21(土) 20:24:00.77 ID:rsQP0F780.net] >>772 >>773 >>775 Invokeでググりました まさにこの疑問を解決するための機能でした 有難う御座います
815 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:35:04.73 ID:BEEMYUE30.net] 私は >>773 ですが Invoke について自分があまり良く分かってない気がしてきたので 詳しい方がいらっしゃったら教えてください UIスレッドで Parallel.ForEach を呼ぶとUIスレッドをつかんだまま並列処理が実行されて、 その並列処理のスレッドで Invoke を使うとデッドロックしてしまう気がするのですが 実際はそういうことはないのでしょうか?
816 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:36:04.76 ID:aw31/LTY0.net] マルチスレッドにしてInvokeしまくると結局パフォーマンスがガタ落ちしたりするがな
817 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:15:58.91 ID:BEEMYUE30.net] >>779 です WPF で下のようなコードを実行してみたらやっぱりデッドロックしてしまいました Invoke はそれなりに慎重に使わないといけないみたいです void Button_Click(object sender, RoutedEventArgs e) { MessageBox.Show("このメッセージは必ず表示される"); Parallel.ForEach(Enumerable.Repeat(0, 2), i => Dispatcher.Invoke(() => { })); MessageBox.Show("デッドロックするとこのメッセージは表示されない"); } ちなみに Enumerable.Repeat(0, 2) の部分を変えると以下のような挙動でした Enumerable.Repeat(0, 0) に変える → デッドロックしない Enumerable.Repeat(0, 1) に変える → デッドロックする new int[] { } に変える → デッドロックしない new int[] { 0 } に変える → デッドロックしない new int[] { 0, 0 } に変える → デッドロックする
818 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:16:52.59 ID:1oayVCQs0.net] >>778 いいってことよ(´・ω・`)b
819 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:18:17.40 ID:nH897ECr0.net] >>779 並列処理はUIスレッドではないスレッドで行われるよ。 いや、UIスレッドで行われるとは限らない、と言う言い方の方が正しいかな。 UIスレッドを掴んだままの意味がわからんが、挙動が謎なら、ブレークポイントつけて実行して、どのスレッドが何をしてるかを把握してはいかがだろうか。 今どのスレッドを使ってるかは表示されてるから。
820 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:20:54.98 ID:nH897ECr0.net] WPFかあ
821 名前:デフォルトの名無しさん [2018/07/21(土) 21:25:21.58 ID:VW1YO4fA0.net] Windows版VSCodeで、monoを構文解析用のコンパイラとして指定することってできないのかな? Unityの.Net4.0用プロジェクトで、数ヶ月前までは、.Net3.5用のSystem.Data.DLLを読み込んでくれたのにさあ VisualStudioを更新したら構文解析用のコンパイラが変わったのか、古い.net3.5用のDLLを読み込んでくれなくて赤波線だらけになっちゃったぜ 4.0用のDLLもあるわけだけど、それを入れるとUnityのmonoの方でなぜかエラーを起こすし・・・どうしたら良いものか・・・・
822 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:33:11.65 ID:BEEMYUE30.net] >>783-784 レスありがとうございます > いや、UIスレッドで行われるとは限らない、と言う言い方の方が正しいかな。 >>781 で new int[] { 0 } だとデッドロックしないあたり、まさにそんな感じですね > WPFかあ >>769 でデータグリッドと書かれていたので、 今の Windows フォームなら DataGrid ではなく DataGridView かなと思って WPF の方で試してしまいました(汗 Windows フォームだと挙動が変わるならそれも知っておきたいので 今からそっちでも試してみ
823 名前:ます [] [ここ壊れてます]
824 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:36:50.95 ID:BEEMYUE30.net] Windows フォームで試してみたのでご報告を。 以下のコードを実行してみた結果、やっぱりデッドロックしてしまいました Enumerable.Repeat(0, 2) を変えたときの挙動も >>781 と同じでした void button1_Click(object sender, EventArgs e) { MessageBox.Show("このメッセージは必ず表示される"); Parallel.ForEach(Enumerable.Repeat(0, 2), i => Invoke(new Action(() => { }))); MessageBox.Show("デッドロックするとこのメッセージは表示されない"); }
825 名前:デフォルトの名無しさん [2018/07/21(土) 22:26:34.46 ID:rsQP0F780.net] えーわからん… ちなみにフォームですビューです つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか
826 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 22:44:23.68 ID:BEEMYUE30.net] >>788 あくまで私一人の考えですが・・・ [1] Invoke を使うと >>779 に書いたような理由でデッドロックするので Parallel.ForEach でUIスレッドを使いたいなら >>773 のようにすべき [2] しかし、同じく >>779 に書いたように Parallel.ForEach はUIスレッドを つかんだまま並列処理を行うのでデータグリッドの更新処理だけ Parallel.ForEach から切り出してもほとんど同じなのでは? (一応 localFinally 中も他のスレッドは動けるので そこで更新処理を行う方がいい場合もあるかもしれない) [3] 並列処理が必要なほど大きな処理を行うなら、 一度UIスレッドを手放す選択肢も考えてみては? ただ、Invoke がダメだと考えている人間自体が私だけのような気もするので 他の方の意見も聞いてみたほうがいいと思います あと、[3] に関しては場合によりけりだと思うので、 具体的な処理内容を教えていただければ私の考えをお伝えしたいと思います
827 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 22:55:07.29 ID:gktKld7A0.net] >>787 そのコードだと、button1_Click()がずっとUIスレッドを握ったまま。 だから、Parallelの別スレッドでInvoke()しようとしてもUIスレッドに遷移出来なくて固まる。
828 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:00:46.86 ID:gktKld7A0.net] 既に>>779 に書いてあったね。その通り。
829 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:10:20.56 ID:BEEMYUE30.net] >>790-791 レスありがとうございます >>779 の考えで正しいのか不安だったのですがお陰様で自身が持てました 他に何かおかしなことを言ってしまっていたら教えていただけると嬉しいです >>788 >>789 はレスとしてとっ散らかっている気がしてきたので一問一答で答えてみます > つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか Parallel を UI スレッドで実行する場合は悪手というか、致命的だと思います > それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが それなら期待通りの動作にはなると思います。ただ、確かにあまりいい方法ではないと思います > uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか 正しく Invoke を使えば問題ないと思います しかし今回の件からもわかるように、Invoke を正しく使うのはなかなか難しいようです
830 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:21:21.79 ID:R8KbBSh90.net] .Invokeではなく.BeginInvokeを使うのはどう?
831 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:30:54.97 ID:BEEMYUE30.net] >>793 それって > それともThread生成してその中でParallelすれば良かったり…? よりも更にワチャワチャする気がするのですがどうなんでしょう? ワチャワチャって具体的にどういうことなのか 説明を求められれば頑張ってみようと思いますが、 自分の考えがあっているかも、それをうまく説明できるかどうかも 自信がないので、詳しい方の意見を聞けると嬉しいです
832 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:41:01.32 ID://qCwfF7a.net] >>794 そんな難しい話じゃないっすよw BeginInvokeは非同期に実行される、つまりキューにデリゲートを入れたらすぐに処理を返すので Invokeのように自分で自分の終了を待機する状態に陥らない
833 名前:デフォルトの名無しさん [2018/07/21(土) 23:43:41.94 ID:rsQP0F780.net] >>792 有難う御座います これで行けたので実装試してみます void button1_Click(object sender, EventArgs e) { MessageBox.Show("このメッセージは必ず表示される"); Task.Factory.StartNew(() => { Parallel.ForEach(Enumerable.Repeat(0, 2), i => Invoke(new Action(() => { }))); } MessageBox.Show("デッドロックするとこのメッセージは表示されない"); }
834 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:55:52.12 ID:BEEMYUE30.net] >>795 レスありがとうございます おっしゃる通りBeginInvokeはキューにデリゲートを入れたらすぐに処理を返すので 次から次へとキューが入って大変なことになりそう
835 名前:E・・と思ったのですが、 そんなに心配することではないのでしょうか >>796 それで一応動くと思いますが、Parallel.ForEach が終わる前に 二つ目の MessageBox.Show の行に移るので注意してください ・・・というか、localFinally を使ったり更新処理だけを切り出したりはダメっぽいですか? ダメだと考えられた理由を教えていただければ何かアイディアを提供できるかもしれません [] [ここ壊れてます]
836 名前:デフォルトの名無しさん [2018/07/22(日) 00:03:07.23 ID:qjdpSLXF0.net] >>797 データグリッドビューは進捗状況を見るために更新していて 1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます ダメではなく単純に自分が分かってないだけです この処理ならlocalFinallyが最適かもです 深く調べてみます
837 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:13:38.17 ID:IU6x2eOV0.net] >>798 > データグリッドビューは進捗状況を見るために更新していて > 1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます 進捗状況の確認が必要なほど1行あたりの処理に時間がかかる理由は何でしょうか? もしその理由が IO など、CPU 以外のところにあるのだとすれば、 Parallel.ForEach を使うこと自体を見直したほうがいいかもしれません > この処理ならlocalFinallyが最適かもです 正直なところ、更新処理だけ切り出す方法よりも localFinally の方が 適切なケースはまれだと思います ただ、localFinally の使い方がわかれば更新処理を Parallel.ForEach の外に 切り出す方法もわかると思うので、とりあえず調べてみて損はないと思います
838 名前:デフォルトの名無しさん [2018/07/22(日) 00:23:24.78 ID:qjdpSLXF0.net] >>799 圧縮ファイルを解凍して中のファイルを加工して再び圧縮し直す これで1タスクです 1ファイル200MBほどで100ファイル以上処理することが多いです 圧縮解凍、加工は外部ツールを使用しててProcessStartInfoで処理されます
839 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:35:58.51 ID:IU6x2eOV0.net] >>800 なるほど〜 CPU 処理も IO もあって微妙なところですね ちなみにその外部ツールはマルチスレッドを使うオプションはないでしょうか? (例えば 7-zip.exe だと -mmt がそれにあたります) もし外部ツールがマルチスレッドに対応してるなら、 並列処理はそっちに任せてしまうというのはどうでしょう? または、外部ツールではなく SharpCompress のようなライブラリを使うことができれば、 C# によるより細かい制御も可能になると思います
840 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:37:18.94 ID:gDKcX53ba.net] 汎用的なものとは思えないし、動けばどうでもいいだろ 俺ならそういうのはいちいちGUI付けずにコンソールでやっちゃうな
841 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:45:55.06 ID:IU6x2eOV0.net] >>800 それともう一つ、外部ツールを呼び出すのにデフォルトの ParallelOptions で Parallel.ForEach を呼び出すのはさすがにまずいと思います ParallelOptions 自体に MaxDegreeOfParallelism というプロパティがありますし、 ParallelOptions の TaskScheduler プロパティに以下のような自前のスケジューラーを 設定すればより柔軟な並列処理を実現できると思います 同時実行の程度を制限するタスク スケジューラを作成する https://msdn.microsoft.com/ja-jp/library/ee789351(v=vs.100).aspx >>802 それは確かにw 完成したソフトによって得られる利益よりソフトを作るコストのほうが大きくなってしまったら 意味がないですからね (ただしソフトによって得られる利益には開発者のスキルアップも含まれる・・・と言ってみたりw)
842 名前:デフォルトの名無しさん [2018/07/22(日) 00:48:52.21 ID:qjdpSLXF0.net] >>801 7zip使ってます スレチになるけど mmtは一つの処理をマルチに実行するものではないでしょうか 圧縮形式は決まってなく複数あるので7zipを使用してます zip rar lzh以外にも色々
843 名前:デフォルトの名無しさん [2018/07/22(日) 00:51:33.52 ID:qjdpSLXF0.net] >>803 タスクスケジューラー調べてみます良さそうですね i7使用しててMaxDegreeOfParallelismは常に8で実行してます 8スレッドで画面カッチカチで処理してます 暴力です
844 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:54:31.49 ID:IU6x2eOV0.net] >>804
845 名前: > mmtは一つの処理をマルチに実行するものではないでしょうか その通りです したいことが「進捗状況を表示できるようにすること」と「並列化により処理時間を短縮すること」 だとすれば、それで問題ない(というかむしろその方が望ましい)の思うのですがいかがでしょうか? [] [ここ壊れてます]
846 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:59:41.83 ID:IU6x2eOV0.net] >>805 MaxDegreeOfParallelism を使ってらっしゃるなら とりあえず致命的にまずいことはないと思います ただ、CPU だけじゃなく、同時に8つのファイルの読み書きを 求められる HDD さんの気持ちも考えてあげて・・・w
847 名前:デフォルトの名無しさん [2018/07/22(日) 01:01:31.55 ID:qjdpSLXF0.net] >>806 後続の加工処理もありエラー監視も含むので進捗知りたいです
848 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:03:03.89 ID:SZ8yn9810.net] >>798 localFinallyよりasync/awaitの方が分かりやすいと思う。 private async void button1_Click( object sender, EventArgs e ) { MessageBox.Show( "このメッセージは必ず表示される" ); await Task.Run( () => { Parallel.ForEach( Enumerable.Repeat( 0, 2 ), i => Invoke( new Action( () => { } ) ) ); } ); MessageBox.Show( "デッドロックするとこのメッセージは表示されない" ); }
849 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:04:00.97 ID:gDKcX53ba.net] makefile使えば? 数行のMakefile書いて make -j8 するだけだよ
850 名前:デフォルトの名無しさん [2018/07/22(日) 01:04:22.38 ID:qjdpSLXF0.net] >>807 解答先は8GBのRamディスクです メモリに物理ファイルおいてでここで加工して再圧縮してその後HDDに移動させてます
851 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:18:41.37 ID:IU6x2eOV0.net] >>808 Parallel.ForEach を使わなくてもそれはできると思うのですがいかがでしょうか? >>809 確かにおっしゃる通りですね 後は好みの問題ですが、やはり私は1行ごとに Invoke するよりも パフォーマンス的に有利な localFinally や更新処理の切り出しを推したいですw >>811 なるほど!そうすれば外部ツールを使っても HDD へのアクセスだけ別に処理できますね ただ、HDD へのアクセスを別にしようという意識をお持ちで、それだけのスキルもあるのなら、 外部ツールにこだわる必要はないのでは・・・という気もします あと、メモリは HDD よりはずっと速いですが、CPU キャッシュとかの関係でやっぱり 8 個のファイルを同時に読み出すよりは1つずつの方が良いような気がします
852 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:27:28.49 ID:IU6x2eOV0.net] >>809 >>812 いや、でも進捗状況を表示するとなると結局どこかで await は使うことになりそうですね ただ私としては >>800 のような処理なら Parallel.ForEach は必要ないと考えていて、 foreach (ファイルのループ) { foreach (進捗状況のループ) { await (進捗状況の更新待ち); (進捗状況を画面に反映); } (1ファイルの完了を画面に反映); } のような感じで十分だと思うのですが、どんなもんでしょうか?
853 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:35:51.92 ID:eU7Qw5rc0.net] そんな処理速度気にするなら複数PC用意できたりしないのかな? たぶん内製ツールだと思うけど、そういうのって長期保守とかしないならシンプルでさくっとやれる方向を模索したほうがいい気が… 研究開発兼ねてとかだったらいいんだけど
854 名前:デフォルトの名無しさん [2018/07/22(日) 01:43:37.75 ID:qjdpSLXF0.net] >>812 そうです、最も投げやすく勝手にマルチしてくれる便利なParallelさんって聞いて使ってるます 別の手段があればコレに拘ることはないと思ってます >>813 cpuキャッシュとか考慮せずマルチ=高速って誤認識で走ってきて その中で最適化してきたので localfinally使用したときと 1ファイルの処理の差も検証してみたいと思います >>814 ただの趣味なんですPC一台で 複雑でも効
855 名前:果があれば試したいと考えています [] [ここ壊れてます]
856 名前:デフォルトの名無しさん [2018/07/22(日) 01:44:34.84 ID:qjdpSLXF0.net] ほな寝ます。詳しくありがとうございました! もしかしたら明日もっとやべーかもです
857 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:59:21.48 ID:J1Nh86LOM.net] var block = new ActionBlock<ZipOpParam>( async (param) => { await ExecuteZipOpAsync(param); InvokeUpdateUi(param); }, new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 8 }); foreach(var p in zipOpParams) block.Post(p); block.Complete(); await block.Completion;
858 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 03:07:13.11 ID:IU6x2eOV0.net] >>815 > そうです、最も投げやすく勝手にマルチしてくれる便利なParallelさんって聞いて使ってるます これは私も同じように認識しています > cpuキャッシュとか考慮せずマルチ=高速って誤認識で走ってきて これは場合によりけりだと思います 特に今回のように外部ツール側でマルチスレッドにできる場合はツールの呼び出し側では 余計なことをせず外部ツールに任せたほうが高速になる場合が多いと思います >>817 C# で並列処理を行うならこれは一つの解決策になりそうですね 別の解決策として、新たに参照を追加する必要のない↓の方法とかどうでしょう? var tasks = new List<Task>(); foreach (var param in zipOpParams) { if (tasks.Count == 8) tasks.Remove(await Task.WhenAny(tasks)); tasks.Add(ExecuteZipOpAsync(param).ContinueWith( _ => InvokeUpdateUi(param), TaskScheduler.FromCurrentSynchronizationContext())); } await Task.WhenAll(tasks);
859 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 09:28:10.63 ID:e8tLYzcQ0.net] 違うexeキックすれば終わりなんやで?
860 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 13:48:56.26 ID:dLVAOvzX0.net] オブジェクト指向について勉強しようと思い、クラスを複数作って実行しようとしたら実行ボタンがプロセスにアタッチというよく分からない物に代わりビルドなども出来なくなってしまいました どうしたら元に戻せるでしょうか
861 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 15:37:48.37 ID:X/YKRg9/M.net] 参考にした資料がそう(実行ボタンをプロセスにアタッチ)しろと書いているなら その手法でトラブった時の解決法も資料に書いてあるのでは 提示されたくらいの情報でここで帰ってくる答えは 「ゴミは捨てて作り直せ」 「一旦オブジェクト指向についての記憶を消せ」 だと思う
862 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 19:34:11.94 ID:dLVAOvzX0.net] このように実行ボタンがアタッチ…となりビルドも行えなくなってしまっています… プログラムは「確かな力が身に付くc#超入門」から取っていて特にプロセスにアタッチに関する記述も無いので恐らく設定どこか変に弄ってしまったのかと思うのですが… https://i.imgur.com/QK8r2yI.jpg
863 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 19:59:19.28 ID:zgYMpfBL0.net] >>822 ソリューションエクスプローラーで当該プロジェクトを右クリック→スタートアッププロジェクトに設定(みたいなやつ)を選択
864 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:02:21.74 ID:2+gJNW3/0.net] >>822 言語じゃなくVisual Studioのスレで聞かないと それはプロジェクトが読み込まれておらずソースだけ読み込まれている状態
865 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:13:04.82 ID:dLVAOvzX0.net] >>823 やってみたのですがそれらしき項目がありませんでした…
866 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:13:36.52 ID:dLVAOvzX0.net] >>824 なるほどありがとうございます vsのスレで聞いてきます
867 名前:デフォルトの名無しさん [2018/07/23(月) 00:19:07.43 ID:glq8mOZ10.net] revertしろや。意味もわからんだろうがな。
868 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 01:08:12.51 ID:7plYbgct0.net] >>827 じゃあなぜそれを言ったのでしょうか…
869 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 02:22:37.56 ID:UcAZ2Awl0.net] ナチュラルマウンティング
870 名前:デフォルトの名無しさん [2018/07/23(月) 09:39:14.18 ID:GAsLkYgIM.net] >>828 ググって勉強しろということだ
871 名前:デフォルトの名無しさん mailto:sage [2018/07/24(火) 22:19:33.23 ID:KA6Loe2t0.net] もしかしてASP.NETってJavaみたいなリッチで無料の拡張フレームワーク無いの?
872 名前:デフォルトの名無しさん mailto:sage [2018/07/24(火) 22:26:36.90 ID:9BkrBjXcd.net] >>831 ? ASP.NET自体が無料のフレームワークだろ
873 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 13:43:12.86 ID:rJjy6ITv0.net] きもは「リッチ」で「拡張」ってことだろ つまりどんなものを指してるのか全く分からんがな
874 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 14:20:20.79 ID:HwnrNSAwM.net] Classic ASP.NETは拡張性とかガン無視でMSがデフォルトで提供するお仕着せのものだけ覚りゃ一通りできるっていうドカタ向けフレームワークだぞ Springみたいなのがお好みならASP.NET Core使え
875 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 17:37:41.34 ID:rJjy6ITv0.net] >>834 Classic ASP.NETがどのバージョンを指してるか知らんが拡張性無視とか笑わせる HTTPハンドラとかモジュールとか自作したらほぼすべてカスタムできたわけだが
876 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 22:02:27.35 ID:LjfK0h7i0.net] すれ違いで書き込んだ者ですが、こういう連続線をC♯を使って、方眼風の画面にクリックして一番近い座標点から始まり次のクリック座標点って感じで連続線を描きたいんですが、なんか参考になる本だとかサイトってありませんか? https://i.imgur.com/Emj85bk.jpg
877 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 22:16:28.94 ID:QC64Azkrd.net] >>836 Graphicsクラスを使って自分で線描画するのが手っ取り早いからこのあたりかな https://dobon.net/vb/dotnet/graphics/drawrectangle.html
878 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 22:56:32.30 ID:oxjpcelO0.net] >>837 そのページは閉じた図形だな。 >>836 同じdobonで 折れ線を描く(DrawLinesメソッド) https://dobon.net/vb/dotnet/graphics/drawline.html#fold
879 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 23:40:00.99 ID:sTP5vmoc0.net] >>834 ASP.NET CoreってPrimeFacesのような無料で便利なライブラリあるの? 商用ならWijmoやTelerik色など々あるようだけど有料はちょっとね 拡張すりゃ出来るとかハンドラ書けばできるとかそんなのは当たり前の事だけど そんな車輪の再発明に工数が出るわけがないし
880 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 23:47:26.31 ID:QC64Azkrd.net] 無料ライブラリなんかnugetでなんぼでもインストールできるだろ
881 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 00:19:33.20 ID:aLLF0qhM0.net] >>840 具体的にはどのパッケージですか?
882 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 07:51:00.77 ID:qCaaK3zMa.net] >>839 ASP.NET CoreはMVCだからGUIは単なるHTML ASP.NET Core関係なく普通にHTML/JS/CSSのライブラリを拾ってきて使えばよい
883 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 14:29:55.52 ID:ujIuVWNLr.net] ライブラリ不要レベルやん マウス位置とライン引くだけだし
884 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 14:36:43.63 ID:rEhHpU7y0.net] PictureBoxがあればなんだってできるみたいな
885 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 16:41:36.62 ID:EX1pNRMXM.net] 文字の折返しさえできたら実はなんでもいい
886 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 16:48:08.19 ID:lkW5ctngd.net] >>843 誰もライブラリ使えなんて言ってないだろ
887 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:08:23.29 ID:BBodZQOSM.net] >>842 そういう使い方はNGですね サーバーサイドレンダリングが基本のフレームワークとクライアントサイドのフレームワークは常識的に考えてインピーダンスミスマッチでしょう (primefacesのように最初からセットで設計されてるならともかく) それならまだaspnet coreはapiに徹してang
888 名前:ularやreact使ったほうがマシです [] [ここ壊れてます]
889 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:18:37.89 ID:IphAgnBQM.net] >>847 なんでクライアントフレームワークの話になるんだ? AngularやReactのようなものに依存せず単独でページに組み込めるHTML/JS/CSSのコンポーネントなんか腐るほどあるだろ
890 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:30:12.58 ID:36qwSZL10.net] C#で、VPN経由でCiscoのL2スイッチにログインしてフォワーディングデータベースと各ポートのステータスを取得したいんですが、 簡単に解説しているサイトはないでしょうか? クライアントを動かすPC - HUB - NATルーター - VPNルーター - ネット - VPNルーター - HUB - Ciscoルーター - 目当てのCisco L2スイッチ ていう状態です。
891 名前:デフォルトの名無しさん [2018/07/26(木) 19:41:22.79 ID:jgVPt9Lg0.net] LinQの中身ってfor文ってホント?
892 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:42:46.48 ID:CSIl69XB0.net] アイドルグループの中身は知りません
893 名前:デフォルトの名無しさん [2018/07/26(木) 19:49:11.86 ID:jgVPt9Lg0.net] LinQクラスの各メソッドの中身の味方教えてください
894 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:51:33.98 ID:XPlHGtVDd.net] >>852 github
895 名前:デフォルトの名無しさん [2018/07/26(木) 19:55:09.78 ID:gWAgddOO0.net] >>852 https://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs
896 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 20:49:53.68 ID:X2GH2dHI0.net] >>847 NGかどうかはお前の都合だがな ASP.NETでもWebFormあたりは、サーバ側とクライアント側の統合を目指してたんだよ クライアントスクリプト一切書かなくてもAJAXできるコントロールとかまであった だが今の流れはサーバサイドはサーバサイド、クライアントはクライアントな流れ クライアントはすきなライブラリ使え >それならまだaspnet coreはapiに徹して apiに徹するのと、html出力に徹するのとどれほどの違いがあると?
897 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 20:51:44.84 ID:aLLF0qhM0.net] >>848 ASP.NET Coreと相性いいのは無いね
898 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 20:59:07.08 ID:0BZQ2aB/M.net] ASP.NETの問題というよりC#自体がwebのフレームワークと相性が悪いような… おとなしくtypescript使ったほうが楽かなとは思う
899 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:10:20.45 ID:aLLF0qhM0.net] >>855 WebFormsの時からずっとだけど鯖で出力したhtmlやバックエンドの挙動を把握してJS書かないといけないからめんどくせえじゃん なんのためにナマのhtmlを隠蔽したのかって話になる htmlを隠蔽すると決めたなら徹底しなきゃならん apiに徹すればクライアントはクライアントで綺麗に切れるからそんな煩わしさから開放される
900 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:25:20.81 ID:+zykdZnW0.net] LinQ は、Rails のQuery object と同じだろ where 何々 order by 何々 別々に書いた文字列を、1つのSQL 文にまとめて、DB に問い合わせする
901 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:32:16.74 ID:Q5F+5vhQ0.net] >>857 ちょっと何言ってるかわからない
902 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:43:03.68 ID:wePnpHti0.net] >>849 C#が扱うのはTCPあたりだけじゃないのか そっから下はOSやら何やらの仕事だし上はCISCOのマニュアルなり読めとしか言えそうにない
903 名前:デフォルトの名無しさん [2018/07/26(木) 21:45:25.99 ID:F57VHmfS0.net] ソリューションエクスプローラーで.csファイルのなめえ変えてもデバッグできる?データ壊れない?
904 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:47:47.65 ID:0BZQ2aB/M.net] >>862 gitというものがある そいつを使えば自由自在に試し放題だ
905 名前:デフォルトの名無しさん [2018/07/26(木) 21:50:46.39 ID:F57VHmfS0.net] いやあああああああ これ理解してないと動かなくなるやつうううう https://i.imgur.com/3Mz1OsU.png
906 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:51:53.07 ID:rEhHpU7y0.net] こういうハッキングの匂いがするやつは回答しないほうがいい
907 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:51:55.20 ID:gWAgddOO0.net] >>862 ソリューションエクスプローラー上での名前の変更は問題なく出来る
908 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:53:30.55 ID:0BZQ2aB/M.net] git使わなくてもソリューションのフォルダごとコピーかzip圧縮でも十分だけど
909 名前:デフォルトの名無しさん [2018/07/26(木) 21:55:22.46 ID:F57VHmfS0.net] >>866 >>867 ごめん無事でした なんかVSがクラス名と一致させようとするからダメかと思いました ありがとうございます
910 名前:デフォルトの名無しさん [2018/07/26(木) 21:59:28.86 ID:F57VHmfS0.net] >>854 これ見てみます ありがとうございます
911 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 22:20:23.27 ID:uwMXaYNj0.net] >>868 javaとは違うんだよ
912 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 22:27:27.51 ID:ySl3KkZ10.net] >>867 gitでもフォルダコピーでも、自由に試し放題なのは同じだが gitだとフォルダコピーに該当する操作が一瞬なんだよね フォルダコピーだとある程度大きいプロジェクトになるとプログレスバーを待たなきゃならん
913 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 08:21:01.22 ID:IX5bbTr/0.net] DataAnnotationsの属性の組み合わせを新しい属性として定義することはできますか? 例えばFooIdは20文字以下で"^[A-Z]{5}-\d+$"にマッチしなければなりません StringLengthAttributeとRegularExpressionAttributeを組み合わせて FooIdAttribute := StringLengthAttribute(20) and RegularExpressionAttribute(@"^[A-Z]{5}-\d+$") といったニュアンスでFooIdAttributeを定義したいのですが方法を探してもまったく見つかりません もちろんValidationAttributeを継承してFooIdAttributeを作るだけなら出来ました しかしこの方法ではASP.NETのクライアント検証やEFのコードファーストがStringLengthAttributeとRegularExpressionAttributeを認識してくれません すべてを諦めて 「モデルプロパティとしてFooIdを使う時はstring型でプロパティを定義してStringLength(20)とRegularExpressionAttribute(@"^[A-Z]{5}-\d+$")をコピペすること」 といった実装ルールを定めてDRY違反には目をつぶるしかないのでしょうか
914 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 09:32:16.19 ID:rUA3L/4NM.net] バリデーションに限った話ではなく属性のMixinができないのは言語仕様の欠陥 多重継承が可能なら悩むことなかったんだけど... まあC# 9ではMixinがサポートされるらしいのでそれ以後は簡単になるだろう それまでは諦めてコピペする以外ない
915 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 09:50:11.05 ID:Z2VlFyTVa.net] パラメータだけconst stringにしとけ
916 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 16:04:28.18 ID:xL2l+Gb50.net] >>872 CustomValidationでいけそうな要件にみえるんだけど? 質問内容の理解が間違ってたらごめん
917 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 16:54:36.21 ID:Ls9tzaL9M.net] >>875 ValidationAttributeはサーバーサイド検証はできるけどクライアントサイド検証やEFには効果がない(追加コードを書かなければ) 属性Mixin的なことができれば追加コードを何も書かずにそれらの収穫を得ることができたはずなんだ
918 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 17:41:04.66 ID:PBzjh5L/d.net] >>872 \d+にするからなんじゃないの? \d{14}か、{,14}で解決するのでは?
919 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 19:08:15.95 ID:Ls9tzaL9M.net] >>877 正規表現を変えても同じ サーバーサイド検証だけが検証属性の役割じゃない
920 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 21:33:59.64 ID:ooB9UphUa.net] 例がおかしいせいか正規表現で何とかしろって最初に見たとき思った
921 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 21:46:45.51 ID:IX5bbTr/0.net] TypeDescriptorで動的属性にしたけどダメだった このFWカスタムしにくい
922 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 17:20:08.97 ID:1IN8lfJM0.net] VB6のプログラムをC♯で書き直しをやってるんですが、複数あるフォームで毎度使うグローバル変数や定数ってどうしたら良いですか?
923 名前:デフォルトの名無しさん [2018/07/29(日) 17:39:04.96 ID:jELBj7vj0.net] それらを管理する構造体かクラスを作るのが良い
924 名前:ナしょう ただ、作り始める前に現代風のプログラミングの仕組みを勉強したほうが良いんじゃないかな 変数のスコープの問題として解決しようとする時点で基礎が出来ていない気がしてしまう [] [ここ壊れてます]
925 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 17:48:24.83 ID:OsBw9Csr0.net] >>872 属性二つ付けとくのでダメなのか? >>881 .882 ベタに移植するならなるべく同じようにしとくってのも手だぞ まあベタ移植ならVB.NETでもいいわけだが
926 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 18:02:58.75 ID:qyyXPeAu0.net] >>881 もう親フォームのpublicに置いちゃえば?
927 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 19:28:22.30 ID:w8CG8UOca.net] Appに持たせる
928 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 19:28:43.90 ID:1IN8lfJM0.net] 親フォームにpublicに置くのがベターなのかね?楽でいいし。
929 名前:デフォルトの名無しさん [2018/07/29(日) 19:32:07.48 ID:0glkw7L10.net] 普通は目的や用途に分けてベースクラスと機能クラスに分けて配置するだろ。
930 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 19:32:52.42 ID:w8CG8UOca.net] 定数はクラスに持たせるべき グローバル変数というものは存在しない
931 名前:デフォルトの名無しさん [2018/07/29(日) 19:36:39.97 ID:LP0lwlvd0.net] public static read onlyをまとめたクラス1個作ればよくね?
932 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 19:42:49.43 ID:1IN8lfJM0.net] やっぱクラスか。
933 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 22:10:08.10 ID:UEZe9Eeh0.net] 別に構造体でも良いのよ
934 名前:デフォルトの名無しさん [2018/07/29(日) 22:38:15.47 ID:F0wMdqEY0.net] 標準モジュール→Public Shared Class
935 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 22:43:45.68 ID:ELcoO8zwa.net] >>881 そんなものは無くすように書き直すのがベストでしょう どうしてもというのならProgramにでも置く。 お勧めはしないけど、using static使えばVB6っぽく書けると思うw https://ufcpp.net/study/csharp/ap_ver6.html#using-static
936 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 23:31:49.93 ID:1IN8lfJM0.net] 例えば何度も登場するファイル名とかパス名とかって使う時はどのようにします?
937 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 23:33:57.49 ID:caIFgm3n0.net] >>894 決まった値ならconst stringにしておけば間違う心配がない
938 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 00:08:07.54 ID:VxehPTRB0.net] >>894 staticのメンバ変数
939 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 00:08:34.88 ID:rsToVW4ga.net] >>894 そもそも何度も登場させない クラスに集約する
940 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 07:19:52.76 ID:+iDwScmiM.net] >>897 俺は何度も登場させた方がいい派 登場させないってことは定数であるにも関わらず変数に突っ込んで色んなとこ回して最後にそこに行き着く的なソースになんだろ? 定数なら検索したときに使用箇所がひと目でわかったほうがいいよ
941 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 07:36:32.18 ID:rsToVW4ga.net] >>898 そうじゃない 同じファイルをあちこちで突っつき回す設計そのものに再考の余地があるということ
942 名前:デフォルトの名無しさん [2018/07/30(月) 09:05:26.71 ID:Jg26N5KJ0.net] クラス内で何度も参照する事はあるだろうが、複数のクラスに跨って同じ定数を参照するってのは、 それ、たまたま同じなだけだから、まとめるのは誤りだろ?
943 名前:デフォルトの名無しさん [2018/07/30(月) 09:07:31.01 ID:MG3uyJqBM.net] 899に同意だな。おれがレビューしたら書き直させるわ。
944 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 12:08:02.74 ID:7haz7YgPd.net] エクセルをデータベース接続して開いて閉じる。までは出来たのですがそこからシート2を選択して最終行まで読み込むにはどうしたら良いですか?
945 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 12:10:36.96 ID:5omRjmvzM.net] まずVBAで書いて、意図どおりに動いたらそれを同じようにC#で書くだけ VBAで動かないならスレ違い
946 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 12:14:41.69 ID:KgGKmVLt0.net] >>902 接続したならシート名をテーブル名としてSELECT使えば最終行まで
947 名前:謔黷驍ヘず [] [ここ壊れてます]
948 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 12:20:48.13 ID:7haz7YgPd.net] セレクトでググってみます!
949 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 14:16:52.66 ID:7haz7YgPd.net] さっぱりわかりません。これをC♯でどうすればいいですか? https://i.imgur.com/XlcEsOK.jpg
950 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 14:49:47.75 ID:yNVCdeG40.net] 窓から投げ捨てろ
951 名前:デフォルトの名無しさん [2018/07/30(月) 15:35:38.43 ID:5x/p7Cmg0.net] コンボボックスのitem追加してるだけやん
952 名前:デフォルトの名無しさん [2018/07/30(月) 17:13:19.68 ID:fEGsPpBX0.net] これ、出来上がるまでずっと聞きまくるわけかい?
953 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 17:49:14.69 ID:7NTlHlZ80.net] とりあえずガチでまったくわからないなら、Do Until とかIf Thenみたいな処理の流れに関するとこから、C#に翻訳してみれ。
954 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 20:38:04.00 ID:jheKbzlL0.net] >>906 SharpDevelopで変換できたりせんか?
955 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 20:56:43.06 ID:VxehPTRB0.net] >>911 VB.netならやったことある VB6はできるんかな?
956 名前:デフォルトの名無しさん [2018/07/30(月) 21:47:46.48 ID:wGxxsVxc0.net] >>908 コメントにも書いてあるなw
957 名前:デフォルトの名無しさん mailto:sage [2018/07/31(火) 10:42:36.92 ID:2Ex+HyWw0.net] >>912 VB6から直接はだめだろうな。VB.netを経由させて。
958 名前:デフォルトの名無しさん mailto:sage [2018/07/31(火) 12:16:51.56 ID:U+0KE03Yd.net] 無事なんとか出来ました。 お騒がせしてすみません。
959 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 02:45:49.37 ID:FqdJoFN10.net] VBを勉強しようかC#を勉強しようか迷ってるんですがVB(およびVBA)でできることはC#でもできると考えていいのでしょうか?
960 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 06:48:32.72 ID:l9oYGZY20.net] >>916 そんなのお前が出来るか、出来ないかによる
961 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:02:36.02 ID:rdkY69Yn0.net] >>916 いやc#やればいいよ
962 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:13:07.63 ID:qsg6KMIX0.net] VBAで出来てC#で出来ないことはある
963 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:19:08.47 ID:rdkY69Yn0.net] unityでサポートされてるのがc#だった気がする
964 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:29:28.41 ID:Y/cQkN27M.net] >>916 VBextensionを取り込む事が出来る コーディング量が少ない 単価が高い VBを選ぶ理由はほぼ無しかと
965 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:53:12.90 ID:FqdJoFN10.net] ありがとうございます 迷わずC#を勉強しようと思います
966 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:58:50.19 ID:+mBt06Dyd.net] RazorもC#
967 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 08:27:33.28 ID:jJEMbL0b0.net] 迷わず逝けよ逝けば分かるさ
968 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 10:13:49.72 ID:xEVWsek0M.net] VS2013 で Process で別コンソールアプリを実行するプログラムを作っています。 OutputDataReceivedイベントで随時標準出力を取得したいのですがうまくいきません。 同じくVS2013C#で作ったコンソールアプリでのConsole.WriteLineならうまくいくのですが VC++6.0 で printf 出力だと、ある程度溜まったタイミングでそれまでの出力が一気に来ます。 printfでもリアルタイムで取得できるようにできないでしょうか。
969 名前:デフォルトの名無しさん [2018/08/01(水) 10:16:00.84 ID:bFUL3z7Ep.net] そりゃあ、ある程度溜まってから表示されるからじゃね?
970 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 10:17:43.78 ID:7O+dWvwKM.net] flushしろ 対象に手を入れられないなら無理
971 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 10:41:41.93 ID:WxaG7LihM.net] つ setvbuf
972 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 13:34:26.08 ID:xEVWsek0M.net] >>928 setvbuf でうまくできました! ありがとうございました。
973 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 21:13:58.64 ID:htMziwx30.net] resharper使ってる人感想教えて 勉強になるって書いてるブログもあったから 半額セール中に試してみようかなと
974 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 21:15:10.33 ID:soAz8ZFH0.net] ブログに書いてるんならそれを参考にすればいいじゃん
975 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 22:14:32.39 ID:+VbRL20ga.net] resharper重いから嫌い よく他の拡張と干渉して不具合起こすし、機能の頭数だけ多くて結局vsにデフォルトで搭載されてる機能と似たようなもの以外は滅多に使わなかった vscodeが快適すぎて最近はC#もほとんどvscodeで書いてるわ
976 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 22:38:33.79 ID:htMziwx30.net] 使用感産休ー 結局使わなくなっちゃうくらいもっさりは躊躇するな 俺のマシンそんな高性能じゃないし
977 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 12:35:14.33 ID:atWDWRRZd.net] 先日のお騒がせものですが、シートの中身入れることはできたんですが、今度はシート名をコンボボックスに入れるのにこれだとシート名が名前順に入るんですがシート順に入れるにはどうしたらできますか? https://i.imgur.com/LxYIiyg.jpg
978 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 13:28:17.69 ID:CFW8XzdE0.net] >>932 具体的にどこがcodeの方が良いんだ? 軽さ以外にある?
979 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 14:17:24.55 ID:B5uzr2w20.net] >>934 https://msdn.microsoft.com/ja-jp/library/system.windows.forms.combobox.sorted(v=vs.110).aspx
980 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 14:19:27.48 ID:5ti5JZJPM.net] >>935 フォントのレンダリングが美しくて見やすい プラグインが豊富 一緒に他の言語のソースを編集する必要がある場合に完全にシームレスに行き来できる プロジェクトファイルを直接テキストとして開ける(.NET Coreなら必須)
981 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 18:24:36.08 ID:IKbU8cfg0.net] 細かい話だけど.csprojのテキスト編集は.NET Coreプロジェクトだと VSでもコンテキストメニューにあるのよね まあIDEの立場としてはGUIが未実装故の手抜きと見做すべきだろうけどw
982 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 18:59:54.66 ID:R3xyuwRy0.net] 30年前のプログラミング環境に逆戻りですなw
983 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:09:52.83 ID:5ti5JZJPM.net] >>939 設定を必要最小限にして極力テキストベースで完結させるのが今時の流行り 新形式のプロジェクトファイルは直接手で編集しやすいように構造が全面的に見直されてるんだよ gitにコミットするときとかgithub上でレビューしたりするときにどうせ中身を一行一行意識しなきゃいけないんだから、 GUIの設定画面なんかはっきり言って邪魔なだけ
984 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:27:12.70 ID:R3xyuwRy0.net] 30年前と言ってることが同じですな。
985 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:28:34.12 ID:R3xyuwRy0.net] 一度滅んだOSSの糞文化を取り込んだせいでどんどんMSの品質が腐っていく。
986 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:31:53.19 ID:vZ9OA8Bgd.net] おじいちゃんかわいそうに
987 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:33:26.86 ID:5ti5JZJPM.net] まあ騙されたと思って新しい形式のプロジェクトファイル使ってみたら? Coreじゃなくても使えるよ GUIによる設定は今まで通りにできるし、バージョン管理が楽になって普通に便利
988 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:44:44.63 ID:R3xyuwRy0.net] >>943 無職乙。C#の案件は見つかりましたか?
989 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:47:31.22 ID:R3xyuwRy0.net] >>944 結局ゲイツとカトラーがこんなもの使いものになるかとブチ切れしたのが最後、MSの凋落が止まりませんな。 マイナー街道まっしぐらだったヘジをスカウトしたのが失敗の始まりだったな。
990 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:50:04.61 ID:R3xyuwRy0.net] C#はほぼ壊滅しただがまだVB.netの案件は数多く残っている。 VB >>>> C# これが現実。初心者はVBにしたほうがいい。
991 名前:デフォルトの名無しさん [2018/08/02(木) 19:50:50.20 ID:3eKb6bola.net] >>947 いいから早く就職しろ
992 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:52:31.24 ID:vZ9OA8Bgd.net] >>945 自
993 名前:己紹介かよw [] [ここ壊れてます]
994 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:56:33.48 ID:R3xyuwRy0.net] ID:vZ9OA8Bgd ←こいつC#しかできないみたいw 何を勘違いしてC#を勉強した知らんが10年前から既にC#はオワコンだから諦めろ。今は採用案件は皆無。 馬鹿なおまえになぜか教えてやろう。C#は糞だから。これが世界中のIT業界の総意。ゲイツやカトラーも含めてな。
995 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:59:03.89 ID:QFtuhP10p.net] いつものヘジたんラヴおじさんか ボーランド時代に逆恨みしてメンヘラ化してるというw
996 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:59:47.82 ID:R3xyuwRy0.net] しかし、今時、30年前の手法でやりましょうって笑えるよな。開発の歴史を全く知らないのだろうか。 それが今の流行ならWindows10やC#も流行ってるはず。だが見向きもされない。むしろ敬遠されてる。
997 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:02:53.83 ID:vZ9OA8Bgd.net] >>950 なるほどだからあなたは採用されないのですね
998 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:03:34.69 ID:R3xyuwRy0.net] >>951 はぁ? むしろボーランドこそ革新的なIDEを普及させたんじゃねーか。そんなことも知らないとか無知すぎる。 それがなんでまたGUIは邪魔なんでテキストでやりましょうってw アホですか。どうせエディタもvim設定なんだろ。 時代遅れの骨董品どもが。
999 名前:デフォルトの名無しさん [2018/08/02(木) 20:03:36.14 ID:L2LG0yaW0.net] え、わからない VBとC#どっちがいいの?
1000 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:04:45.73 ID:R3xyuwRy0.net] >>953 キミは煽りばかり全くC#やVSの話はしないのですね。馬鹿がバレるのが怖いんですか?
1001 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:04:48.57 ID:uMr/Fq0h0.net] ゴミをつついて遊ぶの止めてくれるかなサル君
1002 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:07:45.63 ID:R3xyuwRy0.net] ワッチョイスレって単発煽り多すぎて議論にならんな。 必死にでネット繋ぎなおしてると思うと笑えるw >> ワッチョイ cf81
1003 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:09:28.08 ID:R3xyuwRy0.net] ワッチョイって意味ないな。 低脳馬鹿のコード書けない煽り屋とマイナーOSS陣営から流れてきたvi使いの骨董品以外いない。
1004 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:11:37.17 ID:R3xyuwRy0.net] 煽りしかしない奴ってなんで内容ないレスばかりするんだろうと思ったんだけど、 キーボードアレルギーか何かで入力がめっちゃ遅いんだと思うわ。 おれが5レスする間に一行しか打てないトロ臭さ。 リアル低スキルじゃん。今まで碌にコード書いてないのがバレバレだな。
1005 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:15:41.97 ID:R3xyuwRy0.net] 結局、技術的反論は皆無。これが現実。 今のC#信者は低スキル。今時、テキスト最高ってw COM、.net全否定かよwww
1006 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:25:19.02 ID:R3xyuwRy0.net] 単発煽りって急に大量に現れて急にみんな消えるよな。 可能性として考えられるのは、ゆとりで低スキルで無職で同一人物。
1007 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 21:55:18.44 ID:6w1GWseD0.net] >>934 OleDbじゃシート順は無視されるから他の手立てを考える必要がある https://stackoverflow.com/questions/1164698/using-excel-oledb-to-get-sheet-names-in-sheet-order xlsxならここのZipArchive使うのとか(他に色々書かれてるコードは意味ないから無視して良い) System.IO.Compress.PackagingとかOpen Xml SDKとかClosedXMLとか xlsならNPOIぐらいなんかね あ、上のページにNPOIのサンプルもある
1008 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 08:51:02.00 ID:tLm3HHgqd.net] まあVSつかいたい奴は明らかにVSが向いてないシーンでも
1009 名前:使いたがるからな。 俺も使い分けてるが、netcoreでも案外VS起動する事の方が多い。nuget探しやすいとかそんなレベルだけど。 どっちでも良いものは割とVS Codeで開くな。 とはいえ、mdのライブプレビューとかVSで出来んのかな? [] [ここ壊れてます]
1010 名前:デフォルトの名無しさん [2018/08/03(金) 11:29:34.10 ID:am/wpoGlp.net] VSはIDEの機能を利用したいが為だけに使うことがある。
1011 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 11:34:31.88 ID:U4A077LcM.net] MDプレビュー&編集はメジャーなVS拡張がある
1012 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 13:57:43.04 ID:tLm3HHgqd.net] あるんだ。 何が何でもVSの中で過ごせるように出来てんだなぁ、やっぱ。
1013 名前:デフォルトの名無しさん [2018/08/03(金) 19:55:03.42 ID:nRWExeYy0.net] C#よりVBのが人気って本当ですか?
1014 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 21:05:33.17 ID:C7OuABnlM.net] 嘘
1015 名前:デフォルトの名無しさん [2018/08/03(金) 22:34:44.79 ID:pBzQtwq10.net] if(aaa.bbb.ccc ==null){ ・・・ } だと、aaaかaaa.bbbがnullの時にNUll参照エラー出ますよね。 じゃあ、 if(aaa!=null && aaa.bbb!=null && aaa.bbb.ccc ==null){ こう書くしかないですか? もっとスッキリ書けませんか?
1016 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 22:36:26.80 ID:KKU0/EVq0.net] null条件演算子が使えるなら使え どのバージョンで入ったかは忘れた(役立たず)
1017 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 22:43:12.49 ID:ls6gmcCr0.net] >>970 なんか下のコードって 動いたら不具合臭くない? if(コードA && コードB && コードC) ってあったときにコードAがfalseだからってコードCが実行されないとおかしくなる処理もあるんじゃね? コードABCがそれぞれ結果を保持するような動作をするときもにょる 言語仕様がどうなってようと書いたやつは死刑
1018 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 22:57:30.21 ID:5FtEqA870.net] >>972 横からですが > ってあったときにコードAがfalseだからってコードCが実行されないとおかしくなる処理もあるんじゃね? そういう場合は && ではなく & を使うと良いようです。 よかったら「短絡評価」で検索してみてください。
1019 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 23:23:18.87 ID:zsmRuSg9d.net] aaa?.bbb?. ccc == null
1020 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 23:36:42.74 ID:ls6gmcCr0.net] >>973 コードABCがそれぞれ判定結果を保持する処理をしてたら余計なお世話じゃねーか?
1021 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 23:59:44.06 ID:5FtEqA870.net] >>975 >>973 確かにその場合は短絡評価は余計なお世話と言うか、短絡評価を使うことは間違ってますね。 ただ、>>970 の例では副作用がないのは明らかですし、 C# で短絡評価が用意されている以上、それを使うなというのは酷な話のようにも思います。 今回の問題に関しては >>974 のような & も && も使わない解決策もありますが、 Microsoft の Reference Source でも obj != null && ((int)obj) != 0 のように 短絡評価が積極的に使われてますので、そのようなコードは認められるべきではないでしょうか。
1022 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 00:26:40.78 ID:aY8Umh7+0.net] >>976 人に優しいコードじゃない 見たらちょっと考えちゃうだろ 俺はそれだけで避ける
1023 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 00:53:29.00 ID:b3FMlOEa0.net] なんかnull条件演算子が短絡じゃないような言い方をしている人がいますが null条件演算子は短絡評価なので念のため 仕様の是非については関知しません 勝手にすればよろしい
1024 名前:デフォルトの名無しさん [2018/08/04(土) 09:01:55.83 ID:n5GHf3Ra0.net] >>974 もし aaa.bbb= null だった場合に、 if(aaa?.bbb?. ccc == null) がtrueになることは無いですか?
1025 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 09:42:38.97 ID:wpkf7FcP0.net] ならない もしtrueにしたいのなら if(aaa?.bbb == null || aaa?.bbb?.ccc == null) にする
1026 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 09:49:39.47 ID:L3XBWYHn0.net] >>979 なるん
1027 名前:じゃね? [] [ここ壊れてます]
1028 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:12:57.05 ID:aY8Umh7+0.net] >>980 ならないんだ? なんかあんま使わんほうがいいな この辺の仕様決めた奴って滅茶苦茶だな
1029 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:16:40.19 ID:wpkf7FcP0.net] ごめん確認したらtrueになったわ
1030 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:18:40.31 ID:c4yFtWHQ0.net] Null 条件演算子の結果でnull判定ってなんか使い方おかしくね? null判定の記述省略が目的だと思ってたわ
1031 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:18:47.38 ID:aY8Umh7+0.net] >>983 なるのかよ
1032 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:46:26.16 ID:Q3NLupVYM.net] ?.は使える場面が限られすぎてるんだよな 主語が違っても使えるようにしてほしい employee ?& company.Fire(employee) // employee != null ? company.Fire(employee) : null と等価 みたいな
1033 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 12:29:39.69 ID:AH7fLvgn0.net] >>984 > Null 条件演算子の結果でnull判定ってなんか使い方おかしくね? そんなもん何をやりたいかによるだろ > null判定の記述省略が目的だと思ってたわ Null条件演算子自体の目的はそれでいいと思うが
1034 名前:デフォルトの名無しさん [2018/08/04(土) 12:36:27.73 ID:n5GHf3Ra0.net] >>986 >employee ?& company.Fire(employee) ?& とは何ですか? ググルキーワード教えて下さい。
1035 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 21:50:20.61 ID:sXotmGKy0.net] >>979 trueになるけどそれでだめなのかよ だったら aaa?.bbb != null && aaa.bbb.ccc == null
1036 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 15:20:33.53 ID:wZ9wDNsY0.net] 俺なら分けてコメントでも書いておくかな if(aaa == null || aaa.bbb= null){ // Hack aaaとbbbがnullでもOKで、その時は何もしない。設計がゴミ } else if(aaa.bbb.ccc == null){ }
1037 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 16:43:04.45 ID:RYmTh0/wr.net] 再帰してNullチェックする関数一つ書けばいいのでは?
1038 名前:デフォルトの名無しさん [2018/08/05(日) 17:47:48.87 ID:76QdhMr90.net] どうでもいいことになるとレスが増えるな >>980 テンプレ読んでいるだろ。スレたて
1039 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 18:17:15.11 ID:DE014Z3K0.net] 建てられなかったので別の方お願い
1040 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 18:21:48.75 ID:C8NdcnMU0.net] >>991 再帰? 何言ってるんだ?
1041 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 18:38:49.57 ID:hZh56vqa0.net] 再帰でnullチェックする関数気になるな
1042 名前:デフォルトの名無しさん [2018/08/05(日) 19:30:23.50 ID:yb/HDiEo0.net] コンソールプログラミングでは Application.DoEventsが使えませんが 代わりに処理中の入力を受け付けるようなメソッドはないでしょうか? 時間がかかる処理をESCキーでキャンセルするような処理を コンソールプログラムで書きたいと思っています
1043 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 19:30:55.99 ID:uVIrroLRM.net] こうかな // nullが見つかった深さを返す static int? AmazingNullCheck(int level, dynamic obj, params Func<dynamic, dynamic>[] next) => obj == null ? level : next.FirstOrDefault()?.Invoke(level + 1, obj, next.Skip(1).ToArray()); if (AmazingNullCheck(0, a, a=>a.b, b=>b.c) == 2) // a.b.c == null
1044 名前:997 mailto:sage [2018/08/05(日) 19:37:00.55 ID:uVIrroLRM.net] 訂正 obj == null ? level : !next.Any() ? null : AmazingNullCheck(level + 1, next.First().Invoke(obj), next.Skip(1).ToArray()); かな
1045 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 19:43:31.17 ID:uVIrroLRM.net] >>996 特に何もしなくてもCtrl + Cで止まるだろ? そのときに独自の処理を挟みたいなら Console.CancelKeyPress イベントを使う
1046 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 19:45:50.96 ID:3KDX12Zf0.net] 1000ならjava民絶滅
1047 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 61日 0時間 13分 9秒
1048 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されてい
1049 名前:ワす [] [ここ壊れてます]