1 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 17:40:19.48 ID:oKXVP34zM.net] 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■関連スレ C#, C♯, C#相談室 Part95 mevius.5ch.net/test/read.cgi/tech/1508180530/ C#, C♯, C#相談室 Part93 https://mevius.5ch.net/test/read.cgi/tech/1492818720/ ■前スレ ふらっと C#,C♯,C#(初心者用) Part136 mevius.5ch.net/test/read.cgi/tech/1520057345/ ■コードを貼る場合は↓を使いましょう。 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
263 名前:デフォルトの名無しさん mailto:sage [2018/04/26(木) 19:19:32.70 ID:leQJqI/Q0.net] >>256 標準入出力のリダイレクト。 古典的でダサいけどね
264 名前:241 mailto:sage [2018/04/26(木) 20:39:08.13 ID:8i3JVbEw0.net] 皆様ありがとうございました 決まりきった定番の書き方はない、と理解すれば良さそうですね 自分で色々試してみます
265 名前:デフォルトの名無しさん mailto:sage [2018/04/26(木) 21:03:55.12 ID:8i3JVbEw0.net] 今度はインデクサについて教えてください https://ideone.com/TlRwJS 例として上記のようなコードを書いてみました これで、インデクサを使って例えば anml["whale"] とすれば1が返ってくるような、 そういうものを作りたいと思います (classified, lifeの各プロパティはユニークではなく、specificのみユニークとします) 本を紐解きながら書こうとしたのですが、animalsクラスの中ではリストになっていないので 書く場所はなさそうです。でもMainメソッドでは利用したい側なので、ここに実装することも できない気がします。 多分インデクサの考え方そのものがわかっていません。どなたか教えていただけると 嬉しいです。
266 名前:デフォルトの名無しさん mailto:sage [2018/04/26(木) 21:18:02.97 ID:i4ujFDqn0.net] ListじゃなくてDictionaryを使えばOK
267 名前:デフォルトの名無しさん mailto:sage [2018/04/26(木) 21:54:22.87 ID:IFgymZMf0.net] anml.FindIndex(_ => _.specific == "whale")でよくね?
268 名前:デフォルトの名無しさん [2018/04/27(金) 03:52:18.55 ID:3sBZO5RI0.net] インデクサてのは自作のクラスにつけるプロパティみたいなものだから、List<animals>を内蔵するクラス作って public int this[string p]{ get{ /* ここに検索して結果を返すコード書く */ } } でおkなんじゃねか?知らんけど。
269 名前:デフォルトの名無しさん mailto:sage [2018/04/27(金) 07:42:26.78 ID:vWqu6ayt0.net] >>263 すいません、理解のレベルが低いので、具体的にどう実装すればよいのかわかりませんでした var anml = new Dictionary<animals, string>; としてディクショナリは実装できたとして、要素追加の際 Add メソッドをどう書くのか、理解が 追いついていないようです >>264 この書き方で、求めている操作は実現できそうです ラムダ式の理解が怪しいのは勉強するとして、毎回これを書くと面倒&間違えそうなのですが、 これは「十分に簡潔な書き方」なのか、それとも「メソッド等でさらに簡潔に書ける」のか、どちら でしょうか。 >>265 この場合、各プロパティにアクセスする際は anml[i].specific とかではなくて anml(i, specific)等 メソッドを介してアクセスすることになるのでしょうか?
270 名前:デフォルトの名無しさん mailto:sage [2018/04/27(金) 07:59:23.04 ID:Ek6IpJbsa.net] >>265 は良くないよ インデクサはループ内で使用されることを想定しておかないといけない 毎回線形検索が走るのは非効率すぎる
271 名前:デフォルトの名無しさん mailto:sage [2018/04/27(金) 08:18:37.17 ID:3sBZO5RI0.net] 番号が欲しいのかanimalsオブジェクトが欲しいのか
272 名前:デフォルトの名無しさん mailto:sage [2018/04/27(金) 12:24:44.14 ID:/0qPzcyMr.net] >>267 今回の用途では速度は重要でなく、またそもそも実現方法がわからなかったので、アルゴリズムはまだまだ先の話ですね >>268 今回欲しいのは数字です
273 名前:デフォルトの名無しさん [2018/04/27(金) 23:13:48.06 ID:9YiDAi7f0.net] Index番号が欲しいなら>>264 で十分じゃないか? 見つからなかったとき例外吐くらしいから気をつけろい
274 名前:デフォルトの名無しさん mailto:sage [2018/04/27(金) 23:15:15.73 ID:9YiDAi7f0.net] まちがえた。例外じゃなくて-1だ。すんまそ。回線で首吊ってくる
275 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 01:50:07.49 ID:E8vnEfND0.net] >>264 アンダーバーはやめとけ
276 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 01:50:20.46 ID:fiFvLr6Y0.net] XAMLファイルからボタンを削除した場合、CSコードの方に呼び出されることのないコールバック関数の宣言が残ってしまます こういうのを効率よく削除する方法ってないのでしょうか?
277 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 01:54:51.50 ID:E8vnEfND0.net] >>273 WPF?
278 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 02:32:39.82 ID:fiFvLr6Y0.net] >>274 Xamarin.Formsで使っています
279 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 07:22:01.22 ID:bL+b5OsrM.net] >>273 XML解析とリフレクション
280 名前:デフォルトの名無しさん [2018/04/28(土) 12:46:33.34 ID:5pWODy2i0.net] ここでいいのかわかりませんが、質問させてください。 C#でフレームワーク ASP.Net MVCで作っています。 テーブルのフォームをPOSTしたいのですが、 動的に作成した行をどのようにサーバー側で受け取ればよいのかわかりません。 <td> <input class="form-control" id="no1" name="no2" type="text" value="" /> </td> <td> <input class="form-control" id="no2" name="no2" type="text" value="" /> </td> このように、複数行があって、noの後ろの数値は、行を追加したら増えるように javascriptで制御しています。 サーバー側の処理として、引数を (string no1, string no2, ・・・)と列挙してすべて書けば、 POSTデータを受け取れることは確認済みです。 ただ、ユーザーの操作で行を何行追加するかもわからず、あらかじめ想定する 最大数の引数を列挙するのも現実的ではありません。 すべてのフォームデータを一挙に受け取って、 サーバー内部のロジックで処理する方法はないでしょうか。
281 名前:デフォルトの名無しさん [2018/04/28(土) 13:53:59.42 ID:Jn+S73+O0.net] >>277 namaに添字をつければList<T>でバインディングできるはず https://qiita.com/kazuhisam3/items/94542f6d7ccf3acca41c
282 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 14:50:29.57 ID:X/1aPQ6Ma.net] どうせJavaScript書いてるんならJavaScript側でJSONの配列に纏めてからAJAXでポストするのもアリ
283 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 21:58:22.96 ID:4vnB69wL0.net] [[[ ][ ]]]\[[]] [[[]]]],[[[ [][] ]
284 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 22:36:40.95 ID:vp8gWtwG0.net] Entity FrameworkでDBへのselectとかのリトライしたい場合ってどのようにすべきでしょうか 一時的なエラーだったりしたらもう一回トライとかしたいのです 例外全キャッチするのも無駄なのかなぁと思いまして
285 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 23:02:28.71 ID:8LDPRSMfM.net] 普通のRDBなら一時的なエラーなんか滅多にないだろ 400でいいよそんなもん
286 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 23:05:27.66 ID:yGhXA9la0.net] Azure相手だと普通にあるで
287 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 23:08:01.89 ID:E8vnEfND0.net] >>281 DbExecutionStrategy
288 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 23:33:01.91 ID:vp8gWtwG0.net] >>284 ありがとうございます 試してみます
289 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 20:34:09.03 ID:My7UiDyw0.net] [[[ []]]]*[[ [][] ][] } } {} [[[
290 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 19:00:22.89 ID:As5kU4Fr0.net] とりあえず、連休ぐらいゆっくりな オマエラ
291 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 10:44:28.97 ID:9ar3mEaia.net] 連休は機械学習でずっと計算させる予定 人間は休む
292 名前:デフォルトの名無しさん mailto:sage釣 [2018/05/03(木) 13:02:24.11 ID:Nqnp2049M.net] 人間はILコードを覚えてハンドアセンブル出きるようになるべき
293 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 13:26:57.92 ID:YEWKmWCr0.net] winformの左辺や上辺をドラッグするとフォームのサイズが変わらずにフォームが移動してしまいますが サイズを変更するように設定するプロパティなどはありますでしょうか コードを書く必要がありますか?
294 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 14:32:14.37 ID:hvfEvXXP0.net] >>289 古い脳の感覚でいえば、IL なんてハードウェアの裏づけのない、空想上の約束にしか過ぎないので、覚える気が起きない x86-64 でおなかいっぱい
295 名前:デフォルトの名無しさん mailto:sage釣 [2018/05/03(木) 14:41:33.60 ID:Nqnp2049M.net] >>291 情報処理試験のCASLとかも?
296 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 14:46:31.58 ID:hvfEvXXP0.net] >>292 CASL くらいはやったよ、8080、z
297 名前:80/6809/80x86/z8000/r3000、まだ若かったからどんどん覚えることができたんだ… でも、もうおなかいっぱいだ… [] [ここ壊れてます]
298 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 14:47:30.87 ID:1IvMgmqBM.net] 次元が違うだろ ILは高級なオブジェクト指向言語 そもそも機械語に似せることを意図されていない
299 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 14:51:41.82 ID:hvfEvXXP0.net] >>294 ハードウェアマシン語とプログラム言語との間に、なぜ仮想マシンと仮想的な言語(IL/JVM)が採用されるようになったのか?そこが今でも判然としないのです…
300 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 15:42:16.53 ID:+UDEH62l0.net] >>295 ドライバは何故存在するの?つってる様なもんだぞそれ
301 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 15:45:53.15 ID:hvfEvXXP0.net] >>296 いえいえ、階層性を全否定するわけではありません 「仮想マシンと中間コード」の必要性を問うているのです…
302 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 16:06:28.64 ID:+UDEH62l0.net] 仮想マシンに焦点を絞るなら、ハードウェアの差異を吸収する為では (.netはJavaVMほどあちこちに移植されてないというだけで) ILに関して言えば、複数の言語(C#、VB.net、F#、他)を共通のフレームワーク上で動かせる様にする為
303 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 16:13:17.79 ID:ioUmuI6x0.net] >>298 それならハードウェアや言語の統一を目指したほうが建設的なのでは?
304 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 16:19:16.65 ID:+UDEH62l0.net] >>299 不可能だろう 収斂進化により表面上似た様な機能を搭載する事はあっても、内部構造は特許なり権利なり絡んで来るから同じに出来ないし JavaScript+CSS3ですらブラウザベンダ間で足並み揃えられないのに、言語の統一なんて出来る訳が無い
305 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 16:37:31.89 ID:hvfEvXXP0.net] 現状、中間言語側でも少なくとも JVM/.net framework にわかれちゃっているからねえ…
306 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 18:59:07.03 ID:OyWVOyw+0.net] >>301 LLVMの中間コードをご存知でない?
307 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 19:06:23.30 ID:hvfEvXXP0.net] >>302 LLVM はコンパイラの中で完結しているのではないかな?
308 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 19:12:34.62 ID:R63QgqLH0.net] ?
309 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 19:15:49.37 ID:OyWVOyw+0.net] >>303 コンパイラ開発者はとりあえずLLVM-IRに変換すればいいし最終段で機械語に変換するか直接実行するか他の言語のコードに変換するかは自由 というか最初と最後だけ作ればいいわけだから寧ろLLVM-IRが中心
310 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 19:22:47.84 ID:hvfEvXXP0.net] >>305 うん、それはよくわかる すべての「構造化」を全否定するわけではないんだよ
311 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 19:24:37.99 ID:R63QgqLH0.net] すまん、途中から意味分からん
312 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 19:27:41.50 ID:kS9rU1V5a.net] .netは仮想マシンなんかつかってないじゃん
313 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 19:42:37.77 ID:hvfEvXXP0.net] >>308 https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA_(%E5%85%B1%E9%80%9A%E8%A8%80%E8%AA%9E%E5%9F%BA%E7%9B%A4) 仮想マシン VES は定義されているようだ
314 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 19:45:56.40 ID:Vq5AVdhm0.net] おい!初心者の内容じゃねーぞw
315 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 20:04:38.77 ID:kS9rU1V5a.net] >>309 VESは最終段階のコンパイラだよ
316 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 20:12:05.92 ID:OyWVOyw+0.net] JITコンパイルはVMとしては認めない派閥が存在することは認める
317 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 20:31:23.35 ID:GKu15pasa.net] https://www.slideshare.net/ufcpp/ss-34533225 このスライドの67枚目の「良い例」のコードってこれで本当にいいの? MSDNのParallel.Forの解説には ---
318 名前: localFinally デリゲートはスレッドごとに 1 回呼び出され、各スレッドのローカル状態に対して最後の操作を行います。 このデリゲートは、同時に複数のスレッドで呼び出される可能性があります。したがって、共有変数へのアクセスを同期する必要があります。 --- と書いてあるから、countはアトミックに操作しないとまずい気がするんだけど https://msdn.microsoft.com/ja-jp/library/dd783299(v=vs.100).aspx [] [ここ壊れてます]
319 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 21:13:05.22 ID:L6Rknns90.net] >>313 MSDNの使用例にも localState => Interlocked.Add(ref result, localState) とあるしそれで正しいと思うよ
320 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 21:46:41.74 ID:GKu15pasa.net] >>314 いやだから、MSDNのサンプル通りにするなら、>>313 の localCount => count += localCount は、 localCount => Interlocked.Add(ref count, localCount) でないとまずいと思うんですが
321 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 21:48:43.65 ID:ygisZEFQM.net] そうだねだからどうしたの 資料公開してる本人に言えばいいんじゃないの
322 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 22:02:53.69 ID:nzAwdXFB0.net] 大して変わんねーよ そんなに処理分けたきゃ 別exeにしてキックしろよ 後はできるならOSがうまくやるし OSがうまくできなかったらそりゃできないんだろうよw
323 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 22:05:27.65 ID:WY9OnNQR0.net] どうした発作か
324 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 23:06:32.43 ID:L6Rknns90.net] >>315 いや、>>313 の言う通りと言ったつもりなんだが・・・ふらっと怖いな
325 名前:デフォルトの名無しさん [2018/05/03(木) 23:38:41.22 ID:aADwc6210.net] おバカwebを鵜呑みにしない有望な>>313 なんやからもう少し優しくレスしてやれよw
326 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 00:16:38.85 ID:Xm9CVOioa.net] この例だとForよりAggregate使ったほうがいいな
327 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 00:37:22.14 ID:pvqh60Bra.net] >>319 自分の日本語に疑問を持たない君の方が怖いよ 「これ(A)」でいいのか、Bじゃないのかって質問に「それ」で正しいと答えたら 質問した方は普通は正しいのは「これ」の方だと理解する
328 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 02:08:40.41 ID:DbHU5BaK0.net] C♯でJavaScriptで生成されてるチャットサイトからコメントビューアを作りたいのですが、JavaScriptが生成したHTMLを取得するのに適したライブラリってどれでしょうか? Formアプリで作る予定ですが webBrowserコントロールが一番手軽でしょうか?
329 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 02:10:39.64 ID:DbHU5BaK0.net] >>323 追記 使う.Net frameworkは4.6.1です Nugetで公開されてるライブラリ等でも問題ありません
330 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 02:53:44.45 ID:JYHlDWX6M.net] javascriptで生成といっても生成元になるデータを何処かでリクエストしてる筈 そっちを解析して直接的にHttpClientでgetしたほうがええよ
331 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 04:15:13.73 ID:DbHU5BaK0.net] ありがとうございます 単純にセッションが必要っぽそうだったのでHttpClientでもいけそうです 使い方調べ直します
332 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 16:58:55.69 ID:wDfbuSiA0.net] おバカwebと言えば↓みたいに日本語と英語で全く逆のことが書いてあったりする 基本的にwebに書いてあることは疑ってかかったほうが良さそうね 日本語 https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/best-practices-strings#recommendations_for_string_usage > 比較のために文字列を正規化する場合は、String.ToUpperInvariant メソッドではなく String.ToLowerInvariant メソッドを使用します。 英語 https://docs.microsoft.com/en-us/dotnet/standard/base-types/best-practices-strings#recommendations_for_string_usage > Use the String.ToUpperInvariant method instead of the String.ToLowerInvariant method when you normalize strings for comparison. (グーグル翻訳) 比較のために文字列を正規化するときは、String.ToLowerInvariantメソッドの代わりにString.ToUpperInvariantメソッドを使用します。
333 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 17:22:00.73 ID:0gwAiFk4d.net] >>327 X:webに書いてあることは ○:日本語訳は
334 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 19:43:22.77 ID:RYlEGIXb0.net] グラフィックの扱いについて教えてください panelに複数の画像イメージを貼り付けたいと思います (トランプのカードを任意の枚数置くような感じです) WidthとHeightをpanelのサイズに合わせて、Bitmapオブジェクトを 作ってそこに必要な画像を貼り付けて、最後にPaintイベントでその ビットマップを Graphics.DrawImage で表示すれば良さそうだ、という 認識です 問題はBitmapオブジェクトに画像を貼り付けることで、メソッドを 調べても、Bitmapオブジェクトの任意の場所に任意のイメージを 貼り付けるものはなさそうです そもそも用意した画像は Image.FromFile で準備しているのですが、 Imageオブジェクトを貼り付けられるのは Graphics.DrawImage メソッドになるので、そもそも Bitmap オブジェクトを用意すると いう発想が間違っているような気もします 多分いろいろ間違って認識しているので、どこから考え直せばよいか 教えていただけると嬉しいです
335 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 19:54:32.04 ID:EvkA5vHv0.net] >>329 ベースの画像のいくつかの任意の位置に画像を貼り付ける描画ならそれで間違っていないけど https://msdn.microsoft.com/ja-jp/library/system.drawing.graphics.drawimage(v=vs.110).aspx https://msdn.microsoft.com/ja-jp/library/558kfzex(v=vs.110).aspx どこを勘違いして悩んでいるのかいまいちわからない とりあえずBitmap オブジェクトはImageオブジェクトの一種 他にMetaFileとかあるから そしてGraphics.DrawImageメソッドを使って貼り付けてもベースのBitmap オブジェクトはBitmap オブジェクトのまま
336 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 20:25:52.55 ID:RYlEGIXb0.net] >>330 私の認識は、最終的に描画したいビットマップを用意して、それを Paint イベントで 描画するというものです Panel1_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawImage(canvas, 0, 0); } で、上記の例で Bitmap canvas; とでもして用意したビットマップに、任意の画像を 貼り付ける方法を知りたいのです 例えば256x256ピクセルのサイズで用意したビットマップに、32x32ピクセルの 画像を3個位貼り付けた canvas を用意したいというものです 「そうではなくて、最終的に描画したいものはGraphicsオブジェクトで用意して、 Paintイベントで毎回描画するのだ」というのが正なのかもしれません Panel1_Paint(省略) { e.Graphics.DrawImage(image_1, image_1_x, image_1_y); e.Graphics.DrawImage(image_2, image_2_x, image_2_y); ... } といった感じで でもなんだか、毎回Paintイベントハンドラに描画処理を全部書くのは変な感じがして、 描画したい画像を用意するのと、実際に描画するのは別の処理ではないかと思っている 次第です
337 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 20:30:54.11 ID:Ad2tmUBO0.net] 描画したい画像を用意するのと、それを描画するのは当然別の処理だ。 でもアニメーションさせたいとか画像の変更を即座に描画に反映させたいとかなら、用意した足で再描画させるしかないだろ?
338 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 20:36:30.50 ID:EvkA5vHv0.net] >>331 何でイベントでやるのか知らないけど複数の描画を同時にやるメソッドはなかったと思うよ https://dobon.net/vb/dotnet/graphics/index.html Bitmap canvas=new Bitmap(x,y); Graphics g = Graphics.FromImage(canvas); Graphics.DrawImage(image_1, image_1_x, image_1_y); Graphics.DrawImage(image_2, image_2_x, image_2_y);
339 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 20:38:50.67 ID:EvkA5vHv0.net] あ、ごめん Graphics g = Graphics.FromImage(canvas); g.DrawImage(image_1, image_1_x, image_1_y); g.DrawImage(image_2, image_2_x, image_2_y); だった
340 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 20:49:55.24 ID:RYlEGIXb0.net] >>332 アニメーションさせたいとか、そういう意図はないです 単に、描画したい画像を用意するのに、Bitmapオブジェクトにさらに画像を 貼り付ける方法がわからなくて悩んでいます >>333 イベントでやってるのは、単に参考にしたサイトで「Paintイベントハンドラで 処理する」と書いてあったので、それを鵜呑みにしただけです https://dobon.net/vb/dotnet/graphics/drawimage.html これを見て気づきましたが、そもそもパネルに直接描こうとするのが間違いで、 パネルにPictureBoxを貼り付けた上でそこに置けば良いのかな?
341 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 20:54:32.05 ID:EvkA5vHv0.net] >>335 どっちでも同じだと思う Graphics g = Graphics.FromImage(panel1.BackGroundImage); でやれば直接パネルに書き込めるし ただ大きい画像を表示して画像の表示位置をスクロールさせたいのならパネルの上にPictureBoxが基本 とりあえず書いて動かしてみたら
342 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 21:05:17.61 ID:aP3h8uSia.net] >>335 実現したい要件だけを明確に書いた方がいいと思うよw そこが明確じゃないのに「俺が考えた実装方法」ばっかり詳細に書くから 答える方も何を返答していいのか分からないw
343 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 21:11:39.38 ID:RYlEGIXb0.net] >>337 実現したいことは、「任意の画像を任意の場所に配置したイメージを、panelに描画したい」です これは明確で、それを実装するための方法でどう悩んでいるかが正しく伝わらないと、答える方も こちらのレベルがわからなくて困るかと思ってました 実現したいことがちゃんと伝わっていませんでしたか それ以前の問題でしたね。。。
344 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 21:43:04.80 ID:pJ6Zbbxdp.net] ファイル読んでバインドするだけちゃうのか?
345 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 22:52:54.89 ID:IMcj9GIN0.net] >>338 dobon.netにあるじゃん
346 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 01:53:47.84 ID:US1Viqbq0.net] bmp1が配置先のイメージ、 bmp2がbmp1に配置したいイメージだとしたら以下になる Graphics g = Graphics.FromImage(bmp1); g.DrawImage(bmp2, x, y); // bmp1の(x, y)にbmp2を書き込む g.Dispose(); pictureBox1.Image = bmp1; これだけでパネルにbmp1が表示される
347 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 01:54:36.93 ID:US1Viqbq0.net] あ、パネルにPictureBox貼ってる前提ね
348 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 05:38:36.94 ID:LRJiKh0v0.net] >>341 ありがとうございます 思っていることが問題なく実現できました できるようになってみると、一体何を悩んでいたのか、自分でもわからなくなってしまいました 多分、DrawImage で書き込む先がVRAMだと思い込んでいたのでしょう
349 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 01:21:02.23 ID:dl2mQyCb0.net] private void Form1_ResizeBegin(object sender, EventArgs e) { leftEdge = this.Left; rightEdge = this.Right; topEdge = this.Top; bottomEdge = this.Bottom; } private void Form1_ResizeEnd(object sender, EventArgs e) { if ((rightEdge < this.Right) && (topEdge > this.Top)) { // 処理に入らない } } このコードでフォームを右上にドラッグして拡大した場合に処理に入らないのですがどこがおかしいでしょうか
350 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 01:31:51.93 ID:HfMj07lt0.net] 右上にってことは事後の方が top の値が小さくなってるからじゃないの?
351 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 01:32:20.44 ID:HfMj07lt0.net] ああ、そう書いてあるのか。失礼。
352 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 01:40:54.74 ID:LGFxrhOP0.net] >>344 イベント有効になっている? Form1_ResizeEndのメソッドに処理が入っているかそこから確認 int leftEdge, rightEdge,topEdge ,bottomEdge; public Form1() { InitializeComponent(); this.ResizeBegin += Form1_ResizeBegin; this.ResizeEnd += Form1_ResizeEnd; } private void Form1_ResizeBegin(object sender, EventArgs e) { this.Text = "start"; leftEdge = this.Left; rightEdge = this.Right; topEdge = this.Top; bottomEdge = this.Bottom; } private void Form1_ResizeEnd(object sender, EventArgs e) { this.Text = String.Format("{0}:{1}", (rightEdge < this.Right), (topEdge > this.Top)); if ((rightEdge < this.Right) && (topEdge > this.Top)) { this.Text = "OK"; } } これで動いた
353 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 01:45:28.35 ID:mBsERy4z0.net] private void DataGridViewFilter() { BindingSource objBind; DataTable objData; string strFilter; objData = (DataTable)DataGridView1.DataSource; if (IsNothing(objData) == false) { objBind = new BindingSource(); objBind.DataSource = objData; strFilter = "Color like '%" + txt_Condition.Text + "%'"; objBind.Filter = strFilter; } }
354 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 02:05:39.13 ID:dl2mQyCb0.net] >>347 ご回答ありがとうございます イベントは有効です 左や上や左上への拡大縮小ドラッグは正常なのですが左下や右上がおかしいです 提供していただいたコードを試したのですが、何故かは分からないのですが rightEdge < this.Right がfalseになっています もう少し調べてみます
355 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 02:22:41.56 ID:xovvhFEya.net] 申し訳ないけど、問題を再現できるそのまんまのコードを提示していない時点で 確実に原因はあなたの勘違いにあると断言できる
356 名前:デフォルトの名無しさん [2018/05/06(日) 05:58:39.10 ID:CBGkbUql0.net] Listを値渡しすべき所が参照渡しになってたせいで くっそハマったんだけど こういうのって、C#の解説本1冊読めば 注意しろって書いてあるもんなの? 参照渡し云々って単語はかろうじて知ってて ↓のサイトをたまたま見つけて、偶然解決出来たけど https://webbibouroku.com/Blog/Article/list-copy エラーや例外にならないバグが怖すぎる・・・
357 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 06:08:47.32 ID:994JP5I00.net] そんなものここで聞けば3秒で解決するし
358 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 08:39:03.59 ID:j24ysXtO0.net] c#って物体X(?)は全部参照渡しになるよね
359 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 08:48:15.69 ID:6gN3mvyQ0.net] >>351 それ値渡しじゃない
360 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 09:09:18.32 ID:9GXSG5IC0.net] イメージの配置はできるようになりましたが、いろいろ触っていると、チラツキが 気になるようになってきました テストしてみたところ、下記のレベルでもチラツキが発生します private void timer1_Tick(object sender, EventArgs e) { Graphics g = Graphics.FromImage(canvas); g.FillEllipse(bg_brush, x, y, radius, radius); x += 5; g.FillEllipse(fg_brush, x, y, radius, radius); count++; g.Dispose(); pictureBox1.Image = canvas; if (count == 10) { count = 0; timer1.Stop(); } } timer1.Intervalは100msにしてあります チラつきを押さえるには、フォームの DoubleBufferd を true にすると良いと見ましたが、 true にしても false にしても変わりないようです そもそも PictureBox は内部処理でダブルバッファリングを行っているとも見ました まだなにかできることはあるのでしょうか
361 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 09:36:21.79 ID:9GXSG5IC0.net] 書いてませんでしたが、bg_brushは背景色の、fg_brushは前景色のブラシです Brush bg_brush = new SolidBrush(SystemColors.Control); Brush fg_brush = new SolidBrush(Color.Black); で定義しています
362 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 09:54:38.21 ID:RTzVBomo0.net] canvasはどんな風に設定しているの?
363 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 10:06:54.11 ID:9GXSG5IC0.net] canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height); として定義しています
364 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 10:36:38.03 ID:RTzVBomo0.net] DoubleBufferdとか触らずともこっちではちらつかないけどなあ ちらつくってのはどういうふうに見えることを言ってるの? panelやpictureBoxのサイズやradiusの値もさらしてみては?
365 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 10:50:11.40 ID:IbwjU9Qn0.net] どこで何やってんの不明瞭だから当てずっぽうだが 下手に自前描画してるチラつくなら大体OnPaintBackgroundのせい
366 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 10:55:03.54 ID:9GXSG5IC0.net] https://ideone.com/s4ddqO これが全コードです 空のWindowsフォームアプリケーションで生成されたフォームに、ボタンとパネル、 PictureBoxを配置しただけの状態です パネルとPictureBoxは、DockをFillにしてウィンドウサイズに合わせてあります
367 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 10:56:51.16 ID:9GXSG5IC0.net] これで、timer1のIntervalを50msにすると、はっきり分かる程度にちらつきます
368 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 13:14:55.43 ID:gzoDeGmX0.net] 垂直同期しろ。
369 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 13:31:21.62 ID:o/aLqSU5a.net] >>362 やってみたけとちらついたりはしないねw ただフレームレートが低いから滑らかに見えないだけ [] [ここ壊れてます]
371 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 15:35:36.42 ID:MOQB+J+Ha.net] 解決のヒントにはならないだろうけど ちらつきって何かということについて すでに表示されてるものが一瞬透明に見えるから表示がおかしく見えること たとえば半径100の円が横に5ドット動くとする 普通に考えたらほとんどの円に背景は隠れたままだけど何も考えないで適当にやると 背景が一瞬見えてしまう 一度円を消してなにもない状態を表示して 次に円を書いてるから問題がある 何もない状態を表示しなければいい
372 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 18:19:28.93 ID:9GXSG5IC0.net] >>364 環境の問題ですか・・・ 一応ディスプレイのリフレッシュレートは60Hz、タイマー設定が50msだと20Hzあれば 十分ですので、あまり関係ない気がするのですが でも私の環境でしか出ないのであれば、環境依存かもしれません >>365 これを避けるためにダブルバッファリングをするわけですし、書き換えた後のビットマップを PictureBoxに貼り付けるようにして、描画途中では貼っていません
373 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 18:22:22.08 ID:gzoDeGmX0.net] だからハードの違いだって言ってんだろw
374 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 18:25:15.44 ID:w10wIaHya.net] >>366 いやいや何でそういう話になるのw たぶん環境の問題なんかじゃなく、あなたが低フレームレートに起因する カクカクした動きをちらつきだと誤認してるだけだと思うよw
375 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 18:30:35.56 ID:gzoDeGmX0.net] アホばっかり。
376 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 18:55:10.27 ID:9GXSG5IC0.net] >>368 カクカクした動きとチラつきを同一視しているわけではありません >>365 が書いたように、今回の例だと黒い円が一瞬消えているような感じがします 移動量の x += 10; をもっと少なくすれば目立たなくなりますが、それでも なんとなく嫌な感じがします でも言葉で説明するのは難しいですね 低フレームレートの認識を誤解していたようですが、インターバルを100msとか 50msとかだとディスプレイのリフレッシュレート(あるいは人間の認識力)に比べて 低すぎるので、かえって目立ってしまうということでしょうか? 確かに、インターバルを思い切って5msとかにしてみると、チラつきは軽減されてきた 気がします
377 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 19:33:59.43 ID:7/UIZFPx0.net] ちょっと改変して逆にチラツキをわかるようにしてみた https://ideone.com/3X8oJh WinFormプロジェクトを新規で作って元のソースを全部消したうえで、このソースを既存の項目として追加 上がPictureBoxで下がPanel >>370 PictureBoxのダブルバッファがデフォルトで有効なのは知っているのを確認したので その上でPanelはデフォルトでダブルバッファが有効だというのを念頭に入れてコードを実行してほしい 同じオブジェクトの動きだが、うちで確認する限りは下はあきらかにチラツキがあって上は目立たない >>365 >何もない状態を表示しなければいい というわけで先に描画して動いた部分だけを消すという動作を実現してみたつもり だったんだけど、移動量を大きくするとカクツキがどうしても目立ってしまってうまくいかない。ギブアップw >>370 もっとGDI+の動作を把握するとかゲームなどでの実装方法を探すかした方がいいと思う 残念ながら俺の知識ではここまで
378 名前:>>370 mailto:sage [2018/05/06(日) 19:37:36.72 ID:7/UIZFPx0.net] ごめん >Panelはデフォルトでダブルバッファが有効だというのを念頭に入れて Panelはデフォルトでダブルバッファが無効だというのを念頭に入れて の間違い
379 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 20:17:55.74 ID:LW3/RgRJa.net] うーんw >>361 のコード自体がダブルバッファリングの実装なので、 少なくともGDI+を使う限り、これで本当にちらつくなら何をやってもちらつき回避は不可能。 何度も言うけど、少なくとも俺の環境では低フレームレート特有の不自然さはあっても フリッカーは確認できない しつこいようだけど、俺は質問者がちらつき(フリッカー)がどういう現象か 理解してないだけのように思う
380 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 20:20:58.90 ID:j24ysXtO0.net] まあ、unity使ってもDirectX使ってもスクロールとかなめらかにならないしね グラボも汚いってのも考慮に入れる 市販のゲームでもスクロールしてるときはカクカクグシャグシャはデフォ
381 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 20:21:41.45 ID:9GXSG5IC0.net] >>371 ありがとうございます 私が確認しても、確かに上下で明らかにチラつきが違い、下ははっきりとわかります 上はほとんどわからないレベルですね PictureBoxもPanelも、どちらも出来上がったビットマップを貼り付けているのですから 同じ表示になりそうな気がしますが違いますね これをちゃんと理解できれば解決できそうです
382 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 20:36:30.01 ID:LW3/RgRJa.net] >>371 のコートだとたしかにフリッカーが確認できるねw >>373 は撤回します
383 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 20:39:37.09 ID:9GXSG5IC0.net] >>373 私が「チラツキ」と表現しているのは、>>371 が上げてくれたプログラムの 下側、panelで発生している現象です 私の理解では、>>371 でなぜ表示に違いが生じるのかがわかりません どちらも、加工後のcanvasを貼り付けているはずなのに >>371 でやっていることは、ダブルバッファリングではないのでしょうか? >>371 のプログラムを実行してみて、違いはPictureBoxをウィンドウに直接 貼り付けているか、panelを置いてその上に貼り付けているか、です 私のテストプログラムでは、panelを置いてその上にpictureBox1を置いてます これが影響するのでしょうか
384 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 20:49:20.18 ID:7/UIZFPx0.net] https://ideone.com/PNPIlj 蛇足だろうけどnew BitmapじゃなくPictureBox.Imageを直接描き変えるもの >>377 370で何をしたかったかというと「ダブルバッファリングではこれ以上改善できない」事の証明 >panelを置いてその上にpictureBox1を置いてます それは多分関係ない。panelに背景を設定すると話が変わると思うけど 実際に改善するには移動量を少なくして滑らかに見せるくらいしかおもいつかない 消える側の方でなく進行方向側でカクついているんだよなあ・・・
385 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 21:02:31.57 ID:9GXSG5IC0.net] >>378 試してみました >>371 と変わらない感じですね これまで質問してきた趣旨とは変わってしまいますが、 Graphics g = Graphics.FromImage(pictureBox1.Image); これでビットマップを書き換えた後に pictureBox1.Image を書き換えていないと いうことは、いちいち canvas ビットマップを用意して細工しなくてもよかったと いうことでしょうか で、本質ですが、ご提供いただいたテストプログラムでは明らかにチラつきの 改善が見られるということはダブルバッファリングは機能している、これ以上 気になるのであれば、それは滑らかさの問題であってチラつきの問題ではない、 と認識するのが良さそうですね
386 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 21:19:50.71 ID:IbwjU9Qn0.net] 下PanelはBackgroundImage使ってるのが悪いんじゃねえかなあ canvasはPanelのPaintで描画するようにして PanelのDoubleBufferedをtrueにするかOnPaintBackgroundの無効化でチラ付かなくなったよ あとチラつきとは関係ないけどお行儀的には再描画はTickで Invalidate(true)呼び出してPaintのタイミングはフレームワークに任せるべし Tick毎に無駄にImage/BackgroundImageに突っ込んでるから結果的に自分で再描画してるけど
387 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 21:52:55.18 ID:LW3/RgRJa.net] ああ、やっぱり俺の認識で合ってるねw 何だかおかしいと思ったが >>377 フリッカーを誤解してないのは分かったけど、>>361 のコードでフリッカーなんか 発生しないってだから
388 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 23:08:48.35 ID:s/HjZ7Qd0.net] >>351 それは参照渡しになってたわけじゃない C#の参照渡しはhoge(ref list)のようにrefがつく あなたがハマったのは参照の値渡しでインスタンスは複製されないということ ぺらぺらの入門書とかだとわからんが、ジェネリックやクラスをちゃんと学べる程度の本なら載ってるはず
389 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 23:23:27.04 ID:gzoDeGmX0.net] グラボの性能差だから、ちらつき。
390 名前:デフォルトの名無しさん [2018/05/06(日) 23:49:17.66 ID:5astaXB20.net] >>351 List固有の問題ではなく、classは全て参照型だからだ。 だから、=で代入しても同じオブジェクトを指すだけ。 ちなみにstructは値型。こっちなら=で代入したらオブジェクトが複製される。
391 名前:デフォルトの名無しさん mailto:sage [2018/05/07(月) 01:29:04.63 ID:inVQGvpaa.net] >>361 をFPSと速度を変えられるようにしてみたけど 思ったより面白くもないし動作も滑らかじゃないなw どっちにしろやっぱりフリッカーは発生しない https://ideone.com/E3V57h ところで、タイトルバーをドラッグしたりすると画面の更新が止まる問題を 回避する方法ってなかったっけ?
392 名前:デフォルトの名無しさん mailto:sage [2018/05/07(月) 01:32:11.28 ID:inVQGvpaa.net] ああ、今思ったけど、FPSは本当は実測した値を表示すべきだねw >>385 はタイマーのインターバルから計算した理論値で実測値じゃない
393 名前:デフォルトの名無しさん mailto:sage [2018/05/07(月) 01:32:57.05 ID:3karsGmmp.net] グラボやドライバーの違いで発生する問題を自分のところじゃ発生しないからって頭ごなしに否定する奴はどうして生きてるんだろうな?
394 名前:デフォルトの名無しさん mailto:sage [2018/05/07(月) 01:42:18.83 ID:inVQGvpaa.net] >>387 それは君が勝手にそう思ってるだけw そんな問題はWin9xの時代だって存在しなかったよ っていうか、言っちゃわるいけどフリッカーが発生する原因を理解していればそんな間抜けな台詞は 出てこない
395 名前:デフォルトの名無しさん mailto:sage [2018/05/07(月) 01:43:57.94 ID:inVQGvpaa.net] なんか垂直同期(笑)とか書いてるのもいたけど、 頭の中80年代で止まってるんじゃなかろうかw
396 名前:デフォルトの名無しさん [2018/05/07(月) 04:32:44.15 ID:S2Y5gzQd0.net] DataGridViewで、複数のカラムを基準にソートするにはどうしたらいいでしょうか。 以下のようなイメージです。 元データ ------ 4 2 1 4 2 1 5 4 6 7 1 3 1 6 これを、カラムのヘッダーセルのクリック操作だけで、以下のように出来るようにしたいです。 ------ 1 3 1 4 1 6 2 1 4 2 5 4 6 7
397 名前:デフォルトの名無しさん mailto:sage [2018/05/07(月) 06:24:03.69 ID:SlIACPlK0.net] プロパティだけでは無理 各列のSortModeはAutomatic以外にして ColumnHeaderClickイベントで自分でソートする必要がある 実際にどうやってソートするかはDataGridViewに表示してるデータをどうやっているか次第 ところで下の状態で1番目の方のカラムヘッダをクリックしたらどうなるの? とか色々場合があってUIというかUX?を決定するのが結構面倒
398 名前:デフォルトの名無しさん mailto:sage [2018/05/07(月) 06:43:05.39 ID:UbBhnDZYM.net] さすがに垂直同期はネタだろ 釣られる奴がいるとは思わなかったけど w
399 名前:デフォルトの名無しさん mailto:sage [2018/05/07(月) 07:18:03.31 ID:3karsGmmp.net] ググって事実を知ったんだな。そんなに悔しいのか?
400 名前:デフォルトの名無しさん mailto:sage [2018/05/07(月) 08:25:49.50 ID:H7YotaIo0.net] >>390-391 複数列でのソートは、Kotlin なら、 配列.sortedWith(compareBy({ 列1 }, { 列2 })) C# は、よく知らないけど、こういう感じ? 配列.OrderBy(列1).ThenBy(列2)
401 名前:デフォルトの名無しさん mailto:sage [2018/05/07(月) 14:38:50.30 ID:iApxgodj0.net] 教えてください キャストが上手くできずに困っています 具体的には、VisualStudioでデバッグのウォッチウィンドウに Enumerable.Empty<int>() is IEnumerable<object> と入力するとtrueと表示されるので少なくとも条件が整えば IEnumerable<int> は IEnumerable<object> に キャストできるとおもうのですが、プログラム上で安直に Console.WriteLine(Enumerable.Empty<int>() is IEnumerable<object>); を実行すると画面にFalseと表示されてしまいます ウォッチウィンドウ
402 名前:上とプログラム上で何か条件の違いがあって このようなことが起こっているのだとは思いますが、理解が不十分で解決方法が分かりません そもそもIEnumerable<T>のTは共変なのでintがobjectにアップキャストできる以上 IEnumerable<int>も無条件でIEnumerable<object>にキャストできると 思っていたのですが、この部分に何か誤解があるのでしょうか VisualStudio15.6.7、コンソールアプリ、ターゲットフレームワーク4.7.1でテストしています よろしくお願いします [] [ここ壊れてます]
403 名前:デフォルトの名無しさん mailto:sage [2018/05/07(月) 18:57:27.81 ID:cAXvX5WKa.net] >>395 値型は不変だったような ufcpp.net/study/csharp/sp4_variance.html#value イミディエイトだとs演算子がtrueを返す理由は分かりませんw 何でしょうね
404 名前:デフォルトの名無しさん mailto:sage [2018/05/07(月) 21:52:56.92 ID:iApxgodj0.net] >>396 レスどうもありがとうございます。その後色々と試してみると、プログラムで Console.WriteLine((Enumerable.Repeat(4649, 1) as IEnumerable<object>)?.First() ?? 184); を実行すると画面には184と表示され、教えていただいとことと辻褄が合うように思います また、これまでの結果から考えてウォッチウィンドウで (Enumerable.Repeat(4649, 1) as IEnumerable<object>)?.First() ?? 184 の値を調べれば4649と表示されるのかなと思いきや「メモリを読み取ることができません」と表示されたので、 こちらの挙動はおっしゃる通り分からない(バグ?)と考えるしかなさそうです ジェネリックでないIEnumerableはLINQが使えないのでこれまで if (x is IEnumerable<object> enumerableObject) { ... } と書く場面があったのですが、これではIEnumerable<値型>が拾えなさそうなので if (x is IEnumerable enumerable) { var enumerableObject = enumerable as IEnumerable<object> ?? enumerable.Cast<object>(); ... } とでも書いておこうかと思います(今のプログラムではxがジェネリックでないIEnumerableになることはないのですが) もっと良い方法があれば教えてもらえると嬉しいです
405 名前:デフォルトの名無しさん [2018/05/09(水) 00:08:06.32 ID:98vw71AM0.net] 名前空間A と名前空間A.B がある場合に、A.B内からAのクラスを扱うにはどうすればいいのですか?
406 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 01:14:34.94 ID:KTiGjU5t0.net] >>322 Aをusingすればよい
407 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 01:15:21.71 ID:KTiGjU5t0.net] なんかすげーレス間違えたけど >>398 宛
408 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 01:47:53.29 ID:lSrhXmV/0.net] そもそも名前空間ってどうやって扱うのが正しいの?
409 名前:デフォルトの名無しさん [2018/05/09(水) 02:09:09.87 ID:98vw71AM0.net] >>400 クラスとは違って、やはりそうやって使うものなのですか
410 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 02:25:39.99 ID:PD0iDBLsp.net] 完全表記しても良いんだよ?
411 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 17:57:38.22 ID:8iDq54Sd0.net] 嫌なら全部同じ名前空間内に入れ込んでしまえ 悩まなくて済むぞ
412 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 18:15:06.67 ID:GFIhYWfG0.net] 別に名前空間分ける意味ないよな。
413 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 18:19:36.14 ID:nbiQ9nbF0.net] 分業の為の仕組み
414 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 19:48:53.19 ID:lSrhXmV/0.net] >>406 逆に無駄な混乱が起きない? 同じ名前のクラスとかあるとちょっと面倒じゃない?
415 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 19:49:33.69 ID:D7X0frHnM.net] C#好きだけどnamespaceでネスト一つ深くなるのはあかんわ
416 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 20:08:50.17 ID:4zjT3ksId.net] >>407 全て自分で書くコードならいいんだけどね。サードパーティのライブラリのクラスと衝突する可能性なんていくらでもあるから。
417 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 20:10:07.14 ID:QZYGN7xi0.net] >>407 書き分けのために命名が歪むのは良くない NM1.Class/NM2.Class NM1Class/NM2Class 単にプリフィクス付けるだけなら 名前空間があろうとなかろうとやってる事は同じ
418 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 20:22:37.87 ID:
] [ここ壊れてます]
419 名前:SavMNDDu0.net mailto: >>407 むしろ同じ名前でも被らないようにする仕組みなんだが... [] [ここ壊れてます]
420 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 20:54:59.54 ID:EkWsGx0u0.net] やたら長い名前付けて重複を避けるのさ。 ダイビングがかったるいって? 最初のusingに書くだけだから大丈夫。
421 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 21:00:22.54 ID:EHFfoX53a.net] >>407 自分(同じチーム)で同じ名前の違うクラスが必要になるケースは 少ないが(ないことはない)他人が書いたライブラリで既に使われているのと 同じ名前が必要になるケースなんかいくらでもあるよw 例えばSystem.Drawing.Point以外のPointが使えなかったら困るでしょ あと、名前空間の目的は名前のバッティングの回避だけじゃない。 むしろ一番の目的は分類と整理でしょ。 名前空間が使えないライブラリは全部のファイルをデスクトップに置くできない人と同じ 適切に命名され適切な階層構造をもった名前空間は索引の機能を持つし、 コードのコンテキストを明確にする。 System.Drawing.PointがPointだけで2Dグラフィックの座標だと分かるのは、 プログラマはそれがSystem.Drawing内の型だと知っているから
422 名前:デフォルトの名無しさん mailto:sage釣 [2018/05/10(木) 00:36:27.80 ID:yXMj8vMdM.net] using エイリアス ディレクティブ でggr
423 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 01:45:10.65 ID:m/SOSTAZ0.net] >>413 普通にdrawingのcolorとmediaのcolorがバッティングしてるじゃん それと自作のcolorとこれまた別の奴の作ったcolorがバッティングするだけでもう面倒臭くて死にそうになる
424 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 01:55:25.02 ID:m/SOSTAZ0.net] もっというとwpfでも別のcolor作ってんじゃん バッティングうぜぇんだよ こんな簡単なクラスでもう再利用効かないんだから名前空間まで作って管理するなよバカっタレかよ 当のMSからもうまともなことやってねぇっていうかできないんだから いい加減ファンタジー設計はやめるべき いや、もうファンタジーじゃないな メルヘンの領域まで入ってる
425 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 02:19:31.02 ID:di97fd/ta.net] >>415-416 何を言ってるのか意味がわからねいよ。
426 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 02:30:05.52 ID:yIfUPK8/0.net] この程度で死ぬほど面倒臭がってたら、プログラミング自体が向いてないな。
427 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 04:06:02.42 ID:R4f/WJPq0.net] C#8.0のpreviewきましたねえ https://github.com/dotnet/csharplang/wiki/vNext-Preview
428 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 07:27:01.34 ID:1WB9uyi8M.net] >>417 バカじゃん 何でwinformにcolorあるのにwpfでも作ったの? 再利用できてないじゃん 役に立たないじゃん 名前空間分けてそれで? 新しいもの作ったら元気一杯に捨ててるじゃん ってとこに集約する
429 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 07:37:29.76 ID:CKE2Ak/10.net] Color構造体とColorsクラスの事かな?
430 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 07:48:33.05 ID:M9xdMPFN0.net] こいついつものアレだろ 触るな
431 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 08:08:52.60 ID:1WB9uyi8M.net] >>422 反論できないならcolorクラスはもう作らせないぞ
432 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 09:17:58.68 ID:l4uhHAvqa.net] 全く話題になってないけどC#7.3も正式リリースされたぞ 念願の where T : Enum
433 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 09:36:24.91 ID:EV77m/Hv0.net] >>423 > それと自作のcolorとこれまた別の奴の作ったcolor > バカじゃん > 何でwinformにcolorあるのにwpfでも作ったの? え、なんで自分でcolor作ったの?
434 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 09:51:09.75 ID:2wmh3oy2M.net] >>425 触るなって言ってんだろテメーマッチポンプか? それとも別種の頭かわいそうな生ゴミか?
435 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 10:30:56.59 ID:Yjx9MaDJp.net] つか、同じ名前で違う用途に割り当てる方が難儀だろ普通は名前変える。
436 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 12:33:21.16 ID:kan/O/6Ed.net] >>427 だから世の中にどんだけクラスが存在すると思ってんの?
437 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 12:51:46.30 ID:YLAKf1v1a.net] 普通の初心者だったらSystem.IOのPathとWPFのPathが競合することが気になると思う
438 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 12:53:40.23 ID:YLAKf1v1a.net] イギリスだったらつづりはcolour
439 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 19:43:14.60 ID:M5rAF93d0.net] コロワァ
440 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 20:53:17.15 ID:Yjx9MaDJp.net] >>428 自前クラスを組み込むクラスの組み合わせだけ考えりゃよかんべよ。
441 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 22:10:03.44 ID:R4f/WJPq0.net] >>432 日本語で
442 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 00:30:31.25 ID:F4aYSsq30.net] >>425 WPF「WinFormなんて爺さんのクラスなんて使えるかよ」
443 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 00:58:40.04 ID:TW3IXpUfa.net] >>434 WinFormsが定年間近の爺さんだとしたらWPFは35歳無職童貞だな
444 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 13:52:55.21 ID:sq5ITweXM.net] drawimageって自分でクリッピングしないとはみ出たら遅い?
445 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 14:13:09.38 ID:NZxgVNkdp.net] formとwpfで、似て非なる部品ってどうにかならんの? ネットで使い方調べる時、紛らわしいんだよな。
446 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 14:36:21.57 ID:SfoScckv0.net] >>434 UWP「そろそろWPFさんにはご退場願おうか」
447 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 15:23:07.83 ID:oUtXC/5od.net] >>438 メーカー「そろそろUWP用のコントロールつくっか?」
448 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 16:30:16.71 ID:DPTi05MZM.net] 親フォームからnewした子フォームは親とは非同期ですか?それとも同期処理となりますか?
449 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 16:50:42.60 ID:Kz4/xaqBM.net] 正しい言葉の使い方では非同期だけど、たぶん君が言ってるのは同期か非同期かではなくて同じスレッドかどうかだろう それでいえば同じスレッド
450 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 17:48:49.51 ID:n/c4W3DX0.net] つか、聞きたいのは、モーダルかモードレスかじゃね?
451 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 17:56:35.27 ID:+Mrz0iyE0.net] ここで質問するときは自分が何をやりたいかを書いてもらった方がいいな >>440 >>442 の意味なら 方法 : Windows フォームをモーダルおよびモードレスで表示する https://msdn.microsoft.com/ja-jp/library/39wcs2dh(v=vs.110).aspx
452 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 19:52:53.18 ID:7YPYpwobM.net] >>441 同じスレッドなら同期ではないのですか? >>442 モーダルとはなんぞやレベルなので出直してきます >>443 参考サイトありがとうございます
453 名前:デフォルトの名無しさん [2018/05/11(金) 20:39:18.87 ID:A7KRRugp0.net] ポータブルアプリの設定ファイルを扱うなら何がスタンダードですか? XmlSerializer使ってxmlファイルにするか Win32API経由でレガシーなiniファイルにするか。 やっぱ前者ですかね?
454 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 20:42:59.37 ID:H5+wAeJBM.net] >>445 今時はJSON
455 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 21:30:53.62 ID:wYle0Ioy0.net] >>445 セオリー通りappsettings.jsonやろ普通
456 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 21:55:14.15 ID:F4aYSsq30.net] >>445 人の手で編集するかどうか するならcsvファイルかxlsがええで Excel使えるから xmlもiniもjsonも編集ツールが無くてゴミ
457 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 21:57:27.82 ID:wYle0Ioy0.net] >>448 キチガイ
458 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 22:04:41.45 ID:F4aYSsq30.net] >>449 ほう じゃあ、編集ツール出して見ろよ そんな誰も編集できないフォーマットで設定とか言ってたって全く説
459 名前:セ力ないよ はい、論破 [] [ここ壊れてます]
460 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 22:08:27.43 ID:KxM4SNOx0.net] yamlとかtomlもまぁアリだな jsonはtailing commaがちょっと煩い
461 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 22:08:43.32 ID:wYle0Ioy0.net] ごめんキチガイに触ってしまった
462 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 22:09:55.64 ID:o64e7/8Ad.net] >>451 C#ならappsettings.jsonで良くね?IOptionとの相性いいし
463 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 22:11:29.14 ID:KxM4SNOx0.net] >>453 JSONが標準だとは思うし, まぁJSONにする が, リスト末尾のカンマは許して欲しい
464 名前:444 [2018/05/11(金) 23:25:00.79 ID:A7KRRugp0.net] なるほど、今時はJSONですか。 ただ、少し調べて見たところweb系の構成ファイルとして使う?みたいで自分の思ってるのとは違うのかなと感じました。 後出しになってしまって申し訳ないんですが、自分のイメージしてるのはFormアプリで例えば「最前面に表示する/しない」だとか「昇順/降順で並べる」みたいな、チェックボックスやラジオボタンの選択内容を起動時に読み込み、終了時に書き込みする想定です。 appsettings.jsonは読み込みしかなさそうだったのですが、書き込みってありますか?自分でjson形式にコンバートしてベタに書き込みしろってことですかね?
465 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 23:28:06.24 ID:gh5GwZAv0.net] >>455 その用途ならアプリ外からエディタで編集させることなんて無いだろうから、正直なんでも良いと思う
466 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 23:31:25.65 ID:fVy+Ps+50.net] jsonならNewtonSoftがあるけどyamlシリアライザだとどれがデファクトなんだ?
467 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 23:31:53.13 ID:fVy+Ps+50.net] jsonならNewtonSoftがあるけどyamlシリアライザだとどれがデファクトなんだ?
468 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 23:33:44.23 ID:KxM4SNOx0.net] >>455 JSONで読んだり書いたりするなんてどうとでも出来る まぁXML以外ならなんでもいいと思うけどね
469 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 00:31:10.54 ID:wbfjgNFba.net] 前も書いたけど騙されたらダメwww .NETには標準のシリアライザがいくつも存在するんだから、特に理由がないかぎり あえて外様を使うとか頭の悪い中学生じみてる
470 名前:デフォルトの名無しさん [2018/05/12(土) 03:56:46.76 ID:ek+Myn8j0.net] var exts = {".jpeg", ".jpg", ".png", ".gif"}; var f = Directory.GetFiles(dir, "*.*", SearchOption.AllDirectories) .Where(c => exts.All(extension => !c.EndsWith(extension))) .ToArray(); extsの拡張子以外のファイルを抽出したいんだけど 大文字小文字区別せずに拡張子だけを比較する方法ないですか? もっと効率いい方法ある気が・・・
471 名前:デフォルトの名無しさん [2018/05/12(土) 04:18:13.81 ID:ek+Myn8j0.net] !c.ToLower().EndsWith(extension) で対応します
472 名前:デフォルトの名無しさん [2018/05/12(土) 05:18:29.02 ID:V3QYZkJA0.net] >.NETには標準のシリアライザがいくつも存在するんだから、特に理由がないかぎり >あえて外様を使うとか頭の悪い中学生じみてる いくつもあるの? どんなのがあるのか三つくらい教えてください。 ビルドするごとに消えるのでは使いにくいというか何度もビルドするのは普通だとおもうので それでは使い物にならないので、ビルドしても消えないものがいい。
473 名前:デフォルトの名無しさん [2018/05/12(土) 05:48:54.31 ID:d7ZTDjaEu] 過去スレで以下でアルファチャンネルつき32bitビットマップで保存できると書いてたけど どのソフトで開いても黒くて透過してません。どうしたらいいでしょうか?開いたソフトが対応してないだけ?? Bitmap bmp = new Bitmap( 32, 32 ); using( var g = Graphics.FromImage( bmp ) ) { using( var sb = new SolidBrush( Color.FromArgb( 128, Color.Red ) ) ) { g.FillRectangle( sb, new Rectangle( 0, 0, 16, 16 ) ); } } bmp.Save( @"C:\Users\ハゲ\Desktop\test.bmp", ImageFormat.Bmp );
474 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 06:12:38.61 ID:Qc7Beiuka.net] >>460 今時その認識は正直ヤバい 今の.NETの標準のシリアライザはJSON.NET Core系では完全に標準シリアライザとしてフレームワークで使われてるし、MSDNにもJSONならJSON.NET使えと書いてる
475 名前:デフォルトの名無しさん mailto:sage釣 [2018/05/12(土) 06:16:13.33 ID:9vavBtpKM.net] >>463 https://msdn.microsoft.com/ja-jp/library/4abbf6k0(v=vs.120).aspx
476 名前:デフォルトの名無しさん mailto:sage釣 [2018/05/12(土) 06:20:19.72 ID:9vavBtpKM.net] >>465 DataContractJsonSerializer でなくJson.net のソースは?
477 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 06:29:12.76 ID:hwxaPbIq0.net] 設定ファイルは、csv, yaml, json。 Java系のant, maven などは、XML。 Mac系は、property file chef, vagrant では、Ruby。 Gradle では、Groovy Haxe のserializer は、数個のプログラミング言語に渡って機能するし、 json, xml みたいに型情報が無くなったりしない もちろん、Ruby, Groovy も、 プログラミング言語自体が設定ファイルだから、そのまま使える
478 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 07:13:07.72 ID:Qc7Beiuka.net] >>467 https://msdn.microsoft.com/ja-jp/library/system.web.script.serialization.javascriptserializer(v=vs.110).aspx なんか勘違いしてるみたいだけど、DataContract系は通信に使うもので ファイルの読み書きに使うことを想定されているもんじゃないよ
479 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 07:21:14.10 ID:UP+Hygq+M.net] DataContractSerializerは絶対にファイルに書いちゃダメってわけではないけど、データのスキーマがあらかじめ決まってる場合には使えない あくまで書く側と読む側とで解釈が共通でありさえすれればよくて、その中身を人間は気にしないよ、ってときに使う
480 名前:444 [2018/05/12(土) 07:26:10.70 ID:4i84e4IV0.net] 調べが足りずすみません。 NewtonsoftのJSON.NETというのを使えばいいみたいですね。 .NET標準のXmlSerializerと同じような感じの使い方ですね。 ちなみに、XMLはやめた方が良いと意見ありましたが、 どういった理由からでしょうか?
481 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 07:35:16.58 ID:Qc7Beiuka.net] XMLは全世界共通の汎用データ交換フォーマットであることが採用する唯一の理由であり、 JSONが主流になった時点で既に存在意義が失われているから
482 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 07:45:11.57 ID:hwxaPbIq0.net] XML は、JSON よりも可読性が高いから、人が見る・書く設定ファイル。 例えば、アプリのフォームのデザインの設定ファイルに使う 人が見ない、単にコンピューター間のデータの受け渡しには、JSON XMLを使うと、ややこしい
483 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 07:52:19.68 ID:yKmgHprg0.net] >>473 高くねーよ タグの対応が外れたら素人に発見できんのか? プログラマならともかくパンピーじゃ無理
484 名前:デフォルトの名無しさん [2018/05/12(土) 08:08:53.44 ID:V3QYZkJA0.net] XMLは可読性がわるい。つまり直観が効かない。機械向きで非人間的だから設定ファイルには不向き。 たしかに寄ってたかってよく考えてあるのは解る。それには感心するが、寄ってたかって考えすぎると たいていは失敗する。その代表的な例としてはXMLもっとも良い例のひとつだろう。つまり駄作だなとおもう。
485 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 08:28:20.91 ID:YrlOJuyZ0.net] jsonはいい加減コメントの使用を本家が認めるべきだわな
486 名前:デフォルトの名無しさん [2018/05/12(土) 08:45:40.67 ID:tydT0Seq0.net] >>473 XMLが読みやすいってwサヴァン症候群なんおまえ?w
487 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 08:49:00.82 ID:KCIDKf2Q0.net] コメントがあると独自スキーマを作り始
488 名前:めるからわざと外したと言っているけど病的だわ これだから実務屋でない奴は [] [ここ壊れてます]
489 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 08:50:11.44 ID:KCIDKf2Q0.net] そいつC#スレとPythonスレでよく見かけるが サヴァンかどうかはともかく発達障害は煩ってるぞ
490 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 08:52:02.93 ID:Y49XSW9o0.net] >>461 EndsWithの第二引数は使えない?
491 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 08:57:27.63 ID:vhGL8v7ea.net] >>478 悪名高いJSONライセンス(Good, not Evil)も作ってるからなぁ
492 名前:デフォルトの名無しさん mailto:sage釣 [2018/05/12(土) 09:22:58.61 ID:9vavBtpKM.net] >>469 THX
493 名前:464 [2018/05/12(土) 15:24:16.94 ID:Mhan8b8Mj] だれか…
494 名前:464 mailto:sage [2018/05/12(土) 16:52:37.99 ID:Mhan8b8Mj] すいませんでしたぁあ〜〜! 自分の作った別のC++のプログラムで読み込んだら普通に透過してましたぁ!! やっぱフォトショやその他のソフトがアルファチャンネル無視してただけでしたあ〜
495 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 09:36:45.26 ID:15xgRckc0.net] >>455 その用途ならこれで十分かと https://docs.microsoft.com/en-us/dotnet/framework/winforms/advanced/application-settings-for-windows-forms
496 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 09:37:39.20 ID:btyZbm2S0.net] XMLのタグの対応って言うけど JSONも例えば}が数階層のどっかで一つ消えたら人間に対応できなくなるよね
497 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 09:45:59.03 ID:iloBjJ0sM.net] データの規模が大きくなったらXMLのほうが断然有利 JSONとXHTMLを等価変換するスクリプトを書いてJSONだけでウェブサイトを構築する実験を社内でやった事があるがJSONのスコアは酷いものだった JSONはネストが深くなると使い物にならん
498 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 09:49:55.91 ID:15xgRckc0.net] >>487 どんな点で有利なのかすら書けないクズ
499 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 09:51:04.77 ID:56F0arFd0.net] 何のデータも示さずjsonは使い物にならないと言われてもねー
500 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 09:56:29.74 ID:iloBjJ0sM.net] データは自社の資産だから常識的に勝手には公表できない 実験方法は簡単にだけど示したのだからデータが欲しければ実験して検証すればいい 逆にJSONが優れていると言うなら 根拠無しではなくデータなり検証方法を示してほしいね
501 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 09:58:57.02 ID:yKmgHprg0.net] >>490 だったら発言すんなよ 消えろクズ
502 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:00:05.00 ID:vhGL8v7ea.net] https://www.infoq.com/news/2013/08/xml-json-performance 同じくらいのパフォーマンスというならまぁ納得出来る クソみたいなパーサ使わにゃネスト深さでパフォーマンスが悪化するわけねーだろ
503 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:00:18.08 ID:56F0arFd0.net] >>490 再現可能なサンプルぐらい作れ 今のままだと説得力ゼロで誰も納得しねーよ
504 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:00:46.67 ID:My8LWy2ka.net] XHTMLって死んだ技術だと思うが 10年ぐらい前の世界かな? xmlが見やすいって人は初めて見た
505 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:08:59.85 ID:iloBjJ0sM.net] >>493 5chに書き込むためだけに実験費用払いたくねえよ こういう実験はサンプルとして人を雇わないとできないんだよ 思考停止ノータイムでボタン押さずに常識的に少し考えてからレスしてくれ頼むから
506 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:10:42.69 ID:vhGL8v7ea.net] 再現するJSONとXMLを一個ずつ用意すれば終わるのに自分以外の人間が必要か? プログラ
507 名前:~ングやったことありますか? [] [ここ壊れてます]
508 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:19:11.86 ID:iloBjJ0sM.net] >>496 あんたは論外 パフォーマンスの話なんて誰もしてない 今はみんな生産性、可読性、保守性の話をしてるんだよ それを測るためにJSONとXHTMLを等価変換するツールを作った グループAの人達にはJSONでタグ打ちさせてそのJSONをツールでXHTMLに変換した グループBの人達にはXHTMLで直接タグ打ちさせた 完成するまでの時間や完成したXHTMLのバグ密度など様々なメトリクスを計測したら直接タグ打ちしたグループBのほうがスコアが高かった グループAとグループBのスコア差はネスト数が深いほど大きくなった そういう話な パフォーマンス比較なんてくだらん話は他所でやってくれ
509 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:21:37.68 ID:My8LWy2ka.net] >>497 人間のやることじゃないことを人間にさせて比較する意味がよくわからない
510 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:22:19.67 ID:7mnYG5Gia.net] >>497 無駄な変数が多すぎて何を比較したいのか分からなくなってるな 仕事できなそう
511 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:22:47.54 ID:vhGL8v7ea.net] >>497 人間がやる意味が分からん
512 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:25:26.75 ID:FqtFYlf30.net] 流石にこれは擁護できんわw
513 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:25:55.10 ID:My8LWy2ka.net] テキストデータをバイナリエディタで書かせるような意味不明な実験を やって悦にいる会社に勤めてかわいそうとしか思えない 上が暗愚だと下が苦労する
514 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:26:11.54 ID:iloBjJ0sM.net] 馬鹿しかいないのか 人間がやる意味がないとか言ってる連中は実験の趣旨を全く理解してない だから思考停止してノータイムでボタン押すのやめろって言ってるんだよ ほんと馬鹿の相手するの疲れるな
515 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:28:00.46 ID:vhGL8v7ea.net] こいつはなかなか面白いな, 素でこのコミュ力ならなかなかの逸材だし作っているならよく理解している
516 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:30:21.85 ID:My8LWy2ka.net] >>493 上が暗愚たと下も思考停止で伝染するんだな バイナリデータでutf8の入力しづらさも検証したか?
517 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:31:58.09 ID:My8LWy2ka.net] いや面白いな どこかの技術系のサイトでネタにしてくれないかな
518 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:32:26.46 ID:yKmgHprg0.net] 結局、手動で設定するファイルであるなら jsonもxmlもゴミだろ? なんの話してんの?
519 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:36:00.72 ID:My8LWy2ka.net] >>507 そうでもないよ VScodeでjsonの各種設定ファイルを手で変えたりするけど あれがXMLだととんでもないことになる
520 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:37:02.56 ID:vhGL8v7ea.net] 深くて3階層程度でそんなに行数多くないならJSONは苦痛は少ないかな
521 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:37:30.03 ID:yKmgHprg0.net] >>508 そういう無意味な比較意味ないじゃん xlsで設定できるアプリに使い勝手で勝てるの?
522 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:38:25.47 ID:15xgRckc0.net] >>510 それが無意味に思えるなんて幸せなやつだな
523 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:39:01.19 ID:yKmgHprg0.net] >>511 だってjsonもxmlもいらねーもんよ
524 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:39:07.44 ID:PQYWGVmCd.net] >>510 xlsとかwwwバージョン管理システム使ったことすらなさそうだな
525 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:39:44.13 ID:vhGL8v7ea.net] 残念だけどXMLはクソオブクソだけどXLSとかCSVはそれをはるかに上回るクソなの
526 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:39:58.36 ID:yKmgHprg0.net] >>513 csvでもいいよ
527 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:40:08.84 ID:15xgRckc0.net] >>512 C#やめた方がいいよ
528 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:40:21.22 ID:yKmgHprg0.net] >>514 理由は?
529 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:40:23.88 ID:NuxM0Gnx0.net] せめてxlsxにしてくれ
530 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:41:06.38 ID:PQYWGVmCd.net] >>515 反論する気すら起きんわ
531 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:41:21.27 ID:yKmgHprg0.net] db(Sqlite)もあるぞ
532 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:41:32.86 ID:wBO8DWf8M.net] >>497 の実験は「XHTMLのデータはJSONで記述するには適さない」ということを示しているだけだな そりゃXHTMLのスキーマはXMLで表現しやすいように設計されてるんだから、 JSONだと属性とコンテンツの区別がなかったりして記述しづらいのは当たり前だ JSONにはJSONに適したスキーマ設計がある
533 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:41:52.87 ID:15xgRckc0.net] やっぱGitすら使えなさそうだな
534 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:43:33.27 ID:yKmgHprg0.net] >>522 gitでcsvの差分見れないの?
535 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:44:43.29 ID:15xgRckc0.net] >>523 Gitでsqliteの差分見るのかい?
536 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:45:36.20 ID:vhGL8v7ea.net] >>517 XLS: バイナリ, 標準化されてない(されてるかも知らんが概ねExcelないと読めん) CSV: not well standarized XLSX: zip圧縮されたXMLじゃん
537 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:45:58.87 ID:yKmgHprg0.net] >>524 dbの比較は簡単 バージョン管理の機能にはないけど
538 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:46:25.99 ID:iloBjJ0sM.net] >>508 VSCodeのセッティングはネストが浅くて比較的読みやすいし、VSCodeによるコード生成がうまく機能してるからね
539 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:47:06.15 ID:15xgRckc0.net] >>526 もはや何を言っているのかわからん
540 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:47:34.43 ID:yKmgHprg0.net] >>525 ビジネスでExcel入ってない環境とかあるの?
541 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:47:44.90 ID:kT5GzpcRa.net] エクセルからマスターや設定をインポートするようになってるシステムは壊しそうで怖いわ うっかりレイアウトがズレてて正しくデータが取れなくなるとかよくある バージョン管理の問題にも関連するけど、再現性が乏しいんだよエクセルは
542 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:47:54.11 ID:WIOr5zBad.net] >>526 おれsqliteのバイナリをテキストエディタで書き換える能力ないのよ
543 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:48:23.30 ID:yKmgHprg0.net] >>528 DB同士のデータの比較したことねーの?
544 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:48:28.96 ID:My8LWy2ka.net] >>521 そこの会社の内部の抗争があるんだと思う いまどきxhtmlを使ってる派閥がいて そいつらが不利になったので意味不明なテストでxhtmlすげーをやって 何も考えないやつがそれに賛同したと エジソンが高圧送電は危険だと言って動物を殺す実験をしたようなもの
545 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:48:32.15 ID:15xgRckc0.net] >>529 いくらでもあるよ
546 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:48:32.71 ID:vhGL8v7ea.net] >>529 開発は仮想のLinux上とか普通にあるから
547 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:49:49.02 ID:15xgRckc0.net] >>532 json vs xmlの比較とは全く異なる次元のものを持ち込んで比較しようとするクズ
548 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:50:39.51 ID:yKmgHprg0.net] >>535 openoffice入れろよ
549 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:51:17.57 ID:15xgRckc0.net] >>537 こいつdotnet newすら打ったことなさそうだな
550 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:51:39.21 ID:yKmgHprg0.net] >>536 そっちは完全に編集するツールがないじゃん あってもゴミみたいなのしか
551 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:51:42.38 ID:vhGL8v7ea.net] >>537 開発用システムでXLS読むために入れるとか本末転倒
552 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:52:47.54 ID:yKmgHprg0.net] >>540 お客さんに何で編集したいですか? って聞いてみろよ Excelでできるって言ったら大喜びするぜ
553 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:53:32.62 ID:15xgRckc0.net] >>539 専用ツールがないと編集できないものなんてイラネ
554 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:53:45.26 ID:iloBjJ0sM.net] >>510 Excelの場合はそもそもツリーデータ構造を表現するためのスタンダードなフォーマットが無いので比較する以前の段階 まずはツリー形式のデータ構造を表現するためのフォーマットのデファクトスタンダードを業界全体で決めてくれ 比較はその後に回していいんじゃないかな
555 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:54:09.51 ID:15xgRckc0.net] >>541 Linux使ったことないやろ
556 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:55:07.24 ID:NuxM0Gnx0.net] vscodeのsettings.jsonとか見せたら発狂しそう
557 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:55:50.61 ID:vhGL8v7ea.net] >>541 客は会社のシステム部門なんで別にExcel喜ばれないですむしろ殴られそうです
558 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:00:04.65 ID:vhGL8v7ea.net] あとXLSXはともかくXLSをC#から弄ったことないんだけどExcelなしで読めるの? COM使って読むとか言わないよね?
559 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:08:10.26 ID:iloBjJ0sM.net] >>521 やっとちゃんと読んでレスしてる人が来た 確かにもともとXMLをベースに考案されたデータ構造なのでXMLに有利と言えるかもしれない しかしそれを認めると議論の発端である「jsonはxmlより優れている」という命題を「対象次第ではxmlのほうが有利である」という命題で最初から否定することになってしまう 本当に「jsonはxmlより優れている」なら対象がXHTMLだろうとなんであろうともjsonのスコアが高くなっていなければおかしい
560 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:23:55.86 ID:P5sx5scC0.net] なんでもかんでもExcelでやりたいVBAer()さんはVBAスレにおかえりください 事務員さんの常識はプログラマには通用しません
561 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:30:46.95 ID:15xgRckc0.net] >>547 ExcelCreator使って、Excelのインストールされてない環境で読み書きしてた 昔々ね
562 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:33:52.89 ID:5EDA9IkjM.net] >>467 横から失礼。マイクロソフトの人もそう言ってるよ
563 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:34:13.72 ID:FqtFYlf30.net] >>547 OLEDB使えばExcelインストール無しでも読めるで
564 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:34:57.85 ID:5EDA9IkjM.net] >>471 一言でいえば古い。
565 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:36:20.02 ID:FqtFYlf30.net] この手の議論はUI入力とデータ保持を同一のものとして考えちゃうから平行線だわな
566 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:40:59.55 ID:My8LWy2ka.net] >>548 キミが変なこと言ってるだけ 業務での作業性、操作性においてスマホよりPCがすぐれてるという人に対して PCではタッチ入力できないとかそんな難癖つけてるだけ
567 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 12:09:17.30 ID:iloBjJ0sM.net] >>555 残念だけど君には話が通じないね
568 名前:デフォルトの名無しさん [2018/05/12(土) 12:44:54.52 ID:ek+Myn8j0.net] >>480 EndsWithに第二引数とかあったのか いけるわ!ありがとう
569 名前:デフォルトの名無しさん [2018/05/12(土) 12:51:51.95 ID:XqIGE8bt0.net] デザインパターンのブログ(ヤフーブログ)・・・・なかなか良い。 https://blogs.yahoo.co.jp/kamyu_2010/35442561.html
570 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 13:25:14.58 ID:UZR1Ryt2a.net] >>554 それ以前の話でしょw 設定データをユーザーが編集したいなんてかなり特殊な前提でありかつ質問者も そんな要件を一言も上げてないのにアホかと、 .NET標準のシリアライザではなくあえて外様を使う理由はと聞いて、返って来た明確な答えは 結局「そっちの方が目新しいから」だけ。 中学生じみてるよと言ってるそばからこれだ。 プログラマ板みたいな話になっちゃうけど、本当今じゃプログラマって知能指数が低い奴が やる仕事になってることを実感するよ
571 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 13:26:52.97 ID:My8LWy2ka.net] json,.netを使うのは早くて使いやすいからだと思う 使いやすいと書くとまた難癖つけられそうだけどw
572 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 14:59:39.27 ID:d5Fp40ymM.net] >>560 どういう観点で見たときの使いやすいなのか説明が無いよね?
573 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 15:01:04.84 ID:15xgRckc0.net] >>559 Microsoftの基本的なライブラリもJSON.netに依存してる https://www.nuget.org/packages/Microsoft.Extensions.DependencyModel/
574 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 15:05:00.44 ID:AEXJFe1f0.net] 自分が json を使うとしたら、 ・周りが使ってるから ・xml と比較して見た目が好み って程度の理由だなあ。 どっちが優れてるかの比較なんてそれ自体がズレてるような。
575 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 15:35:45.32 ID:KCIDKf2Q0.net] 暇そうだな 同じヒマでも俺は運動してたけど
576 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 15:49:43.76 ID:F4kLnVK3p.net] シリアライ
577 名前:Y出来れば何でもいいよ。 [] [ここ壊れてます]
578 名前:デフォルトの名無しさん [2018/05/12(土) 16:47:10.12 ID:ek+Myn8j0.net] 結局Windowsのフォームアプリの設定ファイルは何が適してるんだよ jsonでもxmlでも大差ないよ好きな方どうぞって結論でいいの?
579 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 16:54:33.55 ID:gqffA4Jja.net] >>566 そもそも今時フォームアプリなんか採用する時点で全力で時代に背を向けてるんだからどうでもいいよ
580 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 17:04:25.00 ID:I6pHI0GBa.net] >>566 Setting使え 終わり
581 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 17:37:38.32 ID:AiYRYzWlM.net] Settings使え+1
582 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 17:53:54.95 ID:5EDA9IkjM.net] >>566 configファイルにjson形式で書き込む
583 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 17:58:28.95 ID:UZR1Ryt2a.net] >>568-569 質問者は「ポータブルアプリの設定ファイル」と言ってる。 ポータブルアプリがUSBメモリに入れて持ち歩くような物のことを言ってるなら、 Settingsは明らかに不適切 あと、個人的にあんまりアプリケーション設定使ったことないんで勘違いしてるかもしれんが、 これって結構制限も多いしいろいろ面倒だよね
584 名前:444 [2018/05/12(土) 21:13:35.08 ID:4i84e4IV0.net] 質問者ですが、こんなに荒れてしまうとは、、、申し訳ない。 おっしゃるように通常のWindowsフォームアプリならSettingsがデザイナで設定できるし楽なんですが、 ファイルの格納先がローカル(Roamingだったかな?)になるのでUSBメモリなどに持ち運んで使うポータブルアプリとしては採用できないというところでの質問でした。 特に設定ファイルの可読性を求めないようであれば、 形式としては古いが追加ライブラリ不要のXMLか、 スタンダードな形式だが別途追加ライブラリ必要なJSONか、 好きな方を選べって感じですかね。。
585 名前:デフォルトの名無しさん mailto:sage釣 [2018/05/12(土) 21:31:41.93 ID:9vavBtpKM.net] ユーザー定義リソースにしてexeに直接書き込むって方法もあるよ
586 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 21:32:18.31 ID:FqtFYlf30.net] >>572 USBで運ぶポータブルアプリ程度ならApplicationSettings保存でもいいんじゃないの?
587 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 21:33:56.53 ID:yKmgHprg0.net] exeの直下でいいよな
588 名前:デフォルトの名無しさん [2018/05/12(土) 21:48:32.28 ID:euW2BAe4a.net] アプリケーションスコープにするとアプリから書き込みできないよ
589 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 22:03:47.45 ID:fKL1gupm0.net] >>575 でもアクセスの速度違うときあるからね。
590 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 14:47:14.23 ID:ySggkKZM0.net] すいません。 初心者なのでこちらに移動してきました。 MVC的な設計で 初期設定値を入力するフォーム ↓ 初期設定値を格納するクラス というのを作りたいのですが、 A. クラス側に各変数のプロパティを作成 フォームからプロパティを介してクラスの変数に値を代入 B. クラス側にフォームの初期値を取りに行くメソッドを作成 クラスからメソッドを実行してフォームに値を取りに行く のどちらが良いのでしょう? 自分ではAの方がよさそうな気がするのですが、一般的な設計としてこうするというのがあったら教えてください。
591 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 16:02:40.98 ID:GQV4/ETF0.net] ケツの穴から手をつっこんで奥歯をがたがたみたいなBよりA
592 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 16:26:25.12 ID:N5R39axQ0.net] >>578 どっちでも動きゃいいだろ さっさと完成させろよ
593 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 16:39:15.74 ID:i7PAGBqeM.net] >>578 // form void btnSaveInitialSettings_Click(object sender, EventArgs e) { try { this.SaveInitialSettings(); } catch(...) { ... } } void SaveInitialSettings() { var initialSettings = this.GetInitialSettings(); var reaction = this.initialSettingsController.SaveInitialSettings(initialSettings); reaction?.Invoke(this); } // controller Action<IInitialSettingsView> SaveInitialSettings(InitialSettings initialSettings) { this.initialSettingsService
594 名前:.SaveInitialSettings(initialSettings); return view => view.Refresh(); } [] [ここ壊れてます]
595 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 18:54:27.05 ID:kDeIpxe/p.net] 初心者は出来上がってから検討すりゃいいんだよ。 つうか、プロ目指してるなら、先ずは完成させる癖を付けないとな。 万年アマチュアでいいのなら些末な問題で盛り上がればいいさ。
596 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 20:18:25.58 ID:QhZTiQlx0.net] まず終わらせろ、Facebookのにいちゃんも言ってたべな。
597 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 20:30:10.29 ID:i7PAGBqeM.net] Facebookにいちゃんが誰かわからんがそいつが言うまず終わらせろ、とお前が考えるまず終わらせろは別物だと思うぞ ユニットテストとリファクタリング込みでまず終わらせろ、って言ってるならマトモだけど、将来のことなにも考えずまず終わらせろって言うならただの害悪
598 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 20:32:15.38 ID:23x2pXKw0.net] >>584 リファクタリングなんか完成した後にバージョンアップする機会があったらやればいいんだよ。
599 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 20:35:20.07 ID:kDeIpxe/p.net] 将来が有るかどうかなんて、売れてから考えろw タイムイズマネーだ。無駄なリソース費やしてる暇が会ったら次の案件片付けろ。
600 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 20:36:03.21 ID:N5R39axQ0.net] >>585 そうだよね エッチな絵が一枚も表示されないのにリピーターがいることを想定してる なんてピンボケもいいとこだよね 割とマジで
601 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 20:37:25.10 ID:+qfB7sI70.net] 仕様通りの動きだけど汚いコードと 仕様通りの動きじゃないけど綺麗なコード を同じ時間で仕上げたとして、どっちが優れているかと言えば前者だよな
602 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 20:58:57.32 ID:9JUaags60.net] >>588 そりゃ仕様満たしていないなら比較以前の問題だわな 仕様満たして完成までの期間で比較とかならともかく
603 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 21:04:34.41 ID:kDeIpxe/p.net] まあ、熟練者になれば、素早く仕様通りのコードを綺麗に仕上げて来るからな。 初心者は先ず動くコード、次に仕様通り、最後に綺麗なコードでいいよ。 時間掛かるのはこの際問題にしないw
604 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 21:04:59.21 ID:N5R39axQ0.net] リピーターが多い汚いコードと リピーターが少ない綺麗なコード 後者はゴミだよね
605 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 21:14:50.20 ID:i7PAGBqeM.net] 世の中の多くのバカが勘違いしてるんだけど 綺麗なコード==間違えやすい製造に時間がかかるコード じゃないんだよね 綺麗なコードはバグが少ないし製造も早い 汚くても動くコードを早く書け!なんて言ってるやつは根本的に何かがズレてる そんな方針でコーディングしたら汚くて動かないコードを時間をかけて作る羽目になる
606 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 21:19:44.86 ID:kDeIpxe/p.net] 洗練された華麗なコードとインデント揃っただけの綺麗なコードを混同してるばか発見
607 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 21:22:07.78 ID:asXlnx2Ka.net] >>578 UI(Form)がモデル(何か仕事をするクラス)の参照を持つのは問題ないが、 逆は良くない。理由は、 (1) 役割分担があいまいになる 厨房の人間が1分おきにウェイターに注文を確認するのは適切な役割分担と言えるか? (2) つぶしがきかない Formの参照を握ってFormのメンバーを操作するクラスは、UIをWPFやUWPに 変更しても使いまわしできるか?
608 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 21:59:31.92 ID:ySggkKZM0.net] >>581 一読で理解できる知識がないのですが、勉強してみます。 ありがとうございます。
609 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 22:02:31.19 ID:ySggkKZM0.net] >>594 UIがデータ格納用クラスのインスタンスを生成 UIがプロパティを介してデータ格納用クラスの変数に代入 UIがコントローラにデータ格納用クラスのインスタンスを渡す みたいな感じでよろしいでしょうか?
610 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 22:27:53.20 ID:asXlnx2Ka.net] >>596 >UIがデータ格納用クラスのインスタンスを生成 誰がモデルのインスタンスを生成するかはケースバイケースだしどうでもよろしい >UIがプロパティを介してデータ格納用クラスの変数に代入 重箱の隅をつつくようだが、オブジェクトのプロパティやメソッドを操作する時に 「データ格納用クラスの変数に代入 」なんていう内部の実装を意識する必要はない。 必要はない、というか意識しなくても使えるように作るのがカプセル化。 >UIがコントローラにデータ格納用クラスのインスタンスを渡す 俺がMVCを理解してないだけの可能性もあるが、少なくともWindows Formでは VとCを分けたりしないのが普通と思う。コントローラなんてイラネ
611 名前:デフォルトの名無しさん [2018/05/13(日) 23:13:35.13 ID:TUC5Idjma.net] 話蒸し返して悪いんだが、xmlシリアライザーって今使ってるとやばいの?業務アプリの設定ファイルほぼこれで今までやってたんだが。。 とりあえず今やってる案件JSONで見直してみるか 一人で開発やってるとついついこういうのに遅れがちになるなぁ
612 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 23:15:02.41 ID:F2hiJGIV0.net] >>598 どんな用途で?
613 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 23:22:29.79 ID:KKJavIw30.net] csvとJSONなら圧倒的に後者のがメリットあるけど、 xmlとJSONなら規模がでかくない限りどっちでも良いや
614 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 23:33:10.62 ID:R40HLbPBa.net] >>598 業務ドカタ系でJSONなんかほとんど無いから安心しろ 客サイドは情シスですらJSON何それとか平気で言いやがるしOSSのライブラリが必要なのもネック
615 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 23:37:31.23 ID:OUJCfbgi0.net] >>600 Excelで編集できるできないって違いもあるのに どこが「圧倒的」なの? 根拠もない主張を強く推すなよ 願望だろ?お前の
616 名前:デフォルトの名無しさん [2018/05/13(日) 23:38:24.99 ID:PSHb3apy0.net] PCのiTunesって曲の情報管理全部XMLだよな どうにかならんのか https://i.imgur.com/zaooQAM.jpg
617 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 23:40:15.36 ID:u4TQvgwd0.net] Ant, Maven とか、Java系は、XML。 Android 画面の設定ファイルとか Windows でも、XAML で画面設定する プロジェクトの設定ファイルも JSON を設定ファイルに使うのは、JavaScript を使ったもの。 例えば、Node.js を含んだ、VS Code 他には、プログラミング言語自体が設定ファイルになるもの。 Ruby, Groovy, Haxe
618 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 23:48:46.83 ID:i7PAGBqeM.net] >>598 え?全然やばくないよ むしろ安定した手堅い選択肢と言っていい JSONを設定に使う製品はむしろ少数派
619 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 23:57:11.22 ID:F2hiJGIV0.net] >>604 >JSON を設定ファイルに使うのは、JavaScript を使ったもの 最近のC#もそうですが
620 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 23:57:32.58 ID:OUJCfbgi0.net] >>598 ヤバイってどういう状況? 殺されるの?
621 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 00:04:35.25 ID:3eK20qHjM.net] >>606 project構成は不評で結局xmlに戻ったね ASP.NETのappsettingsはボイラープレートがjsonになってるけどxmlやiniもサポートされてる
622 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 00:05:32.49 ID:wCRTCiuQ0.net] 素のJSONはコメントが使えないので設定ファイルには使い辛い。
623 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 00:17:32.79 ID:gDWY5JTja.net] 川俣さんのことを馬鹿にする人が2chには多いけど、この記事の趣旨は正しいと思う www.atmarkit.co.jp/fdotnet/extremecs/extremecs_18/extremecs_18_02.html 特定の技術への信仰と「俺スゲー」っていう間抜けな自己陶酔が結びついてる奴ってよくいるし、 このスレにも時々そんなのが出るけど、そういう奴のいうことは真に受けない方がいいですw
624 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 00:18:47.47 ID:Wjyh58JD0.net] >>608 まあ普通はjson使うがな
625 名前:デフォルトの名無しさん [2018/05/14(月) 07:03:43.68 ID:oC/RgBRx0.net] つか業務で使うなら余程のことがない限り枯れた技術の方が安定する
626 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 07:06:02.02 ID:Wjyh58JD0.net] >>612 COBOLとか?
627 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 07:55:56.39 ID:zbYXMED5M.net] COBOLは実際優れてるんだよなあ 低品質なPGでもほぼ完璧に見積工数通りに仕上がるし、バグもほとんど出ない 金持ちな客からきっちり工数見合いで金取れるならSIerにとってこれほど好都合な言語はない
628 名前:デフォルトの名無しさん [2018/05/14(月) 08:01:56.16 ID:wRU00x5/r.net] バグでないのはアカンやろw
629 名前:デフォルトの名無しさん [2018/05/14(月) 08:12:24.86 ID:I+nT90nna.net] それはバグが摘出できていないだけでは
630 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 08:30:53.44 ID:6WkSgDmyr.net] 工数が低減できるかどうかよりも見積が精確にできることの方が管理者にとっては重要ってわけだね
631 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 09:03:36.07 ID:coszmN5L0.net] バグが出ないに総ツッコミでワロタ
632 名前:デフォルトの名無しさん mailto:sage釣 [2018/05/14(月) 09:45:10.45 ID:tQHKR4rj0.net] 大体この時間にABENDしますって 異常停止をルーチンワーク化して運用している所があったな
633 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 10:05:11.99 ID:TQ68xzma0.net] 現場運用だと稀によくある 開発側がそれを織り込んじゃダメだけど
634 名前:デフォルトの名無しさん [2018/05/14(月) 19:19:28.87 ID:M+KhV3wka.net] >>598 だけど 蒸し返した話にレスくれてありがとう 自分の用途にはxmlでも問題なさそうでとりあえず安心した
635 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 20:12:46.13 ID:CBd8Qc4H0.net] SVGやMathMLのような外部の名前区間が出てくるとか、Xamlのようにかっちりしたものを書きたい場合はXMLが有利 文字列や数値しか出てこないような簡単な構造ならJSONの方が便利なことも多い。 Trueなのかtrueなのかとか考えなくても良くて、エディタがサポートしてくれるし、エスケープの仕様とかがシンプルで、ファイルも小さい。逆に言うとその程度なのでわざわざ切り替えるほどでもないとは思う
636 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 20:37:51.15 ID:5czuzhWO0.net] >>597 VCわけないんですか。 うーん・・・。 いろいろな設計方法があるということですね。 インスタンスの生成順として A→B A→C とAからCにBのインスタンスを渡す方法は分かるのですが、 C→A A→B とインスタンスを生成した時、CにBのインスタンスを返すことって可能なのでしょうか?
637 名前:デフォルトの名無しさん [2018/05/14(月) 20:54:23.97 ID:g5WxNsfna.net] デリゲート
638 名前:デフォルトの名無しさん [2018/05/14(月) 20:59:59.56 ID:IVWzojCa0.net] 【マンモグラフィー】おっぱい挟んで癌検査…必要? egg.5ch.net/test/read.cgi/bio/1517115639/l50 【ペットフード】告発したら3人組に棍棒で襲われた egg.5ch.net/test/read.cgi/hosp/1517110484/l50 【アマルガム】水銀を歯に? 厚労省『暴動が怖い』 mao.5ch.net/test/read.cgi/doctor/1517058870/l50
639 名前:デフォルトの名無しさん [2018/05/14(月) 21:00:16.16 ID:qPzo5Sk00.net] >>623 「返す」ことにこだわりがあるのなら結構難しい そこにこだわらず、単にCからbを扱えれば良いのならa.bでアクセス可能だろう
640 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 21:35:43.16 ID:1pddwh+ma.net] >>623 何でわざわざ話を複雑にするの? class C { A a; B b; public C() { a = new A(this); b = new B(a); } } 例えばこれじゃダメなの?
641 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 21:38:33.33 ID:Ju2ea7rBa.net] DIコンテナとか諸々のイディオムを知らない初心者だからまぁしゃあない MVCでもMVVMでもいいからチュートリアル的なものをひとつやっとくとだいぶ違うとは思う
642 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 21:40:59.32 ID:orCVIDzn0.net] >>626 まず「返す」の意味が分からないんだよな >>623 何のためにその実装が必要なのか、まずはそっちから 普通は複数の派生インスタンス扱いたいのならどこかでまとめて管理する方が楽 横に伸ばしていくんじゃなく中心から引っ張っていく形
643 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 23:18:38.41 ID:coszmN5L0.net] 馬鹿なこと考えないでジャンケンゲームでも作ってろって
644 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 23:19:52.93 ID:6thsxJoDM.net] >>623 今時のマルチレイヤな設計ってのは、「汚い場所」をどこかに決めて、そこが依存関係の解決を一手に引き受けるようにするんだよ で、他の部分は「汚い場所」に直接依存しないようにするの >>627 の例でいうと、Cを「汚い場所」とするならAがCを直接参照するのは良くなくて、 AからCのメソッドをコールバックしたいんだったらインターフェイスを介して呼ぶようにしたりする 汚い場所をどこにするかだけど、フォームアプリならフォームだったり、Webアプリならコントローラだったり 処理の起点となり、かつ、どのみち単体テストが困難な場所を選ぶのが一般的だ
645 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 23:24:11.06 ID:LQsoSslkM.net] なんだか要領を得ないからわからないけど Bを操作するメソッドをAに用意してCがA経由でBを操作するのはだめなのか?
646 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 23:36:29.55 ID:0rMMZwm+0.net] MVC をわかってないような奴に、何も教えられない まず、無料のRails チュートリアルで、MVC webアプリの設計から学べ
647 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 00:01:41.20 ID:NfuIoln0a.net] Railsってモデルがフォームの構造に依存するからなあ あんなのAccessのフォームなんかと同レベルだよ 変な癖がつくから初心者には適さない
648 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 00:21:50.03 ID:joJAW/ym0.net] >>633 スレチ
649 名前:デフォルトの名無しさん [2018/05/15(火) 06:26:55.76 ID:bIQIvbQJ0.net] MVVMを理解するには何からはじめたらいいの?
650 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 07:15:54.13 ID:OnclRViVM.net] >>636 何から始めても理解できない 分離するどころかやればやるほど結合が強くなる現実に打ちのめされるだけ
651 名前:デフォルトの名無しさん [2018/05/15(火) 07:32:22.06 ID:bIQIvbQJ0.net] やってみたけど難し過ぎて手に負えなかったってことだね。
652 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 07:36:31.19 ID:IL2LN/1vM.net] >>636 Vue.jsあたりかな XAMLはテンプレートやコマンドバインディングが複雑すぎて本質を掴みづらい WebのMVVM系フレームワークのほうがずっと見通しが良くてMVVMの本質を素直に実装してる
653 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 07:43:57.19 ID:dqMabmxz0.net] まずはUNDOなりマクロを実装するのに何が必要か 考えると、「C」の動きが見えて来るかと思うけどね GOFの最初の章にも説明はあるよ
654 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 07:48:40.53 ID:WESx87C+0.net] >>627 アクセシビリティに一貫性がありませんってエラーが… internalでインスタンス生成するとOKなんですが、フォームクラスはpublicで宣言してるんですけど。
655 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 07:52:16.57 ID:WESx87C+0.net] >>629 ご指摘を受けてメインのフォーム上でインスタンス管理しようとしているのですが、 アクセシビリティの一貫性というエラーが出てきています。 public partial class ExaminationForm : Form { public InitialSettingForm initialSettingForm; public InitialValues initialValues; で最後の行にアクセシビリティ一貫性のエラーが・・・。 3行目のpublicをinternalにするとエラー消えるのですがなんでだろう。
656 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 07:56:03.82 ID:jP3S3vDhM.net] そのビューの入出力項目と隠し項目とユースケースを抽出するだけだよ ログイン画面だったら 入出力項目として ・ユーザーid ・パスワード 隠し項目は無し ユースケースは ・ログインする なので class LoginViewModel { public string UserId { get; set; } public string Password { get; set; } public void Login() { // login impl } } こうなる あとはViewがVMを監視するために変更通知イベントなどを実装しましょう それだけ
657 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 07:59:07.77 ID:5QugQ9oMM.net] >>636 へのレスな↑
658 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 07:59:13.31 ID:4jNLOtgZa.net] >>642 InitialValuesクラスがinternalなんだろ publicに変えれば意図通りになる 言っちゃ悪いけど正しい設計とか気にするレベルじゃないと思うよ まずは汚くてもいいから一本何か形にできるようになってから考えればいい
659 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 08:38:53.30 ID:WESx87C+0.net] >>645 ああああああああ! そこなのかあああ! classってデフォルトでinternalになるんですね。 というかinternalって省略されるから気づきませんでした。 ここで半日費やしてたのでものすごく助かりました。 ありがとうございます。m(__)m
660 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 08:42:40.68 ID:WESx87C+0.net] >>645 一本ゲーム作ったんですが、form1(初期値)、form2(ゲーム)にほとんどぶっこんだオブジェクト指向ほぼ無視プログラムになってしまったので、 ゲーム内のデータ管理とform2だけでも分離しようとして悪戦苦闘しています。 はるか昔にBasicやったぐらいなので、インスタンスの参照渡しとかその辺がうまく実装できなくて・・・。 勉強用に買った本にもインスタンスの参照渡しなんて全く書いてないし・・・。(´・ω・`)
661 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 08:47:43.78 ID:WESx87C+0.net] あれでも //インスタンス生成 InitialValues initialValues = new InitialValues(); //インスタンスの参照渡し initialSettingForm.InitialValuesPointer = initialValues; としているのに フィールド”InitialValues"は割り当てらせません。常に規定値nullを返します。 となります。 実際にnull値が入ってるようで、initialSettingFormにインスタンスの参照は渡せていない模様・・・。 newしてるのになんで割り当てられませんと出るのでしょう??
662 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 08:55:56.96 ID:WESx87C+0.net] //インスタンス生成 ×InitialValues initialValues = new InitialValues(); ↓ this.initialValues = new InitialValues(); でした。すいません。
663 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 09:03:30.06 ID:WESx87C+0.net] >>648 すいません。ゴチャゴチャしてた変数名整理したらエラー消えました。。。 お騒がせしてもうしわけありません。
664 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 09:34:05.49 ID:IdD83PdN0.net] >>647 C++ 以外のすべての言語で、インスタンスの参照渡しだろ
665 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 10:42:46.03 ID:WESx87C+0.net] >>651 初代MSX-Basicでゲーム作ってた頃以来のプログラミングなので(;^_^A
666 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 10:47:12.03 ID:WESx87C+0.net] アホな質問ですが、 Class InitialValue に初期値を全部詰め込み、必要であればコントローラから参照しているのですが、 インスタンスの参照をinitialValueとすると initialValue.StartPointX+hoge などインスタンスの参照がくどくて読みづらい。 いっそiVとかしたいのですが、自分にしかわからない省略は良くないと聞いたもので・・・。 initialValue.StartPointX initValue.StartPointX iV.StartPointX どれが読みやすいコードでしょうか?
667 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 12:29:44.99 ID:2i/hB9LUM.net] >>653 どれもダメ initialValueをそのまま使わずに設定値を使うクラスにコピーして
668 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 13:05:19.58 ID:WESx87C+0.net] >>654 えええ! データはデータクラスで一元管理じゃないんですか? そうしないとフォームなどからデータクラスを変更した時に、 コントロールクラス側で
669 名前:その通知を受け取って もう一度データクラスからコントロールクラスにコピーする仕組みが必要になってきますよね。 [] [ここ壊れてます]
670 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 14:10:34.54 ID:l7Fk1Hkl0.net] 自分がアホだと分かってる割には自分の判断を信じてるのな アホ草
671 名前:デフォルトの名無しさん [2018/05/15(火) 14:32:03.09 ID:bP9crr2Q0.net] 勉強のためにプロが書いた大きなプログラムを見たんだが 変数が全部4桁英数字でランダムに発生させてるような文字列だった 僕ら初心者には「これ何の変数だっけ?」と分かりにくいだけなんだけど 大きなプログラムだと万が一、変数がダブったりするのを避けるためにそうするんですかね? 変数一覧表かなにか作るんですか?
672 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 14:38:53.82 ID:WESx87C+0.net] >>656 いや、最初はコピーする仕様だったんですが、 データクラスで一元管理をするアドバイスを受けて変えたところです。 コピーするんなら元の仕様のままでよかったのかということに。
673 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 14:54:54.48 ID:oubZzl5I0.net] >>657 変な変数名は難読化されてるだけ
674 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 15:26:01.82 ID:UPWhPqGh0.net] >>657 当然だよ。変数使うには課長級の決済が必要。変数管理台帳ファイルに全部記録されている。
675 名前:デフォルトの名無しさん [2018/05/15(火) 17:20:29.21 ID:nA4SMkbe0.net] >>659 そうか、公開用にリファクターしたのかな いちいち一覧表見ないと何処につながってるか見えないなんて不便だもんね
676 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 18:44:33.69 ID:Fj6Vms3Xa.net] >>658 変数名が妥当かどうか聞いてるんじゃなかったの?w そのInitialValueとやらのクラスを使う実装方法が妥当かどうかは実現すべき仕様を誰も知らないので 誰にも分からないと思うよw ローカル変数の命名に関しては、型名InitialValueをそのまま変数名にしても 何をやってるのか理解できるような文脈なら変数名をivにしても同じことでしょう。 だったら短い方がいい。 ただしローカル変数でも説明的な名前の方が適切な場合もあるので馬鹿の一つ覚えはダメ。 情況に応じて柔軟に
677 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 19:35:30.36 ID:9ix52upSr.net] >>660 初心者が真に受けるからやめれ
678 名前:デフォルトの名無しさん mailto:sage [2018/05/16(水) 10:08:34.12 ID:5p+fPd0U0.net] int[] intData = new int[10]; int intThread = -3; // 閾値 int intCount = 0; for (int i = 0; i < intData.Length; i++) { if (intThread >= 0) { if (intData[i] > intThread) { // 処理 intCount++; } } else if (intThread < 0) { if (intData[i] < intThread) { // 処理 intCount++; } } } 閾値がプラスとマイナスで条件式を変えたいんだけど、 中の処理が一回で済む書き方ってあります?
679 名前:デフォルトの名無しさん mailto:sage [2018/05/16(水) 10:48:11.15 ID:6eYS9/+hd.net] =を含まない条件式。 そして閾値というキーワード。 まとめない方がいいよ。
680 名前:デフォルトの名無しさん mailto:sage [2018/05/16(水) 11:18:13.11 ID:XvxRw+U50.net] >>664 せめてCountメソッドにしとけと思うぐらい。
681 名前:デフォルトの名無しさん mailto:sage [2018/05/16(水) 11:47:06.88 ID:B7aMvtuba.net] >>664 単に同じ処理を2回書く無駄をなくしたいだけなら&&と||を使って 条件式をまとめるだけ if((threshold >= 0 && x > threshold) || (threshold < 0 && x < threshold)) { .... } 値が不変のはずのthresholdの符号をループで毎回評価する無駄が許せないなら Func<int, bool> predicate = x => x > threshold; if (threshold < 0) predicate = x => x < thredhold; .... if (predicate(x)) { .... }
682 名前:デフォルトの名無しさん [2018/05/16(水) 12:22:33.98 ID:CHLBL3ILa.net] async/awaitって呼び出しのネストが深くなると、大元の
683 名前:呼び出しで波線が立ってすごくもどかしいんですが、気にしなくていいでしょうか?それとも呼び出しのやり方を見直したほうがいいのでしょうか [] [ここ壊れてます]
684 名前:デフォルトの名無しさん mailto:sage [2018/05/16(水) 12:29:36.06 ID:+dukoeHCd.net] >>668 ネスト関係なくね?
685 名前:デフォルトの名無しさん [2018/05/16(水) 13:23:25.14 ID:v6bC0eDAM.net] >>664 カウントをCountメソッドにして引数に突っ込むラムダ式を閾値によって切り替える
686 名前:662,666 mailto:sage [2018/05/16(水) 14:23:23.94 ID:mC1mbnpn0.net] ごめん。Count以外の処理もあるんだね。おらの回答は無視してくれ。
687 名前:デフォルトの名無しさん mailto:sage [2018/05/16(水) 14:55:11.81 ID:c5ZU3C2K0.net] dataGridViewのデータソースをBindingListにしています。 この時にデータの絞込を実装する方法はあるのでしょうか。
688 名前:デフォルトの名無しさん mailto:sage [2018/05/16(水) 19:51:48.39 ID:oU1pyBE30.net] >>668 波線が立つのは単にasyncなメソッドをawai付けずに投げっぱなし呼び出しの警告出ているだけじゃないのか >>669 の言う通りネスト関係ない
689 名前:デフォルトの名無しさん [2018/05/17(木) 00:16:57.84 ID:OeNqnCBl0.net] すいません。ちょっと教えてください。 //Form1にて Form2 f = new Form2(); f.show(); this.visible=false; としてForm2を開いて、Form1を非表示にします。 //Form2にて Form1 f = new Form1(); f.visible=true; this.visible=false; としてForm1に戻った場合、先程form1で入力した内容が消えてしまいます。 form1の内容を消さずにform2からform1に戻る方法を教えてください。
690 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 00:28:09.71 ID:yjgdFlmp0.net] >>674 Form1 f = 「new」 Form1(); 新しいForm1を作ったんだから前のはVisible=false;のままで表示されていない 例えばこうする //Form1にて Form2 f = new Form2(this);//Form2のコンストラクタの引数にForm1の参照を渡す f.show(); this.visible=false; //Form2にて private Form1 form1; //コンストラクタ public Form2(Form1 f) { InitializeComponent(); form1=f; } //戻る処理 form1.Visible=true; this.Visible=false;
691 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 00:35:36.78 ID:hTaKG8n8a.net] >>674 目の前の問題を解決するよりまずインスタンスとは何かちゃんと理解した方がいいねw
692 名前:デフォルトの名無しさん [2018/05/17(木) 00:41:03.31 ID:OeNqnCBl0.net] ありがとうございました。 大変助かりました。
693 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 00:45:08.18 ID:hTaKG8n8a.net] もっと簡単にこれでもできるよw var f2 = new Form2(); f2.Shown += (s, ev) => Hide(); f2.ShowDialog(this); Show();
694 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 16:26:49.89 ID:GnA4tN+Fi] アプリ全体の設定について、設定変更画面を作ろうとして、まずは設定そのものを1つのクラスにまとめることを考えた そんで各設定項目を public get, private set にしようと思ったら 設定画面クラスからは各設定項目プロパティの値を書き換えられなくって困ったんだが これってどうしたらいいのかな コンストラクタに引数渡して各設定項目を設定することも考えたけど、 設定項目が20こほどあるからそれはやりたくない プロジェクト分けて設定画面を別アセンブリにしてpublic get, internal setにしないといけないんかな
695 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 21:40:59.40 ID:Kw1Q24F60.net] class Program { TargetOpe targetOpe = new TargetOpe(); static void Main(string[] args) { Target [] target= targetOpe.InitializeTarget(); Console.WriteLine(target[1].x); } } Target [] target= targetOpe.InitializeTarget();の行のtargeOpeで 静的でないフィールド、メソッド、またはプロパティ 'Program.targetOpe' で、オブジェクト参照が必要です のエラーがでます。 newしてるのになんででしょう?
696 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 21:46:08.12 ID:xJtGZ4kt0.net] >>680 静的メソッドだから
697 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 23:37:38.13 ID:03oIkg7y0.net] C#初心者です。 ある変数のその時々の値によって呼ぶメソッドを変えたいため初歩的にifやswitchで分岐させていたのですが、毎回分岐させるのもどうかと思い変数が変わるタイミングでデリゲートに代入して呼び出す方法を試してみました。 しかしながらパフォーマンステストを行ったところ、10程度の条件分岐であればifでメソッド呼び出し >>> デリゲートで呼び出しという結果でした。 速度を重視しつつ動的に呼び出すメソッドを変えるという場合はデリゲートではなく毎回条件分岐を行ったほうが良いということなのでしょうか?
698 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 23:45:29.87 ID:xJtGZ4kt0.net] >>682 どんな用途で?
699 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 23:47:12.44 ID:fnhXcK68M.net] >>682 どうでもいい そんなミクロなレベルの速度が問題になることはない IO一つで跡形も無く吹き飛ぶ
700 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 23:49:51.73 ID:8WFSeAEB0.net] くだらねーパフォーマンスとくだらねー暗号化の話題が大好きだよな
701 名前:デフォルトの名無しさん [2018/05/18(金) 01:57:49.78 ID:3OrmdyFD0.net] パフォーマンスは重要だよ だけど、そんなのを語る以前に、コンピュータの仕組みについての素養を極端に欠く人が多すぎるんだよ 最近のC#入門書はよく出来ていて、大抵の本が最低限の仕組みが知識が身につくようページを割いて解説してるわけだけど・・・・分かっていない人ほど読み飛ばすんだな その結果、コンピュータの仕組みからしたらとてもありえないことを言い出す高卒様が出来上がるんだ
702 名前:デフォルトの名無しさん [2018/05/18(金) 02:22:20.29 ID:tl8rJsN/0.net] >その結果、コンピュータの仕組みからしたらとてもありえないことを言い出す高卒様が出来上がるんだ ありえないことなんてないだろ。頭硬すぎじゃねーの。「コンピュータはこうあるべきだ」とかに縛られてると新しい発想のソフトが生まれない。
703 名前:デフォルトの名無しさん [2018/05/18(金) 02:48:57.75 ID:3OrmdyFD0.net] 新しいものができたってのならいいけど、言うこと為すこと高卒様じゃあ・・・・
704 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 03:11:25.94 ID:eSpLSQVO0.net] >>682 条件次第なのでなんとも言えない インライン展開とかCPUのキャッシュとかまで関わってくる可能性がある 気にしなければいけないほどパフォーマンスを気遣うなら、JITの結果を比較したほうがいいけど、多くはそこまでするほどではない
705 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 04:39:51.09 ID:rO+HsCUo0.net] デリゲート使ってる時点で初心者じゃないだろw
706 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 07:16:45.92 ID:tpc+hoQ/0.net] >>690 いや、初心者がググった知識で背伸びしてるんだろ
707 名前:デフォルトの名無しさん [2018/05/18(金) 07:25:31.73 ID:40IvU0mB0.net] デリゲートとラムダ式ってちゃうの?
708 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 07:56:30.88 ID:mGKF1mXv0.net] >>681 ありがとうございます。 私アホでした。
709 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 08:01:25.12 ID:mGKF1mXv0.net] public class TargetOperation { Target[] target = new Target[Constants.MaximumNumberOfTarget]; public Target[] InitializeTarget() { for (int i = 0; i < Constants.MaximumNumberOfTarget; i++) { target[i] = new Target(); target[i].x = 100; } } return target; }
710 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 08:05:21.79 ID:mGKF1mXv0.net] 最後の行で クラス、構造体、またはインターフェイス メンバーの宣言でトークン 'return' が無効です。 です。 またアホなことをしてそうな気がしますが、昨夜からわからず・・・。
711 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 08:09:16.96 ID:WjwLG2oV0.net] >>694 } } return target; } じゃなくて } return target; } } じゃね
712 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 08:15:13.01 ID:SuBLVM61M.net] >>682 サンプルコードと結果貼れよ
713 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 08:34:05.30 ID:Yy5wJYpea.net] デリゲート使うくらいならストラテジパターン使うけど
714 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 09:57:58.57 ID:crDPuGzZM.net] >>688 こんにちは猿の学校卒様
715 名前:デフォルトの名無しさん [2018/05/18(金) 22:42:24.82 ID:6iumh9Vb0.net] DataGridViewのセルのValueを取得すると、既定の型がObject型なんですが、既定の型をstringに変更する方法はありますか? 今はConvert.ToStringで変換してるんですが、記述数が多くなりすぎて参ってます。
716 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 22:48:37.44 ID:/dMxgLqhM.net] As string
717 名前:デフォルトの名無しさん [2018/05/19(土) 01:23:31.00 ID:5ZvwKnWja.net] C#初心者でフォームアプリを作っているんですが 例えばあるクラスAが非同期で外部機器を延々ポーリングしていて、トリガーが発生したらクラスBの処理を行いたいといった場合 ・クラスAにクラスBのインスタンスを渡して、クラスBのメソッドを呼び出す ・クラスAに宣言したデリゲート(evemt?)にクラスBのメソッドをコールバック関数として登録し、クラスAはデリゲートを実行する どちらが一般的なコーディングなんでしょうか 後者だと複数実行したい処理があるとかなり冗長な気がするんですが、他にセオリーあれば教えて頂きたいです よろしくお願いします
718 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 01:32:36.76 ID:VIvIbG0Fa.net] 女?
719 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 01:53:30.54 ID:ZECHChrda.net] >>702 前者 デリゲートは現段階で呼び出し先が定まってなくて後でアドホックに処理を差し込みたいときに使うも 最初から呼ぶ相手が決まってるならそんなまどろっこしいことをしないで直接メソッドを呼べばよい
720 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 02:13:21.77 ID:FwiHY2dca.net] >>702 騙されちゃダメwww そういうのはイベントで実装する。 何故か? 前者で作っちゃったら、その外部デバイスをポーリングしてるクラス(普通はそのデバイスの名前を付けると思うけど)、 前者で作っちゃったら他に流用できないよ
721 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 02:22:01.39 ID:6pEEqPiCM.net] >>705 YAGNI もしそれが必要になったらそのとき変更すればいい そして、ほとんどの場合において結局必要にならない 職業プログラマじゃないとアプリのコードを目にする機会って少ないから、 .NET Framework自体のクラスのような不特定多数向けの設計を真似してしまいがち 一般に、アプリケーションプログラミングにおいては無駄な拡張性は極力組み込まずに必要最小限のコードでコンパクトに実装するのが正解 そのほうが結果的に変更時のコストも小さくなるよ
722 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 02:27:56.45 ID:FwiHY2dca.net] >>706 YAGNIなんか関係ない アホか 必要もない仕様変更を想定して寛容に複雑にするのは愚かだが、 抽象度の高い(つまり汎用性も高い)方のクラスにより具体的(つまりそのプログラムでしか利用できない)クラスの 参照を持たせて依存させるなんてもっと愚かだ
723 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 02:32:39.74 ID:6pEEqPiCM.net] >>707 自己矛盾してるね 依存させるのが何故愚かだと思う? 理由は、「必要もない(質問者のレスにない)仕様変更を想定しているから」に他ならないだろ
724 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 02:38:49.87 ID:FwiHY2dca.net] >>708 たぶん言っても無駄な人だと思うけど、普通はViewをModelに依存させるように作るのであって ModelをViewに依存させない(Modelの参照をViewが持ってはダメ)なのと同じ。 こんな基本が分からない奴が回答する側に回ってはダメだと思うw
725 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 02:40:16.65 ID:FwiHY2dca.net] >>709 いかん酔っぱらって逆を書いちまったw × (Modelの参照をViewが持ってはダメ) 〇 (Viewの参照をModelが持ってはダメ)
726 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 02:40:41.00 ID:6pEEqPiCM.net] あと、仮に>>705 の想定が正しいとするなら、抽象化すべきはクラスBではなくAの方でしょ 例えばAのデバイス依存部分だけをIDeviceインターフェイスとして切り出して委譲するとかね Aにイベントを持たせるんだと、別のデバイスを監視するクラスCができたら AのイベントとCのイベントをそれぞれ個別にイベントハンドリングしなきゃいけなくなる ちゃんと頭使おうね
727 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 02:47:51.94 ID:6pEEqPiCM.net] >>710 揚げ足取るようで悪いけど、Viewの参照をModelが持つこと自体は何の問題もないよ というか、そう
728 名前:オないとMからVへの変化通知が実現できない イベントを使うにしても結局参照は持ってるよ MVPといって、IViewのようなインターフェイスを通してMからVを呼ぶパターンもあるね なるべく疎にしたいのは型同士の依存関係の話で、参照するのがダメなわけじゃない [] [ここ壊れてます]
729 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 02:58:10.85 ID:FwiHY2dca.net] >>711 そういうのをYAGNIっていうんだよw 本当に何もわかってないねお宅w
730 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 03:03:16.45 ID:FwiHY2dca.net] まあ質問者の>>702 に言うけど、実際書いてみれば イベントで実装した方がずっとコンパクトかつ可読的に書けることが分かると思うよ。 Bが仮にAでしか利用しないクラスだとしても、普通はAはイベントを発行するだけ、 Bはそのイベントを受信して何か処理をする、ってやった方がずっと分かりやすい
731 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 03:21:21.26 ID:ZECHChrda.net] メソッド一つだけならイベントでもいいけど、少なくとも>>702 はメソッドが複数あるときもあると言ってるんだからイベントは不適切でしょ インターフェイスで纏めたほうが扱いやすい あえてそこにインターフェイスを噛ませる必要があるかどうかはYAGNIの問題だが、それとはまた別の観点の判断だ
732 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 06:03:27.91 ID:uNgfR/HH0.net] プログラムで使用するテキストデータを、excelで管理しています closecXMLを使ってアクセスしていて、これ自体は無事に実装できました テストが一通り終わって、テキストデータも確定したので、データの散逸や 改ざんを防ぐために実行ファイルに埋め込みたいのですが、リソースとして 取り扱うことってできないでしょうか 具体的には、 workbook = new XLWorkbook(filename); として開いているところがあるのですが、このfilenameにリソースファイルの 名前を当てることができないのか調べています string filename = "Properties.Resources.textdata.xlsx"; としてアクセスできれば簡単だと思っていたのですが、そうはいきませんでした
733 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 06:14:14.58 ID:gOuRua2dM.net] ユーザー定義リソースは何でも書けるよ。
734 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 06:37:08.02 ID:uNgfR/HH0.net] 具体的にどういう手順を踏めばよいのでしょう? excelデータは1,000行以上あるので、取り込みではなく手入力が必要だと ちょっと切ないです でももう修正しないもの(修正するとしても部分的)ですから、機械的に データを移行できるのであればそれでも問題ありません
735 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 07:47:44.04 ID:gOuRua2dM.net] 静的に呼びだすなら5つのAPI FindResource() LoadResource() SizeofResource() LockResource() FreeResource() 動的に更新するなら更に3つ BeginUpdateResource() EndUpdateResource() UpdateResource()
736 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 07:53:26.18 ID:z3BmCHYgM.net] >>706 こういう奴が頻繁に現れるのを見るとYAGNIの罪は大きいなって思う
737 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 07:55:26.69 ID:7BFPa/Jf0.net] 別に複数でもそんな多くなければイベントでも問題ないんじゃねぇかな
738 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 08:03:52.08 ID:uNgfR/HH0.net] >>719 ありがとうございます、それぞれのAPIについて調べてみます
739 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 08:13:32.92 ID:7BFPa/Jf0.net] 結局バランスの問題だな。もちろん人によってバランス違うけど。 イベントによって結果再利用性あがるけど、 >イベントで実装した方がずっとコンパクトかつ可読的に書けることが分かると思うよ。 の通り、可読性の観点からしてもイベントの方が分かりやすいと思う。 これぐらいもYAGNIとかいってるようじゃ、極端すぎてバランス感覚おかしいんじゃねぇかな。
740 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 09:36:48.03 ID:ZECHChrda.net] >>723 極端なのは君だと思うぞ まさかクラス間の依存関係に全部いちいちイベントを噛ましてるってわけではないよね その上で、この例において特にイベントを使うのが適切だと判断した合理的な根拠は? 少なくとも>>702 のレスからはそれを具体的に読み取れないから、根拠のない仮定に基づいた無駄な拡張性だと言ってるんだけど
741 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 10:02:26.30 ID:35k9lSzB0.net] >>696 ( ゚д゚) ありがとうございます。 その通りです。 一晩見直したのに気づかなかった・・・。
742 名前:デフォルトの名無しさん [2018/05/19(土) 10:47:04.32 ID:zmVeGZ3Ia.net] >>702 です みなさん色々なご意見ありがとうございます 基本的にはイベント等で疎結合にしたクラス作りが望ましいが、ケースバイケースで状況に応じてどちらの実装でも問題はないといったところでしょうか レスして頂いた内容は非常に参考になり、まさにその両者のいい分で自分もどちらが最適解なのか悩んでいましたが、結局状況を判断出来る私が決めて実装するしかないのかなと思いました 途中インターフェースをかましてすれば良いとのレスがありましたが、どういった実装をすればいいのか全くわかりませんでした。この方法でも検討してみたいので、すみませんが具体的な実装を教えて頂けないでしょうか
743 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 11:44:50.68 ID:mNRmauI8a.net] >>726 interface IAlert { void Set(Severity severity); void Unset(); } たとえば、あるアラートに対してこういうインターフェイスを定義する クラスAはこれをコンストラクタで受け取り、温度センサーの値が閾値を超えたら危険度に応じた引数でSetメソッドを呼ぶ 温度が低下して閾値を割ったらUnsetを呼んで解除する このIAlertインターフェイスを、具体的な実装、たとえばパトランプを操作するクラスが実装するわけ こうしておけば、 パトランプじゃなくて画面でアラート状態を表示したくなったときにAに手を入れずにIAlertを実装するだけで済む もちろん、パトランプしか想定しなくていいなら直接パトランプクラスのメソッドを呼んでもいいし、Unsetが必要ないならイベントでもいいかもね ただしイベントの場合はBからAへの密結合が発生するとか、それを避けるなら追加で橋渡しのコードが都度必要になるといった懸念点もある
744 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 11:49:58.15 ID:F9kKaYLV0.net] >>700 拡張メソッドでも定義すれば
745 名前:デフォルトの名無しさん [2018/05/19(土) 12:01:43.59 ID:hl18fyg5a.net] >>727 早速ありがとうございます ちょっとまだピンときませんが、じっくり検討してみたいと思います
746 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 12:20:10.98 ID:35k9lSzB0.net] BASICしか経験がないど素人がC#始めたんだけど、 クラス間の参照の受け渡しというのが難しいです・・・。 クラスの参照を配列に入れて、それを受け渡しするとか動くコードはなんとかかけてるんだけど、 自分で一体何をしているのか分からなくなる時がある。
747 名前:デフォルトの名無しさん [2018/05/19(土) 13:04:35.48 ID:uWI+Vuzc0.net] >>730 真っ先に直さなきゃならないのは、「スコープの広い配列にインスタンスを入れておけば、どこからでも全てのデータにすぐにアクセスできていいじゃん!」と思っちゃう点でさあ C#のスキルの無さから設計までメチャクチャにしてるんじゃないのかねえ
748 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 13:15:00.73 ID:m/ZPa8pNM.net] BASIC系って悪い習慣を覚えちゃうよね 特にVBAはひどい
749 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 13:27:26.49 ID:m/ZPa8pNM.net] >>727 それだと温度センサーがアラートをコントロールしているように解釈される 常識的に考えてアラートのコントロールは温度センサーの仕事ではないだろう これは名前の問題であってインターフェースよりイベントを使えと言ってるわけではない
750 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 14:08:44.26 ID:35k9lSzB0.net] >>731 その通りです。 すべての変数をどこからでもアクセスしたい衝動にかられます。 Aのクラスの機能がA1とA2に分化できるから分けようと思うと、 AはCを参照してたからA1とA2両方にCのインスタンス参照を渡そうとなり、 結局機能は分けれたものの、どのクラスがどのクラスを参照してるのかがよくわからなくなってきました。
751 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 14:11:58.71 ID:35k9lSzB0.net] 値1、2個を渡すのは簡単なんですけど、 クラスのインスタンスを100個つくるためにその参照を配列にいれる 参照の入った配列をreturnで返す とかしてるとなんの値をいじってるのかわけわかめです。 これまで値と参照の区別をして思考してこなかったからなのかなぁ。
752 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 14:31:05.11 ID:m/ZPa8pNM.net] >>735 オブジェクト指向で参照を共有することは少ない 共有するとしてもイミュータブル、ステートレスにして共有によるデメリットを消した上で共有する 長時間生存するインスタンスがあちこち参照しあって状態を刻々と変化させていくような設計が最悪のパターン
753 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 15:29:17.89 ID:7BFPa/Jf0.net] >>724 それは君が経験値不足なだけ。>>702 である程度は想像できる。
754 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 16:13:13.77 ID:t/qQFhE80.net] 休みだってのに暇な奴ら
755 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 16:13:20.90 ID:35k9lSzB0.net] >>736 なるほどCを参照しているA1、A2はCと独立したオブジェクトじゃなくなってしまいますものね。
756 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 16:20:14.69 ID:35k9lSzB0.net] Target[] target = new Target[Constants.MaximumNumberOfTarget]; public Target[] InitializeTarget() { for (int i = 0; i < Constants.MaximumNumberOfTarget; i++) { target[i] = new Target(); target[i].x = 100; target[i].y = 100; } } こういうふうにForm1のクラスでターゲットの座標100個発生させて表示させます。
757 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 16:23:28.77 ID:35k9lSzB0.net] ターゲットをクリック出来たら消す 一定時間クリックできなかったら点滅させる ゲーム終了後にターゲットの座標をテキストファイルに書き出す などの処理がすべてForm1上に存在することになるのですが、 それでもいいのでしょうか? これらの作業を無理にクラスに分けようとすると ターゲットクラスインスタンスの参照100個を渡さなくてはいけなくなります。
758 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 16:41:59.05 ID:H4w+h7ji0.net] そんなミニゲームどう組んだっていいよ
759 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 16:44:12.66 ID:5aQMcYYW0.net] >>741 何が駄目なのかわからない 何か縛りプレイしているのならその前提から出してもらわないと たとえば特定のデザインパターンの勉強が目的だとか
760 名前:デフォルトの名無しさん [2018/05/19(土) 16:55:29.90 ID:uWI+Vuzc0.net] どうせこの人は一生治んないよ ただプログラムなんてちゃんと動けば目的達成できるんだし、まあ、これでも良いんじゃないの
761 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 16:56:47.37 ID:F+BrwfqWa.net] listやdictionaryを使ってないのかな だったらまだそのアプリを作る段階まで届いてない
762 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:10:27.25 ID:UwdEx54W0.net] まあ普通はエンジン部分だけ切り離すわな
763 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:20:42.40 ID:35k9lSzB0.net] target class にx,y,timeなどメンバ変数7個程度を入れてます。 このターゲットを表示するためForm1上にクラスのインスタンスを参照する配列を置くと、 表示とゲームのコントロールすべてがForm1上におくことになって見苦しいのかと思いました。 でもテトリスとか他のミニゲームみても同じような設計になってるんですね。 無理して別クラスにするよりもtargetクラスの配列に関連した、表示、ゲーム処理はForm1上に置いてみます。 (というか実際に配列を別クラスに切り分けたら、余計読みづらくなった・・・)
764 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:22:57.84 ID:35k9lSzB0.net] >>743 縛りはなかったのですが、見やすいコードということを考えすぎてました。 まずは動くコード書いて、人の書いたプログラムも見ながら勉強していきます。
765 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:23:58.19 ID:35k9lSzB0.net] >>745 最初Dictionay使うつもりだったのですが、 構造体かクラスに変数をまとめたほうがよさそうだったので今の形になりました。
766 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:27:35.68 ID:9OoA3M8l0.net] >>741 何故そのような結論になるかわからない提示された仕様からだとテキスト出力クラスを作ろうって気になるかな targetの渡し方はコンストラクタやメソッド引数にするかは自由 Hoge hoge = new Hoge(); bool Output(){ hoge.Set(target); return hoge.Output(); }
767 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:28:05.32 ID:m/ZPa8pNM.net] >>747 複数のTargetを管理する専用のクラスを書くんだよ Formが全てのTargetを管理するのはオーバーワークだろ
768 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:30:56.31 ID:TbcarOIZ0.net] >>734 貴様にはpublicを禁止する呪いを掛ける
769 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:45:50.05 ID:m/ZPa8pNM.net] それは呪いではなく祝福であった
770 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 17:52:30.85 ID:F+BrwfqWa.net] そしてinternalを使い始めた! ゴミグラマの出来上がり
771 名前:デフォルトの名無しさん [2018/05/19(土) 18:14:06.88 ID:RoboUWmL0.net] と、すでに出来あがったゴミグラマが申しておるようですが
772 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 18:20:19.09 ID:35k9lSzB0.net] >>751 はい。 それやってみたのですが、フォーム2から初期設定値を初期値格納クラスに入れていて、 初期値格納クラスの参照、Targetクラスの参照、Targetクラス管理クラスの参照が入り乱れて書いている自分でもわけわかめになりました。 二つのプログラムを見比べた結果Form1でTarget管理させたほうがまだましなのかと・・・。 もっと規模の大きなプログラムだと違ってくるのかもしれないのですが。
773 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 18:39:40.28 ID:H4w+h7ji0.net] >>756 小さいの組み合わせてでかいの作るんだから でかいと組み方が変わるなんて言ってるやつは そもそも下手クソなんだよ
774 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 18:44:17.10 ID:m/ZPa8pNM.net] >>756 入り乱れないよ
775 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 18:44:51.84 ID:t/qQFhE80.net] 素人が責務に応じたクラスの分割を理解するなんて 一朝一夕どころか数ヶ月単位の時間が掛かると思うが、このやり取りそこまで続けるの?
776 名前:デフォルトの名無しさん [2018/05/19(土) 18:46:55.05 ID:RoboUWmL0.net] >>759 素人でも初心者でもわかる奴は最初からわかってるけど? むしろ数ヶ月も時間をかけてわかって気になってるおまえが何もわかってないよ
777 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 18:48:37.83 ID:m/ZPa8pNM.net] >>759 理解しやすい構造になるわけだから素人も安心
778 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 18:49:08.43 ID:t/qQFhE80.net] >>760 猿には聞いてねえから飼育員さんとママゴトしてな
779 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 18:51:06.08 ID:t/qQFhE80.net] >>761 んでいつまで続けるの? ウザくなってきたからスレ潰しするのもいいかなと思ってる
780 名前:デフォルトの名無しさん [2018/05/19(土) 18:54:14.32 ID:RoboUWmL0.net] バカ、スレ潰し宣言wwwww これはさすがの俺も意表をつかれた度と超えたバカwwwww
781 名前:デフォルトの名無しさん [2018/05/19(土) 20:59:50.70 ID:gCADl0W/M.net] C#のスレだと思ったのに。
782 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 21:13:55.60 ID:35k9lSzB0.net] リストボックスの値を取得するのって string Gender = this.Gender.SelectedItem.ToString(); の一文だけじゃだめなの? なぜか値が取得できない。
783 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 21:17:27.89 ID:BEl4Etk9a.net] あたまがくらくらする
784 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 21:28:02.54 ID:sYzD4mGA0.net] >>766 まず「Gender」が2つ出てくることに違和感はないのか ListBoxは使ったことないけど https://msdn.microsoft.com/ja-jp/library/system.windows.forms.listbox.selecteditem(v=vs.110).aspx string GenderStr = this.Gender.SelectedItem.ToString(); にでも変えれば動かないか?
785 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 21:30:21.29 ID:35k9lSzB0.net] >>766 すいません。 自己解決しました。 大分疲れてきたようです。 寝ます・・・。
786 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 21:32:29.68 ID:35k9lSzB0.net] >>768 すいません。 ご親切にありがとうございます。 値を出力するクラスにwriteline書き忘れてました・・・。 値の取得は上のコードでOKでした。 朝から一日プログラミングして悪い頭が限界を超えているようです。 今日はもう寝ます。
787 名前:デフォルトの名無しさん [2018/05/19(土) 21:34:12.28 ID:RoboUWmL0.net] 教えたがりのバカ>>768 の立場wwww
788 名前:デフォルトの名無しさん mailto:sage [2018/05/20(日) 16:52:01.54 ID:O/HF5kqh0.net] >>719 いろいろ調べてみましたが、私が探している解決策とは異なったようです 一番知りたいのは、埋め込みリソースに対し、通常のファイルアクセスのように アクセスする方法はないのか、という点です (XLWorkbookのコンストラクタには、ファイルパスを与えますので) 今回のデータは参照のみ必要ですので、リソースとして埋め込んだ場合に 変更が効かなくなっても問題ないと考えました 712で書かれた内容は、「自分でファイルフォーマットを定義して、それを読んで 切り貼りするコードを自分で書くべし」、ということでしょうか そのために有用なのが714のAPIということですか
789 名前:デフォルトの名無しさん mailto:sage [2018/05/20(日) 18:41:56.82 ID:9fk8EC6VM.net] ないよ 一回テンポラリファイルに出力すればいい 使いたいライブラリがストリームを受け取るバージョンをサポートしてるならそっちを使ってテンポラリファイルは要らない
790 名前:デフォルトの名無しさん mailto:sage [2018/05/20(日) 19:32:08.73 ID:QOdmSKaj0.net] やったことないけど これは動かないの? https://support.microsoft.com/ja-jp/help/319292/how-to-embed-and-access-resources-by-using-visual-c
791 名前:デフォルトの名無しさん mailto:sage [2018/05/20(日) 19:59:07.95 ID:O/HF5kqh0.net] >>773 ありがとうございます 少し調べてみた限りですと、closedXMLはストリームからの読み込みはサポートして いないようなので(当然の気もしますが)、テンポラリファイル等別の手段を考えます >>774 「リソースにアクセスしたい」ではなく、「ファイルにアクセスするメソッドにリソースを 渡したい」でした 768のおかげでそのまま実現するのは無理とわかりましたので、疑問としては解決です
792 名前:デフォルトの名無しさん [2018/05/21(月) 08:06:02.24 ID:yxdsvVjy0.net] Json保存すると漢字が化ける。なぜばけるの? Jsonの問題なのか、StrreamReader の問題なのか、StrreamWriterのもんだいなのか? 取り合えず、Read、Writeともに shift_jisでEncode指定したら化けないようになったが、意味がよくわからない。 普通に考えるとStringにShift_JIsが入っていて、それを認識しているなら、Read WirteにShift_jisを指定する必要はないと思うのだ。だからStringにはそういう情報は 入ってない筈だ。ファイルにSHiftJIsの属性がはいっているなら、Write側だけに指定 すればよいはずだ。ReadにもSHIFT_JISを指定しなければならないということはファイルにも その属性は保存されていないということだ。Stringに属性を保存しておけばすべて丸く 収まるとおもうのだが、なぜそうしないのだろうか?
793 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 09:30:17.64 ID:HN6x0Zrba.net] 文字列の実装には内部的にUnicodeで扱うものとバイト列として扱うものとがある。 前者は入出力時にそれぞれバイト列->UnicodeとUnicode->バイト列をどのようにマッピングするか(i.e. エンコーディング)を指定する必要がある。 後者であればその必要はない。 一方で前者は外部から文字列を読み込んでも内部的にはUnicodeだから読み込んだ文字列に対して処理を行う際に文字コードに悩む必要はない。 後者はプログラムを書いている時の文字コード, 入力された文字コードを常に意識せねばならん。 一長一短だからどっちの実装もあり得るが.NETは内部Unicodeが標準的だということだ 文字列自身に自分のエンコーディング情報を埋め込むのはやめておけ 禄でもないことにしかならん
794 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 10:54:12.62 ID:wG0UA8oX0.net] JSON はJavaScript だから、UTF-8 Ruby, Python もそう。 ネット上に流れるテキストも同じ SHIFT_JIS を使う言語は、まずない。 PowerShell も、UTF-16 ここ数年は、Unicode に統一された。 それ以外の、SHIFT_JIS, EUC-JP は使わない
795 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 12:22:48.67 ID:ZMitaTGGM.net] >>778 何言っても通じないとは思うが、お前の愛するRubyの文字列の扱いは他と異なっている Rubyの文字列は内部的にはエンコーディング情報を持ったバイト列だ 特にWin環境では非常にトラブルの原因になりやすいゴミ仕様である
796 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 12:34:00.26 ID:wG0UA8oX0.net] Ruby は各文字列に、エンコードを持てるから、すごい 例えば、文字列a がSHIFT_JIS で、b がUTF-8 として、 a + b みたいに、文字列を連結すると、エンコードエラーになる
797 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 12:36:23.24 ID:ZMitaTGGM.net] >>780 うん。何一つメリットのないカス仕様だね。
798 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 12:50:56.22 ID:0W5b/XyUM.net] >>775 ClosedXML.Excel.XLWorkbookコンストラクタにはStream取るのもあるんだけど
799 名前:デフォルトの名無しさん [2018/05/21(月) 13:22:41.39 ID:yxdsvVjy0.net] >SHIFT_JIS を使う言語は、まずない。 エクセルファイルをCSVにEportしたファイルだけど、 var sr = new StreamReader(fs, Encoding.GetEncoding("shift_jis")) これでなら正常に読める。ということはエクセルはshift_jisだと思うが、、
800 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 14:04:00.83 ID:hRf5uVYXM.net] とりあえずそのRubyアスペに触るのを止めて
801 名前:デフォルトの名無しさん [2018/05/21(月) 15:12:20.28 ID:yxdsvVjy0.net] >一方で前者は外部から文字列を読み込んでも内部的にはUnicodeだから読み込んだ文字列に対して処理を行う際に文字コードに悩む必要はない。 >後者はプログラムを書いている時の文字コード, 入力された文字コードを常に意識せねばならん。 前者はDefault unicode 後者はDefault bytecode ということであれば、shift_jisなど他にもたくさんの文字コードが来る可能性があるのだから、コードを意識することにあまり違いはない と思うが、、 >>780 その考え方の方が正しいと思う。 そもそもunicoeをディフォールトにするんだったら、漢字はそのまま表示できるんじゃないの? 其れなのにXcelは何でわざわざSHIFT_JISをつかうんだろ。
802 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 15:24:30.40 ID:wG0UA8oX0.net] Windows も内部的には、UTF-16 だろ。 PowerShell, ブラウザも、UTF-8 保守費用が掛かるから、MS も、SHIFT_JIS を辞めたいはず Excel など、長年使っている人が多いから、やめられないだけ
803 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 15:43:54.89 ID:s3jYOwAha.net] >>785 Stringのエンコーディングが固定なら、IOのときだけ文字コードを意識すれば済む 素人のちょっとしたツールのレベルならともかく、一般的にはIとOの間(P)の部分がプログラムの殆どを占めるんだよ Dictionaryのキーの文字コードが混在してて、存在するはずのキーの検索に失敗するとか悪夢だろ
804 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 21:17:05.23 ID:83cG7/bYM.net] ビルドしても、ファイルできなくて意味わかんねえ
805 名前:デフォルトの名無しさん [2018/05/21(月) 22:02:39.74 ID:o82N7H0r0.net] >>783 Excelは言語じゃない。 日本語版のExcelのCSV出力時の文字コードがShiftJISなのは単に過去との互換性のため。 ちなみにBOMが付いていればUTFのCSVでも読み込める。
806 名前:デフォルトの名無しさん mailto:sage [2018/05/21(月) 22:04:28.66 ID:ZCJ7EsPBa.net] 漢字が文字化けするのは保存した文字コードと読み込んだ文字コード指定が違うから それだけ つまりやった側の間違い どこで間違えたか手順を順に見直すべし
807 名前:デフォルトの名無しさん [2018/05/21(月) 22:11:44.14 ID:KnpxsRSU0.net] やった側ってどの側だよw
808 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 00:01:50.29 ID:1gACj0o60.net] sqliteとの連携に関して質問です なんらかのクライアントで先にテーブルを作り、レコードもinsertしておいて、それを読み込むプログラムを作りたいのですが、既存のdbファイルはどこに配置すればよいのでしょうか デバッグしてみたらno such tableと言うようなエラーが出たので、どうやら実行時に新たにdbファイルを作ってそれを読もうとしてしまっているようです
809 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 00:20:52.78 ID:V2R/cizEa.net] >>792 どこもクソも決めるのはお前 SQLiteはDBのファイルパス指定して開けるだろ SQLiteは普通のDBMSと違って、システムのどこかに共通のデータストアがあるみたいな考え方をしないんだよ ファイルを名指しするのが基本
810 名前:デフォルトの名無しさん [2018/05/22(火) 03:32:12.88 ID:MRvdbbs3M.net] Accessのmdbみたいな感じかいな?
811 名前:デフォルトの名無しさん [2018/05/22(火) 06:38:16.66 ID:GCRmPVlZ0.net] >>790 「文字コードなんて意識する必要はない。機械に任せたほうがいい。」とは考えないのだろうか? そもそもテキストとは文字コードによって表現された文字の集合体だ。テキストを保存するIOに たいしてわざわざ文字コードの情報を削除して保存するのは何故なのだ。正気の沙汰とは思えんな。
812 名前:デフォルトの名無しさん [2018/05/22(火) 06:43:45.86 ID:GCRmPVlZ0.net] >Dictionaryのキーの文字コードが混在してて、存在するはずのキーの検索に失敗するとか悪夢だろ 文字コードなんて本質的なことじゃない。だから混在してもかまわない。 それを人手でやろうとするから「混在する悪夢」が発生する。 そういう場合にこそ機械に自動的にやらせるべきだろう。
813 名前:デフォルトの名無しさん [2018/05/22(火) 06:51:24.64 ID:GCRmPVlZ0.net] >日本語版のExcelのCSV出力時の文字コードがShiftJISなのは単に過去との互換性のため。 >ちなみにBOMが付いていればUTFのCSVでも読み込める。 互換性のためならもっとほかの方法がある。アプリのためにコードを弄るなんて最悪の方法だろう。
814 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 07:58:03.61 ID:j6MjsmBId.net] >>793 あざすぅ
815 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 09:20:46.86 ID:uYoKmc1Q0.net] ここにきて.NET CoreがWPF, Windows Formsを救済ってか
816 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 09:31:30.78 ID:7LgkrdmnM.net] >>795 >>796 >>797 屁理屈言っても誰にも認められない x=x+1は式としておかしいと言い張ってプログラムが全くできなかった人がいたけど その人と同じ 文字コードがいろいろあるのは仕方ない それぞれの都合で整数に文字を割り当てる方式がちがうので文字化けする 文字コードの情報というものがそもそもないので削除なんてしてない 自動判定は単なる憶測にすぎない その自動判定だって誰かが書いたコードが判定してるんであって 機械に任せると言うのは言ってることがおかしい
817 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 10:37:32.58 ID:svO22mue0.net] public double Re { get; set; } ってプロパティを省略して書くと見やすくていいんですが、 他クラスから参照するだけの変数だと、 Reは使用されていませんって警告がずっと出てうっとうしい。 何かいい手はないでしょうか?
818 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 10:37:46.91 ID:np9ncSKga.net] 別に文字列を文字セット/エンコーディングごと抽象化するライブラリとか作ってくれて良いのよ? 既存文字列と互換性があって使い勝手, 拡張性と統一性と性能が担保されるなら普及もするだろう でも曲がりなりにもそれ続けられてるのってRubyくらいで他に思い浮かばない なんで無いのかと言うけど試されてないわけないんだよ, 現実的じゃないから普及してない
819 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 10:58:36.99 ID:sxJmXMb80.net] >>801 { get; private set; } とか?できないんだっけ?
820 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 11:14:09.28 ID:7Riaak3V0.net] WPFで WindowStyle="None" AllowsTransparency="True" Background="#01FFFFFF" でほぼ透明だけどマウスイベントを受け取るウィンドウを作ったのですが これとおなじことをFormでやりたいのですがやりかたがわかりません どのようにすればいいですか?
821 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 11:23:07.15 ID:svO22mue0.net] >>803 できると思います。 データ格納フォルダB:Aフォームから値を取得 Cクラス:Bから値を取得 となってるのでsetもpublicでないと困るんですよね。 データ格納フォルダBの値はAから値取得した後なにも処理がないので、 「Reは使用されていません」って正しい警告なんですけどねぇ。 格納しているデータが10個あって警告10個もでるとさすがにうっとうしい。
822 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 12:14:32.87 ID:CqasDiEMM.net] >>795 BOM付きのUTF以外は、文字コードの情報なんてものは最初から存在しない。 また、文字コードの自動判別も完璧ではなく、場合によっては全く判別出来ない。
823 名前:デフォルトの名無しさん [2018/05/22(火) 12:16:10.65 ID:O9GDwfVPM.net] BのコンストラクタにAからの値を受け付けて public readonly double Reに渡すとかじゃだめなんね?
824 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 12:36:59.84 ID:2EZjLjzja.net] >>804 Formはウィンドウ全体のアルファはOpacityで指定できるけど、 背景だけ透過させるとかは簡単にはできなかったような yellow.ribbon.to/~azumaya/doc_dotnet_uplayeredwnd.php >>805 そもそも>>801 みたいな告なんか出ないと思うけど... 何か盛大に勘違いしてる予感...
825 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 13:05:58.78 ID:7Riaak3V0.net] >>808 WPFだと簡単にできたけどだめですか。。 背景透明なウィンドウとOpacity≒0で全体をほぼ透明化したウィンドウを重ねて代用します
826 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 13:21:14.65 ID:svO22mue0.net] >>808 勘違いなのかなぁ・・・。 すいませんもうちょっといろいろ実験してみます。
827 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 13:55:20.14 ID:svO22mue0.net] もともとスタートアップだったform1からform2にスタートアップを変更したいと考えています。 Program.csの static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new InitialSettingForm1()); } のForm1をForm2に変更したのですがどうもうまくいきません。
828 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 14:00:09.60 ID:svO22mue0.net] form1が出てからform2が表示されているような…。 試しに public ExaminationForm1() { InitializeComponent(); MessageBox.Show("a"); } と入れてみると メッセージボックスが表示→okをクリック→form2が表示 となります。 他にも設定しなければいけないところがあるのでしょうか・・・。
829 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 14:01:17.37 ID:svO22mue0.net] また変なことやってるのかなぁ・・・。
830 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 14:48:09.94 ID:oCYWBo6GM.net] InitialSettingなのかExaminationなのかどっちだよ ExaminationForm1のコンストラクタにブレークポイントおいて実行 ブレークしたら呼び出し履歴を確認する
831 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 17:11:30.57 ID:svO22mue0.net] >>814 Debugで確認していったらどうもインスタンスの参照を渡せていないようです。
832 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 17:12:13.75 ID:svO22mue0.net] public partial class Form1 : Form { Form2 form2; Class1 class1; public Form1() { InitializeComponent(); form2 = new Form2(); form2.Show(); class1 = new Class1(); form2.Pointer = class1; } }
833 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 17:12:47.68 ID:svO22mue0.net] public partial class Form2 : Form { Class1 class1; public Class1 Pointer { set { class1 = value; } } public Form2() { InitializeComponent(); int i = class1.fuga(); MessageBox.Show(i.ToString()); } }
834 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 17:13:21.01 ID:svO22mue0.net] public class Class1 { public int hoge = 2222; public int fuga() { return hoge; } }
835 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 17:16:54.99 ID:svO22mue0.net] Form2で int i = class1.fuga(); みたいなclass1のメソッドを使う命令を書くと、実行時にForm1もForm2も表示されずに終了になります。 Form2にclass1の参照をきちんと渡せていないようなのですが、どこが悪いんでしょう・・・。
836 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 17:33:33.27 ID:2EZjLjzja.net] >>819 みたいな、じゃなくて問題を再現可能な最小コードをIdeoneにでもあげる 何で>>816-818 まで書いおいて一番肝心なところを書かないんだ それじゃやってること荒らしと同じ
837 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 17:34:55.39 ID:oCYWBo6GM.net] 806から811で全然別物の質問になってるんだけど Form1のコンストラクタの先頭とForm2のコンストラクタの先頭にそれぞれブレークポイントおいて ブレークしたらF10キー1行ずつステップオーバーしていって どういう順番で実行されてるか確認
838 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 20:59:34.16 ID:36NNq4u4M.net] うるせーな一度答えると決めたら最後までニコニコヅラで相手しろよクソハゲ
839 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 21:22:06.95 ID:sZHy65Kr0.net] >>782 返信遅くなりました ありがとうございます、確かに存在しました やってみたら問題なくアクセスできました
840 名前:デフォルトの名無しさん mailto:sage [2018/05/22(火) 21:56:59.84 ID:nVwte2qB0.net] >>816 Form2のコンストラクタ内でclass1を使用しようとしているのに、 form2.Pointer(class1)がその後で設定されてる。
841 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 00:14:46.31 ID:IEWpo6Tg0.net] >>824 ありがとうございます。m(__)m その通りでした。 一個づつ追っていけば分かるはずなんですけど、 自分では思い込みがあって気づきませんでした。 本当に助かりました。 ありがとうございました。
842 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 00:17:07.19 ID:IEWpo6Tg0.net] >>820 すいません。 文章の書き方が悪かったです。 812の下から4行目のように Form2で int i = class1.fuga(); class1のメソッドを使う命令を書くと、実行時にForm1もForm2も表示されずに終了になります。 と書くべきでした。
843 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 00:18:47.23 ID:IEWpo6Tg0.net] >>821 これまたすいません、ブレークポイントで見て言ったら画面の生成順は問題ないことが分かって、 インスタンスの参照が渡っていないことが原因と分かり。811-813みたいな最小コードで実験してました。
844 名前:デフォルトの名無しさん [2018/05/23(水) 10:08:41.93 ID:N3UaVe1J0.net] 中学生ぐらいだったら教えてやってもいいけど、あんたいくつよ?
845 名前:デフォルトの名無しさん [2018/05/23(水) 10:10:09.13 ID:QWeWgJFJ0.net] 不安なメソッド内じゃ全部TryCatchで囲っちゃった方が良いです?
846 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 10:18:50.74 ID:Mh8q82UX0.net] catch内で例外を握りつぶせば完璧
847 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 13:00:21.42 ID:mO/AejLg0.net] メインの処理全体をtry〜catchで括るだけさ。
848 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 18:48:37.98 ID:hVcgEIrnM.net] ジェネリクスのListやHashSetを良く使うのですが、これで用が足りてしまうので自作までしたことありません 出来る企業や個人はバリバリ自作するのでしょうか
849 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 19:00:48.43 ID:iQ1n/QEKM.net] >>832 できる人はそんな無駄なことに時間をかけたりしません 視野狭窄な無能ほどそういうことに拘って工数をドブに捨て、結果的に全体のクォリティを上げる時間が失われるのです
850 名前:デフォルトの名無しさん mailto:sage [2018/05/23(水) 23:29:00.27 ID:l9NA/114M.net] ありもの使う方が良いと思うよ
851 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 00:22:57.92 ID:Pwy3p0jE0.net] ありものでどうしても駄目な理由がある場合のみ、仕方なく自作だわね
852 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 00:28:40.71 ID:crQGHj+ea.net] >>835 それも注意が必要だけどね 視野狭窄な小手先の技術に拘るプログラマは、くだらない問題に拘って「どうしても駄目だ」と思い込む(思い込もうとする)傾向がある 大抵そういうケースでは、視野を広げるとそもそも無理に手間をかけてまで解決する必要のない問題であることが多い
853 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 00:36:35.91 ID:O9jHVcOl0.net] Dictionary クラスを継承して使いたくて、 これの各種インターフェイスを実装した中身 Dictionary クラスのラッパーを作った事あるなあ。 今思えば若かった。
854 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 07:54:06.51 ID:YzRB3Rzod.net] >>836 プログラム以外でもあてはまる話だわな。 それ
855 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 14:34:00.01 ID:q7DgX+HL0.net] たいていは英語力の無さに原因があるんだよな。 その機能を見つけられないとかだからさ。
856 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 15:02:55.06 ID:AHiLgPdDM.net] コンソールアプリです。 今までに自分が吐き出した標準出力を自分で取得する事は可能でしょうか? このアプリ(A)は主に他のアプリ(B)から実行されることを想定しています。Aは普通にConsole.WriteLineで出力し、BがProcess.StandardOutput.ReadToEndで取得、ログを残します。 A単体で実行してログも残したい要求があります。 Console.WriteLineと同時にファイルに出力すればいいのですが、最後に一括で取得できればスマートかなと思ったのですが、いかがでしょうか?
857 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 16:59:57.59 ID:B2m5C+ouM.net] >>840 ウィンドウアプリです
858 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 17:02:19.57 ID:q7DgX+HL0.net] 両方に出力する関数作って、その関数に置き換える事すら出来ない無能に何をアドバイスしろと?
859 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 17:11:45.68 ID:iQu+wqIP0.net] Windowsで使えるteeコマンド探した方が早いんじゃねえか
860 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 17:19:25.14 ID:EdBeTbDkM.net] PowerShellならデフォルトで用意されてるよ!>tee
861 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 17:19:52.49 ID:AHiLgPdDM.net] >>841 ??? すみません、よくわかりません >>842 書き方まずかったですかね。 そう言うのも含めて、2つの処理を同時にするという意味だつたのてすが。 他にはなさそうですね。
862 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 19:35:28.68 ID:MnVBsXE4d.net] TraceSource
863 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 20:33:40.60 ID:hof73DG2a.net] 正直何言ってるのかよく分からんけど、普通にリダイレクトするだけのような... っていうか、普通はコマンドライン引数で出力先を切り替えるように作ると思うんだけど...
864 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 23:35:59.30 ID:iQu+wqIP0.net] >>844 へえ知らなかったな
865 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 00:27:44.75 ID:j/dB1L1+0.net] PowerShellはもっと流行るべき
866 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 00:39:09.38 ID:N3c6aWbUa.net] PowerShellとか罰ゲームだろ インタラクティブシェルとしては悪くないけど、まとまったスクリプト書こうとすると大嫌いになる Add-TypeでインラインでC#書いたほうがマシだわ 特にC#erはソースの見た目がなんとなく似てるだけに地獄を見るんだよ
867 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 12:59:33.01 ID:RzxaIECOd.net] >>847 名前付パイプでOkだよな
868 名前:デフォルトの名無しさん mailto:sage [2018/05/26(土) 00:52:48.69 ID:grpyMBkE0.net] アプリ側で完結してないと、スクリプト操作とか変なバッチ叩かせてアプリ起動とか怪し過ぎるだろ。 業務アプリじゃねーんだw
869 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 00:24:44.02 ID:2eqT73MR0.net] if (-100 <= clickPointXTemp && clickPointXTemp <= 100) { clickPointX[clickNumber] = clickPointXTemp; MessageBox.Show(clickPointX[clickNumber].ToString() + "%"); MessageBox.Show(clickPointX[0].ToString() + "%"); MessageBox.Show(clickPointX[1].ToString() + "%"); MessageBox.Show(clickPointX[2].ToString() + "%"); clickNumber++; }
870 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 00:29:53.74 ID:2eqT73MR0.net] クリックしてカーソルが-100<=clickPointXTemp<=100の位置にあるときに配列にその値を代入させているのですが、 クリックするとその場で配列に代入できても次のクリックで0になってしまいます。 1回目クリック clickPointXTemp=10 [0]=10 [1]=0 [2]=0 2回目クリック clickPointXTemp=30 [0]=0 [1]=30 [2]=0 2回目クリック clickPointXTemp=100 [0]=0 [1]=0 [2]=100 なんでだろ・・・。
871 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 00:30:12.40 ID:2eqT73MR0.net] 5時間ぐらい悩み中。。。
872 名前:デフォルトの名無しさん [2018/05/28(月) 00:33:24.89 ID:SRIgyUF4a.net] データベースを使わないで、インデックスが共通する複数のデータ配列を作りたいときってどういう風な実装が最適なんでしょうか var A = new int[x] var B = new int[x] var C = new int[x] ・ ・ ・ var E = new int[x] みたいな感じです
873 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 00:33:25.48 ID:MfVpzBU40.net] スコープが原因だろうから全体のソース出さないとエスパーだらけの回答になるよ
874 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 01:08:05.78 ID:dlEIDhlNa.net] >>856 struct Hoge { int A; int B; int C; int D; int E; } .... var hogeArray = new Hoge[100];
875 名前:デフォルトの名無しさん [2018/05/28(月) 07:52:50.79 ID:Mf7CKKuIa.net] >>858 ありがとうございます 助かりました!
876 名前:デフォルトの名無しさん [2018/05/28(月) 12:27:04.88 ID:YifI+gJdr.net] 誰か>>857 のエスパーたのむ
877 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 13:02:33.05 ID:PWPrnTKxM.net] >>853-854 へのレスだろ
878 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 13:47:49.05 ID:i/nkRhbIM.net] >>860 https://youtu.be/mKrYRsENA-I
879 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 15:55:38.64 ID:W2eXy6T5M.net] エスパー能力ないと5chはこなせない
880 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 20:32:45.18 ID:0z7zyrSed.net] 複数のクラスで共通の変数定数を外出しして、 その変数クラスを継承するのって良し悪しで言うとどうでしょうか is aなのかちと微妙な感じです 内臓名クラスを継承して動物クラスを作ってるような has aなのでオブジェクトとして渡すべきですか?
881 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 21:46:19.79 ID:rs0fZbm/M.net] >>864 共通の変数などという低い抽象度でクラス設計を考えるのがそもそも間違ってる 実装からクラスを考えると必ず破綻するから、君の今の考え方のまま進む限りはいかなる選択肢も不正解 とはいえ最初から抽象度を上げて設計しろといっても初心者には無理な話だから、気にせず自分の思うように作ればいい 一通りモノ作れるようになったらオブジェクト指向モデリングの書籍を読むことをお勧めする
882 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 21:51:33.12 ID:I0m/gtVC0.net] オブジェクト指向プログラミングしない方がいいもの作れるよ 関数で組む方法を極めた方がいい
883 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 21:56:33.33 ID:dVAXJXVu0.net] >>865 >オブジェクト指向モデリングの書籍 例えばどんな本がありますか?特におすすめ、とかじゃなくてもいいです どういう本が該当するのかよくわからないのです
884 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 22:18:11.40 ID:rs0fZbm/M.net] >>867 王道はエリック・エヴァンスとかダグ・ローゼンバーグとか 今読んでも実際のコーディングに対しては何の参考にもならないと思うよ
885 名前:デフォルトの名無しさん mailto:sage [2018/05/28(月) 22:21:17.59 ID:dVAXJXVu0.net] >>868 キーワード提供、感謝しています
886 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 12:48:47.90 ID:dUPfr/v4M.net] どのプログラム言語を選ぶかでオブジェクト指向モデルの実現方法がかなり違う
887 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 12:57:47.07 ID:Xt8fAcdVa.net] >>868 の本くらいの抽象度になると実装方法にはほとんど依存しないよ それどころかオブジェクト指向モデルすらも方法論全体の中では下層の方に位置付けられる
888 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 19:04:25.63 ID:QoecqRn60.net] とりあえず入門レベルが終わったんだけど次はeffective c#4.0っての読めばいいですか?
889 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 19:05:12.69 ID:upesQ40yM.net] 6.0 7.0のでてるからそっちでいいよ
890 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 19:28:28.39 ID:QoecqRn60.net] more effective C# 6.0 7.0ですか? moreとついてるので前の本を読む必要があるかと思っていたんですが大丈夫そうならそちらを購入しようかと思います
891 名前:デフォルトの名無しさん [2018/05/29(火) 21:07:37.85 ID:FUNbZ4ty0.net] フォーム間でのデータのやりとりはどうするのが一般的なのでしょうか? 例えば、Form2の表示と同時に、Form1に入力済みのデータをForm2に表示させる場合、今は以下のようにしています。 class Form1 { public object Data{get; set;} var form2 = new Form2(); form2.Parent = this; } class Form2 { public Form Parent{get; set;} Load() { this.Data = Parent.Data; } }
892 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 21:31:23.00 ID:T0OOxyUA0.net] >>875 一般的と
893 名前:かいいやりかたって聞かれると逆に難しいんで自分のやりやすい形で https://dobon.net/vb/dotnet/form/accessanotherformdata.html コンストラクタやメソッドの引数でも渡せるし [] [ここ壊れてます]
894 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 22:26:37.07 ID:LfCUNSAB0.net] >>874 Apressお勧め
895 名前:デフォルトの名無しさん [2018/05/29(火) 22:58:12.01 ID:G7p9dius0.net] >>874 言語仕様とか環境の変化で不要になった部分をバージョンアップしてるから 今からかうなら最新だけでいい 初版と4.0と最新で内容は被っている
896 名前:デフォルトの名無しさん mailto:sage [2018/05/29(火) 23:11:52.08 ID:5CF0lkGw0.net] ビジュアルスタジオでC#使ってると、どんどんコードスタイルが簡略化されていくんだよな。
897 名前:デフォルトの名無しさん mailto:sage [2018/05/30(水) 13:41:56.71 ID:Bf3z8rw50.net] SocketクラスのBeginConnectとかBeginReceiveとかに渡すコールバック関数を staticで書いてあるのとそうでないのと両方見かけるんですけど どっちが良いんでしょう?
898 名前:デフォルトの名無しさん mailto:sage [2018/05/30(水) 14:44:18.44 ID:LltEUg5c0.net] まあ、C#ならコールバックは登録解除を明示的に行うからスタティックである必要は無いけどな。 でもこれがイベントハンドラからのデリゲートなら話は別だ。
899 名前:デフォルトの名無しさん mailto:sage [2018/05/30(水) 14:47:38.89 ID:WVM+AecNM.net] >>880 そのSocketオブジェクトに合わせるのが正解 Socketを生で使うサンプルってスキルの低い業務ドカタが書いてたり書かれた時代が古かったりすることが多いので、 C#をよく理解してなくてCやVBの感覚でstaticにしないといけないと思ってるようなのが多い
900 名前:デフォルトの名無しさん mailto:sage [2018/05/30(水) 15:03:40.50 ID:Bf3z8rw50.net] >>881 イベントハンドラからのデリゲートとはどういう状況でしょう? >>882 なるほどありがとうございます!
901 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 15:19:11.21 ID:AbqPsR3A0.net] TextBoxか、MaskedTextBoxに単位をつけたい。 小数点有りや無し、-の数値を入力できたりするものってできますか? -2℃ 14℃ 25.5℃ 2.5℃
902 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 18:15:14.92 ID:Zw7Yk0+cM.net] テキストボックスの横にラベルで単位でも書いておこうぜ □㌕
903 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 18:16:46.93 ID:Zw7Yk0+cM.net] 小数点は □.□㌕ な
904 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 19:19:02.19 ID:0ajP7AA9a.net] >>884 TextBoxクラスを継承
905 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 20:26:49.48 ID:9/5XjJFR0.net] >>884 入力支援・単位の入力補完・数値⇔文字列の変換 何でもできるけどホントにしたいことがそのレスでは分からない
906 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 21:28:20.09 ID:ygkZdVXVM.net] >>878 え、more付いてないのと付いてるのって同じ本なん? 独習C#と言い、命名がわけわからんな…
907 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 09:05:55.18 ID:azdekr4p0.net] 説明不足ごめんなさい。 出力ですが、最終的にはTextBoxの枠ごと印刷したいと考えております。 883の言う単位の入力補完だと思います。 MaskedTextBoxのマスクに####℃と記入し、 「-24.4」等のデータをデータベースから取り出して、入れたところMaskedTextBox.Textが244℃となってしまいました。 このテキストボックスを小数点有りの場合、なしの場合、負の符号が有りの場合なしの場合、「----」の場合、 1桁から5桁+「℃」としてTextBox.Textに出力したいと考えております。 できますか?
908 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 09:13:09.12 ID:gkm5sPLjM.net] TextBoxクラスを継承して自前で実装すればできる
909 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 09:47:05.22 ID:czZmZo8za.net] TextBoxクラスを継承してTextプロパティを上書き 書式とか単位を属性に持たせれば汎用的に使える。 コピペされたときの場合も考慮すること
910 名前:[879] mailto:sage [2018/06/01(金) 09:58:02.26 ID:azdekr4p0.net] ありがとうございます。 なんと
911 名前:なく、それっぽいものが作れそうです。 [] [ここ壊れてます]
912 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 10:22:08.86 ID:XLd38QjBM.net] ユーザーコントロールでボーダーなしテキストボックスとラベル並べた方が楽な気がする
913 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 18:06:59.69 ID:TnI3eVXu0.net] テキストボックスの描画や挙動を弄るの面倒くさいから汎用性を求めるんなら InputMan 買った方がいいよ
914 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 18:10:44.74 ID:UBye49NJM.net] ライセンスとかテクリスとか面倒だから買わない
915 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 18:21:51.24 ID:S7DUtxKdM.net] NuGetで参照できるオープンソースのWinFormsリッチコンポーネントって何が有名なの?
916 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 20:17:26.63 ID:dZV2tAFxM.net] nugetは俺の鬼門
917 名前:デフォルトの名無しさん mailto:sage [2018/06/01(金) 21:28:02.83 ID:naL+ZRGN0.net] 僕の半蔵門
918 名前:デフォルトの名無しさん [2018/06/01(金) 23:18:54.61 ID:fWGAwsr30.net] 前門の虎 肛門の狼
919 名前:デフォルトの名無しさん [2018/06/02(土) 00:25:46.86 ID:A4SZL/oE0.net] 寒っ
920 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 10:06:40.82 ID:QJbZaU5f0.net] c#で穴ぼこメモリにしないように組むのって不可能?
921 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 10:27:51.87 ID:nL4AUV2I0.net] 可能だが、規模によっては現実的でない パフォーマンスを気にするなら、別にボトルネックが存在していないかを見直す方が先
922 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 10:30:12.89 ID:rvy10L9Oa.net] OSの仕事 どうしても嫌でデカいbyte配列確保して中に文字や数字全部入れても無駄
923 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 10:40:30.36 ID:QJbZaU5f0.net] >>904 それでも駄目なの? もうサービス部分はC言語で組んだほうが良さげ?
924 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 10:42:11.98 ID:1ZPJADB4M.net] GCが勝手に詰めてくれるから気にしなくていい ただし巨大なオブジェクトは専用の領域があって移動されないので断片化されやすいから注意
925 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 11:05:50.81 ID:msgJi+IZM.net] Spanとstackallocで我慢しなさい
926 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 11:10:29.54 ID:rvy10L9Oa.net] >>905 Cだって確保管理はOSの仕事だろ 何のためにメモリの管理をOSに任せたくないんだ?
927 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 11:12:27.29 ID:msBkLZBc0.net] DMAが僕を呼んでいるから
928 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 11:18:59.70 ID:J1HVezEsH.net] >>908 Cだってオブジェクト毎の領域をそれぞれ全てOSが管理しているわけじゃない mallocが効率化のためにだいぶ仕事してる
929 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 11:42:21.94 ID:gRqFSsBQa.net] OSでメモリはブロックなどで管理されていて要求があったら 要求サイズに合わせてそのブロックの中のさらに細かいブロックなどを払いだしてる こっちがどうしようとOSでブロックを作ってその中でやりくりしてる 例えそのブロックの中で断片化していて何か不都合あるのか?
930 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 14:08:09.74 ID:65ghWvPg0.net] 使う予定の最大量の倍の空きメモリーあれば大体は気にならない。 いまどきのパソコンはアプリが使いたいメモリーサイズの数百倍は有るから気にするな。
931 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 14:25:15.68 ID:QJbZaU5f0.net] リークしてると1ヶ月ぐらいで死ぬじゃん 現状自分でメモリ管理しないとどこで何が確保されてるのかわからないわけで そういうの確実に管理したいときはc言語のがいいのかなぁ?と
932 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 14:34:09.78 ID:gayBoTaI0.net] 極めて厳密に管理したいならC/C++でアロケータを自前で書くというのはあり得る しかしリークという点ではC#よりC/C++の方が遥かにやっちまい易いので, メモリ安全を確保する目的でC/C++で書くのは本末転倒のように思う
933 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 14:39:58.23 ID:I3vJQFJE0.net] リーク前提
934 名前:とかバカでしょ [] [ここ壊れてます]
935 名前:デフォルトの名無しさん [2018/06/02(土) 15:01:44.21 ID:fV6b9MUi0.net] List#Containsの重複判定基準をEquals以外にすることはできないでしょうか? ListにしたいクラスのEqualsが、別の目的用にオーバーライドされている為、Equalsを使うことができません。
936 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 15:43:20.19 ID:QJbZaU5f0.net] >>914 c#は現在実行中のアプリのインスタンスを確認する方法はあるの?
937 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 15:47:01.32 ID:XUNevU9ma.net] >>916 >Equalsが、別の目的用にオーバーライドされている 常識的にはそっちの方が解消すべき「問題」のように思うけど...
938 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 15:54:54.04 ID:XUNevU9ma.net] まあ、Exists使うだけだよね
939 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 16:03:39.22 ID:nL4AUV2I0.net] >>913 Webサービスか何かを想定してる? だったらコーディングで対応するんでなく、ロードバランサで複数のアプリケーションサーバに振り分けて サービスが止まらない様にしつつ、一部のサーバをオンメンテでリブートすべし
940 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 16:05:51.99 ID:wt7oIb0Vp.net] C#スレでメモリーリークを心配するとか、どんだけ無能なんだよ。
941 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 16:12:14.89 ID:5ltA6BNw0.net] 普通はリークで死ぬ前にGen2GC連発して性能ガタ落ちになるんじゃ どんだけ握ってんだよと
942 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 18:04:04.45 ID:QJbZaU5f0.net] 実際にメモリリークが起こらないように気をつける術は昔ながらの方法しかない? プロジェクトでnewするときはインスタンスマネージャー的なのを通して 可能な限りインスタンスを監視するとかそんなの?
943 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 18:17:48.36 ID:msgJi+IZM.net] マトモなコードを書くだけ
944 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 19:01:19.50 ID:pCnJrSzQd.net] メモリリークさせようと思わないとなかなかできんよ
945 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 19:11:03.61 ID:1ZPJADB4M.net] >>923 一時的なオブジェクトはもう必要ないなら握りっぱなしにしないで即座に使い捨てること 中途半端に握りっぱなしにしてるとGCの世代か昇格してメモリ使用量の増加やGCのパフォーマンス低下の原因になる 一方、単寿命オブジェクトのGCは爆速なので、newしたら積極的にすぐ放置すべき
946 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 19:16:06.36 ID:1ZPJADB4M.net] >>916 Any
947 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 19:21:44.73 ID:I3vJQFJE0.net] C#でメモリリークさせるコード書く奴がC/C++で無くせるとは到底思えないわ
948 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 19:25:12.19 ID:QJbZaU5f0.net] >>926 うーん 爆速ではないなぁ 3分に1回動かしてる処理があるんだけど 強制GCせずにずっと動かしてるとき メモリ使用量がかなりあがった状態でGCが動くと 3分に一度の処理のタイミングがズレちゃうんだよね そこで強制GCも十分に一度ぐらいの頻度で動かしてる状態
949 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 19:29:07.89 ID:pCnJrSzQd.net] だめだこいつ
950 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 19:31:42.56 ID:QJbZaU5f0.net] >>930 なんかいい方法あるんですか?
951 名前:デフォルトの名無しさん [2018/06/02(土) 19:37:34.74 ID:KX6MAuAea.net] ちゃんと設計してればC#でメモリーリークなんて気にすることなんてあるか? そんなガバガバ設計してるやつがCだったら大丈夫なんだけど、って馬鹿な話誰が信じるよ
952 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 19:45:14.53 ID:msgJi+IZM.net] >>931 簡単だよ マトモなコードを書くだけ
953 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 20:14:13.22 ID:fh+k246w0.net] 以降放置でお願いいたします
954 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 20:28:22.93 ID:iRadbqpq0.net] >メモリーリークなんて気にすること ページフォルトを気にしないヴァカっていたな。 リークしていないが累積しすぎたページフォルトがOSを殺す
955 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 20:30:41.21 ID:+/nRHGaPa.net] C#でリークやらかす奴がC/C++でやらかさない道理がない
956 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 20:31:22.14 ID:eSvYHUXNM.net] こいつもトンチキなので放置でいいです
957 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 20:50:00.44 ID:wt7oIb0Vp.net] まあ、でもC#はメモリー管理を隠蔽しちゃったから、実はCやC++よりメモリー管理
958 名前:オにくいんだよな。 [] [ここ壊れてます]
959 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 20:58:18.57 ID:msgJi+IZM.net] C++出身のC#初心者にありがちだね
960 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 21:10:12.98 ID:u/NNd5OV0.net] 未確認飛行のSpan説明みてサンプルコード動かそうとしたんだけど using System.Memory;すると CS0305ジェネリック種類 'Memory<T>' を使用するには、1 型引数が必要です。 って叱られるのなんで? VSもCoreも最新
961 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 21:20:59.23 ID:msgJi+IZM.net] SpanはSystem.Spanだ
962 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 21:33:12.83 ID:u/NNd5OV0.net] System.Spanにしてもでてきおる using static System.Memory<string>; ってするとエラーは消えた
963 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 17:57:54.97 ID:nwnHFAsS0.net] フォームアプリでマウスクリックでイベントをはっせいさせているのですが、 ある処理ループの実行中はこのクリックイベントの割り込み発生を禁止させたいです。 マウスクリック割り込みイベントを無効化、有効化する方法ってないでしょうか?
964 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:03:05.41 ID:acSSis/XM.net] >>942 そうじゃないusing System;ってこと
965 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:05:10.81 ID:5sPxkTAt0.net] >>943 イベントの購読とその解除 ufcpp.net/study/csharp/MiscEventSubscribe.html
966 名前:デフォルトの名無しさん [2018/06/03(日) 18:07:49.08 ID:qpwWeWwga.net] >>943 -=、+= デザイナーみればわかると思うよ
967 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:08:39.42 ID:imVGa92Ya.net] >>943 Control.Enabled どうでもいいけど、「割り込みイベント」って表現は間違ってるから他所では使わない方がいいよw
968 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:26:12.78 ID:y7bK61pJa.net] 処理中フラグ持っておいて クリックイベントの入り口で処理中ならreturnするのでよくない? bool 処理中=false; クリックイベントの頭 if(処理中)return;
969 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:33:27.61 ID:3EuqECGs0.net] lockで囲めば
970 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:43:15.37 ID:acSSis/XM.net] ボタンからしか起動しない処理だと保証されてるなら-=+=でもフラグでもいいが そうでないなら真面目に並列処理管理しないとね
971 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:59:01.85 ID:4vwgZnFjp.net] はあ? クリックイベント自体を抑止したのか? 意味あるの?
972 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 19:18:23.10 ID:bhcyF/oUa.net] 処理ループの中でメッセージループを実装してGetMessage()でマウスイベントをフィルターかな?或いは読み捨てる
973 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 20:09:50.51 ID:pjD3SZS60.net] え、連打対策してないの?
974 名前:デフォルトの名無しさん [2018/06/03(日) 20:15:38.36 ID:OWt1glR4a.net] 非同期で実行した場合とかの抑止とか?とエスパー
975 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 20:19:01.20 ID:S4J0YpoT0.net] >>944 つまりSpanを使うのにusing System;さえすればいいってこと? ごめんな、クソ素人過ぎて質問がまずいのか ufcpp.net/study/csharp/resource/span/ の var s = "abcあいう亜以宇"; var sub = s.Substring(3, 3); var span = s.AsReadOnlySpan().Slice(3, 3); for (int i = 0; i < 3; i++) { Console.WriteLine((sub[i], span[i])); // あ、い、う が2つずつ表示される } を試したいんだけど、できないって話なんだ
976 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 20:26:16.06 ID:klvCZP9p0.net] >>938 やっぱりそうだよね 厳密にやろうと思ったら昔ながらの方法でやるしかないんだよね
977 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 20:50:59.76 ID:H2Gh+VvdM.net] >>955 現時点ではAsReadOnlySpanが存在しないっぽいね Stringはもともと読み取り専用だからAsSpanでReadOnlySpanになるってことだと思うけど 過渡期の記事はそのまま鵜呑みにしない方がいいぞ
978 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:25:48.86 ID:
] [ここ壊れてます]
979 名前:nwnHFAsS0.net mailto: >>945 全く知らない概念でした。 勉強してみます。 [] [ここ壊れてます]
980 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:26:28.88 ID:nwnHFAsS0.net] >>948 これうまい手ですね。 使える場所ありそうですので試してみます。
981 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:27:58.09 ID:nwnHFAsS0.net] >>953 おっしゃる通りで、連打対策必要だったんですね。 フォームアプリだと必須の対策なんですね。 他で少し変な挙動してたのは連打対策してなかったことが原因のようです。 連打対策してみます。 というか、どうやればいいんだろ。 また、お勉強しなければ。
982 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:42:26.87 ID:0r68Qt9D0.net] >>960 いま質問した答えをイベントメソッドに組み込めば連打対策は終了 そっちを先に覚えるのが普通だと思ってた
983 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:51:01.95 ID:imVGa92Ya.net] >>959 全然うまい手じゃないw PC-98の時代じゃあるまいし、フラグって言葉を聞いたら眉に唾して聞かなきゃダメwww それを好むのは可読性に感心がないダメグラマの可能性が高いw
984 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:56:36.02 ID:imVGa92Ya.net] そもそもUIのデザイン論なんて大げさな話じゃなくても、 ユーザーの捜査に反応できない文脈では何らかの方法(通常はグレイアウト)でそれを ユーザーに対して明示しないUIは問題あるでしょうww そんなことにも思い至らない回答者は無視していいよw
985 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 22:53:07.14 ID:S4J0YpoT0.net] >>957 ありがとう、そういうこともあるんだな 勉強になった 10Gくらいの固定長テキストファイルから一行ずつ読み取って 最初の1-10文字はUSER ID、11はSEX・・・って分けてdbに突っ込んでるんだけど StringBuilderでLength=0しつつappendするくらいじゃ、stringでsubstringするのとあまり変わらなかったんで Span使えばマシになるのかなと思ったんだ
986 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 23:00:15.10 ID:8gLBE5WNa.net] そんなもん丸ごとDBにロードしたほうが速いだろ 固定長ファイルのロードはどのDBMSでもコマンド一発でできる
987 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 23:12:33.52 ID:S4J0YpoT0.net] >>965 それなw tempのカラムに一行まるごと突っ込んで、クエリでsubstrするやり方やってみる https://stackoverflow.com/questions/12423991/import-fixed-width-text-file-into-sqlite
988 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 23:35:40.25 ID:iikfdxhC0.net] 10GBのデータだと読取よりDBMSへの書き込み方法がネックになりそう
989 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 06:33:56.69 ID:mxEQUVjg0.net] >>967 細かくなるとdbスレ行きなんだろうけど 実際に書くところはC#なわけで、どこがボトルネックになってるのかザコ過ぎてわからんw とりあえずsqliteつかってメモリ上dbにinsertでトランザクション管理しっかりやってってして30分くらいだったからまーいいかと sql server expressだとbulk insertはわからんけどselectで並列処理されるみたいだから乗り換えてみる予定
990 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 11:04:17.43 ID:MivBMbBxa.net] sql server expressはひっくるめたDBサイズが最大10 GBまでだったと思うが
991 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 11:06:49.27 ID:UeJV2JW90.net] メモリしこたま積んでRedisかな
992 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 14:26:59.71 ID:pPavJvQvM.net] Postgresでいいよ ロード時に固定長レコードのフォーマットを指定できるから一時テーブルもC#もいらん
993 名前:デフォルトの名無しさん [2018/06/04(月) 16:33:35.32 ID:7NrmQXKK0.net] MonoのLinux版のインストールの仕方、ご教示いただけますと有難いです。宜しくお願い致します。
994 名前:デフォルトの名無しさん [2018/06/04(月) 16:
] [ここ壊れてます]
995 名前:48:48.54 ID:aK/XyO250.net mailto: 米Microsoftが米GitHubを買収することで合意 http://www.itmedia.co.jp/news/articles/1806/04/news058.html [] [ここ壊れてます]
996 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 20:38:58.19 ID:UeJV2JW90.net] >>972 ちょまど神を信仰すると天啓が降るぞよ
997 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 20:43:37.91 ID:CVKZewtza.net] >>972 Monoなんか今時もう誰も使ってないし誰もメンテしてないでしょ 今は.NET Coreの時代 GUIが目当てなら諦めなさい
998 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 20:52:46.96 ID:spHrXgPF0.net] UbuntuでもCentOSでもコマンド一発で入るがな
999 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 21:35:01.82 ID:ztrCxIDM0.net] >>975 何言ってんの?
1000 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 21:48:02.60 ID:9+XsYcyB0.net] Windows.Forms で WndProc を override して自分のコードを加えているのですが デバッガで進めていくと、その中に突入してしまいます。 InitializeComponent の中みたいに、デバッガが入らなくする宣言みたいなものなかったですか?
1001 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 21:49:06.62 ID:BHtXacEqa.net] >>978 debuggerstepthrough
1002 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 21:56:07.60 ID:Uz3WpYRO0.net] >>975 Mono Releases | Mono www.mono-project.com/docs/about-mono/releases/
1003 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 23:32:00.59 ID:054Q3E4O0.net] メインクラスとシリアル通信クラスの2つを使っています シリアル通信の受信完了でイベントをメイン側に発生させることら可能でしょうか。受信完了したらメイン側から受信データを取りに行くようにしたいのですが。
1004 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 00:07:28.69 ID:jE9yEXCCa.net] >>981 何でそうなるのw 発想が逆だってw そのシリア通信を担当するクラスSがデータ受信を通知するイベントを発生させて 受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw ついでに言えば受信データもEventArgs使って渡してしまえばいい
1005 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 00:33:25.52 ID:liKML/cX0.net] しょうがねえだろ初心者なんだから
1006 名前:976 mailto:sage [2018/06/05(火) 07:18:51.35 ID:ByFVOB9IM.net] >>982 やりたいのことはそれなんですよw 説明が下手ですいません 厳密にはデータを受けた事が分かったらメイン側は受信データの内容を解釈するクラスに送って処理分岐という形にしようかと思ってます。 用語や処理の知識がおいついてきてないので、あれを応用しようという感じにならず、調べるためのキーワードも出てこないです。 >>クラスSがデータ受信を通知するイベントを発生させて受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw ここが具体的にどういう構文になるのでしょうか。
1007 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 08:07:17.14 ID:D4M8TybKa.net] Signalを使っても作れるな。
1008 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 09:11:21.09 ID:GjVlFAo70.net] >>963 PCをあまり使い慣れてない人とか、ボタンはシングルクリックでいいのをダブルクリックしちゃったりとかあるんだよなこれが・・・
1009 名前:デフォルトの名無しさん [2018/06/05(火) 09:29:57.56 ID:nr/+sOXHa.net] 非同期じゃないならボタンイネーブル切ればいいだけじゃね
1010 名前:デフォルトの名無しさん [2018/06/05(火) 09:32:16.99 ID:nr/+sOXHa.net] すまん。忘れてくれ
1011 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 10:35:58.82 ID:l/0/VM/ma.net] 状態をGUIだけに持たせておくのはおかしいといつか思うはず
1012 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 12:11:20.04 ID:vCTdp4Eha.net] >>984 class FrameReceivedEventArgs:EventArgs { public byte[] Frame{get; private set;} .... } class CommunicationPort { public even EventHandler<FrameReceivedEventArgs> FrameReceived; .... } class FrameDecoder { public FrameDecoder(CommunicationPort c} { c.FrameReceived +
1013 名前:= CommunicationPort_FrameReceived; } private void CommunicationPort_FrameReceived((object sender, FrameReceivedEventArgs e) { .... } .... } [] [ここ壊れてます]
1014 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 12:44:05.86 ID:eGZjT6RJM.net] >>990 引数に渡されたものを弄るのは行儀の悪い設計 IReceiverインターフェイスみたいなのを用意してport.AddReceiver(decoder)とするか、 >>984 の言葉通りにいったん双方のクラスの外でイベントハンドラで受けて仲介したほうがいい
1015 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 12:51:41.81 ID:eGZjT6RJM.net] >>990 がなぜ行儀が悪いか補足しておこうか 普通、オブジェクトを別のクラスのコンストラクタに渡すとき、プログラマは 受け取った側→引数側 の向きの参照ができることを期待する ところが、>>990 だとそれが逆なんだよ new FrameDecoder(this.port) としただけで、portがGCされないかぎり作り捨てたはずのFrameDecoderがGCされないという、非直感的なコードになるわけ
1016 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 12:55:30.14 ID:vCTdp4Eha.net] 何言ってるのかさっぱりわからん よくわからん思考回路だな...
1017 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 13:09:28.12 ID:GjVlFAo70.net] 言い回しがようわからんが >>990 みたいなのするのが解放されないオブジェクトを量産するっていうのはなんとなくわかる
1018 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 13:11:38.32 ID:vyKZFDS5a.net] >>993 分からないならイベントというものを正しく理解してないんじゃないかな ボタンのクリックイベントをフォームが受け取れるのは、ボタンがフォームへの参照を(実際には間にデリゲートが入るので間接的にだが)持ってるから 基本的に、引数に渡ってきたものに自分自身を登録するのは避けたほうがいい オブジェクトのライフタイムが非常に分かりにくくなるから
1019 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 13:53:28.61 ID:UBCugO63M.net] reactive extensionsって.NET発祥なのに使う人少ないよね
1020 名前:デフォルトの名無しさん [2018/06/05(火) 15:23:49.06 ID:n583dJR10.net] >>974 ちょまど神って???状態でしたので調べてみました。 一つ知識が増えました。ありがとうございます。
1021 名前:デフォルトの名無しさん [2018/06/05(火) 15:24:19.24 ID:n583dJR10.net] >>975 そうなんですか。。。 NET Coreっての調べてみます。どうも有難う御座います。 ちょど昨日 GUI って何だ??って検索したばかりでした。 3日前からプログラムの勉強をはじめたばかりで。。。
1022 名前:デフォルトの名無しさん [2018/06/05(火) 15:24:34.93 ID:n583dJR10.net] >>980 ありがとうございます。TRYしてみます。 この掲示板すごーい!!皆様に感謝です。
1023 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 16:15:32.44 ID:vCTdp4Eha.net] >>994 ないないw イベントの購読解除はリークの原因になるのはその通りだけど、 それは>>991 が主張するように、イベントを発生するオブジェクトを引数で受け取ったかどうかと無関係。 >>995 俺は理解してないのは君の方だと思うよw その君のいう俺様ルール、何が悪いのかさっぱり分からない そもそも今はそんな話をしてるんじゃないw 単に質問者の参考になるかもしれんコードの骨組みを示しただけw
1024 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 16:16:25.51 ID:vCTdp4Eha.net] あ、 × イベントの購読解除 〇 イベントの購読解除忘れ
1025 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 19:31:17.11 ID:70UTtyrn0.net] 次スレたててみる
1026 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 19:33:22.39 ID:70UTtyrn0.net] ふらっと C#,C♯,C#(初心者用) Part138 https://mevius.5ch.net/test/read.cgi/tech/1528194762/ たった 議論は他のところでよろしく
1027 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 00:18:56.95 ID:+J9HGVUKa.net] >>1000 想像力のない人だなあ >>990 だと、イベントハンドラの登録を解除しない限り、FrameDecoderが不要になっても 登録先のCommunicationPortよりも先にGCされることは絶対にない。 じゃあ不要になったらイベントハンドラを登録解除できるようにしよう。いつ解除する? それはFrameDecoder自身には分からない。知
1028 名前:っているとしたら、それは>>981 のいうメインクラスだろう。 登録解除するにはFrameDecoderクラスのDisposeメソッドを呼べ、という仕様にするか? 結局、985のFrameDecoderを正しく扱うには、メインクラス側がそういうクラス外から見ただけでは想像できないFrameDecoderの気難しい仕様を理解した上で、 必要に応じて明示的な解放を行わなくてはならない。 そんなことをするくらいならメインクラス側で明示的に登録・登録解除をやったほうが遥かに素直で分かりやすい。 [] [ここ壊れてます]
1029 名前:デフォルトの名無しさん [2018/06/06(水) 00:26:33.34 ID:D75pa1n0a.net] 質問いいですか?
1030 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 60日 6時間 46分 14秒
1031 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています