1 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 19:32:42.28 ID:70UTtyrn0.net] 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■関連スレ C#, C♯, C#相談室 Part93 https://mevius.5ch.net/test/read.cgi/tech/1492818720/ ■前スレ ふらっと C#,C♯,C#(初心者用) Part137 https://mevius.5ch.net/test/read.cgi/tech/1523004019/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■情報源 https://msdn.microsoft.com/ja-jp/library/gg145045.aspx https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index https://msdn.microsoft.com/en-us/library/gg145045.aspx referencesource.microsoft.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 20:49:49.24 ID:M4A1qqma0.net] (*゚∀゚)b
3 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 00:37:35.76 ID:YMH0q3TJM.net] デコーダーがイベント監視してる時点でなんかおかしいって気が付かなきゃダメだよ クラスの責務は1つなのだからデコーダーはデコードすることに集中しなきゃならん なのでイベントの購読、デコーダーへのデータ供給は別のクラスの仕事というわけだ どうしてもデコーダーにイベントソースを掴ませたいならより抽象化されたストリームを渡すべきだろうね
4 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 00:54:44.11 ID:89Zk6fQTa.net] 前スレ>>999 酷い言い掛かりだなw この人、自分の議論が (1) FrameDecoderは使い捨てされるオブジェクトである(CommunicationPortより寿命が短い) (2) FrameDecoderを使う側(メインクラス?)はプログラムと同じ寿命 っていう自分勝手な前提に立ってることに気付いてるのかな。 そんな勝手な前提を置いたらどんなイチャモンでも言えるよw 既に書いたが、結局抽象的に言えるのは ---- 使い捨てのオブジェクトが自分より長寿のオブジェクトのイベントに メソッドを紐づけする場合は、イベント購読解除を忘れるとリークする ---- これ以上でも以下でもない。 だから俺の書いたコードhttps://mevius.5ch.net/test/read.cgi/tech/1523004019/985 に対して、「FrameDecoderがプログラムと同じ寿命じゃない、使い捨てされるオブジェクトなら いらなくなったタイミングでイベント購読解除するようにしないとリークするよ」と質問者にアドバイスするのなら 意味があると思う イベント発行側を引数でもらったらイカンとか、そんな訳わかんない 俺様ルールを他人にごり押ししてどうすんの。
5 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 00:57:45.23 ID:89Zk6fQTa.net] それとさあ、、これも繰り返しになるけど、 だから俺は質問者の参考になるかもしれんコードの骨組みのサンプルを書いてるだけであって、 そんな細かい別の話をしてるんじゃないってばw 何でもっと建設的になれないかな
6 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 01:15:02.96 ID:e5dRgfnV0.net] 死なないと分かんねーのかな
7 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 01:18:11.35 ID:qa98W75KM.net] >>4 分かってないなあ FrameDecoderの寿命はFrameDecoder自身が決めることではなくてそれを使う側が決めることでしょ 引数をはじめとして、自分の管理外にあるものに対して自分自身を登録することは、その了解を破ってるという点で好まれない OSSのソースとか読んだことないかもしれないけど、実際滅多にないよ? FormやTimerのようにGCRoot持って自分自身で寿命を制御してる例外も無くはないが、 それはフォームはXボタン、タイマなら一定時間経過、というように自分自身の性質が寿命を決めているからそれが自然なんだよ
8 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 01:18:13.86 ID:XybM8xsda.net] >>4 分かってないなあ FrameDecoderの寿命はFrameDecoder自身が決めることではなくてそれを使う側が決めることでしょ 引数をはじめとして、自分の管理外にあるものに対して自分自身を登録することは、その了解を破ってるという点で好まれない OSSのソースとか読んだことないかもしれないけど、実際滅多にないよ? FormやTimerのようにGCRoot持って自分自身で寿命を制御してる例外も無くはないが、 それはフォームはXボタン、タイマなら一定時間経過、というように自分自身の性質が寿命を決めているからそれが自然なんだよ
9 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 01:28:03.10 ID:kKiXaErEa.net] >>7 分かってないのは君 だから、君は勝手に「FrameDecoderを使う側の寿命はCommunicationPortと同じが それより長い」という前提に立っている。 何度も言うが、そんな勝手な前提を置いたら何でも言える。 じゃあFrameDecoderを使うオブジェクトの寿命がCommunicationPortより短い場合はどうするのか。
10 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 01:36:08.83 ID:XybM8xsda.net] >>9 なるほど、そんな初歩的なところを勘違いしてたのか イベントを使うにしろ何にしろ、CommunicationPortから引数の受け渡しによってデータを受け取る以上、 当然、CommunicationPortからFrameDecoderへは参照を辿って到達可能でなければならないよ 問題にしてるのはその参照を登録したり解除したりする責任の話ね
11 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 01:39:09.20 ID:CmtfArYj0.net] つか、シリアル通信クラスって標準のがあった気がするけど それが合わないとしても、それを模倣して作れって言うのが普通じゃないのか
12 名前:前スレ976 mailto:sage [2018/06/06(水) 06:26:27.44 ID:z0q6WK6V0.net] すいません 回答ありがとうございました 何か揉める原因になってすいません ttps://dobon.net/vb/dotnet/vb2cs/event.html#section3のデータを返す方法がやりたいことになるのかなと思って調べてました。
13 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 09:37:08.80 ID:e5dRgfnV0.net] 彼らは病気だから気にしなくていい いつものことさ
14 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 11:55:26.62 ID:/mNmPD5La.net] >>10 何を言ってるのかさっぱり分からない だれか分かる人がいたら解説してw 「CommunicationPortからFrameDecoderへは参照を辿って到達可能でなければならない」 必要なんかどこにあんのw しかし、こういう「俺様ルール」を正当化するために 勝手な前提条件を設定してかつその自覚がない人ってのは困っちゃうね
15 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 12:02:03.87 ID:/mNmPD5La.net] >>12 別にもめてるわけじゃw プログラミングは技術の一種なんだから質問スレであっても 議論に発展することがあるのは当たり前で、それを異常なことのように 感じる人間の方が病気で、そういう人間こそ無視していいと思う 以前「マウンティング」って言葉が好きな御仁がおったけど、 ようするに彼はそんなくだらないことでマウントを取りたい自分を 表出することで何かを語るに落ちてることにも気が付かない素朴なお方だw
16 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 12:28:24.14 ID:v+YVHC4y0.net] >>1 読め
17 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 20:12:00.38 ID:Xjc53mAM0.net] どうでもいい質問ですがvisual studioの初期設定で C#が中括弧だけで1行使うのはなにか理由があるんでしょうか? C++他の言語だと最初の中括弧の前では改行しないスタイルの方が多いと思うんですが
18 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 20:17:07.10 ID:yVrgGFaDM.net] ない
19 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 20:34:10.39 ID:LL2q+46Ta.net] https://ja.m.wikipedia.org/wiki/字下げスタイル
20 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 21:13:23.87 ID:5ce/nrvV0.net] >>17 波動拳みたいでいいだろ?
21 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 21:13:34.77 ID:Xjc53mAM0.net] >>19 どうも、よく分かりました
22 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 23:05:03.78 ID:N8yiaTQzM.net] パイソンスタイルが至高 波カッコとか要らん
23 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 23:07:52.15 ID:+PcIhiGy0.net] 俺はブロックが解り易くて良いと思うけどな 縦に長くなるのが嫌だって人がいるのも理解しない事はないが
24 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 23:15:12.78 ID:c8dAN/Mma.net] >>17 C++は { だけで一行使うスタイルの方が一般的だと思うぞ C#はもともとC++開発者の取り込みを狙って作られた言語なので、ソースのスタイルも含め、意図的に全体的な雰囲気をC++に似せ
25 名前:トいる [] [ここ壊れてます]
26 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 00:32:23.12 ID:8RMVvRLY0.net] >>22 C#はコード畳めるんだぜ?
27 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 00:35:34.59 ID:gtRPAC9i0.net] 言いたい事は解るけど、それは言語仕様でなくIDEの機能では……
28 名前:デフォルトの名無しさん [2018/06/07(木) 07:22:06.46 ID:7v9jTo8H0.net] あのコード畳める機能って極悪だよな。 もうそろそろ終わりだなぁと思ったら畳まれているコードが数百行隠れてましたとか泣いたよ。
29 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 08:14:21.51 ID:w0rLP4AV0.net] 畳まれてるコードがあって泣くってどういう状態だよ・・・
30 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 08:49:08.48 ID:acA4rAind.net] どうせ20000行のメソッドとかなんだろ
31 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 08:54:33.87 ID:dtJbFkp5M.net] クラスの作成について教えてください。 内部でstring程度の情報しか持たない場合でも、Disposeは実装しなければならないですか?実際、何もやる事ないですが。
32 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 08:59:41.46 ID:jTBAfznK0.net] しなければならないと言った人に聞いてくださいよ 一般的に、決定権がある人が必要ないと判断すればしません
33 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 09:15:25.73 ID:dtJbFkp5M.net] すみません、聞き方が悪かったです。 しなければならないと言われた訳ではないのですが、作法としてどうなのかな?と心配になって質問しました。 自分だけで使うならどうでもいいのですが、他人にも公開するものなので、恥ずかしくないものを作りたくて。
34 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 09:41:25.22 ID:NVuYCS+k0.net] 作法というかIDisposableは主にアンマネージリソース解放の用途だよ OS機能を直接扱うとか、メンバーが使用してるとか。インスタンス解放ではない むしろ実装の仕方に作法があるのでMicrosoft DocsなりMSDNなりを
35 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 15:35:52.79 ID:Fu48jME1a.net] >>32 やることが無いならDisposeやファイナライザを実装してはいけない それらを実装するのは例外的なケースであり、無いのが普通
36 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 16:30:11.85 ID:dtJbFkp5M.net] >>33 >>34 レスありがとうござます。完全に勉強不足でした。 IDisposableが実装されてないクラスなんて山ほどあるのに何を勘違いしてたんでしょうか。聞いてよかったです。
37 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 19:28:36.25 ID:6Ugs28PiM.net] >>27 行数表示してないのかよw
38 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 19:55:09.68 ID:GcMnTqlg0.net] コントロールが表示されないのですがなぜでしょう Microsoft.Toolkit.Win32.UI.Controls.WinForms.WebView wv = new Microsoft.Toolkit.Win32.UI.Controls.WinForms.WebView(); wv.Dock = DockStyle.Fill; this.Controls.Add(wv); wv.Navigate("www.yahoo.co.jp/" );
39 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 21:20:31.87 ID:aqK3UKBIa.net] >>35 アンマネージなシステムリソースを確実に解放するときに使うよ
40 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 21:25:32.22 ID:HziEaPXa0.net] どういう考え方をすればできるようになるんだよ!教えろお前ら!!ホラホラホラホラ!!!!
41 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 21:27:36.16 ID:8RMVvRLY0.net] プロセスゾンビを確実にkillするにはどうすればよい?
42 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 21:43:03.21 ID:muNvrUxm0.net] シャットダウン
43 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 12:54:30.79 ID:ZXhSx/U8M.net] kill -9 プロセス番号
44 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 12:54:58.48 ID:sQqhvtlW0.net] init 0
45 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 13:08:29.19 ID:CYBBWkiVM.net] >>17 私は { は単独にしない派ですね。 理由は、少しでも多く画面内にソースを表示して見通しやすくするためと、昔からの Basicの名残で、ifなら thenに相当する { は行末。endifの } は単独という位置づけですね。 今はideの進化で { } のペアの書き忘れがほとんどないというのもあるかな。
46 名前:デフォルトの名無しさん [2018/06/08(金) 14:44:00.50 ID:6WR6CtyO0.net] >>37 試してないけど、対応OSで実行してないとか?
47 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 15:03:45.94 ID:QSVDv9Gwd.net] >>44 その言語の流儀に素直に従った方がいいんじゃないかと
48 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 16:55:43.13 ID:3Fn0oPLQ0.net] 流儀に従うなら、どっちでもいい、では?
49 名前:デフォルトの名無しさん [2018/06/08(金) 17:50:11.32 ID:wbtEeseM0.net] int c = 5; for(c = 1; c < 61; c++) { //処理 } Console.WriteLine(c.ToString()); これで一番最後でCが62になるのですが C<61の判定後でも++のインクリメントは行われているってことでいいのですか?
50 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 17:59:23.80 ID:3yCOErp00.net] >>48 新規でコンソールアプリ用のプロジェクト作ってそれをコピペして実行してみたら? 処理の中身に問題が無ければ62になるはずがない
51 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 18:02:38.49 ID:SrLrQXUUa.net] >>48 https://ideone.com/Sr1WXN
52 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 18:11:11.09 ID:SrLrQXUUa.net] つーか、この程度の検証もせずに他人に質問を投げる神経が分からんマジで
53 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 18:35:49.98 ID:QSVDv9Gwd.net] >>47 パブリックなAPIかそうでないかによって違う
54 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 19:21:59.01 ID:TU3718TC0.net] >>45 OSのバージョンは問題なさそうなんですよね。
55 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 10:20:18.22 ID:iRP9QLJz0.net] >>52 え、何が? {の位置にそんなこと関係ある?
56 名前:デフォルトの名無しさん [2018/06/09(土) 11:11:10.00 ID:3S5Pjg6F0.net] 構造化制御文はインデントされた行を1行と1行、例えば if (a == b) { と } で挟むのが、 パッと見たとき一体に見えて分かりやすい。{ を単独行にすると、{ と } で挟まれた 無名ブロックがあって、その上に構造的に無関係な1行のif文があるように見えてしまう。 もう少しじっくり見れば、行末の ; の有無で下のブロックとの関係を判別できるが、 その一瞬の認知の遅れに違和感を覚え、もっとはっきり言えばキモいコードだと思う。 同じ理由で、条件が真のときの文が1つの場合の if (a == b) c = d; e = f; のようなスタイルもキモいし、Pythonの if a = b: c = d e = f g = h はもっとキモくて、まさに蛇蝎のように嫌いだ。 関数・メソッド定義と制御文の見分けという観点からも、前者は int func(int arg) { 後者は if (cond) { で始めて、( の前のスペースの有無と { の前の改行の有無のどちらでも前者と後者で 違いをつけた方が、すんなりと見分けられて良い。
57 名前: mailto:sage [2018/06/09(土) 11:28:17.50 ID:BV3WmSRm0.net] >>55 if (cond) { } と書くのだったら、関数の場合も int func(int arg) { } とするのが統一がとれていいんじゃない?なぜ関数と if 文とで書き分けるのか、その理由がわからない
58 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 11:40:22.30 ID:kOHnqaQt0.net] その自己主張要る?
59 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 11:41:04.90 ID:kOHnqaQt0.net] あ、>>57 は>>55 宛てね 宗教論争は他所でやって頂きたい
60 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 11:42:25.58 ID:4y2IVpvw0.net] メソッドとif文に差付けなくてもインデント違う時点で判別付くんじゃないのか と思ったが、ローカル関数出てきたんだっけか
61 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 12:02:32.41 ID:54mp5fzVM.net] if (cond) statement; if (cond) call(); if (notcond) return; statement; statement; statement; {}がなくても見やすいね
62 名前:デフォルトの名無しさん [2018/06/09(土) 12:03:48.88 ID:3S5Pjg6F0.net] >>56 それぞれの制御文 (if, for, whileなど) 同士は機能が似通っているが、 関数は全く違うから、見た目も書き分けた方が良い。 Pascalだと関数は function func(arg: integer): integer; begin で、制御文は if cond then begin で始まり、前者は begin の前に ; が入り、関数頭部を書いて一旦区切ってから 関数本体を書く格好になるので、頭部の行の独立性が比較的高い。これに倣い、 C系でも関数は頭部だけで改行した方がすんなり読める。 >>58 じゃあ、スレ立ててよ。
63 名前:デフォルトの名無しさん [2018/06/09(土) 12:05:40.33 ID:3S5Pjg6F0.net] >>60 1行if文は否定しないし、自分自身も割とよく使うよ。
64 名前: mailto:sage [2018/06/09(土) 12:18:17.45 ID:BV3WmSRm0.net] >>61 pascal に習う必要はないと思いますが…なぜ pascal を持ち出してきたのでしょうか? 私は関数と if/for/while を別にする必要性はないと思っています { } とかスペースの無駄にみえてしまいます
65 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 12:23:56.94 ID:54mp5fzVM.net] 構造がクリーンなコードを心がければ自然と{}を使わないコードになる まあ俺から言わせてもらうと{}は綺麗なコードが浮かばない時に仕方なく使う苦肉の策ってところだね
66 名前:デフォルトの名無しさん [2018/06/09(土) 12:43:14.79 ID:3S5Pjg6F0.net] >>63 Pascalの悪い所、例えば条件を ( ) で囲まないので条件が目立たないのは真似する 必要はないが、良い所は参考にすべきだろう。C#は開発主導者がTurbo Pascalの 作者だったこともあり、Pascalからもいくらかの影響を受けていて、赤の他人ではない。 関数と制御文は機能が違うし、関数の方がより大きなブロックだから、書き分けた方が すんなり読める。自然言語で小さな区切りには , を、大きな区切りには ; を使って 書き分けるのに似ている。あるいは章や節の見出しのスタイルに視覚的な差を つけるようなもの。
67 名前: mailto:sage [2018/06/09(土) 12:49:18.67 ID:BV3WmSRm0.net] >>65 >>61 昔のpascalのif 文は if cond begin ..;. end; が主流だった気がします if cond begin end; はむしろCの影響を受けているのでは?
68 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 13:02:16.97 ID:ufdIEzvk0.net] >>54 うん。C#のコーディング規約はあくまでもパブリックなライブラリに関するものだから。 プライベートなものについてはお好きにどうぞって感じ。
69 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 13:06:52.76 ID:oQlrsJoz0.net] 改行コードが構文に影響を与えない言語仕様なんだから、好きにすればいいんだよ。
70 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 13:12:22.07 ID:Tjb3C0On0.net] pascal流はマジキモイな func() { } if () { } else { } が一番利に適ってる
71 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 13:27:36.34 ID:VOfp/P7BM.net] これ以上続けても宗教の違いみたいな話で なにも建設的なハナシにはならないからここらで終わりにしておけば?
72 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 13:29:19.91 ID:4y2IVpvw0.net] いくら議論したところで、お仕事なら我が社のコーディング規約で終わっちゃう話だしな
73 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:24:17.49 ID:fpkuA4ugr.net] どうでもいいしキモい
74 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:27:26.20 ID:DBY1R4Jva.net] この手の嗜好がただの慣れと思い込みにすぎないっていい歳こいて気付かない人は プログラマとしてかなり筋が悪いと思うw たぶん知能もあんまり高くないw 2週間も違う書式で作業してたらすっかりそっちが「普通」になるw 人間なんてそんなもの。 これフォントにも言えるね
75 名前: mailto:sage [2018/06/09(土) 14:28:38.55 ID:BV3WmSRm0.net] >>70 泥仕合にならないかぎり、意義があると思っています、これから泥仕合になるのかもしれませんが…
76 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:28:44.98 ID:d5fCz/GJ0.net] エディタとコーディングスタイルの話はしないのが紳士のたしなみ
77 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:39:18.62 ID:54mp5fzVM.net] >>73 フォントは目に優しいのを使った方がいい カッコの位置などというくだらない問題とは違う
78 名前:デフォルトの名無しさん [2018/06/09(土) 15:20:12.02 ID:JwKFPqLV0.net] >>61 ふらっと C#,C♯,C#(議論用) mevius.5ch.net/test/read.cgi/tech/1469538912/
79 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 15:35:33.03 ID:a58WBe6r0.net] >>75 よい習慣をお持ちですね。素晴らしい
80 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 12:25:35.64 ID:6xD/x26k0.net] VisualStudio2017 でコンソールアプリケーションを作っています。 System.Windows.Forms.Clipboardクラスを使いたいのですが ビルドの設定をReleaseにしているとエラーはでないのに Debugにすると FormsがSystem.Windowsに存在しないといわれてしまいます。 (アセンブリ参照はしています) どなたか原因分かる方いないでしょうか。 https://i.imgur.com/sgkx4HK.png https://i.imgur.com/Tr2VkYB.png
81 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 12:35:57.40 ID:bN46fGFrd.net] >>79 csprojファイル晒して
82 名前:79 mailto:sage [2018/06/11(月) 13:13:19.40 ID:6xD/x26k0.net] >>80 新しいソリューションを作成してコードをコピペしたら問題が発生しなかったので とりあえず解決したということにします。 ありがとうございます
83 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 21:03:57.62 ID:TLX2q1MD0.net] フォームアプリで画面の真ん中に線を引きたいと思って単純に (System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height)/2 のところに線を挽けばいいと思ったんですが、モニタのピクセルの半分のところに線を引くと フォームの上の -□× のあるバーの下から0ピクセルになるから20ピクセルほどが下にずれてしまいます。 フォームの中央に線を引く方法ってないでしょうか?
84 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 21:10:24.16 ID:hXpDig4+p.net] 枠無しフォームでやれ。
85 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 21:11:16.03 ID:R9cSput30.net] >>82 フォームの中央なのか画面の中央なのかまずはっきりしてくれ スクリーン座標←→クライアント座標の変換を行うには? www.atmarkit.co.jp/fdotnet/dotnettips/377screentoclient/screentoclient.html
86 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 21:12:11.98 ID:aKalcs2L0.net] フォームの中央なのかディスプレイの中央なのかどっちだよ
87 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 21:44:14.69 ID:TLX2q1MD0.net] 自分でもどっちでいいかわからなくなったw 最初単純にフォーム最大化してるんだから、モニタの真ん中が真ん中だろと思ったら、 windowsって下にタスクバーあるわ、モニタの下に非表示領域20ピクセルほど隠れてるわ、フォームにフォームバーあるわで、 モニタの真ん中が真ん中に見えない。 たぶん無意識化でフォームの真ん中が人は真ん中と認識しているので気持ち悪い。 ということでフォームの真ん中にしました。
88 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 22:15:41.36 ID:kexbIBuK0.net] >>86 タスクバーの位置なんて自由に変えられるんだけど
89 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 22:24:08.10 ID:xa0hP702a.net] >モニタの下に非表示領域20ピクセルほど隠れてるわ そんなものはないと思うけど... 今時CRT使っててオーバースキャン表示でもやってるなら別かもしれんけどw
90 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 22:37:51.73 ID:VLKc0T550.net] フォームバーってタイトルバーのことかな 非クライアント領域もあるぞ
91 名前:前スレ976 mailto:sage [2018/06/12(火) 07:25:05.60 ID:qsxFIdydM.net] どうにかイベントを発生させることができました。ここから5バイトの受信データを分解して処理を分岐したいんですが、どのような手法、便利な関数がありますでしょうか。 オペコード1バイト+データ4バイトという形式です。データは4バイトで表現する数値だったり、1ビットごとのフラグだったりします。 昔ながらのswich~caseで分岐って使うんでしょうか オペコードが増えたり、データの予約ビットが変わると変更が大変そうです
92 名前:デフォルトの名無しさん mailto:sage [2018/06/12(火) 08:46:58.51 ID:awfOgDQGa.net] switchでいいよ たかがイベント一個作るのに何日もかかるようなレベルで今どんな凝った設計しようが、結局後で全部やり直しになる 今は余計な手間をかけないこと、シンプルに保つこと、それだけ考えてりゃいい
93 名前:デフォルトの名無しさん mailto:sage [2018/06/12(火) 08:51:11.88 ID:l+dIOx6V0.net] デバイスドライバーみたいに処理をチェーンさせるってのもあり
94 名前:デフォルトの名無しさん mailto:sage [2018/06/12(火) 09:12:16.14 ID:HMj9ZmCFM.net] スクリプト言語のインタプリタなんかでも巨大switchが普通だぞ 断言するが、先を見通せない状況でヘタにコマンドパターンとか入れても、後で横断的な変更が多発して すべてのコマンドクラスに手を入れて回るアホみたいな作業に追われることになるだけ
95 名前:デフォルトの名無しさん mailto:sage [2018/06/12(火) 10:49:11.67 ID:Blmm4zE90.net] コード増加はともかく予約を変更すんな・・・
96 名前:デフォルトの名無しさん mailto:sage [2018/06/12(火) 11:04:17.10 ID:O2DKnY7ra.net] >>90 どっちにしろ「便利な関数なんかないでしょうw ちっとも汎用的じゃない処理をエレガントに書く方法なんか用意されてるはずがないw 泥臭い物は泥臭く書くしかないかと オペコードがそれ以上分解できない前提で (1) オペコードをenumにキャストしてswith、でも (2) ジャンプテーブル(デリゲートの配列)を使う、でもお好みで もし仮に受信するデータが常にこちらから要求したデータである、 つまり、どういうデータが送信されてくることをこちら側が期待しているか事前に分かっている場合は 別の方法論もあると思う その場合はこちらがリクエストを出す段階で、期待する種類のデータだけを読解できるオブジェクトを 生成してタイムアウト付きで待機させればいい
97 名前:デフォルトの名無しさん mailto:sage [2018/06/12(火) 12:12:37.91 ID:yJ6G/fgzM.net] >>93 横断的な変更を最小限の労力でやるために最初にほんのすこしだけ投資する これがシステム開発のコツな
98 名前:デフォルトの名無しさん mailto:sage [2018/06/12(火) 14:41:16.06 ID:dH3jUIiRp.net] それより、データの先頭を識別できるフォーマットにしたか?
99 名前:デフォルトの名無しさん mailto:sage [2018/06/12(火) 15:40:05.30 ID:wFgJsw9E0.net] 固定長なら先頭コード種類分のデリゲートを割り付けるってのもあるが、こればっかしは好みだな。
100 名前:前スレ976 mailto:sage [2018/06/12(火) 20:18:08.93 ID:qsxFIdydM.net] ありがとうございます。 ベタベタに書いてみます。 1バイトが1ビットごとのフラグになっている場合はビットマスクで一つずつ抽出するのが一般的でしょうか?
101 名前:デフォルトの名無しさん [2018/06/13(水) 22:29:58.82 ID:T96Fk9Se0.net] SQLについて質問ですが INSERT INTO T_USER ( ID, PASSWORD ) VALUES ( @ID, @PASSWORD ); のINSERT分を INSERT INTO T_USER ( ID = @ID, PASSWORD = @PASSWORD ); のように書く場合はどのようにしたらよいでしょうか。