1 名前:デフォルトの名無しさん mailto:sage [2019/07/16(火) 15:36:23.74 ID:i1fbuZ/pM.net] !extend:checked:vvvvv:1000:512 次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為) 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■関連スレ C#, C♯, C#相談室 Part95 https://mevius.5ch.net/test/read.cgi/tech/1508168482/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■前スレ ふらっと C#,C♯,C#(初心者用) Part143 https://mevius.5ch.net/test/read.cgi/tech/1558002486/ ■情報源 https://docs.microsoft.com/ja-jp
4 名前:デフォルトの名無しさん [2019/07/17(水) 10:08:14.00 ID:5/22vZUf0.net] もしわかったら助けてください VS2017 c# Windowsフォームで、textboxのKeyDownイベントで別のTextBoxをアクティブにする関数を作ったのですが なぜかフォームが非アクティブになってしまいます KeyDownイベントでなく、テストボタンを作ってClickイベントで関数を呼び出すと正常に動作します 何か考えられる原因ってあるでしょうか…
5 名前:デフォルトの名無しさん mailto:sage [2019/07/17(水) 10:20:06.72 ID:QuDmOW+q0.net] >>3 下キーで別のコントロールにフォーカスが移ってるのでは?
6 名前:デフォルトの名無しさん mailto:sage [2019/07/17(水) 10:23:43.96 ID:9uoKRG3i0.net] spy++の出番だな
7 名前:デフォルトの名無しさん mailto:sage [2019/07/17(水) 10:26:55.94 ID:9uoKRG3i0.net] フォームが非アクティブ=別フォームor デスクトップがアクティブでは無く?
8 名前:デフォルトの名無しさん mailto:sage [2019/07/17(水) 10:50:55.66 ID:5/22vZUf0.net] keydownでなくkeyupイベントで処理したら理想通りになりました どうして…? >>4 multilineのテキストボックスで移動はしていないようです >>6 そもそもフォームを1つしか作っていないんです
9 名前:デフォルトの名無しさん mailto:sage [2019/07/17(水) 15:38:10.55 ID:/p35zq9TM.net] キーダウン後にセットフォーカスなんじゃん? キーアップだとセットフォーカス後なのでうまくいくとか?
10 名前:デフォルトの名無しさん mailto:sage [2019/07/17(水) 18:48:12.22 ID:16aW/iRU0.net] >>3 こういうことやりたいの? ideone.com/JvzEb7 Atexで入力しようとするとBtexがアクティブになってそっちに文字入力される ただしAtexで入力された最初の一文字はこのコードだと捨てられるから、それも入力したいのならもうひと手間かけないと ここ参考に TextBoxに数字しか入力できないようにする https://dobon.net/vb/dotnet/control/numerictextbox.html#section1 KeyDownでもできるけどKeyPressでやるのがより一般的っぽい ただe.Handled = trueやe.SuppressKeyPressを外してもフォームが非アクティブになるのは無いから、それは書いてない別の原因があるはず
11 名前:デフォルトの名無しさん [2019/07/18(木) 02:37:55.39 ID:JiMlnGX40.net] DateTimePickerの継承コントロールを作っているのですが、カレンダーや手入力で日付を変更しても、Valueの値が変わりません。 何が原因でしょうか? ※Deleteキーが押されたらnullになり、その他のキーが押されたら、nullになる前の日付が表示されるようにしたつもりです。 ideone.com/BRM6jo
12 名前:10 mailto:sage [2019/07/18(木) 03:27:19.51 ID:JiMlnGX40.net] ほんとにしょーもない見落としでした(´・ω・`) コンストラクタに、 TextChanged += (sender,e) => Value = DateTime.Parse(Text); 入れたら動きました。
13 名前:10 mailto:sage [2019/07/18(木) 03:39:32.99 ID:JiMlnGX40.net] 正常な日付 or null のどっちかにしかならない必要があるので、以下のほうがよかったです。 TextChanged += (sender, e) => { if (String.IsNullOrWhiteSpace(Text)) Value = null; else Value = DateTime.Parse(Text); };
14 名前:デフォルトの名無しさん mailto:sage [2019/07/18(木) 07:02:48.53 ID:teqAmMY+0.net] ASP.NETのWEBフォームで特定のページを誰かが開いていたら他の人は開けないようにしたいのですがどういう実装で実現出来るでしょうか? ページをオープン中という状態を知る術が見付からずに困っています C#で作っているというだけで使う技術は多岐に及びそうですがよろしくお願いします
15 名前:デフォルトの名無しさん mailto:sage [2019/07/18(木) 08:03:49.72 ID:Q7y8Xu/qM.net] 定期的にajaxで閲覧中のステータスを5秒おきにサーバに送信して 最後の送信から15秒くらいの時間が経過したら 他のユーザーにアクセスを許可すれば良いんじゃね?
16 名前:デフォルトの名無しさん mailto:sage [2019/07/18(木) 10:18:40.31 ID:926jk5Fkd.net] ちょうどそんな実装してるけど、ロック掛ける(+掛けれなかったら掛けてる奴返す)ためのajaxで呼ぶAPIと、ロック解除するAPI作ってる。 ロックはTTL60秒。クライアントから30秒ごとに延長かけてる。 JSのoncloseかなんかでロック解除API叩いてるけど、たたき漏れは今のところ無い。
17 名前:デフォルトの名無しさん mailto:sage [2019/07/18(木) 10:53:36.62 ID:xGZEok3k0.net] webからダウンロードした画像をメモリ上に保持してるんだけど dispose忘れがなかなか厄介 GCでdisposeさせるかそれに近い動作をするものってないものかな
18 名前:デフォルトの名無しさん mailto:sage [2019/07/18(木) 11:13:33.22 ID:6A8bU/H4a.net] >>16 逆にGCは何をすると思ってるの? マネージドの場合事実上「GCでDispose」されると思っていいはず。 だから本当に怖いのはdispose忘れじゃなくて、 イベントの購読の解除を忘れるとかして参照を間接的に握られ続けること
19 名前:10 mailto:sage [2019/07/18(木) 13:26:02.08 ID:JiMlnGX40.net] すみません。 予想通りに動いたと思ってたんですが、"Value = 値" という方法で値を設定すると反映されません。 どうすればよいでしょうか・・・ ideone.com/UcN1cB
20 名前:デフォルトの名無しさん mailto:sage [2019/07/18(木) 13:36:05.50 ID:ydKHj7N/0.net] Value = DateTime.Parse(Text); じゃなくて DateTime.TryParseを使って、日付に変換できる場合のみセット
21 名前:デフォルトの名無しさん mailto:sage [2019/07/18(木) 13:47:58.03 ID:eovQbio40.net] そりゃbase.Valueに値設定しなけりゃ表示変わらんでしょ
22 名前:デフォルトの名無しさん mailto:sage [2019/07/18(木) 13:50:06.72 ID:1HV7iRhh0.net] お知恵をお借りしたく。。。 public struct LogsData { public double total; public long starttime; } var aaa = new LIST<LogsData>(); totalだけが入ったLISTを作りたい ぶん回す方法はできたのだがもっとスマートな方法はないだろうか。 var bbb = new List<double>(); foreach (var ccc in aaa) { bbb.Add(ccc.total); }
23 名前:デフォルトの名無しさん mailto:sage [2019/07/18(木) 13:53:58.03 ID:6lFXmRU70.net] AddRange
24 名前:デフォルトの名無しさん mailto:sage [2019/07/18(木) 13:57:35.04 ID:NtL98NX40.net] var bbb = aaa.Select( x=> x.total ).ToList();
25 名前:デフォルトの名無しさん mailto:sage [2019/07/18(木) 14:04:12.94 ID:1HV7iRhh0.net] >>23 神現る。ありがとう!
26 名前:デフォルトの名無しさん mailto:sage [2019/07/18(木) 19:17:58.78 ID:teqAmMY+0.net] >>14 なる程 webを質問するとC#の枠組みを超えてしまうのでアレですが有用なアイデアありがとうございます
27 名前:デフォルトの名無しさん [2019/07/18(木) 20:46:46.74 ID:c4BAkJVY0.net] >>17 てっきりbitmapは明示的にdisposeしないとメモリリークするのかと思ってたんだけど 都度GC.Collect()してみたらdisposeしなくても大丈夫だったわ ありがと
28 名前:デフォルトの名無しさん mailto:sage [2019/07/19(金) 16:29:04.35 ID:g/qsh+DNa.net] >>26 disposeすると今すぐメモリを解放してくれる。しないとガベコレが走るタイミングまで待たされる。GC.Collectは今すぐガベコレする。
29 名前:デフォルトの名無しさん mailto:sage [2019/07/19(金) 20:25:52.26 ID:VLsw2rVZM.net] >>27 大手の担当者(客)とか絶対理解できないから定期実行(十分に一度)してるわ やらないと リークだリークだうるせぇんだこれが
30 名前:デフォルトの名無しさん mailto:sage [2019/07/19(金) 21:26:29.42 ID:5+qJlswgM.net] >>27 bitmapを凄い勢いで作るプログラムを前に書いたら メモリ不足で例外を吐いた事があったのよ んでGCで解放されないのかと思ってたわ
31 名前:デフォルトの名無しさん mailto:sage [2019/07/19(金) 21:30:00.71 ID:KvrVBoUe0.net] >>29 でもVSのモニタを見るとGCって結構な短期間で動いてくれるんだよな GC.Collectはブラシーボ効果しかない
32 名前:デフォルトの名無しさん mailto:sage [2019/07/19(金) 21:36:05.87 ID:IuwL/lPHM.net] Bitmapはファイナライザを実装してるから2回GCが走らないと解放されない あと頻繁に動いてるのは最も浅い世代のGen0GCで、GCを生き残って昇格してしまったオブジェクトを回収させるにはGC.Collectは有効
33 名前:デフォルトの名無しさん mailto:sage [2019/07/19(金) 22:21:52.99 ID:A6fR/TKy0.net] >>30 遅いマシンで 割と重めのアプリを一日経ってからやってみ 3分ぐらいはフリーズするよ stop the worldというだけはある
34 名前:デフォルトの名無しさん mailto:sage [2019/07/20(土) 02:43:36.72 ID:HA7JgwCb0.net] >>30 試してみたらGCが一度も走らずに即死した GC.Collectしないとマズそう https://i.imgur.com/sR1A0ME.jpg
35 名前:デフォルトの名無しさん mailto:sage [2019/07/20(土) 20:49:53.26 ID:hrLeGUFN0.net] 時間はかかっても、MSゴシックなら正常に動作するんですが 游ゴシックを指定すると、なぜか文字が重なり合ったりして正常に表示されません g.DrawString(new String('@', 5000000), drawFont, Brushes.Black, 0, 0);
36 名前:デフォルトの名無しさん mailto:sage [2019/07/20(土) 21:01:47.46 ID:IDb6GPRz0.net] >>34 描画先に十分なスペースはあるの? フォントサイズ減らしたら改善するとかは無い? それで無理なら一行ずつ描画するしかないな
37 名前:デフォルトの名無しさん mailto:sage [2019/07/20(土) 21:13:32.08 ID:hrLeGUFN0.net] 文字列を短くするとちゃんと表示されます
38 名前:デフォルトの名無しさん mailto:sage [2019/07/20(土) 21:23:14.33 ID:IDb6GPRz0.net] あ、Rectangle指定しないと折り返さないのか? https://dobon.net/vb/dotnet/graphics/drawstring.html >>36 意図的に無茶な指定しているのなら不具合が起こってもしょうがないと思う
39 名前:デフォルトの名無しさん mailto:sage [2019/07/21(日) 12:10:16.19 ID:AXqQTYqQ0.net] Webbrowser で表示されているある部分をクリックしてAjaxで動的にHTMLが変化する場合 documentcompleted は発生しませんが HTMLの変化を検知するにはどうするのがいいのでしょうか? タイマーを使ってWebbrowser のHMTLの内容を比較するくらいしかないですかね?
40 名前:デフォルトの名無しさん mailto:sage [2019/07/21(日) 12:43:20.58 ID:P7LE/kkP0.net] >>38 UWPのWebViewなら、スクリプトを直接呼び出して完了待ちとか出来るよ FormsやWPFからでも使えるようになっているみたいだから頑張ればなんとかなる 勿論UWPで作るってのもアリだが
41 名前:デフォルトの名無しさん mailto:sage [2019/07/21(日) 13:44:31.17 ID:AXqQTYqQ0.net] >>39 理想的な動作です UWPでやってみます ありがとうございます
42 名前:デフォルトの名無しさん mailto:sage [2019/07/22(月) 01:46:10.70 ID:fKk8m16B0.net] どんな処理に対してどんな例外処理をすればよいのか理解出来ないのですが、 「〇〇メソッドが投げる可能性がある例外」という感じの一覧みたいなものってないでしょうか?
43 名前:デフォルトの名無しさん mailto:sage [2019/07/22(月) 02:11:10.76 ID:Z/C74OJi0.net] >>41 Docsの.NET Framework API リファレンスの各メソッドの説明に載ってる
44 名前:デフォルトの名無しさん mailto:sage [2019/07/22(月) 15:09:04.83 ID:9U8T6M8Za.net] >>41 他にも、VisualStudio上でメソッドにカーソルを合わせると出てくるツールチップで「例外」箇所に型が載っていたり F12で定義に移動した後のコメント中で「例外」箇所に型と理由が載っていたりする
45 名前:デフォルトの名無しさん mailto:sage [2019/07/22(月) 20:31:22.66 ID:bxEn3DSVr.net] >>38 WinFormのWebBrowserでajaxで読み込みはタイマーみたいなの使って取れてる
46 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 21:30:46.97 ID:roLN7w1Qd.net] ざっくりで失礼します。 面白半分にc#でエロや風俗系を作れたらいいなと思ったのですが案ありますか? なかなか思いつかなくてw
47 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 21:34:28.66 ID:zEKbbod30.net] >>45 C#+Unityのエロゲなんかいっぱいあるでしょ そしてこの板で聞くことじゃない
48 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 21:41:17.09 ID:Uygc18n30.net] >>46 言われてみればそうですね 失礼しました。
49 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 23:55:04.04 ID:SedAptpn0.net] 草
50 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 16:27:29.05 ID:UXkDZrqn0.net] 変態さんでいっぱいだ 前スレのエロ画像スクレイピングマンは成功したのかな
51 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 03:11:13.96 ID:8BXDtT/D0.net] エロ画像なんて厳選して保存しないとすぐ500GBぐらいいくだろうに
52 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 12:52:05.57 ID:53dis5oN0.net] 動画ならともかく画像で500GBはベテランの領域。
53 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 13:12:23.94 ID:53dis5oN0.net] コンテキストメニューを定義して、それを別コントロールに割り当てて、 それを更に別のフォームからクリックで実行したく、下記の構造にしているのですが、ControlExの公開プロパティになっている点に、なんとなく違和感感じています。 もうちょっと綺麗な構造に出来ないでしょうか? public class ContextMenuEx : ContextMenu { public ToolStripItem OpenMenu { get; private set; } } public class ControlEx : Control { public ContextMenuEx ContextMenuEx { get; set; } public ControlEx() { ContextMenu = ContextMenuEx; } } public class ViewControl : Form { private ControlEx MyControlEx = new ControlEx(); public ViewControl() { MyControlEx.ContextMenuEx.OpenMenu.Click += //クリックイベント } }
54 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 16:05:13.49 ID:uxWd1qa6a.net] >>52 ごめん何がしたいのかさっぱり分からんw
55 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 16:28:06.90 ID:Kg/2nYdc0.net] コンテキストメニューがnewされてないから例外が出るね
56 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 17:02:58.89 ID:VkzQYvSYM.net] 普通にメニュー出してsendmessageでええよ?
57 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 17:08:02.31 ID:Kg/2nYdc0.net] なんとなくの違和感なんて知らんが 要するに何をどうしたいんだか
58 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 18:11:15.82 ID:tpwQJJNh0.net] 違和感 スポーツ選手みたいやなw 右肩に違和感を・・・ ○○.cppに違和感を感じ納品を見送ったとのことです
59 名前:デフォルトの名無しさん mailto:sage [2019/07/27(土) 07:50:47.17 ID:1So0tMH70.net] 質問する技術が足りてない とにかく違和感とかいう抽象的なことじゃなくて具体的に
60 名前:デフォルトの名無しさん [2019/07/27(土) 23:40:34.97 ID:NQ4+UjHL0.net] 配列添字演算子付のpropertyはありますか? イメージ的には public int MyIDList[int]{ set{this.myIDList[idx] = value;} get{return this.myIDList[idx];} } みたいな事がしたいです
61 名前:デフォルトの名無しさん mailto:sage [2019/07/27(土) 23:46:47.22 ID:+ZEWiPdqa.net] >>59 ない
62 名前:デフォルトの名無しさん mailto:sage [2019/07/27(土) 23:48:18.25 ID:NQ4+UjHL0.net] >>60 ありがとうございます
63 名前:デフォルトの名無しさん mailto:sage [2019/07/27(土) 23:49:00.45 ID:F72yN9ZSM.net] できない インデックスの渡し方しか考えてないようだけど それだとLengthやforeachで回せる機構など 配列に必要な関数群も仕組みもないだろ? 素直にListから継承させるか インデックスを引数で渡せばいいじゃない
64 名前:デフォルトの名無しさん [2019/07/28(日) 00:26:47.42 ID:vg9qDEAT0.net] んん、インデクサのことではなくて? https://ufcpp.net/study/csharp/oo_indexer.html
65 名前:デフォルトの名無しさん mailto:sage [2019/07/28(日) 00:35:17.04 ID:GU+doGlgM.net] それはクラスにインデクサが付く話だし プロパティには持たせられないじゃん
66 名前:デフォルトの名無しさん mailto:sage [2019/07/28(日) 00:49:15.67 ID:zR0XYwX4a.net] >>63 質問者がやりたいのはそのリンク先の「余談: VB のインデックス付きプロパティ」のこと C#で出来ないようにしている理由はリンク先に書かれているし >>62 も書いてくれている
67 名前:デフォルトの名無しさん mailto:sage [2019/07/28(日) 01:53:35.14 ID:GU+doGlgM.net] まあたださ class p { List<double> da; double center[int index]{ get {return (da[index+1] - da[index]; } } } みたいに、クラスの配列データを元に 仮装配列的なものを作りたいんだろうなと思う 昔俺もやりたくて調べまくったよ これを今のc#で実現しようとすると、わざわざプロパティごとにクラス化なきゃいけないし クラスの生成や配列を振る舞うクラスに元データを渡すのとか非常に面倒になる そこまで出来たとしてもメリットはインデックスを[]で渡せるだけで 配列(っぽいもの)ですよとコード上で示せるだけ 普通に関数実装で[]表記以外は同じことが出来るので コードの美しさ的には不満があるけど 実装上は困らないんだよな 単純に関数の引数は()でも[]でも囲めるようにしてくれたら簡単なんだけどね
68 名前:デフォルトの名無しさん mailto:sage [2019/07/28(日) 07:11:46.83 ID:iidlab190.net] ttps://ideone.com/DcIIzB
69 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 09:26:09.88 ID:IhJrxMBNM.net] constって継承できないもんかな 継承クラスで定数を変えたいんだけど 何か上手い方法はないだろうか
70 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 09:51:52.35 ID:MQBecH/v0.net] できないので、諦めてオーバーライド可能なメンバでやって そういう機能が欲しいなら、githubで提案してくるとよい ここで喋っても入らないのでそのつもりで高説は垂れるように
71 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 09:53:45.93 ID:aYg/q9jya.net] >>68 隠蔽(new)は出来るでしょ 継承というかoverrideはインスタンスメンバーを上書きするものであり、 constは本質的にstaticメンバーなんで、継承でconstを変更という発想はそもそも矛盾してるんじゃないの?
72 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 10:10:15.53 ID:nToTFkzEd.net] constは埋め込みだから無理 コーディングを見やすくしてるだけなんよ static virtual readonly とか…できるんかな書いたことないけど
73 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 10:22:24.95 ID:IhJrxMBNM.net] 単純にこんな実装がしたいんだよね オブジェクトの詳細で表示する名称表示とかさ class BaseObject{ const virtual string ObjectName=“(基底クラス)“; string GetObjectName(){return ObjectName;} } class TextObject:BaseObject{ const override string ObjectName=“テキストボックス“; } class LineObject:BaseObject{ const override string ObjectName=“直線“; } class EllipseObject:BaseObject{ const override string ObjectName=“楕円“; } 大して文字数も変わるわけでもないし、やっぱこう実装するよりないか override string ObjectName{ return “楕円“; }
74 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 10:31:59.35 ID:AKu0TaFKM.net] >>68 定数を返すだけの読み取り専用のプロパティにする
75 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 10:40:17.04 ID:B9XYpo8O0.net] >>73 これ
76 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 12:17:38.06 ID:AKu0TaFKM.net] >>72 読み取り専用プロパティはもうちょっとコンパクトに書ける override string ObjectName => "楕円";
77 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 12:33:54.79 ID:vSU/UXgGa.net] https://ideone.com/R6UBzL あんまり面白くないねw
78 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 12:49:16.40 ID:IhJrxMBNM.net] >>75 おお、いいですね!活用させてもらいます!
79 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 13:37:48.40 ID:k9k21JDF0.net] >>68 readonly使うのが定石
80 名前:デフォルトの名無しさん [2019/07/31(水) 15:31:35.93 ID:tEceTxskd.net] MacでC#勉強してみたいんですがVisual Studio入れないと厳しいですか? VS Codeだけでは難しいですか?
81 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 16:00:55.32 ID:lLYOef6LM.net] MacでC#を勉強するメリットはないから他の言語にしとき 唯一意味があるのはUnityでゲーム作る用途だから、Unity入れてC#やってみるのはまあアリ
82 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 18:13:54.85 ID:vBQ8AC7J0.net] >>79 言語の学習目的なら.NET Core SDKとVSCodeでじゅうぶん
83 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 18:27:29.21 ID:SBa7OC8vd.net] >>79 難しくないよ
84 名前:デフォルトの名無しさん [2019/07/31(水) 18:38:19.42 ID:quxH8qSha.net] >>79 変な意地をはらずに一番イージーな道を選択した方がいいよ つまらないことに時間を浪費したいの?w
85 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 18:43:57.13 ID:lLYOef6LM.net] >>83 その理屈だとBootcampでWindowsをインストールするのが最善ということになってしまう VS for Macなんかほとんど誰も使ってないんだから、時間の浪費という意味ではVSCodeといい勝負だわ
86 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 19:10:03.53 ID:9TaORHsg0.net] Listでindex aのアイテムをindex bにインサートするスマートな方法はないだろうか aをremoveしてbにインサートすると、a>=bならいいけど、a<bの時 removeでインデックスがズレるので狙いより1つ下に行ってしまう 一番下だと範囲外の例外が起きてしまう できればこれを実行するメソッドを作って既にあるList<T>を拡張したいんだけど ヘルパークラス的なものって作れないかな?
87 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 20:05:23.41 ID:i+V4gIP9a.net] >>85 「拡張」という言葉の意図がわからないけど ヘルパークラス作って静的メソッドや拡張メソッドとして定義すれば良いんじゃない? List<T>を継承したオレオレListでメソッド定義、という方法は止めとけ
88 名前:デフォルトの名無しさん [2019/07/31(水) 20:12:36.58 ID:quxH8qSha.net] >>85 やってみたが例外なんか出ないけど https://ideone.com/CazHs2
89 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 21:18:24.59 ID:uxU05rGA0.net] >>79 両方使って比較してみては
90 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 23:06:20.36 ID:9TaORHsg0.net] >>87 2 to 9なのに1が9に移動しちゃうでしょ?
91 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 23:07:54.33 ID:9TaORHsg0.net] ああごめん、リストの再生成をしてないのね
92 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 23:27:27.06 ID:9TaORHsg0.net] 申し訳ない、コードを見直したら質問の前提を間違えてました やりたかったのは List<T> というリストがあった場合に リストに入っているかわからないオブジェクトaを リストに入っているオブジェクトbの1つ後に挿入する …というメソッドを作りたかったんです List<T>.MoveAfter(T b,T a) //リスト内bの後ろにaを挿入、aがList内にある場合は元の位置から移動させる で、このメソッド自体の実装はできているんですが いただいたサンプルのextensionsの記述がよくわからず質問しました おかげでうまく実装できました、ありがとうございます!
93 名前:デフォルトの名無しさん mailto:sage [2019/08/01(木) 08:01:53.51 ID:xGy0TEOb0.net] >>79 他の人も言ってるけど、unityでC#使ってるよ C#自体の勉強ならこれで出来る 当然、WindowsアプリをC#で作れるようなスキルは得られないが
94 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 00:28:39.75 ID:pwBgdUBF0.net] c#とvsの至れり尽くせり感に慣れすぎて他の開発環境でできなくなりました
95 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 00:45:41.15 ID:RRmMDCsx0.net] そうなんだよなー VSは使いやすすぎる Delphiの開発者を引き抜いてきただけあるわ
96 名前:デフォルトの名無しさん [2019/08/02(金) 00:52:16.45 ID:80wMhccea.net] 最低限IDEで自動ビルドなら慣れれば貧弱な環境も楽しいよ インテリセンスなんかないから長い識別子をダブルクリック & Ctrl + C ⇒ Ctrl + V ばっかりしてたら左手が腱鞘炎になっちゃったけどw
97 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 09:27:47.59 ID:NmFjjWZQ0.net] 秀丸ですらファイル内入力補完あるよ
98 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 13:45:35.78 ID:E5BJDT7zM.net] 秀丸御殿が建ってる偉大なエディタに対して「ですら」って
99 名前:デフォルトの名無しさん [2019/08/02(金) 14:01:07.04 ID:ktX3qXN3a.net] 大昔試用したことあるけどまだ存在するんだw いい加減タブ化とかしたのかな しかし、日本人も真面目に作者に金払って使う人結構いるんだね
100 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 14:48:47.26 ID:NmFjjWZQ0.net] いや秀丸はすげーと思うけど言語解析までするIDEと比較してテキストエディタですら入力補完あるのにコピペ頑張らんでもええやん、って話 タブ化は10年前くらいには対応してたはず vscodeも良いけど軽さはやっぱ秀丸のほうが良いから今でもちょいちょい起動するよ
101 名前:デフォルトの名無しさん [2019/08/02(金) 15:14:57.86 ID:e58H0HHKF.net] Nif●y の決済システムってまだ稼働してるんか 最近使ってないから知らんけど
102 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 15:18:13.18 ID:j/fAdfUcd.net] 俺も秀丸とvscodeの併用だね 秀丸は起動が速いから
103 名前:デフォルトの名無しさん [2019/08/02(金) 15:47:38.91 ID:ktX3qXN3a.net] xyzzyなら一時期使ってたなあ 道具にこだわるたちじゃないんで、金払ってまで禿丸さんを使う気にはなれなかった
104 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 15:50:45.00 ID:xzjh5WuB0.net] きたああああああああああああああああああああああああああああ https://i.imgur.com/Q7qeopR.jpg
105 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 16:01:20.35 ID:4Xvk7WGTM.net] Rider使いは?
106 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 18:09:45.30 ID:sXaRfN3S0.net] >>102 道具にこだわらないのにWindowsは金払ってまで使うんだ
107 名前:デフォルトの名無しさん [2019/08/02(金) 22:46:17.18 ID:UiHNxeJXa.net] ここにいる人は趣味プログラマーが多いんかな 本業なんだけど経験ないC#開発もやらないといけなくなったって人も結構いたりする?
108 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 22:52:43.67 ID:ol3AyafF0.net] windowsはみんな使ってるからこだわってるとは言わない。普通。
109 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 22:54:15.89 ID:j/fAdfUcd.net] >>106 本業だけどWin32から.NETへの移行期はC#の経験ないところから始めたね
110 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 23:19:14.53 ID:bTVyt88NM.net] 俺はDelphiからの転向
111 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 00:28:08.22 ID:3YKHpYYf0.net] 同じく本業。 事前に経験ってほどのものがあったことなんかほとんどないような気がするけどなあ。 最近なら python をやってみたり。これ ruby っぽくてそんなに好きになれそうにないや。C# は大好き。
112 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 00:31:46.15 ID:n84PTU/80.net] 本業C#erだわ 趣味時代はCとかPythonとかやってた
113 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 01:17:35.52 ID:lgH4NInK0.net] 組み込みだけど本業の開発よりc#でGUI作ってるほうが楽しい!
114 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 10:25:21.86 ID:QMMl7Yx90.net] 聞きたいこと ライブラリ内の数値を、メインのプログラムで参照した。 arduinoを動かそうとプログラムを書いているのですが、 hoge.h 内に、 enum class Button : uint16_t{ A = 0x0001, B = 0x0002}; というクラスがあります。 これを、 #include <hoge.h> void setup() { const int BtPt[2] = {Button.A,Burron.B}; } のように、代入したいんですけど、うまくいきません。 どうすれば参照できるんでしょうか。 そもそも概念的に間違ってるのかもしれませんが、、、
115 名前:デフォルトの名無しさん [2019/08/03(土) 10:27:40.91 ID:3ia1GLNcF.net] 書き込むスレが間違ってる
116 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 11:44:13.94 ID:6qsjMY4R0.net] 俺も最近CからC#に移行したんだが、下痢ゲートだとか阿弥陀式とか、ワケ分からないw
117 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 16:40:29.95 ID:n84PTU/80.net] Cもまともに書けてなさそう
118 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 19:56:50.53 ID:voIsjIeCM.net] 本業C#erの方、年収とキャリア教えて下さい!!
119 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 21:25:49.26 ID:MA8i5rVM0.net] 新卒5年目、約600万円や
120 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 22:06:36.96 ID:WW7jv2oU0.net] >>117 40歳年収240万
121 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 22:07:55.00 ID:n84PTU/80.net] 新卒2年目450万くらい
122 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 03:03:55.72 ID:JPscGmkT0.net] 1000万越えのC#erはいないのか? てか、そのくらい高額になるともはやコード書く仕事ではなくなるからC#erを名乗らなくなる?
123 名前:デフォルトの名無しさん [2019/08/04(日) 03:23:55.03 ID:jcz7NslOa.net] そういう話はさすがにスレ違いでプログラマ板でやった方がいいと思うが、 C#に限らずサラリーマンプログラマで1000万越えは少ないだろうね。 フリーランスの優秀な人はもっと貰ってるかもしれない。 意外だろうけど零細企業は景気がいい時は大手より高給が貰えるところもある。 ただいかんせん不安定 プログラマに限らんけど、優秀な人はアメリカにでも行った方がいいね。 日本はいろいろ終わってると思うw
124 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 03:39:09.71 ID:JPscGmkT0.net] そうですね、確かに年収ネタは荒れやすいしすれ違いでした。これでこの話題は終わりにしときましょう。
125 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 16:
] [ここ壊れてます]
126 名前:52:52.62 ID:idEgR3Nvr.net mailto: まあ色々な意味でも終わってるのかもねw この不寛容さの社会を作ってしまった「市民」として責任を少しだけ感じます [] [ここ壊れてます]
127 名前:デフォルトの名無しさん [2019/08/06(火) 17:15:33.24 ID:8h96sAQZ0.net] C言語スレとマルチですが質問がスルーされてるので質問させてください。 コマンドライン引数というのは具体的に何が出来る引数なのでしょうか? WisdomSoftって入門サイトと苦しんで覚えるC言語って本を読んでるのですがイマイチ何が伝えたいか分かりません。
128 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 17:23:41.64 ID:lwH+jHue0.net] ファイルをダブルクリックされた時に なんのファイルをダブルクリックされたか 知るためなどに使う
129 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 17:24:51.93 ID:lwH+jHue0.net] 関連付けされたファイルをダブルクリックして起動された時などに…だな 言葉が足りなさすぎた
130 名前:デフォルトの名無しさん [2019/08/06(火) 17:37:01.47 ID:8h96sAQZ0.net] >>126 ありがとうございます。 しかしファイルをダブルクリックしても何も起こりません; 読んでるサイトにはD&Dすると白紙のメモ帳にプログラムが書き写されるみたいなこと書いてあるので 試しましたが何もおこらず・・・ 使ってる環境VS2019なのですがそれが駄目なんでしょうか?
131 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 17:38:57.54 ID:lwH+jHue0.net] >>128 その読んでるサイトとやらのURLを見せてみ?
132 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 17:41:48.19 ID:hdPDl6nEM.net] >>125 まあなんだ、引数を指定してバッチ起動できるわけよ。 すると引数に応じた処理をすることが出来たりする。
133 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 17:43:05.87 ID:nV6bzp6s0.net] >>125 アプリ実行時に引数で指定した文字列の配列を渡せるだけ それを使って何が出来るかはアプリ次第
134 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 17:44:52.93 ID:8h96sAQZ0.net] >>129 http:ああwisdom.sakura.ne.jpあprogrammingあcあc32.html と https:ああ9cguide.appspot.comあ17-03.html です URL禁止みたいなのでスラッシュを置き換えてます。スイマセン 後者に関してはstdin等なんの説明もなく使ってるので更に分からないです
135 名前:デフォルトの名無しさん [2019/08/06(火) 17:55:25.38 ID:8h96sAQZ0.net] >>130-131 メモ帳とかを使ってそれを実行できたりしないのでしょうか? わかり易く解説してサイトとかあったら教えて頂けると助かります;
136 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 18:02:11.72 ID:lwH+jHue0.net] もしかして実行して一瞬チラッと何か出てすぐ終了する感じ?
137 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 18:11:09.99 ID:D2KPblxl0.net] >>133 関数に引数を渡すのは知ってる? 渡す引数の内容でその関数の動作は変わるよね? コマンドライン引数はmain関数への引数になる その引数はファイル名だったりexeを起動する人が入力する文字列だったりする まずはコマンドライン引数を出力してみて何が入っているか確認しよう 出力先はテキストファイルでもコンソール(stdout)でもいい
138 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 18:11:12.27 ID:ruFXP44J0.net] >>133 これコンパイルして、以下のようにコマンドライン引数渡して起動してみて。 C:\どっかのフォルダ> MainClass.exe 引数1 引数2 引数3 using System; public class MainClass { public static void Main(string[] args) { Console.WriteLine("最初の引数は" + args[0]); foreach(string s in args) { Console.WriteLine(s); } Console.ReadLine(); } } バッチ使うなら、exeと同じフォルダに、以下の内容のバッチファイル(***.bat)置いて、バッチファイル起動してみて。 hello.exe 引数1 引数2 引数3
139 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 18:11:17.28 ID:8h96sAQZ0.net] >>134 いえ、コードをVS2019で実行して実行画面を出したままデスクトップのメモ帳をD&Dしました
140 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 18:13:03.10 ID:6OOXAacva.net] >>125 どのスレのどの書き込みがマルチ
141 名前:ポスト元なの? 質問系のスレならスルーはあまりないと思うけど書き込むスレ間違えてない? ↓のスレあたりで、開発環境やコンパイラー種類、実行している方法などを添えて書き込んで見ればいいんじゃない C言語なら俺に聞け 152 https://mevius.5ch.net/test/read.cgi/tech/1560763630/l50 スレ立てるまでもない質問はここで 149匹目 https://mevius.5ch.net/test/read.cgi/tech/1529199088/l50 [] [ここ壊れてます]
142 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 18:13:46.50 ID:D2KPblxl0.net] >>137 実行画面にドラッグアンドドロップするのではなく実行ファイルにする ファイルの上にファイルをのっけるってこと
143 名前:デフォルトの名無しさん [2019/08/06(火) 19:53:18.36 ID:fRCzQnxrr.net] >>139 あまり深く考えたことないけど、それでドロップしたファイル名がとれるのってどこで仕様化されてるのだろ
144 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 20:12:17.66 ID:V0Kuh8Wnd.net] >>140 osの仕様じゃないの?
145 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 20:16:01.22 ID:hi1INabv0.net] OSの仕様だね 実行ファイルにファイルをドロップすると ファイルのフルパスが引数になって起動する 複数ファイルドロップするとファイルが全部引数で入る 送る(sendto)フォルダにexeのショートカットを置いて 右クリックして送るとやっても同じ動作をする
146 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 20:36:54.80 ID:Dc7UiKoCM.net] ダブルクリックとかドラッグ&ドロップよりも dirやpingとかの例から教えてやれよ 説目下手かよw
147 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 20:42:48.62 ID:Dc7UiKoCM.net] >>138 すまんCの質問者だったわ 誘導乙です
148 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 20:45:30.56 ID:hi1INabv0.net] 君は質問者がCUIを知らないとわかった途端に 必死でマウントするタイプっぽいねw まあ文句があるなら君が教えれば良いじゃない
149 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 21:44:06.23 ID:h96rX+BU0.net] OSというかエクスプローラの仕様では? まぁOSみたいなもんだけど macも一緒だっけ?
150 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 22:15:41.42 ID:2e28HN3n0.net] ここがPC初心者スレに見える連中がいるみたいだな
151 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 06:57:51.84 ID:HD57Pps60.net] まあコマンドライン引数という言葉は出てるんだからコマンドラインとはこれのことって説明にはコマンドプロンプトを用いる方がわかりやすいかもしれないけどどっちもどっちかなあ
152 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 12:43:02.55 ID:0NR5yQ8YM.net] プログラミング初心者に PC初心者がいないと思える方が理解に苦しむ
153 名前:デフォルトの名無しさん [2019/08/07(水) 13:17:43.31 ID:+fGjf0jSF.net] >>140 Win32API なら WinMain の LPSTR lpCmdLine
154 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 22:34:55.42 ID:7okrY9pr0.net] 定義なら HKEY_CLASSES_ROOT\exefile
155 名前:デフォルトの名無しさん [2019/08/08(木) 01:37:38.81 ID:ihcgMCFx0.net] OSの仕様とAPIの仕様とC言語の仕様がごっちゃになるから 昔より初心者は大変よな。 ただ質問の仕方はジャンル関係ないから もうちょっと伝わるように書いた方がいいと思うぞw
156 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 14:29:31.16 ID:zX15bpOA0.net] 最も低コストな2点間時間差の測定って何なのでしょうか? 元々DateTime型を利用していましたが、超高精度である必要もなくマシンの長時間稼働で符号が反転することがあるのを承知でEnvironment.TickCountを利用しています。 Environment.TickCountよりも低コストなものはあるのでしょうか?
157 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 14:34:41.65 ID:mB2We2tKp.net] コストの意味によって違う。 プログラム量なのか、費用なのか、所要時間なのか。
158 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 14:37:19.14 ID:zX15bpOA0.net] >>154 実行パフォーマンス的なコストです
159 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 15:38:41.10 ID:mhwi8eEg0.net] C# で無限Undo/Redoが出来るテキストエディタコンポーネントを探してるんですが、 使い勝手がいいものは何でしょうか?
160 名前:デフォルトの名無しさん [2019/08/08(木) 17:25:58.20 ID:EGuA/4uga.net] >>155 兆円単位の資産持ってる人がスーパーの食材の値段を比較するような話で、 意味ないよそんなのw コストなんかどっちにしろゼロと同じだ
161 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 18:00:45.46 ID:tebxUNsfa.net] >>155 https://referencesource.microsoft.com/#mscorlib/system/datetime.cs,1503 ご覧の通りDateTime.operator -()は InternalTicksプロパティ内部でのビット論理積各1回と、減算と、TimeSpan型のコンストラクター呼び出し(内部はlong値の代入のみ)だけで 最適化されたら小さな計算だけになると思うんだが Environment.TickCountを使ったほうが優位な速度差が出ると測定したの? 測定して有意差があってかつ本当に速度を追求する場所ならEnvironment.TickCountはintだけで低コストだろうから使えばいいし そうでないのなら「早すぎる最適化」について調べればいいよ >>156 少なくともWPFのTextBoxはUndoLimitプロパティがあって、初期値では無制限になってる
162 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 20:11:51.79 ID:zX15bpOA0.net] >>158 減算のみだとそこまでの差は無いのかもしれませんが現在のタイムを取得する命令もセットで測定した場合に結構な差が出たため乗り換えました。 具体的にはこのような方法で現在時刻を取得し int lastTime = Enviroment.TickCount; DateTime lastTime = DateTime.Now; 下記のようにして指定秒数以上立ったかなどの判定を行っています if (Enviroment.TickCount - lastTime > 10000) {} if ((DateTime.Now - lastTime).TotalMilliseconds > 10000) {}
163 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 20:23:44.89 ID:1yv5WNbeM.net] その辺りはDDKの領分だから深入り しない方が吉かも 尚、OSとしての仕様と実際に動作している ハードの仕様の差異もあるし
164 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 20:46:23.03 ID:tebxUNsfa.net] >>159 一定時間経過したかをより正確に判定したい、が本当にやりたかったことか ドキュメントによるとEnvironment.TickCountは「resolutionは通常10〜16ms」とあるけど DateTime.Nowでは「0.5〜15ms」とあるから 判定1回の処理時間ではなくて、精度を測定したほうが良いと思うよ Stopwatchクラスは「high-resolution performance counter」を使えるから精度出るんじゃない?
165 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 23:24:35.70 ID:1oNCOrAR0.net] 指定秒数経過の判定で実行パフォーマンスを気にするのが間違ってる そういうのは秒間1万回処理する必要があるとかいう処理で考えるべき OS上で動作するからミリセカンドより細かい粒度での正確性はそもそも無理 stopwatch以上の細かい精度が必要ならC#じゃ厳しい どんな要件か知らんけどそんな細かな精度なくても大丈夫 120FPSのゲームでもフレーム間で80msあるんだから
166 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 23:27:17.60 ID:J4rZTmDc0.net] >>162 計算間違ってるよ
167 名前:デフォルトの名無しさん [2019/08/08(木) 23:57:14.98 ID:d0Ff1eN7a.net] 文章読んでる限りそんな頭悪そうじゃないのに 何でそんな部分の最適化は無意味だっていう簡単な事実が分からないのかねw 昔からそういう人一定数いるけどほんと不思議
168 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 00:05:32.58 ID:yqHkFNZaa.net] >>164 この人が該当するかはわからないけど、発達障害で脳の特性により一般の人よりも拘りが強いという人は珍しくないよ。知能の高低ではなく、引っ掛かるところが普通と異なる。相手に自覚がない場合、いくら理屈で説明しても受け入れてもらえないことが多い。
169 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 00:24:39.62 ID:kbBtOJ8C0.net] プログラマには特に多いかもね
170 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 00:50:27.63 ID:ENN4/0zza.net] どうでもいい細部に拘って動けなくなるのは中途半端に知恵がついてきた初心者にありがち 俺も経験あるからわかるわ そこから経験を積んでいくとスケール感がわかってきて「ゴミは無視」ができるようになってくるもんだけど、 そうならずにどんどん偏屈になっていく人も一部存在する 質問者がそうでないことを祈る
171 名前:デフォルトの名無しさん [2019/08/09(金) 04:41:46.96 ID:S4+H63Q60.net] どうでもいい細部かもしれないんですが、フォーム名やイベント名は、動詞と名詞どっちを先にするのがいいのでしょうか? 例えばユーザー登録フォームの場合、RegisterUserForm と UserRegisterForm ユーザーが選択された時のイベントの場合、 SelectUserEvent と UserSelectEvent どっちがいいでしょうか?
172 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 08:20:41.97 ID:VQZHSvvcM.net] >>168 私は旧人なので、まずは Formですよが知りたい(プレフィクス派)ので、 Formユーザー登録 w イベントはイベントハンドラー名そのまま(わざわざ変えない)
173 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 09:38:32.89 ID:dc6G/Fnt0.net] まあ、全ての時計は独自の時間を刻んでいるので、そもそも一致させるのは不可能だし無駄なんだけどな。
174 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 10:33:45.61 ID:NKKMFBro0.net] >>168 イベントはUserSelectedが基本じゃないかな
175 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 11:51:03.15 ID:01aaYby70.net] >>161 >>162 具体的にはゲームのスキルクールタイム計算なので、数十ms程度の誤差は別に許容範囲であるため高精度である必要はないと書きました 深刻な回答してくれた方が多いようですが、別に今の方法でボトルネックになってる訳でもなく単純にこれよりベストな方法あるのかな?程度の感覚で聞きました
176 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 12:13:27.68 ID:WHBOK0wDM.net] ゲームなら共通の世界時計を持っといて各ゲームコンポーネント側でそれに基づいて時間の差分を取るようにするべき 各自が勝手に時間を測るとポーズの実装とかで困ることになるよ
177 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 12:23:56.96 ID:/8nxdn6c0.net] 誤差が許容できるんだったらコードから意図が読みとれる奴がベター
178 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 13:23:18.87 ID:uqa/TGO4d.net] >>173 たしかに
179 名前:デフォルトの名無しさん [2019/08/09(金) 13:40:04.45 ID:VpFvSLvY0.net] >>165-166 今朝のテレビでコンビニに苦情入れて出禁になったと訴えていた被害者が まさにそんな感じの人だった (苦情自体は正当でコンビニにミスがあったのは確かだが コンビニが謝ってるのにどうでもいいことで納得しないで文句言い続けてた)
180 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 14:08:51.82 ID:vlGdUztx0.net] ファイルを大量に更新するアプリを作ってるんだけど クラウドストレージ上でやると同期に問題が多くて困ってる 単一のファイルをディレクトリのように扱えて 可変長・不特定多数のデータをファイル名をつけて格納できる ライブラリとかないものだろうか クラウドで同期して別のPCで実行したりするので 環境変数やサー
181 名前:o構築、DBエンジンのインストールが必要なものは避けて ポータブル系アプリのようにUSBで持ち運べる実装にしたい 理想は仮想ドライブを動的にアプリ内でマウントして 読み書きさせるような感じ なにかいい知恵はないものだろうか… [] [ここ壊れてます]
182 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 15:12:17.76 ID:OSNL5U/w0.net] ただの質問から人格攻撃にまで発展してる奴の方が妄想癖ありそうで怖いわ なんかC#スレやVSスレって変な奴増えてきてるな
183 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 15:27:08.13 ID:vlGdUztx0.net] 夏休みだからじゃないかな
184 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 15:28:17.68 ID:ti4i1VCta.net] >>168 https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/names-of-type-members#names-of-events イベント名は動詞か、時制つきの動詞にするのが習慣 既に書かれてるけど UserRegisterd や UserSelected のような名前にするのが一般的かな 命名に困ったら.NET標準のものを参考にするといいよ >>169 のような「いちいちFormをプレフィックスにする」のは少なくとも.NETにはそぐわない >>172 > 別に今の方法でボトルネックになってる訳でもなく やはり「早すぎた最適化」について知っておくべき >>177 > 単一のファイルをディレクトリのように扱えて > 可変長・不特定多数のデータをファイル名をつけて格納できる についてもう少し詳しく もっともクラウドで同期の問題があるのなら、どんなライブラリを使おうとも大して変わらない気もするけれど
185 名前:デフォルトの名無しさん [2019/08/09(金) 15:42:32.52 ID:l8EdBHZf0.net] パフォーマンス系の質問に対して無意味系の答えが返ってくるのって質問者も大体織り込み済みな上で質問してるだろうしそれなら返さなくて良いんじゃないかね ガチの初心者ならまだしも質問者のレス内容的にその辺は分かった上で聞いてるだろう まぁ初心者スレでパフォーマンスに関する質問する方が悪いとも言えるが
186 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 16:48:18.94 ID:m7mfmdmp0.net] >>177 データベースのblobにファイルを突っ込むのが一番手っ取り早いが、速度や効率はまあ...
187 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 16:50:09.57 ID:m7mfmdmp0.net] つか、クラウドストレージでやると同期の問題ってどんな問題か気になる
188 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 17:08:20.38 ID:wy7G1+HC0.net] >>177 サーバー型のDBがだめならsqlite使えば?
189 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 17:56:29.89 ID:vlGdUztx0.net] >>183 例えばonedriveだとフォルダ下のファイル数が一定数を超えると フォルダに警告表示が出て同期できなくなったりする あと変更箇所のチェックで異様に時間がかかるようになるんだよね
190 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 17:59:34.02 ID:uqa/TGO4d.net] zipじゃだめなの?
191 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 18:00:19.74 ID:vlGdUztx0.net] zipだと圧縮されている10万ファイルのうち 1個変更しただけでも再圧縮が必要にならない?
192 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 18:16:27.78 ID:vlGdUztx0.net] あ、ごめん zipって結構柔軟性あるんだね 削除も追加もできそうだしやってみる sqliteも試してみる ありがとね
193 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 19:02:58.69 ID:GUJ7R2MVM.net] >>177 OLE複合ファイルってのがwindows標準 只、私ならZipで実装するね
194 名前:デフォルトの名無しさん [2019/08/10(土) 14:54:00.10 ID:ddvhW9sGa.net] なんか昨日一日まったく5chにアクセス不能だったけど、 俺の環境固有の問題だったのか普通に書き込んでる人いるなw >>168 UserRegistrationFormとか? Formはサフィックスするなって意見もあるが、これは少数派の意見だと思うので 真に受けない方がいいと思う。 ほとんどの場合は付けた方が結局分かりやすいね。 あと、コントロールの変数名だけはハンガリアンを認める人も結構多い。
195 名前:デフォルトの名無しさん [2019/08/10(土) 15:01:33.84 ID:/ATKT2HCF.net] 昨日アクセス不能だったのは事実 ただし鯖は生きてたのでDNSの問題 回避できるDNSのアドレス知ってるひとは そっちに変更して普通に読み書き出来てた 方法は避難所に書いてあった 今は元に戻しても通常通り読み書きできる状態
196 名前:デフォルトの名無しさん [2019/08/10(土) 15:36:24.79 ID:ddvhW9sGa.net] >>191 へーそういう状況だったのか
197 名前:デフォルトの名無しさん [2019/08/10(土) 15:40:36.25 ID:/ATKT2HCF.net] ついでに言うとDNSが死んだ原因は 2chを乗っ取った5chのjimの会社が 米の銃乱射の件でテロリスト認定されて DNSサービスの停止になったってこと さらにjimは指名手配で逃亡 5chは復旧したけどいつまで続くか判らんω
198 名前:デフォルトの名無しさん mailto:sage [2019/08/10(土) 18:20:40.93 ID:0gPdeKzpa.net] >>190 スマン、質問の「フォーム名」を見落として「イベント名」だけ拾ってしまっていた フォーム名ならFormのプレフィックスやサフィックスを付けるのは全然問題ないね
199 名前:デフォルトの名無しさん mailto:sage [2019/08/12(月) 10:36:30.39 ID:HTWZ+S1Q0.net] SelectedTextやSelectionStart、SelectionLengthのような機能をカスタムコントロールに付けたいんですが やっぱりMeasureStringとかでいちいち文字列の長さを測定したりするんでしょうか? もしくは2次元配列を用意して1文字ずつその文字コードと座標を格納しておくか
200 名前:デフォルトの名無しさん mailto:sage [2019/08/12(月) 10:57:06.87 ID:kI0RZN1g0.net] コレクションに要素が存在するかを判定するとき、Count > 0ではなくLinqのAny()を使う意味ってあるのでしょうか? 可読性のためだけにこちらを使ってるんですかね?
201 名前:デフォルトの名無しさん mailto:sage [2019/08/12(月) 11:01:09.66 ID:2iL+RtWU0.net] >>195 TextBoxコントロールを使わないのならそうなるだろうね 等倍フォントなら少しは楽できるけどやることは変わらない IMEの操作も考えてるんならAzukiっていうエディタコントロールを参考にすると良いよ
202 名前:デフォルトの名無しさん mailto:sage [2019/08/12(月) 11:26:07.50 ID:HTWZ+S1Q0.net] >>197 ありがとうございました 何行目の何文字目とか指定できれば簡単なんですが いちいち文字列の長さを測定しなければならないというのは不便ですね
203 名前:デフォルトの名無しさん mailto:sage [2019/08/12(月) 11:41:48.29 ID:ssrYJHqQ0.net] >>196 リンクの式はイテレータを返すだけだからCountやLengthのプロパティを持ってない。Count()メソッドがあるけどこれは全件評価が走ってしまうので、最終的に欲しい値が件数の場合以外は使わない。 その状態でイテレータに引っかかるのがあるかどうかを判定する際に使うのがAny()。普通のリストや配列に対してCountやLengthを使わずにAnyを使う意味はない。
204 名前:デフォルトの名無しさん mailto:sage [2019/08/12(月) 11:56:29.02 ID:kI0RZN1g0.net] >>199 ありがとうございます SortedDictionaryに対してAny()で判定していたので、これについてはCountプロパティがあるのでCount > 0で良いということですね
205 名前:デフォルトの名無しさん mailto:sage [2019/08/12(月) 12:40:47.91 ID:c1yJbHcz0.net] >>199 勉強になる
206 名前:デフォルトの名無しさん [2019/08/13(火) 15:58:52.24 ID:hrddazny0.net] どこが「初心者用」だよ?って質問と回答ばかりだけどなww 昔は上級者用の質問スレもあったようだが まあ一つに集約されてるほうが情報収集には便利だけど スレタイはこっちが気に入ってるし シャープとフラットをかけてる辺り
207 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 18:46:02.38 ID:PAgqa6Je0.net] NuGetパッケージの管理より Seleniumパッケージを最新にしました。 しかし、それから Chrome は自動テスト ソフトウェアによって制御されています。 という文言が画面に出る様になってしまいました。 options.AddArgument("disable-infobars"); を指定する事でこれまでは、 この様なエラーメッセージは表示されていませんでした。 どうすれば消えますか?
208 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 19:01:18.55 ID:ZVs77qOsa.net] >>203 標準でもなんでもないサードパーティーライブラリの話はスレ違い ↓あたりで適切なスレを探して web制作管理 - 5ちゃんねる掲示板 https://mevius.5ch.net/hp/ WebProg - 5ちゃんねる掲示板 https://medaka.5ch.net/php/
209 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 19:57:44.52 ID:v4xllOHk0.net] >>203 その文言そのままgoogleにブチ込んで見る人生よ
210 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 20:37:06.27 ID:4ID4APxI0.net] ずーっとseleniumと格闘してんね
211 名前:デフォルトの名無しさん [2019/08/13(火) 20:54:18.53 ID:yZEhfFzKa.net] >>205 すごい字余りの川柳かと思った
212 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 20:59:35.55 ID:Gdeao/QQ0.net] セレニウム野郎まだいたのかよw
213 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 21:33:22.43 ID:PAgqa6Je0.net] >>204 >>205 新しいNuGetパッケージについての 解説ブログはないんだよ。
214 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 21:45:22.03 ID:ZVs77qOsa.net] >>209 >>1
215 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 22:29:42.70 ID:4ID4APxI0.net] >>209 君が解説ブログかけばいいんでは? てか解説ブログあること前提なの? リリースノート見るなりソース読むなりすればいいのでは? できないならなんでバージョンあげたの? 問題出たならバージョン戻せば? なんのためにnuget使ってるの?
216 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 22:56:59.36 ID:eH0ENH5J0.net] ちなみにこれってエヌユーゲッツなんかねヌゲッツなんかね。稀に他人と会話することがあるんだけど口頭で言う時に困る単語のひとつ…!
217 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 23:00:05.96 ID:RVQw4+nc0.net] https://monobook.org/wiki/NuGet >NuGet(読み:にゅーげっと、ぬげっと) らしい
218 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 23:01:57.10 ID:PAgqa6Je0.net] >>211 常に最新を使った方がいいのかな〜と思いまして。 戻した事がなかったので調べてみます。 この手の技術系は、 詳しい人がブログにまとめてくれてるのでいつもそれらを参考にしています。 >>212 >>213 エヌユーゲット
219 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 23:10:42.03 ID:kJJDzO2R0.net] 漏れは、Ruby で、Selenium WebDriver を使っているけど、 「Chrome は自動テスト ソフトウェアによって制御されています」というメッセージは閉じれるけど、 その部分を閉じても、その幅が消えないから、使える画面が少なくなる
220 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 23:18:57.47 ID:4ID4APxI0.net] selenium君もruby君もスレからずれたレスしないでね
221 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 23:24:54.56 ID:eH0ENH5J0.net] >>213 ヌゲットにしとくかな… Nuclear unlimited gigantic enhanced technology
222 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 23:29:34.04 ID:mICjniMU0.net] selenium君はRuby君を反面教師にするといいよ。 スレ違いを繰り返すのがどれだけ他人から見て迷惑でみっともない行為なのかをこれ程上手く伝えられる教材はとても稀だから。
223 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 00:36:59.18 ID:jQtv4Yb60.net] C#+Seleniumなのでこのスレが正しい
224 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 01:38:02.43 ID:GCJub4Dp0.net] 誘導を無視することは正しいことですか? ライブラリの問題であって言語の問題ではないから誘導しているのです 使用しているのがC#であっても言語の質問でなければ正しくはありません 問題が言語なのかライブラリなのかわからない人もいるので初めてレスするなら何の問題も無いし、誘導してくれるでしょう 今まで何度誘導を無視しましたか? 長期間、言語ではなくライブラリを起因とする質問を繰り返すのは正しいのですか?
225 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 02:14:02.89 ID:jQtv4Yb60.net] それはあくまでもあなたの意見でしょうが
226 名前:デフォルトの名無しさん [2019/08/14(水) 03:08:22.27 ID:YX6BCcxFa.net] 芸人の押すなよは押せって意味だからどんどんやっていいよ どうせ過疎スレで人口なんか恐らく数十人しかいないw
227 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 03:17:28.62 ID:GCJub4Dp0.net] 1に書いてあることと同じだけど、どのへんがあなたの意見なの?
228 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 08:25:36.73 ID:RPrYPUsF0.net] >>221 俺は>>220 とは別人だが同意見だ
229 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 08:33:56.94 ID:28G/wIAb0.net] そもそもWinFormsもWPFも言語仕様じゃなくてライブラリだ ライブラリを外せってのは余りに酷い暴論だよ
230 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 08:59:28.69 ID:gdRXPT/U0.net] ライブラリが即NGじゃなく サードパーティ制のライブラリがメインの質問&原因だからスレ違いでしょ 標準ライブラリは勿論OKだし C#に関連の深い.NETやVisualStudio周りなら多少逸れてもOKだろうし サードパーティでも例えばODP.NETとかのら基本的な質問なら答えても文句言われないでしょ 逆にUnity絡みならC#であっても専門スレのが有益だから誘導されるだろうし 誘導には、スレが汚れるから他所へ行けって側面と ここだとまともな回答が得られないからこっちを当たれって案内の面があるんよ
231 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 09:34:24.96 ID:mrBPpWLv0.net] >>217 この前マイクロソフトの人柄ヌゲットと言ってたからヌゲットでOK
232 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 09:38:00.49 ID:28G/wIAb0.net] 標準とか外部ライブラリーって>>1 のどこに書いてあるんだよ つまり「個人の感想です」だな
233 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 12:04:33.55 ID:RWvjQCFF0.net] 馬鹿がなんと言おうとスレチ
234 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 12:05:06.26 ID:HkWgtzgRM.net] つかSelenium君の問題は、Seleniumの問題というより 彼の頭の悪さの問題なんだよ それを解決するのはこのスレじゃない そこは明白だろ
235 名前:デフォルトの名無しさん [2019/08/14(水) 12:38:54.90 ID:Ct2lHzgAa.net] 誘導してる人の動機が利他的なものなら素晴らしいことだけど、 実際は人を批判しないと気が済まないだけだからねw そこを見透かされてからかわれているのに、それがわからないところが何とも滑稽だね だいたいこんな過疎スレで周辺分野の質問があって誰が困るのかねw 誰も困らないと思うけど。
236 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 12:48:55.76 ID:LymH/UUL0.net] 質問者本人が(回答を得られないという点で)困るだろ
237 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 13:03:38.03 ID:pFnHcoJr0.net] スレチな質問なんだから誘導して貰えるだけマシ
238 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 13:09:35.97 ID:RPrYPUsF0.net] 質問者以外も、どうでもいいやり取りを見せられて迷惑だと思うよ。 過疎っていても適切な話題が書き込まれていた方が良い状態だと思う。
239 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 13:40:20.40 ID:mrBPpWLv0.net] >>231 君のようなオナニー野郎が1番気持ち悪いよ
240 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 14:49:03.49 ID:jQtv4Yb60.net] そもそも C#もSeleniumも根本はC++で実装さえれている Seleniumに詳しいヤツがいないから いいがかりつけられてばかりでかわいそう
241 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 15:26:24.08 ID:RPrYPUsF0.net] >>236 かわいそうって、自分が? 何で実装されているかなんて尚更無関係だろうに、そんな頓珍漢なことばかり言ってるから煙たがられるんだよ。
242 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 15:39:01.35 ID:pFnHcoJr0.net] >>236 そんじゃこれからはC++スレで質問してね Seleniumに詳しい奴もいっぱいいるだろうからお前の助けになるだろうよ
243 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 16:13:47.02 ID:jQtv4Yb60.net] C#の言語自体がC++で作られてる事をしらんふぬけども
244 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 16:16:19.89 ID:IV/LzryA0.net] 僕の内臓を返せ〜
245 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 16:59:56.55 ID:jDEWV9x2M.net] Roslynも知らないガイ
246 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 17:00:39.76 ID:GCJub4Dp0.net] そもそもかなり長期間seleniumの質問が投げられてるのにseleniumに詳しい奴からの回答なんてruby君以外からほぼ無い状態 だからこそ誘導してるんじゃないか スレ趣旨から多少ずれてようがわかる範囲なら回答してる 回答した上で誘導までしてるのに誘導だけは無視して延々と質問を投げるなら嵐とかわらんじゃないか
247 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 17:01:32.64 ID:pFnHcoJr0.net] >>239 GitHub - dotnet/coreclr: CoreCLR is the runtime for .NET Core. It includes the garbage collector, JIT compiler, primitive data types and low-level classes. https://github.com/dotnet/coreclr コア部分は間違いなくC++で開発されているから安心して巣立ってくれ
248 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 18:33:13.55 ID:rSDdWO1t0.net] 聞きたくなければ黙ってseleniumをNGワードに入れれば良い 匿名掲示板なので日記書くやつもいるだろうし 他人の服装まで直す行為は無駄 ごちゃごちゃ発言するな
249 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 18:48:49.85 ID:Q4kX3C+k0.net] いいかげんseleniumの話題はやめて欲しいよね
250 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 21:06:43.58 ID:dNTNWi1CM.net] 業務アプリケーションでElectron.NET使ってる人いる?そういった技術も習得してた方がいいかな?
251 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 21:09:29.90 ID:IV/LzryA0.net] どうしてなの――ッ!! どうしてエレクトロンしないのよーッ!!
252 名前:デフォルトの名無しさん [2019/08/14(水) 21:11:16.53 ID:eGLvTmmqa.net] 業務アプリって比較的新しい技術ってあんま使わなくね? 使えるように勉強するのは多いに結構なことだとは思うけど
253 名前:デフォルトの名無しさん [2019/08/14(水) 21:34:40.40 ID:oxhAJDr00.net] RPAスレはSeleniumの話題OKだからそっちいきなよ
254 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 22:21:04.82 ID:bBZ00i3Q0.net] Seleniumスレでも発達障害は解決できるとは思えないけどな
255 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 00:01:22.09 ID:5MxOdPEK0.net] options.add_argument( '--disable-infobars' ) # 通知バーを消す Ruby で、こう書いても、通知バーを消せない! Chrome なんて、仕様をコロコロ勝手に変えるし、文書も作らないだろ。 ソースコードを読めって、無茶苦茶だろw 各ブラウザの機能なんて、相手にしないほうが良い
256 名前:デフォルトの名無しさん [2019/08/15(木) 00:17:18.78 ID:4RLQ3HFd0.net] >>246 WPFやFormアプリケーションで描画しきれないケースのみ採用するパターンが多いかと。 習得する分には、もしもの時に出せる手札が増える(知見が広がる)ので良いとは思います。
257 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 01:51:37.30 ID:yTBvPSIa0.net] 業務アプリは大規模開発だったり要件が機能追加(既存ソースの流用)だったりが多いから知ってる人が少ない技術は敬遠される傾向があるよね・・・
258 名前:デフォルトの名無しさん [2019/08/15(木) 05:13:06.12 ID:YYpr9nEd0.net] dapper で、dynamic型で取得したレコードのカラム名は、どうやってプロパティにマッピング?すればよいでしょうか? 以下のようなイメージです。 var list = connection.Query<dynamic>(@"SELECT cd, name FROM hoge_table").ToList(); list.ForEach(item => { this.cd = item.cd; //cdカラムは存在しているが、この方法では取得出来ない。 });
259 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 05:18:20.88 ID:bD8BPP4C0.net] なぜdynamicなんか使ってるの?
260 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 09:03:09.32 ID:NGEmLDBt0.net] >>248 ,>>252 ,>>253 今はあんまり使われていないんだ 休みだし今後のためにチラッと触ってみる
261 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 13:17:25.77 ID:XW4rFrdd0.net] using (var conn = new SQLiteConnection("Data Source=:memory:")) { conn.Open(); conn.Execute("CREATE TABLE test (cd INTEGER, name TEXT)"); conn.Execute("INSERT INTO test VALUES (@cd, @name)", new { cd = 1, name = "a" }); conn.Execute("INSERT INTO test VALUES (@cd, @name)", new { cd = 2, name = "b" }); foreach (var row in conn.Query<dynamic>("SELECT cd, name FROM test")) { Debug.WriteLine($"{row.cd} - {row.name}"); } } 問題なかったけど? コンパイルエラーになってるんだったらその内容書いて
262 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 15:14:02.56 ID:jCEAQJdF0.net] 常駐するアプリを作るとき、serviceにすると何が嬉しいのですか?
263 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 15:26:23.04 ID:nQmxjzka0.net] ログインしてなくても動く
264 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 16:03:39.12 ID:wwJYNY5r0.net] ありがとうございます
265 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 17:15:06.30 ID:X+hhUeCb0.net] >>255 dapperはdynamic使うのが簡単でウマーだから
266 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 18:25:05.09 ID:jCEAQJdF0.net] >>261 インジェクション対策は?
267 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 18:41:02.43 ID:VbDuA0j40.net] >>262 ちゃんとパラメーター変数使ってるジャン
268 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 19:29:51.78 ID:UYxtktoid.net] >>261 cdカラムとかを指定して取り出したいなら結局クラス作った方が楽やん
269 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 20:14:41.68 ID:BPnFBcl20.net] 大文字小文字の問題とか無いのかな? 止めて変数rowをウォッチしてみてね
270 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 20:56:25.88 ID:X+hhUeCb0.net] >>264 ケースバイでしょ
271 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 20:58:03.96 ID:bD8BPP4C0.net] >>266 うん、だけどそれで悩んでるのは事実やん
272 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 21:46:48.94 ID:pWdXHbkI0.net] >>251 やっぱりそうだよね。 Seleniumを使いこなせないPGがC#パーには多すぎるのが問題だな
273 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 22:36:14.06 ID:nQmxjzka0.net] あーハイハイ
274 名前:251 mailto:sage [2019/08/15(木) 23:18:45.58 ID:5MxOdPEK0.net] まあ、Ruby では、 driver.execute_script で、JavaScript(JS)のソースコードを実行できるから、 通知バーの要素を取得して、その部分を、JS で削除できるかも知れない 例えば、漏れは普段、Showroom の多くのアバターなどを、こうやって削除している jsCode = <<'EOT' var elem = document.getElementById('js-avatar'); elem.parentNode.removeChild(elem); EOT driver.execute_script jsCode
275 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 00:31:14.40 ID:Capr2asl0.net] 一人でも煩いスレ違い居座り野郎が、二人になって相互作用まで始めてしまったか。
276 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 00:40:48.73 ID:w8wDW0z80.net] せめてjavaスレいけよ
277 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 00:47:42.08 ID:9Iug+Ez/0.net] ん?なんでrubyの話が突然出てくるんだ?
278 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 00:56:27.81 ID:jFKiomKf0.net] だから。相手にすんなよ。 しつこくても枯死するまで放って置けばいいのに。
279 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 00:57:25.58 ID:Capr2asl0.net] >>273 いくらやめろと言われてもところ構わず唐突にRubyの話を始める頭のおかしい奴が、この板にいついているから。スレタイにRuby禁止と書かれているスレがいくつかあるが、コイツが原因。
280 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 00:58:13.28 ID:2i9/2j960.net] C#っつーかプログラミング言語一般の話になっちゃうかもしれないんですけど 勉強してて例外のところに差し掛かったんですけどめっちゃ色々種類あるじゃないですか んでもって例えば関数一つ作るにしても考えようによってはほんと沢山の種類の例外が発生する可能性がありますよね そういうのをとにかく可能性が少しでもあれば例外をスローするようにしてたらコードが例外ばっかになっちゃう気がします 書く例外と書かない例外の境界線はどこにあるのでしょうか
281 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 00:58:14.57 ID:Capr2asl0.net] >>274 すまん、その通りだな
282 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 01:08:02.04 ID:G0Kx7mvIa.net] >>276 よくわからん理屈だな 仮にその例外を「書かない」と判断したとして、その「例外的な状態」を例外の代わりにどう処理するつもり? 放置しても問題なく動き続けられるorその場で適切な対処をして回復できるなら、そりゃ例外投げるよりその方がいいに決まってる
283 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 01:13:52.65 ID:Capr2asl0.net] >>276 ライブラリ関数に渡す引数が正しくないとかのように、自分が書いているコードが正しくない場合に発生する例外、逆に言えば正しいコードを書けば発生しない例外は基本的にその場ではいちいちcatchしない。 ただし完全にバグがないということを保証するのは困難なので、プログラムの上流でまとめてcatchして何らかのメッセージを出すなどした方が良い。どう対処すべきかはそのシステムに求められる要件次第だけど。 ファイルにアクセスできないとか、ユーザからの入力データが正しくないことにより発生するような例外とか、自分のコードの外部の要因で発生する可能性のある例外は、その都度catchして適切に対処する必要がある。
284 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 01:51:17.26 ID:XNgAzUDc0.net] 四則演算やっても オーバーフローもゼロ除算もあるしね 一番上のcatchでまるっと処理したほうがええ
285 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 02:16:34.36 ID:3ldAil1N0.net] >>276 その処理内で対処できるなら投げない できないなら例外なげる >>279-280 キャッチする話じゃなくて投げるほうの話だろ まあ、キャッチも同じ考え方で、自分で対処できる例外はキャッチする それ以外はそのまま上位へ 今はこういう考え方が主流だと思う
286 名前:デフォルトの名無しさん [2019/08/16(金) 02:17:58.68 ID:KW3/fLy3a.net] >>276 そんなの手を動かさずに机上で考えてるからそうなるだけw 処理できない問題は(基本的には)例外を投げて呼び出し側に通知するしかない。 処理できない例外は投げるしかない。 処理できないのにcatchして握りつぶしてよい例外なんかない。 何が難しいの?
287 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 05:58:38.34 ID:RrHjcCxL0.net] 初心者マークの人へのアドバイスとしては 例外をthrowするケースは ・事前条件が崩れる場合、例えば引数がおかしい場合や処理の準備が整わない場合 ・処理に失敗したことを伝える場合 まずはこのあたりを基準に 逆にcatchはむやみやたらにしてはいけないし、特に握り潰してはいけない 他人のソースをたくさん読んで、たくさん考えて書くしかないよね
288 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 07:20:17.23 ID:z6Pxs9AVa.net] javaみたいに「このメソッドはこんな例外を投げるから必ずtry-catch書けよ」ってできなかったっけC#
289 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 07:41:23.99 ID:G0Kx7mvIa.net] >>284 Javaの最大の失敗の一つだね C#に採用されなかったのはもちろん、Kotlinですら省かれた
290 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 09:30:31.26 ID:1KF8kPqD0.net] そもそもチェック例外を採用した言語ってJava以外にあったか
291 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 09:33:04.09 ID:w8wDW0z80.net] >>276 動作止めたくないなら例外拾って全部ログに書き込む
292 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 11:35:21.61 ID:16ocBcE+p.net] 全部のケースを全部継続可能か不可能か判断してケース分けするに決まってんだろ。 甘えんな
293 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 11:43:27.15 ID:i2ShkSLcM.net] 俺はtry入れないでまず作って 例外が頻発する箇所に追加していく感じ 最初から丁寧に入れていくのは時間の無駄が多い
294 名前:デフォルトの名無しさん [2019/08/16(金) 12:43:54.88 ID:vQM55/5Pa.net] いやとにかく (1) 例外を投げるかどうか (2) 例外をcatchするかどうか こんなことで悩むなんてありえないよ。悩む理由がない。 悩みどころなんて、どの例外を投げるかの選択、あるいは例外をどの程度 場合分けするか、ぐらいしかない。
295 名前: これは例えば、引数が変だった場合にとにかくいつでもざっくりArgumentExceptionを投げて済ますか、 引数がどう不適切なのか、細かく場合分けしてより適切な例外を投げるようにするかの選択 余談だけどこういうと怒る人もいるかもしれんが、個人的には例外の場合分けなんて 本当はどうでもいいと思ってるw 役に立つことはほぼないwほとんど場合プログラマの自己満足だw そのコードを見られる場合にはね。(だから他人が使うライブラリを書いてる場合は別問題) [] [ここ壊れてます]
296 名前:デフォルトの名無しさん [2019/08/16(金) 12:50:25.25 ID:vQM55/5Pa.net] あと、そもそもメソッドのデザインとして 例外を投げる代わりにout引数か戻り値でnull(あるいは例外オブジェクト) を返すって選択肢もあるから、そこで迷うってケースもないことはないけどね。 呼び出し側でいちいちtryブロックを書く必要があるのは鬱陶しい、 って需要もあるから
297 名前:デフォルトの名無しさん [2019/08/16(金) 12:59:06.06 ID:mZqFzvyqa.net] キモいRuby厨はスレ追い出されてC#スレに引っ越した
298 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 13:33:31.65 ID:w8wDW0z80.net] >>289 たぶん環境が緩いというか品質が知れるわ
299 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 14:56:57.30 ID:/nFnP4zmd.net] >>291 out使うのはなぜ?
300 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 15:10:09.14 ID:Boqt1xFK0.net] outでエラーコード返すのでは?
301 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 15:19:40.41 ID:s9O3qxdqd.net] 昔はout使う構文が嫌いだったけど、7.0でインライン宣言出来るようになってからそうでもなくなった
302 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 16:31:30.73 ID:vdJZcXlx0.net] ValueTupleにエラーコード入れて返すじゃ駄目なの?
303 名前:デフォルトの名無しさん [2019/08/16(金) 16:34:34.90 ID:vQM55/5Pa.net] >>294 TryParse的な物を想定して書いたけど>>291 じゃ端折り過ぎて意味不明だね申し訳ない 戻り値nullは(メソッドじゃないけど)as的な物を想定 例外オブジェクトをout変数で返すのはたぶんやってる人はほどんどいないけど、 tryブロックが嫌いなら場合によっては便利かも
304 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 16:37:56.56 ID:AwRYym3H0.net] >>272 JavaとJavaScriptは別ものだ あほ Slenium以前の問題
305 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 16:52:07.81 ID:/nFnP4zmd.net] >>298 タプルで返せばよくない?
306 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 17:53:53.26 ID:9StEh2pLd.net] 例外はログ拾う時に絶望したくないから適切に投げるなぁ。 どうでも良いという論調は作るだけで保守しない人の発想みたいで少し嫌かもしれん。 アプリケーションのロジックをバッチでも使いたい、みたいな時に、毎度戻り値を検証するんじゃなくてバッチの一連のトランザクション自体落としちゃいたい時に二度手間な気がするんだが、その辺どう作ってるんだろう?
307 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 19:27:37.17 ID:16ocBcE+p.net] >>301 二度手間と思うのは一人で全部コード書いてるから。
308 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 19:30:21.63 ID:O2kbbLouM.net] >>299 え?なぜjsを指定してると思うの? 元々javaのつもりで書いてるんだけど。 沸いてるの??
309 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 21:32:15.51 ID:HNLZHpWT0.net] >>303 javaの拡張子は【.java】だよ 【.js】は、思いっきりJavaScriptの拡張子 少しググって勉強してね
310 名前:デフォルトの名無しさん [2019/08/16(金) 23:41:19.50 ID:AADFbgN80.net] プログラム板住人は煽られるとすぐムキになるから、転載アフィブロガーの種まきに最適な場所になっちまってんだろう
311 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 00:34:58.82 ID:1HSNgy8G0.net] Seleniumって便利だな もっとユーザが増えてほしい
312 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 02:16:51.47 ID:EsYhqRXq0.net] >>304 え?全然噛み合わない。 なにこのアスペ
313 名前:251 mailto:sage [2019/08/17(土) 02:31:35.40 ID:fYRni8gj0.net] Ruby on Rails では、作者のDHH が、2014年に「TDD(テスト駆動開発) is dead」と発言して、 ユニットテストから、Selenium を使った、E2E(end to end)テストへ移行した! それで、Rails 6 では、 DHH のいるBasecamp 社から、GitHub へ移籍した、Eileen Uchitelle によって、 テストを複数CPU コアで、並列実行する機能が実装された!
314 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 10:48:29.26 ID:uGEbzf6ra.net] 気狂いしかいねーのかよ
315 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 12:36:57.19 ID:zUPT7dbd0.net] 見てわかんねーのか
316 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 13:25:59.90 ID:Mqg+a2XP0.net] 暑さで脳味噌が溶けちまったんだろう
317 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 14:35:53.37 ID:sCIOh4/p0.net] なんでRubyスレで言わねえんだ?
318 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 15:08:20.60 ID:BwzrwDPv0.net] >>303 なんでJavaのつもりで書く必要があったの?
319 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 15:55:56.68 ID:qUgpJGd70.net] >>307 あんたの272の近辺にはJavaの話は全く出てきていないが、もしかするとRubyがJavaだと思った?
320 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 19:21:30.41 ID:lWdyvSQl0.net] エスパーすると、ASP.NETがあるがデスクトップアプリがメインだったC#よりまだJavaスレの方がまだselenium詳しそうなやつ多そうだから、せめてjavaスレ行けって事だろ。 ほんとこれぐらいもエスパーできなきゃアホやろ
321 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 21:04:14.52 ID:qUgpJGd70.net] それなら「Rubyスレに行け」が流れ的に当然であるのに何故か「Java」 彼にとってサーバーサイドの言語は全部Java ほぼ「ゲーム機を全部ファミコンと呼ぶおかん」状態と考えるのが妥当と思われる
322 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 22:31:29.74 ID:2lsOlPOTd.net] >>315 それはあまりにも苦しい擁護だな
323 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 22:32:06.22 ID:fWrg11mTM.net] seleniumがjavaで書かれてるからじゃないの >>236 ->>238 のC++云々からの流れかと思ったけど
324 名前:デフォルトの名無しさん [2019/08/17(土) 22:34:51.12 ID:8QP5rwWB0.net] KeyValuePair c=func1(); cをnull判定できないんですがどうしたらいいですか? Myclass c=func2(); の場合、null判定できます。 クラスは出来て、KeyValuePairは出来ないのは何故ですか?
325 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 22:35:45.47 ID:1som7JJwa.net] >>319 C# クラス 構造体 でググれ
326 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 22:37:54.74 ID:RvVfsurb0.net] KeyValuePairにnullなんて入らないからな
327 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:10:53.90 ID:u5xmISorM.net] >>314 以後アスペはNG
328 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:12:11.34 ID:u5xmISorM.net] >>316 流石に頭が悪すぎるのでこれ以上会話するのは不可能
329 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:22:57.32 ID:w7ZVAy9F0.net] >>319 func1をTryParseみたいにbool func1(out KeyValuePair c)にして値入れたくないときはfalseを返すようにしたら? 構造体にnullは入れられないし、どうせそのあとnullで分岐するでしょ
330 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:30:37.14 ID:u5xmISorM.net] >>316 先走った場違いな発言を認めたくなくて必死過ぎ、こーゆう使えない部下は直ぐに切るからこいつは低収入確定
331 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:35:04.26 ID:BwzrwDPv0.net] >>319 KeyValuePair? を返すようにしたらいい
332 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:36:59.53 ID:+vBKVSmmM.net] >>325 無職のおっさんに言われてもなぁ
333 名前:251 mailto:sage [2019/08/17(土) 23:47:28.51 ID:fYRni8gj0.net] そりゃ、C#・Java は、静的言語で同じだから、 静的言語になれているなら、Selenium の話は、Java で聞くのがよい 動的言語なら、Ruby, Python で聞けばよい Seleniumデザインパターン&ベストプラクティス、2015、オライリー これは、Rubyでテストを書いた本 ウェブ系・HTML は基本、Ruby。 まあ、Java のSelenium の本も出てるけど Java は、Spring Boot か? 動的言語のGroovy じゃないのか?
334 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 01:25:10.35 ID:KlRCzn4x0.net] javaの話が出てきても勘所がないから検討違いな粘着になるんだよな Seleniumについて知識があれば文献的に充実してるのはjavaだろうに
335 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 03:58:12.87 ID:9i6q0zGn0.net] c#からc#をインタプリタで実行できるライブラリってありますか?
336 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 06:08:49.00 ID:t6n5brFa0.net] >>330 https://ufcpp.net/study/csharp/cheatsheet/apscripting/ みたいな話か?
337 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 13:41:29.71 ID:+4zzAGlV0.net] WinForms で質問です。 標準の Form から継承した MyForm を abstract で作りました。 この MyForm は abstract なのでデザインで開けません。 (ここまでOK) MyForm をもとに SubForm なるものを継承して作りました。 これには abstract は付けていないのですが、これもまたデザイナで開けません。 あまりに残念すぎる挙動だと思うのですが、これは仕様でしょうか。
338 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 13:43:21.22 ID:+3q0UZxZ0.net] Visual Studio .NET (2002) から続く仕様だよ
339 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 13:45:24.63 ID:jp7+H4+aM.net] .NETではフォームの継承は推奨されていません 共通化したい場合はユーザーコントロールを使用してください なお、WinFormsは既に開発が終了しており、今後改善される可能性はありません
340 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 13:51:36
] [ここ壊れてます]
341 名前:.77 ID:+4zzAGlV0.net mailto: やっぱりですか。 デザイナが使えないと不便なので、MyForm 側にabstract 付けないで、virtual 定義しているのですが 継承先で「いじり必須」なものを忘れてしまうため、本当は abstract したいのですが・・ WinForms の開発が終わったって、世の中、VS で弄られてるソースの9割は WinForms だと思うんですけどねぇ [] [ここ壊れてます]
342 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 13:57:02.56 ID:ET6qk6jL0.net] うちは自社開発企業だがFormsはとっくの昔に淘汰された Formsで作ってたアプリは全部WPFで作り直した
343 名前:デフォルトの名無しさん [2019/08/18(日) 14:04:52.38 ID:APnDI8yA0.net] visualstudioを利用しているのですが最近デバッグ時にフォームアプリを動かすと System.InvalidOperationException: '有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'hoge' がアクセスされました。' の様なエラーが出て止まる様になりました しかし出来たプログラムをふつうに動かす分には異常ありません 今まで作ってきた問題のなかったすべてのバージョンでこの様な現象が起こっています これは何が原因でしょうか?
344 名前:デフォルトの名無しさん [2019/08/18(日) 14:21:30.88 ID:/RKifLkIa.net] >>335 騙されたらあかんw 継承後のフォームもちゃんとデザイナで開けるし コントロールを追加したりいろいろ出来るよw フォームの継承なんて10年以上やってなかったが 今実際試して確認したから間違いない
345 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 14:29:19.80 ID:MLAzMixE0.net] >>337 先日MSがWindowsUpdateでやらかしたのが原因で、結構話題になっているから検索すると見つかる 「windowsupdate vb」 で
346 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 15:44:26.69 ID:+4zzAGlV0.net] >>338 「abstract な継承元から継承すると、継承先フォームがデザイナで開けない」 という意味でしたけど、こちらだと VS2019 でも叱られてしまいます。。
347 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 15:45:05.69 ID:+4zzAGlV0.net] 継承元が abstract じゃない単純なファームの継承だったら、まったく問題ありません。
348 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 17:17:03.03 ID:zvOpWkeBd.net] >>334 終了なんかしてないよ
349 名前:デフォルトの名無しさん [2019/08/18(日) 17:55:07.39 ID:/RKifLkIa.net] >>340 なるほど。 abstractにこだわる必要が本当にあるのかなとも思うけど、 何ならコンストラクタをprotectedにすりゃ機能的にはほぼ同じだね。 (abstractメンバーはもちろん書けないけど) これならそういう不具合は起こらないっぽい
350 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 18:33:20.50 ID:5+yaTAKE0.net] 蕎麦とラーメン間違えるとかもう簡単ケータイにしたほうがいいんじゃね。 たぶんVPNとか使わわんだろうし。 俺もIntelだからもう日産もゴーヤチャンプルーも同じ味付けで食える。
351 名前:デフォルトの名無しさん [2019/08/18(日) 21:26:51.68 ID:37ku1J740.net] Keyvaluepairの.Keyをnull判定したら nullできました。 構造体だけどnull判定できましたが?? keyvalueopair本体はできないけど KeyまたはValueはnull判定できました。 何故???まぁ良かったんですけど
352 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 21:29:43.77 ID:jp7+H4+aM.net] それはKeyプロパティが返した値をnull判定しているのであり、KeyValuePairが構造体であることは全く関係ない 直行する問題の分離ができない人はプログラミング向いてないよ
353 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 21:32:13.83 ID:DxNAHPOT0.net] 構造体はnullにできないからKeyValuePair?使えって言ってんのに
354 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 21:33:54.95 ID:DxNAHPOT0.net] 言っとくけど「?」は文字化けじゃないぞw
355 名前:デフォルトの名無しさん [2019/08/18(日) 21:37:51.98 ID:37ku1J740.net] >>346 ようはList<KeyValuePair<string,double>> "レタス" 100 "キャベツ"120 "トマト" 120 こういうリストで、ピーマンって探すと Keyがnullになってくれたので、良かったです。 KeyValuepairがnullじゃないのが不思議ですが null判定できてよかった
356 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 21:46:55.40 ID:DxNAHPOT0.net] 構造体はnullにできないと何度も言われてるのになんで不思議に思うんだろう ピーマンを探すときのList.FirstOrDefault()の戻り値は KeyValuePairをデフォルトコンストラクタで初期化したものだよ
357 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 21:48:35.09 ID:FVnfIX0p0.net] >>349 keyvaluepairは構造体 構造体にはnullが存在しない 構造体にnullが存在しないことと構造体の中身がどうなっているか関係ないので、中身がクラスであるならnullにもなりうる 君がやったことは構造体ではなくその中身がnullかどうかのチェックしただけ 構造体とクラスの違いが理解できないなら今後も躓くのでkeyvaluepair含め他の構造体の使用も封印したほうがマシ まぁintだって構造体だから全部避けるなんてことは無理だけど
358 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 22:03:37.75 ID:0nN/LwEb0.net] くどくて性格が悪そうな文章だ
359 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 23:28:35.24 ID:r1LRT6EBa.net] listに入れるならdictionaryでいいんじゃないか…?とか話を一切聞いてなかったりとかkeyvalue君のレス見てるといらつくし 説明してあげる>>351 は優しいだろ
360 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 00:48:43.25 ID:ODFt4ofXM.net] >>349 null返ってきたのはkeyの型(string型)の初期値がnullだからなんでねか?
361 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 02:37:59.55 ID:s7+bDgX20.net] >>327 きも
362 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 07:49:38.46 ID:2nNI8r3od.net] >>349 ピーマン探してnullが帰ってくるのはおかしいだろ。 ピーマン探したら見つからないのが正しくないか?
363 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 08:07:23.07 ID:D7o3OMEzM.net] ループ作ったやつ次第のような?
364 名前:デフォルトの名無しさん [2019/08/19(月) 10:35:33.11 ID:VzpEDBAc0.net] Form1以外のクラスでlistboxに入力したいのですが 他クラスで入力する方法って望ましくないのですか? 他に方法はあるのでしょうか?
365 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 10:48:05.33 ID:Le9xiHCt0.net] MVVMなら他クラスで用意するのが普通。 INotifyPropertyChangedとObservableCollectionでばっちりよ
366 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 10:55:08.87 ID:QArCM+jpp.net] >>356 松茸採りに行っても見つからなかったらバスケットは空で帰って来るしか無いだろ?
367 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 10:55:52.73 ID:QArCM+jpp.net] でもバスケットはあるから、バスケットの中の松茸の数がゼロになるんだよね?
368 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 11:52:38.83 ID:2nNI8r3od.net] バスケットが空なのと、バスケットにnullが入ってるのは違うんじゃねえかな? 参照型は瓶と水みたいな感じで、瓶だけ持って帰ってこれても、 値型みたいな、それ単体が実体のものは言うとおり松茸みたいなもんで、取りにいってなかったら何も持って帰って来れないと思うが。 無理矢理何か持たせるのがFirstOrDefaultで、坊主だった親父がとりあえず当たり障りのないものを魚屋で買って帰るようなもんでは? FirstOrDefaultは無かったときにnullを返すためにあるんじゃないんだから。 ちゃんとチェックしてから取ったほうがいいと思うよ。
369 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 12:00:12.26 ID:ODFt4ofXM.net] ちゃんとチェックしてからとるならFirst()でよくね?
370 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 12:01:25.55 ID:9Ob07fGvd.net] どうでもいい自分なりの思想を長々と書く人だね
371 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 12:07:05.62 ID:ZYeDXrpNM.net] ILで説明してくれ
372 名前:デフォルトの名無しさん [2019/08/19(月) 13:23:05.09 ID:VzpEDBAc0.net] >>358 なんですが誰かお願いします 別クラスでテキストボックスとかいじるのって普通のやり方ではないん
373 名前:でしょうか? [] [ここ壊れてます]
374 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 13:27:26.75 ID:ERfcd1se0.net] >>359 が返してくれてるだろ
375 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 13:34:49.71 ID:eHF4rC4A0.net] 別クラスでいじるって、 class Hoge { public void SetText(TextBox textBox, string text) { textBox.Text = text; } } みたいな? コントロールを外部に渡すというのはまあ一般的ではないな
376 名前:デフォルトの名無しさん [2019/08/19(月) 13:36:41.01 ID:VzpEDBAc0.net] >>359 返してくださったのはありがたいんですが その3つの単語全て知らなくて、ググってみても高度すぎてわかりません コンソールアプリケーションをフォームアプリケーションに移植しようとしているのですが Console.Write()で出力していたものをlistBoxやtextBoxに出力したいのですが出来なくて困っております どうかアドバイスお願いします
377 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 13:44:13.47 ID:9Ob07fGvd.net] 外部でstringの配列なりListなり作った上でそれを ListBox.DataSourceプロパティにセットすればいいんじゃないの
378 名前:デフォルトの名無しさん [2019/08/19(月) 13:56:34.58 ID:eDOlyF+5a.net] >>369 ■ 選択肢1 FormにAddToLogみたいなメソッドを作ってConsole.WriteLineを LogForm.AddToLog ■ 選択肢2 Console.WriteLineを、記録する文字列を通知するイベントに置き換える。 Formはそのイベントを拾ってListBoxに表示 後者を推奨 基本的にUIの参照を握らせるのは悪い手
379 名前:デフォルトの名無しさん [2019/08/19(月) 14:04:49.07 ID:VzpEDBAc0.net] 移植したいコンソールアプリ class Program { static void Main(string[] args) { var op = new Output(); op.MainProcess(400); Console.Read(); } } public class Output { public override int MainProcess(int count) { for (int col = 0; col < count; col++) Console.Write(col); } }
380 名前:デフォルトの名無しさん [2019/08/19(月) 14:06:13.39 ID:VzpEDBAc0.net] 作ってみたフォームアプリ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { var op = new Output(); op.MainProcess(400); } } public class Output { public override int MainProcess(int count) { for (int col = 0; col < count; col++) listBox1.Items.Add(col);//←ここが動かない } } こんな感じです >>371 ありがとうございます。さっそく試してみます
381 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 15:32:03.08 ID:ERfcd1se0.net] なんでいきなりバックグラウンドワーカーが出てきてるか知らんけど、ドゥーワークは別スレッドで実行する内容を記載するところで、UIスレッドにアクセスしたらダメ→コントロールを触ったらダメ リストボックスにアクセスしたかったらリポートプログレスもしくはコンプリートでUIスレッドにマーシャリングしてから
382 名前:デフォルトの名無しさん [2019/08/19(月) 16:32:24.93 ID:VzpEDBAc0.net] 簡略化して書いていますが凄い長い計算なので計算中でもプログラムが反応する様にbackgroundWorkerにしています backgroundWorkerかでなくとも、他クラスからフォームをいじるということが出来なくて困っています
383 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 17:09:34.09 ID:2nNI8r3od.net] 普通にinvokeしなよ。
384 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 17:49:40.07 ID:VD+/iXFd0.net] >>375 1.他のフォームからコントロールを操作する https://dobon.net/vb/dotnet/form/accessanotherformdata.html 2.BackgroundWorkerからコントロール(UIスレッド)を沿操作する https://dobon.net/vb/dotnet/programing/progressdialogbw.html またはInvoke 今の段階では1+2をやりたいんだよね 設計的なものに口だすのは良くないけど参考までに >凄い長い計算なので計算中でもプログラムが反応する様に ListBoxの一つのアイテムごとに時間がかかるのならMainProcessでループで一気にAddせずに BackgroundWorkerの中で「計算実行→ReportProgressで別フォームListBoxにAdd」をループさ
385 名前:せてもいいんじゃないの [] [ここ壊れてます]
386 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 17:55:50.15 ID:V7QYb24CM.net] >>366 ログ出したいん? なんかプロパティのフラグ立てる必要なかったっけ?
387 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 18:04:30.50 ID:V7QYb24CM.net] 関係なかった 自分が昔出なかったのは AppendTextしてなかったからだったw すまんかった
388 名前:デフォルトの名無しさん [2019/08/19(月) 20:31:39.57 ID:VzpEDBAc0.net] Invoke調べてみました。いけそうな気がしますが書き方が難しいです 上記のコードの場合どのように記述すれば良いのでしょうか?
389 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 20:43:11.70 ID:y72D5AUNp.net] >>380 ここおススメやぞ https://blogs.msdn.microsoft.com/nakama/2009/03/30/part-1-windows/
390 名前:デフォルトの名無しさん [2019/08/19(月) 20:46:44.95 ID:cJsYlnhia.net] パッと見で適当だけど、formにコントロールの変更記述して、コールバック登録してtaskはしらせればいいの違うのか?invokeは当然
391 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 21:00:04.04 ID:Vps+pUHe0.net] >>380 delegate用のメソッド作ってdelegateにセットしてinvoke https://www.atmarkit.co.jp/ait/articles/0506/17/news111.html
392 名前:デフォルトの名無しさん [2019/08/19(月) 22:54:50.46 ID:aQCsW5pK0.net] doubleって整数のほうに偏りがあったら 小数部分は短い精度になるんですが、これ何とかなりませんか? doubleは精度高いから小数点第5位とか精度余裕だろwwwwwwwwwww 989〜〜〜132.1235212596 算出結果 989〜〜〜132.1235312314 正解 え??????????? ちょwwwwww 助けてください
393 名前:デフォルトの名無しさん [2019/08/19(月) 23:06:59.10 ID:eDOlyF+5a.net] >>384 何を言ってるか人に分かるように書かないと誰も答えようがないよw 一般論として、演算誤差を累積させずに 演算可能かどうかはどういう演算をしてるかによるので、 具体的な処理が分からないと何とも言えん
394 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 23:27:14.16 ID:9Ob07fGvd.net] decimal型使えば
395 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 23:36:21.05 ID:0KlGy2IO0.net] >>384 浮動小数点とはそういうもの 小数点以下何桁かではなく全体で何桁か
396 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 23:57:36.54 ID:0eZQgVij0.net] 分数型クラスを自分で作ってとっとけ
397 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 23:59:07.58 ID:HKOIeNMl0.net] Seleniumを極めよう
398 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 00:07:25.79 ID:VMXKYR4od.net] Form1, Form2, CounterForm があります。 CounterForm にカウントを表示して、0 になったら、Form1 か Form2 のメソッドを実行するにはどうしたら良いでしょうか? やりたいこと 5. 4. 3. 2. 1. 0 と表示 → form1.DoSomething(); CounterForm と Form1 の部分はできているのですが、 複数class間で通知する方法がよくわかりません。
399 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 00:22:58.41 ID:sL7gwS880.net] >>390 var f1 = new Form1(); var f2 = new From2(); foreach(var i in Enumerable.Range(0, 5).Reverse()) { await Task.Delay(1*1000); if(0 == i) f1.DoDomething(); // f2? } Form1とForm2のメソッド呼び分け条件を提示して。 あと >複数class間で通知する方法がよくわかりません。 の意味が分からないんでもう少し詳しく
400 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 01:06:30.58 ID:yjnOK/Bv0.net] 「通知」…もし表示済みのフォームをあとからいじりたい場合、 public static class static1 { public static form1 form1; //スタティッククラスのフィールドを用意して、 ------------------------------------- public partial class form1 : Form { public form1() { static1.form1 = this; //各自のインスタンスを各自のコンストラクタで設定しておく ------------------------------------- public partial class CounterForm : Form { public void hoge() { try { Exception er = null; this.Invoke( (MethodInvoker)delegate { //デリゲートせずに外からフォームをいじるとエラーになることがある try { static1.form1.DoSomething(); //スタティッククラスのフィールドを経由すると表示済のものがいじれる } catch( Exception e ) { er = e; } //ちなみにデリゲート内のエラーは外側でキャッチできないので、 } ); if( er != null ) { throw er; } //変数を経由して外側でスローする
401 名前:デフォルトの名無しさん [2019/08/20(火) 01:15:05.72 ID:zheL5RcIa.net] >>390 Formだろうが何だろうが、操作したい側が操作対象の参照を握れば良いだけだけど、 親子関係が成立しているとか特殊な前提がなければ、Formが別のFormの参照を 握るのはあんまり良くない。 原則論を言えばそもそもFormにUIと無関係の処理を書く時点で間違っている。
402 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 07:52:56.91 ID:yjnOK/Bv0.net] UIと関係あるからフォームなんだろうけど… 非同期処理中にポップアップが出て、その間もメインは触れるが、終わるとメインが変更される なんてことはよくある 書式設定的なのも別フォームから別フォームをいじるわけだし 前のいじり方を残すために、閉じても隠すだけで、同じインスタンスを再表示したい場合とか
403 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 09:26:58.30 ID:+NAZ1HN+M.net] フォームと無関係な〜って書いてあるぞ そんなことより全角半角がきもい
404 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 12:03:48.15 ID:NghMzgaN0.net] 対象のフレームワーク:Framework 4.0 でコンパイルした自作 DLL があります。 この DLL を 対象のフレームワーク:Framework 4.8 なプロジェクトから参照して使用したとき、 DLL の中はどっちで動くのでしょうか? たとえば自作DLL内で、DataGridView から継承した DataGridViewEx を作ってあったとして これを 4.8 なプロジェクトで利用したとき、DataGridViewEx 内で 4.0 の DataGridView が使われるのか、4.8 の DataGridView が使われるのか、って意味です。
405 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 12:10:21.33 ID:mC8iPjWhd.net] 自作DLL内でDataGridViewの参照を特定バージョンにしておけば4.0になるしそうじゃなければ4.8
406 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 12:17:12.47 ID:NghMzgaN0.net] 自作DLL 側の System.Windows.Forms を見たら 特定バージョン:false になっていたので、呼ばれる側のバージョンの System.Windows.Forms.dll が使われるってことですね。 Framework 4.8 用に新たに作らないといけないかと思ったのですが、その心配ないみたいで安心しました。
407 名前:デフォルトの名無しさん mailto:sage [2019/08/21(水) 00:27:12.96 ID:7whQ/iRu0.net] あ、間違えた × this.Invoke( (MethodInvoker)delegate { 〇 static1.form1.Invoke( (MethodInvoker)delegate { (thisは自フォーム内のマルチスレッド部分のソースだった) カウントダウンにマルチスレッドが必要とは限らんが むしろモーダルだったり でも「オブジェクトがあれば必ず「通知」できる」という方法は確立しといた方が、オブジェクト指向っぽい クラスオブジェクト指向の前にメッセージオブジェクト指向があったので(Win32API) メッセージ、つまり「通知」
408 名前:デフォルトの名無しさん mailto:sage [2019/08/21(水) 00:57:19.98 ID:CGK7jfA0d.net] >>392 解答どうもありがとうございます。 event かデリゲートで解決できそうです。 // Form1 private void CountDownBtn_Click(object sender, EventArgs e) { var countdownForm = new MYCountDownForm(); // 4 3 2 1 0と表示してから、下に行きたいが、 // これだとカウント 0 を待たずにすぐ下に行く。 countdownForm.Show(); // このクラスのいろいろな処理 }
409 名前:デフォルトの名無しさん mailto:sage [2019/08/21(水) 01:36:11.80 ID:7whQ/iRu0.net] >>400 そっちかw そっちは「モーダルフォーム」でググると出てくると思う その方が普通に基本
410 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 16:28:36.46 ID:tih7LC2d0.net] APIが公開されていなくてもスクレイピングして非公開websoketに接続したいのですが、 解析からトークンなど必要なheader情報取得すればできるものですか?
411 名前:デフォルトの名無しさん [2019/08/22(木) 16:50:43.33 ID:xQsiKIbM0.net] 出来るけど利用規約読め API経由だとセーフで API経由しないと逮捕とか書いてあるから
412 名前:デフォルトの名無しさん [2019/08/22(木) 16:57:22.84 ID:erkZnaOI0.net] >>402 https://elaws.e-gov.go.jp/search/elawsSearch/elaws_search/lsg0500/detail?lawId=411AC0000000128
413 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 17:10:49.32 ID:NpAwFZ6qM.net] >>404 条文ぐらい示してやれよ
414 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 17:59:59.30 ID:90PkXrDL0.net] 色んなところで迷惑なヤローだな
415 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 21:54:01.43 ID:rNXeNA230.net] >>402 非公開だろうがクライアント側で処理してるのには変わりないんだから お前が本当にブラウザになり切れればやれるよ 単純に能力と手間の問題だ
416 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 22:05:00.16 ID:yaxmcT7W0.net] この質問結構前からいたるところで見る気がするんだけどただのマルチ?
417 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 23:55:52.03 ID:W1llczT4d.net] >>400 >>401 とりあえず自力でできたのでソース抜粋 1 // Form1 呼び出し側 private void CountDownBtn_Click(object sender, EventArgs e){ var countDownForm = new MYCountDownForm(7); countDownForm.ZeroReached += OnCounterZeroCallBack; countDownForm.Show(); } // コールバック private void OnCounterZeroCallBack(Object sender, DestReachedEventArgs e){ // UI 更新 }
418 名前:デフォルトの名無しさん mailto:sage [2019/08/23(金) 00:00:27.51 ID:RwBPjFxxd.net] ソース抜粋 2 // MYCountDownForm private System.Windows.Forms.Timer countDownTimer; public int timeLeft; public delegate void ZeroReachedEventHandler(Object sender, ZeroReachedEventArgs e); public event ZeroReachedEventHandler ZeroReached; void Timer_Tick(object sender, EventArgs e){ if (timeLeft >= 1){ timeLabel.Text = this.timeLeft.ToString(); timeLeft--; } else if (this.timeLeft <= 0){ timeLabel.Text = this.timeLeft.ToString(); var args = new ZeroReachedEventArgs(); args.TimeReached = DateTime.Now; OnDestReached(args); this.Close(); } } // END Timer_Tick protected virtual void OnZeroReached(ZeroReachedEventArgs e){ var handler = ZeroReached; if (handler != null){ handler(this, e); } } } public class ZeroReachedEventArgs : EventArgs { // コンストラクタないけどいいの? public DateTime TimeReached { get; set; } }
419 名前:デフォルトの名無しさん [2019/08/24(土) 00:16:35.07 ID:EZ15JXYo0.net] アホな質問ばっかですいません 光速の計算をしたいんですが、doubleでは無理ですか? decimalは使いません お願いします。小数点以下が信用できません。
420 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 00:22:03.18 ID:ka7Yl/470.net] >>411 お前さんが使おうとしている計算方法や欲しい精度とか示さんと答えられんだろうよ
421 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 01:21:02.23 ID:g8XGZa5Z0.net] >>411
422 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 08:41:25.65 ID:VP6gB9DD0.net] 質問いいですか、クラスの処理の途中経過をTextboxのコントロールに送りたいのです public partial class Form1 : Form { Class1 class1 = new Class1(); } class Class1 { public Class1() { Form1.Textbox1.AppendText("Class1を実行しています"); } } このようにしてもForm1のインスタンスがないから実行できません みなさんはクラスのログなどをテキストボックスに送るとき、どう書かれてますか?
423 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 09:03:40.17 ID:BNVmeU2m0.net] >>414 public partial class Form1 : Form { public TextBox Textbox1; Class1 class1 = new Class1(this); } class Class1 { public Class1(Form1 fm) { fm.Textbox1.AppendText("Class1を実行しています"); } } またはFom1のなかに public void appenttext(string st) { Textbox1.AppendText(st); } としてClass1から呼び出す
424 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 15:23:44.45 ID:VP6gB9DD0.net] >>415 レスさんくすです 上の方法でうまくいきました クラスからコントロールを操作ってあまり使わない、というか推奨されてないのかな?
425 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 15:40:00.64 ID:glPHIee0p.net] コントロールは何かを操作する為の機能なんだから、 普通はその操作する何かを直接操作するだろ?
426 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 15:45:48.43 ID:BNVmeU2m0.net] >>416 インスタンスをどう指定していいかわからないんじゃなかったのか 親子関係にあるウィンドウでの操作はいろんなアプリで普通にあるし C#だけにしても「C# 別のフォームのコントロール」でググればやっているところはいっぱい出てくる
427 名前:デフォルトの名無しさん [2019/08/24(土) 15:56:01.09 ID:dsz+mirUa.net] >>416 非推奨というか、普通はやりたいと思わないね。 何かの参照を握るってことはそれに依存してしまうってことだから。 Class1は本来はForm1の参照を持つ設計にしたことで、 事実上そのプログラム専用の他で流用できないコードになってる 他で使う予定ないからそれで問題ないと思うかもしれないが(以下略
428 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 19:37:50.96 ID:VP6gB9DD0.net] >>417 確かにコントロールというぐらいだし >>418 さんくす、実際にやる方法もわからなかったし、教えてもらったのはわかりやすかった 考え方を標準っぽいやり方に寄せたいのです >>419 さんくす、なるほどパーツとして完成してないですね 汎用性の低いコードは改善しないと、でも今回はこれでいきます logの取り方考えないと
429 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 21:52:23.83 ID:PMKXSgkW0.net] 処理側に出力するだけの意味しかないデリゲートでも渡してやれば? 受け側はコントロールを操作とか意識しなくて済むけど public partial class Form1 : Form { : Class1 class1 = new Class1((string s) => { this,Textbox1.AppendText(s); }) ; } class Class1 { delegate void output_delegate(string s); output_delegate output = (string s) => { Console.WriteLine(s); }; //デフォルト出力先はコンソール : Class1(output_delegate _output) { output = _output; } : }
430 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 22:59:49.50 ID:sQirZTQZ0.net] よく答えられるな なにをしようとしてるのかすらわからんわ
431 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 23:07:54.21 ID:VP6gB9DD0.net] >>421 レスさんくすです でもしかし、半分ぐらいしか理解できませんでした、スイマセン 〜解読中〜
432 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 23:11:33.91 ID:XZUr8QhOa.net] refやout, in引数のないdelegateなら 自分で定義せずにSystem.ActionやSystem.Funcを使う手もあるよ
433 名前:デフォルトの名無しさん [2019/08/24(土) 23:15:15.44 ID:dsz+mirUa.net] >>423 理解しなくていいよw デリゲートを直で受け渡しなんかせず、素直にイベントの方を使いましょう。
434 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 23:54:17.30 ID:GocaxRhS0.net] >>422 さすがにそれはお前がアホやで
435 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 23:56:09.98 ID:4OMYNXZ10.net] 使う手もあるというか余程じゃなければActionかFuncでは
436 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 00:04:50.89 ID:dkxX1jtZ0.net] 俺もActionを推す
437 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 00:26:08.77 ID:DAHO6xPV0.net] MethodInvoker(´・ω・`)ボクも忘れないでね
438 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 06:55:23.52 ID:Jlb1UCj1M.net] >>414 こういうのってbindingでどうにかするものじゃないの?
439 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 07:21:22.29 ID:UfI3Un4o0.net] 可変長の戻り値って実現できませんか?もしくは可変長のタプル これを public void hoge<T>(List<T> list, Func<T, string[]> selector) { ... } hoge(list, listItem => new string[2] { listItem.A, listItem.B }); hoge(list, listItem => new string[3] { listItem.A, listItem.B, listItem.C }); ↓ public void hoge<T>(List<T> list, Func<T, params string[]> selector) { ... } hoge(list, listItem => (listItem.A, listItem.B)); hoge(list, listItem => (listItem.A, listItem.B, listItem.C)); こんな風に書けたらいいのにって感じです
440 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 09:33:25.01 ID:NieUwdLz0.net] >>424 さんくす、スマートに書けそうですね、他の人もさんくす、ただ考え中 >>425 今回はイベントで、ただデリゲート勉強するいいちゃんす >>429 さんくす、ググったら実現したいことをピンポイントっぽい >>430 さんくす、binding、さらにむずい、今までと違うアプローチっぽい
441 名前:デフォルトの名無しさん [2019/08/25(日) 13:39:47.35 ID:aNsJH+ura.net] >>431 何言ってるのか理解するのに5分かかったw ラムダ式の右辺(?)の評価方法をジェネリックの型パラメータを確定する場面で指定するとか 普通に無理筋でしょう hoge(list, listItem => new[] { listItem.A, listItem.B }); が hoge(list, listItem => (listItem.A, listItem.B)); と書けたところでたいして嬉しいと思えんけど
442 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 14:04:21.51 ID:UfI3Un4o0.net] >>433 おお、new[]で推論してくれるの忘れてました new[]で十分スマートですねこれで問題ないです、ありがとうございました
443 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 22:03:25.03 ID:4LqybIGY0.net] Formのプログラムで普通に動作してたOpenFormDialogを使ってる箇所が突然フリーズしてしまいます。 一旦そうなるとWindows自体が不安定になり、他のプログラムで恐らくOpenFormDialogを使ってる所が全てフリーズしOSの再起動が必要になります。 どんな要因が考えられるでしょうか。 プログラムはかんたんなグラフィックエディタで矩形やテキストを移動したり変形する程度です
444 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 22:12:11.72 ID:hYfvTIib0.net] OpenFormDialog? OpenFileDialogじゃなくて? OpenFileDialogならフリーズの話はあるから検索して 騒がれたのもう結構前だからまだ残ってるともあんまり思えないけど
445 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 22:13:53.33 ID:hYfvTIib0.net] あ、残ってるってのはフリーズするバグを残してる環境の話ね
446 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 00:35:03.80 ID:D54D8pf80.net] >>436 OpenFileDialogでした cymon.sysの件は見つけましたけど家のPCにはありませんでした 地道にバグを見つけます
447 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 01:40:22.77 ID:YZSrPKBs0.net] List<Employee> のIDとList<int> の一致するEmployeeを取得したいです。 List<int>をforeach、その中でList<Employee>をFirstOrDefaultで探して 新たなList<Employee>にAddする方法はできました。 これのforeachを撲滅して簡潔に書きたいのですがいい方法はありますか?
448 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 01:54:35.76 ID:XYz1A7/c0.net] var employees = new List<Employee>(); var ids = new List<int>(); ・・・・ var hitEmployees = employees.Where(employee => ids.Where(id => id == employee.id).Any()).ToList();
449 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 05:09:56.54 ID:d+oJYvyp0.net] employees.Join(ids, _emp => _emp.ID, _id => _id, (_emp, _id) => _emp) joinはクエリ構文の方が読みやすいな from emp in employees join id in ids on emp.ID equals id select emp
450 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 06:09:07.86 ID:LiZWIy1C0.net] Find
451 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 07:20:31.54 ID:H4cvWJOz0.net] employees.FindAll(emp => ids.Contains(emp.ID))
452 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 08:56:15.22 ID:WqA3OufOM.net] EnumSetってEnumの値を2のベキにすればいいから存在しないの?
453 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 11:40:26.35 ID:Rhz6dR8od.net] イベントハンドラのいなづまアイコンってどういう意味なの? 気になって開発が手につきません。
454 名前:デフォルトの名無しさん [2019/08/26(月) 12:01:50.23 ID:EHOEsFfWa.net] 地下鉄漫才かよw
455 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 16:00:24.81 ID:7fzFkpCMr.net] execute 神がいかずちをもって手を下す 的な
456 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 22:32:00.17 ID:YZSrPKBs0.net] >>440-443 どれもなるほど!と勉強になりました ありがとうございます 今回はシンプルな>>443 さんのでいきます!
457 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 07:54:15.38 ID:wbq0Lfqra.net] おお、なるほど。LINQのクイズ集があれば面白そうだな。
458 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 08:59:40.07 ID:S6vHFDx3d.net] 443はlinqじゃないぞ 2.0の頃からあるListクラスのメソッドだけだ
459 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 10:18:31.48 ID:AUeyxvTx0.net] >>450 ラムダ式が使えるようになったのはC#3.0から
460 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 11:47:29.33 ID:S6vHFDx3d.net] >>451 そうそう。なのでデリゲート使って書く必要はあるけど
461 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 19:15:36.40 ID:4aKZbpn00.net] 次のようなことをしたいのですが、どうすればいいでしょうか。 async、awaitを使えばいいようにも思えたのですが、クラス内のループが止まらず・・・ 1.ボタン押下でとある処理をするクラスのインスタンスを生成し、クラス内で処理を無限ループ 2.ボタン押下でクラス内のループを停止
462 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 19:21:08.99 ID:a3Zgv65M0.net] >>453 ループさせているクラス内に止めるメソッド付けてボタン押したときにそれ呼び出せばいいだけでは イベントメソッドは別のクラスでもできるから直にボタンのイベントに追加してもいいし
463 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 20:10:30.11 ID:2XS9VBdia.net] CancellationTokenSourceを使うのが比較的妥当なやり方かな 2でボタンを押したらcancellationTokenSource.Cancel() 無限ループ側の処理では適宜cancellationToken.ThrowIfCancellationRequested()
464 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 20:56:45.60 ID:LqXN8ItS0.net] 低レベルな実装だと終了フラグの参照を渡しておくとか
465 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 21:11:30.63 ID:fYPVnhP50.net] >>455 単純なループ処理でキャンセル例外が必要なければ CancellationToken.IsCancellationRequestedをチェックするのでも良いね
466 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 21:12:50.98 ID:4aKZbpn00.net] 皆さん、ご回答ありがとうございます。 >>454 停止メソッドにより、ループ条件から外れるフラグを立てて 処理停止させるイメージでしょうか。 >>455 CancellationTokenSource初めて聞きました。 便利ですね! >>456 すみません。フラグでの終了処理しか思いつきませんでした・・・ もう少しマシな実装になるとどうなるのでしょうか。 教えてもらえると助かります。
467 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 21:26:09.47 ID:4aKZbpn00.net] >>457 そういった方法もあるのですね。ありがとうございます。
468 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 22:06:20.98 ID:GZd8Fc/Qp.net] 無限ループなんか組むな。
469 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 22:40:07.64 ID:4aKZbpn00.net] すみません・・・ あるフォルダにファイルが保管されたときに そのファイルを処理したくて監視に無限ループを使ってしまいました。 他に良い方法があれば、お教え願えないでしょうか。
470 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 22:43:30.90 ID:4WMOl80S0.net] >>461 System.IO.FileSystemWatcher
471 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 22:46:14.03 ID:4WMOl80S0.net] もしくは、win32ApiのFindFirstChangeNotification()か
472 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 22:46:46.91 ID:4aKZbpn00.net] >>462 そんな便利なものまであるんですね!びっくりしました! 全然C#のこと知らなくて恥ずかしいです・・・ 教えてくださってありがとうございました。
473 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 09:31:28.37 ID:jmHHdju80.net] 自分はC#といえば当たり前のようにWindowsFormでやってたけど みんなは何使ってるの?
474 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 11:09:54.59 ID:xlt6w80MM.net] >>465 特に必要なければwinform というか、初期のブレンドが使い物にならなかったので、WPFやUWP?は必要になるまで覚えないことにした
475 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 11:18:52.44 ID:kf58t1t/0.net] WinformからUWP APIを呼び出すことも出来るしな
476 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 12:01:00.80 ID:nq/8XfUOM.net] WPFでやってるけど誰かにお勧めしたことはないしとてもお勧めできない
477 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 12:10:35.61 ID:biFO59Yua.net] >>465 Winformなプロジェクトだが、XAMLでのレイアウトが好きだから自分の担当画面はWPF使ってる
478 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 12:29:45.46 ID:XsRrDAKXd.net] >>465 ASP.NET Core
479 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 12:34:32.95 ID:in2U0t2Ud.net] >>465 WinFormsやらWPFやらXamarin
480 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 14:05:53.46 ID:xlt6w80MM.net] >>465 アンカーやドック追加してくれたのが嬉しすぎて、他に浮気してまで新たに覚える気にならないってのもあるかな
481 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 20:18:04.95 ID:h4zgSqGZd.net] [DllImport("user32.dll")] static extern IntPtr GetForegroundWindow(); アクティブウィンドウのクライアント領域を取得するにはどうすればいいでしょうか? 上のメソッド使えば行けそうなんだけど、行き詰まってます。
482 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 20:23:25.50 ID:7/MPDbwD0.net] C#関係ない
483 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 20:39:43.87 ID:j6ZvHlbE0.net] >>473 それはアクティブになっているウインドウのハンドルを返すだけのもの https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getclientrect RECTの構造体は自分で用意して上のURLではポインタが引数になっているけどC#なら [DllImport("user32.dll")] private static extern int GetClientRect(IntPtr hwnd, ref RECT Rect); みたいに構造体をrefかoutで指定したらそこに戻ってくる
484 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 23:28:13.40 ID:1vTqziPj0.net] c#楽しいね 直感ですぐGUIアプリ作れるからプログラミング覚えたいけど特に目標がないって人にはc#一択だと思う
485 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 23:50:51.61 ID:RWMmexzc0.net] >>475 ほぼそのまんまのサンプルを見つけて問題はとりあえず解決しました。 https://ja.stackoverflow.com/questions/21328/c-processで指定した別プロセスのウインドウを-クライアント領域のみキャプチャしたい アクティブウィンドウのクライアント領域の取得は、 c# + netframework ではできないのですか?
486 名前:デフォルトの名無しさん mailto:sage [2019/08/29(木) 00:27:03.61 ID:yP1vALXb0.net] できるよ お前には一週間早い
487 名前:デフォルトの名無しさん mailto:sage [2019/08/29(木) 01:19:09.27 ID:wYLP5dcN0.net] 次はListViewの要素の長方形を得たいとかかな 結局.netからは離れていきそう
488 名前:デフォルトの名無しさん [2019/08/29(木) 01:53:51.70 ID:KY//KYCr0.net] TreeViewの表示を標準の 項目1 ┗項目2 ┣項目3 ┗項目4 から、 項目1━項目2┳項目3 ┗項目4 にするにはどうすればよいでしょうか?
489 名前:デフォルトの名無しさん mailto:sage [2019/08/29(木) 01:59:31.63 ID:AZY1Uw460.net] owner draw
490 名前:デフォルトの名無しさん mailto:sage [2019/08/29(木) 02:11:15.91 ID:HoxlVuhE0.n
] [ここ壊れてます]
491 名前:et mailto: 普通にカスタムコントロールを作った方が早そう [] [ここ壊れてます]
492 名前:デフォルトの名無しさん mailto:sage [2019/08/29(木) 07:51:27.50 ID:JXiDsy0oa.net] >>473 GetActiveWindow()って無かったっけ?
493 名前:デフォルトの名無しさん mailto:sage [2019/08/29(木) 07:52:24.70 ID:JXiDsy0oa.net] ↑ああ、早とちり
494 名前:デフォルトの名無しさん [2019/08/30(金) 21:10:43.61 ID:euEksp6k0.net] ドラッグアンドドロップで拡張子を.txt→.jsonに変更するプログラムのコードをください
495 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 21:15:43.51 ID:a95S+czO0.net] batでやったほうが早そうなレベルだけど fileをrenameするだけでしょ?
496 名前:デフォルトの名無しさん [2019/08/30(金) 21:18:37.15 ID:euEksp6k0.net] renameするだけですね どうしてもC♯でやりたいんです
497 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 21:30:48.63 ID:m5yHWiCc0.net] >>487 拡張子の書き換えは System.IO.Path.ChangeExtension(filepath, extension) ここはコードを代わりに書くスレじゃないのでキーワードはあるのだから後はググってください
498 名前:デフォルトの名無しさん [2019/08/30(金) 21:39:06.95 ID:euEksp6k0.net] 一日ググってもわからなかったので聞きに来ました
499 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 22:13:39.42 ID:LYP1s7Gj0.net] 誰が一日ググれば聞いていいって言ったんだよ ひと月はググれ
500 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 22:15:07.21 ID:gOJh05ROp.net] >>488 それだけじゃ変数領域にあるファイル名しかリネームされてない予感
501 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 22:16:45.05 ID:5knN0MFU0.net] むしろググる以外のことをしろ 一日やったらわかったこととわからんとこぐらいあるだろ
502 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 22:17:38.29 ID:a95S+czO0.net] どこがわからなかったのかくらい書いてくれないと説明できんよ ドラッグアンドドロップの受け取り方? 拡張子の変え方? コンソールアプリなの?デスクトップアプリなの?
503 名前:デフォルトの名無しさん [2019/08/30(金) 22:22:42.01 ID:euEksp6k0.net] https://www.ipentec.com/document/csharp-accept-drag-and-drop-from-explorer https://dobon.net/vb/dotnet/file/changeextension.html ここの二つのサイトを参考にして組み合わせれないかと色々やってみたんですけどうまくいかないんですよね それぞれ片方ずつならうまく動きます
504 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 22:27:14.34 ID:a95S+czO0.net] 上手く行かないとは何かを説明して コンパイルできない?エラーが出る?例外が出る? 実はmoveできてるけど別のフォルダに作ってるとかないよね?
505 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 22:27:46.98 ID:Eq4lHDlT0.net] 答えが出てるから色々試そうぜ あと1日試してやり方がわからないのなら >>1 にある >■コードを貼る場合は↓を使いましょう。 >ideone.com/ >https://dotnetfiddle.net/ にコードを張ってここからどうやれば良いかを聞いてくれ
506 名前:デフォルトの名無しさん [2019/08/30(金) 22:47:12.10 ID:euEksp6k0.net] ideone.com/4eJIcv これで貼れてますか?フォームアプリケーションです。 ここの57行目のファイルのパスをドラッグアンドドロップして得たパスに変更したいんですけどうまくいかないんですよね
507 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 22:58:41.75 ID:m5yHWiCc0.net] >>497 private void Form1_DragDrop(object sender, DragEventArgs e) { string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false); for (int i = 0; i < files.Length; i++) { string fileName = files[i]; textBox1.Text += fileName + "\r\n"; System.IO.File.Move(fileName, System.IO.Path.ChangeExtension(fileName, "bak")); } } これでいいでしょ ボタンクリックでやりたいのならフィールドでファイルパス持たないと
508 名前:デフォルトの名無しさん [2019/08/30(金) 23:12:12.27 ID:euEksp6k0.net] >>498 できました、ありがとうございます こんな簡単だったんですね・・・・・・
509 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 23:59:42.45 ID:Nv4TyFgP0.net] >>498 重箱の隅で本質とは関係ないけど、 "\r\n"はEnvironment.NewLineの方が良いな
510 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 00:15:27.52 ID:yACTwzu40.net] テキストボックスのテキストも環境の影響受けるんか? おれは環境によらず出力一定のほうが安心する
511 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 00:24:05.20 ID:8S6g8PTE0.net] どちらかと言うと定義済みの定数としてだな
512 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 02:02:25.00 ID:XD/oUD8U0.net] コンソールとGUIの改行が同じという保証なんて無いんだが
513 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 04:03:11.60 ID:5bIs7pBL0.net] >>503 同意
514 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 08:13:13.94 ID:auI6O9iK0.net] JSONを扱いたいのですが.NET標準機能では JSON.NETにあるJsonPropertyのような変数名とは別の名前で 出力できるような機能は無いでしょうか?
515 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 08:26:54.85 ID:/xXRK3gd0.net] >>505 DataContractJsonSerializer使って [DataMember(Name="別の名前")] とか?
516 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 08:38:53.92 ID:auI6O9iK0.net] >>506 うぉぉぉ できました。ありがとうございます!
517 名前:デフォルトの名無しさん [2019/08/31(土) 15:26:10.82 ID:pxkHJ9ge0.net] クロームにURL開かせるプログラムって作れるのかな
518 名前:デフォルトの名無しさん [2019/08/31(土) 15:34:24.66 ID:pxkHJ9ge0.net] 標準ブラウザで開くのがありました
519 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 17:12:50.00 ID:3HNIz5om0.net] 引数にURLを入れて起動すればいいんじゃない? やったことないけど
520 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 18:30:37.90 ID:OVCgKeDNa.net] headlessでできるよー
521 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 18:34:41.41 ID:lSinYyRY0.net] >>510 どんなブラウザでも、標準でそうなってる(べき)と思ってる。meも
522 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 20:59:16.96 ID:DOQSWUJb0.net] start url って叩きゃ標準ブラウザが立ち上がるでしょ 引数ってブラウザのexeパス調べてそこに渡すの? OSが知ってんだからOSにぶん投げればいいだけじゃん
523 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 22:02:09.86 ID:3KJgwSNk0.net] >>508 Seleniumだな、それこそ。
524 名前:デフォルトの名無しさん mailto:sage [2019/09/02(月) 13:12:29.24 ID:x5YZ9uix0.net] Span<T>をコレクションに貯める事って出来ないんでしょうか? 受け取ったbyte[]から一部のみを必要としていますが、startIndexとlengthを一々記録するのも面倒であるため、現状は新たにnew byte[length]を作りコピーをして貯めています 別にこれでも全く困っていませんが、あんまりスマートではない気がしているので元のbyte[]を.AsSpan(startIndex, length)したものをコレクションに貯められればスッキリするのですが
525 名前:デフォルトの名無しさん mailto:sage [2019/09/02(月) 13:30:51.46 ID:DTXhuRLF0.net] できないよ array[3..7]とかでSliceするとか元の配列を使うならArraySegment<T>使うとか
526 名前:デフォルトの名無しさん [2019/09/02(月) 14:07:32.18 ID:/BuOMso5a.net] へーSpanってそんな制約があるのか知らんかった https://stackoverflow.com/questions/52484998/the-type-spanchar-may-not-be-used-as-a-type-argument
527 名前:デフォルトの名無しさん mailto:sage [2019/09/02(月) 14:41:25.59 ID:ZSYwkq3t0.net] >>508 例えば、Ruby, Selenium Webdriver なら、 下のファイルを、test.rb とすると、端末で、 ruby test.rb "ここにURL" と入力すると、引数がARGV[0] に入ってくる require "selenium-webdriver" options = Selenium::WebDriver::Chrome::Options.new options.add_argument('--headless') options.add_argument('--disable-gpu') driver = Selenium::WebDriver.for :chrome, options: options driver.navigate.to ARGV[0] # URL
528 名前:デフォルトの名無しさん mailto:sage [2019/09/02(月) 17:47:47.05 ID:btOIY8sya.net] >>515 MemoryExtensions.AsMemory()を経由してSystem.Memory<T>を管理するのはどう?
529 名前:デフォルトの名無しさん mailto:sage [2019/09/02(月) 22:24:59.33 ID:yMcQzedZ0.net] >>518 C#で書かないならスレチ
530 名前:デフォルトの名無しさん mailto:sage [2019/09/03(火) 00:14:45.15 ID:nBDYMOwL0.net] なんで突然ruby?
531 名前:デフォルトの名無しさん mailto:sage [2019/09/03(火) 00:20:55.08 ID:UWVASv0T0.net] >>521 ソイツはいくつかのスレタイにRuby禁止といれることになった元凶だから、考えるだけ無駄よ
532 名前:デフォルトの名無しさん mailto:sage [2019/09/03(火) 04:53:21.49 ID:uBbuO65f0.net] これもう半分まつもとゆきひろだろ
533 名前:デフォルトの名無しさん mailto:sage [2019/09/03(火) 07:44:05.39 ID:ZfMnDhcZ0.net] Matzから分離した闇の半身か何か(ダークファンタジー感)
534 名前:デフォルトの名無しさん [2019/09/03(火) 15:02:01.60 ID:qa0OGce90.net] zipファイルのパスワード総当たりのコードってどこかに落ちてたりしません?
535 名前:デフォルトの名無しさん [2019/09/03(火) 15:23:56.69 ID:gWEsYspAF.net] ム板なんだし自分で書いても大した手間じゃないだろ
536 名前:デフォルトの名無しさん mailto:sage [2019/09/04(水) 23:01:10.22 ID:YAGCYgl00.net] ラプラス使ったほうが早い
537 名前:デフォルトの名無しさん mailto:sage [2019/09/04(水) 23:19:14.03 ID:+3gE1skmF.net] ラプラス変換関係ないだろ
538 名前:デフォルトの名無しさん mailto:sage [2019/09/04(水) 23:23:33.02 ID:YAGCYgl00.net] フリーソフトなんだけど(´・ω・`)
539 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 08:24:49.80 ID:cdpeKhxuM.net] ラブプラスに見えたし
540 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 12:39:28.85 ID:mWzCSlDu0.net] 頭がc 胴体がDelphi 尻尾がJava これはなんという生き物か?
541 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 12:52:58.36 ID:IuZ8kmLDd.net] メインフォームと5つボタンがあるサブフォームあります。 サブフォームで押されたボタンをメインフォームに渡す方法として、下記のようなことが書いてあります。 「サブフォームの呼び出し時にメインフォームのインスタンスをサブフォームの変数に渡すか、もしくは Ownerプロパティを設定し、サブフォームにメインフォームのインスタンスを伝える必要があります。」 これ循環参照にならないのですか? owner プロパティならフレームワークでうまくやってくれそうですが、そうしないなら典型的な循環参照でメモリにいつまでも残るように見えます。
542 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 12:57:57.83 ID:IuZ8kmLDd.net] >532のコードで気になった部分 public FormMain() { InitializeComponent(); fs = new FormSub(); fs.formMain = this; } private void button1_Click(object sender, EventArgs e) { fs.Show(); }
543 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 13:07:57.99 ID:/TG+lkXnd.net] 昔のVBとかじゃないから 参照カウント方式とかじゃないから 大丈夫だよ
544 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 15:05:44.19 ID:olW2Z8c3M.net] >>533 循環になってないやん 相互参照になってるだけ
545 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 15:11:39.37 ID:MYIgyYNAM.net] >>535 相互参照⊂循環参照
546 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 07:39:44.27 ID:ON7V4Cum0.net] awaitの仕組みって面白いな プログラムは逐次実行と思い込んでいたから最初戸惑ったけど プログラムの可読性を上げつつ非同期が書ける仕組み
547 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 12:21:39.70 ID:5uKlWCRxp.net] バカ、逆に非同期の仕組みが分かりにくい事になってて最悪だわ。 若い奴らはある種のおまじないとしか思って無いぞ。 だからサンプル通りに書いたら動いたで思考停止してるわ。
548 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 12:23:25.42 ID:5uKlWCRxp.net] だったら最初から完全に隠蔽しちまえばいいのにそれも出来ない半端な言語だよな。
549 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 12:27:55.87 ID:RjtqJRZu0.net] >>537 async/awaitはとてもいいよな
550 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 12:36:51.77 ID:dfZG2SkRd.net] >>539 へー半端な言語が大増殖してるねよかったね
551 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 13:29:27.52 ID:TB1/9ae/0.net] ものすごく細かく気にする価値のないであろう上で質問させてください。 下記のようなコードではColorを予め変数として保持していますが、ColorではなくSolidColorBrushごと変数として持っておいた方が良いと思うのですが違うんでしょうか?(Colorの各変数は下記のConvertメソッドでしか使われていません) private Color redColor = Colors.Red; private Color blueColor = Colors.Blue; public object Convert(object value) { switch ((int)value) { case 0: return new SolidColorBrush(redColor); default: return new SolidColorBrush(blueColor); } }
552 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 13:30:16.71 ID:I5nGSvp60.net] Occam 呼んだ〜
553 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 13:38:31.81 ID:qBxw88Xh0.net] Convert呼び出した側がOpacityとか勝手に変えたりすることがないことが明らかなら SolidColorBrushで持っててもいいよ
554 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 13:43:03.96 ID:TB1/9ae/0.net] >>544 上記のコードは色以外は初期化したいっていう意図だったんですね 理解出来ました、どうもありがとうございます。
555 名前:デフォルトの名無しさん [2019/09/06(金) 20:41:34.27 ID:QErA9RfTd.net] return HttpResponseMessage { StatusCode=HttpStatusCode.InternalServerError } これでクライアントにレスポンス返しても、クライアントで受け取ったレスポンスコードが200になるんだが、どうすりゃ良い?
556 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 23:59:27.95 ID:2XeZAy8C0.net] short lo = 500; short hi = -1; int value = hi << 16 & lo; 上記のプログラムでvalueに期待する結果が格納されません。 valueの右辺へおかしいところありますか?
557 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 00:04:12.02 ID:1iyY1sdc0.net] まず期待結果を教えろよ 脳内に格納したままで喋るな
558 名前:デフォルトの名無しさん [2019/09/07(土) 00:35:07.80 ID:lng4b11Wa.net] ぶっ飛んでるねw
559 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 00:47:49.03 ID:lKqYze8d0.net] >>547 なんとなく&(and)と|(or)を間違えてる気がするけど、期待値書いてくれなきゃ分からんねw
560 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:10:23.93 ID:ClfuNVBY0.net] >>547 ビット演算?をしてる割には unsignedじゃないのが気になった
561 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:21:40.06 ID:SOW3zbb30.net] C派生のシフト演算子ってビット演算子よりも優先順位低いんじゃなかったか? C#で入れ替わったのかもしれんが
562 名前:デフォルトの名無しさん [2019/09/07(土) 01:30:36.24 ID:spGdC07na.net] 型変換か?
563 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:31:47.20 ID:l9Sxm6Vo0.net] >>552 docsに演算子の一覧と優先順位がある https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/
564 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:52:37.97 ID:lKqYze8d0.net] >>552 逆だぞ Cの時から
565 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:57:56.73 ID:7Z6eBjmW0.net] ?はもっと上げてほしい
566 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:58:53.26 ID:7Z6eBjmW0.net] じゃなくて??
567 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 11:12:31.90 ID:53qID/ifa.net] async/await、読みやすいし書きやすいけどな。
568 名前:デフォルトの名無しさん [2019/09/07(土) 11:14:11.92 ID:LlCffhcK0.net] https://www.youtube.com/watch?v=O8ucIQA829w Introduction into StockSharp training course どうこれVisual Studioってこんなに速く作れるの? 自分で自動売買ソフト組めるってすごくね?
569 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 13:42:14.17 ID:mFi2C/Ml0.net] クラスの継承について分からくなってしまったので教えて下さい。 以下のプログラムを実行すると、コメントの通り、False, True と表示されます。 [STAThread] static void Main(string[] args) { var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); var folderItems = new Shell32.Shell().NameSpace(desktopPath).Items(); Console.WriteLine(folderItems is Shell32.FolderItems2); // False と表示される Console.WriteLine(folderItems is Shell32.FolderItems3); // True と表示される } Shell32.FolderItems3 は Shell32.FolderItems2 を継承しているので 2つ目が True なら必ず1つ目も True になると思っていたのですが、 これはどのようなことが起こっているのでしょうか。 FolderItems2 object https://docs.microsoft.com/ja-jp/windows/win32/shell/folderitems2-object FolderItems3 object https://docs.microsoft.com/ja-jp/windows/win32/shell/folderitems3-object .Net Framework 4.7.2 でコンパイルし、Windows 10 Pro で実行しました。 よろしくお願いいたします。
570 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 13:57:18.69 ID:+ClizqJ4d.net] 下記 は子フォームから親フォームへのデータ引き渡しのサンプルです。 ShowDialog(); の戻り値を使ってないのですが、ここがよくわかりません。 static public List<object> ShowForm2(List<object> argObjs) { using (Form2 subForm = new Form2(argObjs)) { subForm.ShowDialog(); // 戻り値は? return subForm.resultObjs; } } 現在はデータの受け渡しは ShowDialog(); で表示、DialogResult を受け取り、これで処理を分岐。 これだと呼び出し側が少し膨らむと思って探していたサンプルが上のやつです。
571 名前:デフォルトの名無しさん [2019/09/09(月) 14:01:51.48 ID:FLVXg6p/0.net] >>560 type of
572 名前: [] [ここ壊れてます]
573 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 14:25:45.50 ID:wj5pBZXU0.net] >>561 それだけじゃ何とも言えないけど ダイアログがキャンセルされたかどうかもresultObjsに含んでる またはキャンセルされたかどうかは重要ではない のどっちかでDialogResultは不要と考えたんじゃね あとはただのチェック忘れか
574 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 14:33:19.47 ID:+8Zg4WGY0.net] showdialogはあくまでサブフォーム表示中に 処理を進めないためだけに使っていて 表示したサブフォームがOKもキャンセルもない作りなら 返り値を使う必要がないんだろう 例えばファイルの検索処理とその経過を表示するだけの サブフォームだったりするんじゃないかな
575 名前:デフォルトの名無しさん [2019/09/09(月) 14:44:41.43 ID:y33/yVcMa.net] >>560 FolderItems2とかFolderItems3はあくまでVSによって作られた ラッパークラスなんだと思うけど、たぶんこのラッパークラスには 元のCOMの継承関係は反映されないんだろう。 知らないけど。
576 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 14:54:29.42 ID:mFi2C/Ml0.net] >>562 レスどうもありがとうございます。 申し訳ないですが、おっしゃりたいことが理解できませんでした。 >>565 レスどうもありがとうございます。 >>560 で貼り付けた URL は不適切で、 本来は以下の URL を貼り付けるべきでした。 申し訳ないです。 FolderItems2 Interface https://docs.microsoft.com/en-us/dotnet/api/shell32.folderitems2 FolderItems3 Interface https://docs.microsoft.com/en-us/dotnet/api/shell32.folderitems3 この .Net の説明を見てもやはり継承関係はあるようですし、 if (folderItems is Shell32.FolderItems3 folderItems3) { Shell32.FolderItems2 folderItems2 = folderItems3; } のようなコードもコンパイルエラーにならないので、 継承関係があることは間違いないと思います。 また何かお分かりのことがあれば教えていただけると嬉しく思います。 よろしくお願いいたします。
577 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 15:06:55.45 ID:wj5pBZXU0.net] COMにおける継承はメンバを引き継ぐという意味であってキャスト可能かどうかは別の話だから .NETのコード上で明示的または暗黙的にCOMオブジェクト(のラッパ)をキャストした場合 QueryInterfaceが呼び出されてそのインターフェイスに変換できるかどうかオブジェクト自身に問い合わせる だから共通型システム的には問題ない暗黙的キャストでもその下のQueryInterfaceで拒否される可能性がある
578 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:12:21.94 ID:ko6k1+RqM.net] 正規表現を教えてください。 先頭一文字は大文字アルファベット、 次の一文字は大文字アルファベットかスペース、 残り五文字が数字、です。 文字数は多すぎても少なすぎてもダメてす。
579 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:34:55.30 ID:N7SL81rE0.net] [A-Z][A-Z\s]\d{5}
580 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:51:19.13 ID:P/8qmdeQ0.net] C#でdxfファイルを読み込んでどんなCADデータかなと表示するにはどんな方法がありますか?
581 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:51:40.30 ID:+ClizqJ4d.net] >>563 戻り値使わないとエラーでビルドできないと思ったんですが、こんな書き方あるんですね。
582 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:58:03.26 ID:ko6k1+RqM.net] >>569 ありがとうございます! できました!!
583 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:58:22.06 ID:8qRxx3SUa.net] >>570 Autodeskのサイトからviewerが落とせたと思うがそれ使うんじゃダメなのか? C#を使って何か独自のことがしたいの?
584 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 20:38:09.86 ID:/GXaCKPOd.net] >>570 自力でレンダリングしてるらしきサンプル見つけた https://www.codeproject.com/Articles/156522/DXF-Import-NET-Read-and-View-AutoCAD-Format-Files
585 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 21:02:37.25 ID:gB0pdJ5j0.net] >>570 結構大変。DWGならlibreDWGってライブラリーがある
586 名前:デフォルトの名無しさん mailto:sage [2019/09/10(火) 22:30:01.75 ID:/j9k/Fivd.net] >>573 最終型は建築のキープランってものがあって、そこに無数の符号という記号が丸の中に書いてあるんだけどそこを色塗りをしたい。 >>574 ありがとうございます。 難解過ぎてゆっくり休みの日にでも読んでみます。 >>575 やっぱ大変そうですよね。調べてもなかなか... C#スレはあったかいな。ありがとうございます!
587 名前:デフォルトの名無しさん mailto:sage [2019/09/11(水) 00:00:22.11 ID:1SzE9pLa0.net] 一般人「ウィンドウ」 キモオタ「フォームがーーー」
588 名前:デフォルトの名無しさん [2019/09/11(水) 18:58:32.68 ID:YXyi8nZ+0.net] フォームってなに?泡?
589 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 08:36:47.62 ID:XbTCqLqm0.net] c#は食わず嫌いだったけど使ってみたら案外良かった 使いやすいように改良してるんだな
590 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 11:25:52.65 ID:QIiZhm2T0.net] コントロールのタイマーの質問なんですが private void Timer1_Tick(object sender, EventArgs e) { MyClass myClass = new MyClass(this); myClass.//クラスの処理いろいろ } こう書くと毎回クラスが初期化されてしまいます タイマー内で同じクラスのインスタンスを使い続けたい場合どのように書けばいいのでしょか?
591 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 11:31:00.31 ID:AZGZd9Ny0.net] myClassをメンバ変数にする
592 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 11:40:42.95 ID:2zGYYD27p.net] myClassなんて再利用性が皆無なネーミングすんなよ。
593 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 11:45:28.48 ID:joMf8nOja.net] >>582 説明のための命名だろうよ
594 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 12:10:59.94 ID:V+BKjeIEM.net] 発達はコンテキストが想像できないから…
595 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 13:44:13.80 ID:j3ZoG8EK0.net] >>582 aho
596 名前:デフォルトの名無しさん [2019/09/12(木) 14:02:29.31 ID:0aQt/zFJa.net] >>580 タイマーのイベントハンドラを消して、適当なタイミング(例えばFormのLoadイベントとか)で private void Form1_Load(object sender, EventArgs e) { var count = 0; timer1.Tick += (snd, ea) => { Console.WriteLine($"count = {count++}"); }; } でもこれだとイベントの購読解除ができないので注意 っていうか、ジョークだから真に受けないでw
597 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 20:25:20.03 ID:QIiZhm2T0.net] >>581 レスサンクス、そもそも宣言しないってことですか それもアリかも、今回はインスタンス1個で済みそうだし >>586 レスサンクス、むむむ、どうなるん? >>582 めっちゃわかりやすいし
598 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 14:33:13.49 ID:FohQxIv6d.net] >>587 コンストラクタかTickイベント(初回のみ)でTimerのTagプロパティにMyClassインスタンスを設定 senderからTagに設定されているインスタンスを取得して利用するってやり方もある 1タイマー1MyClassって感じの設計ならこっちの方がいいかもね
599 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 16:09:57.39 ID:GqasltTgM.net] 再利用性のないクラスの名前に拘り過ぎるのは 効率的に無駄だなと感じる ライブラリ用のクラスは拘るけどね
600 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 17:07:26.51 ID:zz4VRjti0.net] >>588 レスサンクス だけど考えても理解できませんでした
601 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 17:17:29.19 ID:GqasltTgM.net] これでいいじゃない private MyClass myClass = new MyClass(this); private void Timer1_Tick(object sender, EventArgs e) { myClass.//クラスの処理いろいろ }
602 名前:デフォルトの名無しさん [2019/09/13(金) 17:23:20.15 ID:65eTAicb0.net] マイコラスの嫁がかわいい
603 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 17:47:41.70 ID:FohQxIv6d.net] >>590 コンストラクタで、 Timer1.Tag = new MyClass(this); イベントで var myClass = ((Timer)sender).Tag as MyClass; コンストラクタで作ったインスタンスがTimer1のイベントで使えるようになる これで理解出来そう?
604 名前:デフォルトの名無しさん [2019/09/13(金) 17:49:44.94 ID:XXPMNkq8a.net] >>590 たぶんこう var mc = (timer1.Tag ?? (timer1.Tag = new MyClass())) as MyClass; でもこんなアホなことやったらあかんw
605 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 17:59:46.24 ID:FohQxIv6d.net] 捕捉でsenderの扱いに馴染みがなくて分かりずらいなら var myClass = Timer1.Tag as MyClass; って直接コントロールを見てもいいかな 10個のタイマーでそれぞれクラス作るとかだと、メンバに持つのが嫌になるからそういう時に便利
606 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 21:09:16.91 ID:zz4VRjti0.net] >>591 サンクスです、やってみました //キーワード 'this' は現在のコンテキストでは使用できません。 thisがなければいけるのですが、 >>593 サンクスです、コンストラクタってMyClassでしょか? Timer1.Tag = new MyClass(this); //thisが受け付けてもらえません 仕方ないのでButton1_Clickに置きました var myClass = ((Timer)sender).Tag as MyClass; //myClassがNullになります var myClass = Timer1.Tag as MyClass; //こっちもNullになります >>594 サンクスです、うまく動きました でも正直あまり理解できてません 注:理解するのに時間がかかります
607 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 21:48:16.79 ID:PFGdVlPv0.net] windows form で背景色を白から青にジョジョにアニメーションで変化させるには? 今のところコードは下記です。 void timer_Tick(object sender, EventArgs e){ // 白 255,255,255 // 黒 0,0,0 var a = textBox1.BackColor.A; var r = textBox1.BackColor.R; var g = textBox1.BackColor.G; var b = textBox1.BackColor.B; if (a == 255) { a = 1; } var a = a + 25; if (a >= 255) { a = 255; } var r = textBox1.BackColor.R - 25; if ( r <= 0) { r = 0; } var g = textBox1.BackColor.G - 25; if ( g <= 0 ) { g = 0; } var b = textBox1.BackColor.B + 25; if (textBox1.BackColor.B >= 255) { b = 255; } textBox1.BackColor = Color.FromArgb(a, r, g, b); // 終了条件チェック、 // 終了処理 }
608 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 22:11:07.86 ID:YdWi/cYta.net] >>597 int counter = 0; void timer_Tick(object sender, EventArgs e) { counter++; counter %= 256; textBox1.BackColor = Color.FromArgb(255 - counter, 255 - counter, 255); }
609 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 22:12:15.08 ID:Gf0j4OgCd.net] >>596 >>580 でMyClassにthis を渡しているから皆thisを渡してインスタンスを作ってんだけどthisいらないの? いらないならthisは消していいよ
610 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 22:27:35.64 ID:zz4VRjti0.net] >>599 いやthisは欲しいです、Class内からtextboxコントロールのメソッド触りたいので form1渡してます
611 名前:デフォルトの名無しさん [2019/09/13(金) 23:44:37.81 ID:aO4dryeFa.net] >>597 やってみた public partial class Form1 : Form { private Stopwatch mStopwatch = new Stopwatch(); public Form1() { InitializeComponent(); } private Color BlendColor(Color a, Color b, double pos) { Func<int, int, int> blend = (i, j) => { var x = Math.Round((1 - pos) * i + pos * j, 0); return Math.Min(255, (int)x); }; var A = blend(a.A, b.A); var R = blend(a.R, b.R); var G = blend(a.G, b.G); var B = blend(a.B, b.B); return Color.FromArgb(A, R, G, B); }
612 名前:デフォルトの名無しさん [2019/09/13(金) 23:44:54.82 ID:aO4dryeFa.net] private void button1_Click(object sender, EventArgs e) { mStopwatch.Restart(); } private void timer1_Tick(object sender, EventArgs e) { var timeout = 5d; var elapse = Math.Min(timeout, mStopwatch.ElapsedMilliseconds / 1000d); var pos = elapse / timeout; BackColor = BlendColor(Color.White, Color.Blue, pos); } }
613 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 02:16:18.45 ID:BYSNLn3J0.net] >>600 コンストラクタやフィールドだとthisって使えないんだっけ? それならこれでいけるかな Tagの方も同じ感じでいけるはず private MyClass myClass; private void Timer1_Tick(object sender, EventArgs e) { if(myClass = null) {myClass = new MyClass(this);} myClass.//クラスの処理いろいろ }
614 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 09:11:10.12 ID:weYOKlpc0.net] >>603 れすさんくすです なるほど宣言と初期化をわけるのですね、うまく動きました
615 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 11:56:47.95 ID:vC+cN/7F0.net] Action<T>は値型という解釈で良いのでしょうか? var dic = new Dictionary<int, Action<float>>()という辞書に保持されているActionのメソッドを引いたり足したりしたいのですが、 下記のようにするとdicのvalueには反映されないようですが再度dicに追加してアップデートしないといけないということでしょうか? var action = dic[1]; action += method; // action.GetInvocationList().Lengthを調べるとちゃんと足されてる一方、dic[1].GetInvocationList().Lengthは変化なし
616 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 12:17:37.64 ID:iAxlaW7xa.net] デリゲートは参照型 action += method は文字通り action = action + method であり、結合後の新しいインスタンスが action に代入される デリゲート同士の + は String と同様に言語仕様によって特別扱いされており、Delegate.Combine メソッドの呼び出しに変換される ちなみにイベントに対する += は x.ev = x.ev + method ではなくプロパティと同様にxに対する特殊なメソッド呼び出しになる 作法的な話をすると、デリゲートのマルチキャストは歴史的経緯による遺物であり、イベントハンドラ以外には基本的に使わない方がいいよ
617 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 12:37:52.80 ID:vC+cN/7F0.net] なるほど、action += methodは、action = new Action(action + method)的な形ということだったんですね ありがとうございます
618 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 14:06:14.47 ID:nQc/7xFt0.net] Windows form だとちょっとした色変えるだけのエフェクト書くの大変。 iPhone swift だと 下記みたいな 2行 でかけるのに。 UIView.animate(withDuration: 0.5, delay: 0.0, options:[] , animations: { TextField.backgroundColor = .blue } , completion : { _ in TextField.backgroundColor = .white } ) Form のクラスメソッドに色、透明度、位置、回転、大きさとかを変化させるアニメーション系のメソッド追加してほしいね。
619 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 16:27:56.54 ID:y7dkXYFS0.net] >>608 そういう人はWPF使う方がええよ mvvmにこだわらなければそんな差ないし
620 名前:デフォルトの名無しさん [2019/09/15(日) 11:17:21.32 ID:ZbgEJrYza.net] 今でも業務系のASPって、MVCよりWeb formsのほうが多い?
621 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 11:21:19.74 ID:0P7zcb1/0.net] >>610 多いと言うか更改されずに腫れ物システムとして生き残ってるのが多いよ
622 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 11:23:22.76 ID:qUTb/lfg0.net] >>610 ASPとASP.NETは違うよ
623 名前:デフォルトの名無しさん [2019/09/15(日) 14:39:22.86 ID:CYqvBFjrF.net] ASP: Application Service Provider
624 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 17:44:41.18 ID:DjqXGTBC0.net] >>612 aho
625 名前:デフォルトの名無しさん [2019/09/15(日) 17:46:02.32 ID:tc+PQ4bB0.net] アスペルガー
626 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 18:48:25.55 ID:qUTb/lfg0.net] >>614 お前がな
627 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 19:36:43.99 ID:50f2l1H40.net] application hosting options
628 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 20:38:22.87 ID:IMDj4f3rd.net] >>612 アプリケーションサービスプロバイダ(英語: Application Service Provider、ASP)とは、 アプリケーションソフト等のサービス(機能)をネットワーク経由で提供するプロバイダ(= provide 提供する 事業者・人・仕組み 等全般)のこと[1]。 広義にはこうした仕組みのソフトウェア提供形態やビジネスモデルまでも指す[1]。 https://ja.m.wikipedia.org/wiki/%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%83%97%E3%83%AD%E3%83%90%E3%82%A4%E3%83%80
629 名前:デフォルトの名無しさん [2019/09/15(日) 22:04:55.99 ID:ZbgEJrYza.net] >>610 です >>612 ごめんなさい。自分が端折ってしまったのがいけませんでした。ASP.NETです >>611 やはりそんな感じなんですかね。意外とASP.NET関連の求人が多いので保守メインなのか開発メインなのか気になったもので
630 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 22:31:35.04 ID:007yvQzV0.net] ACTIVE SELF PROTECTION の求人だったりして https://activeselfprotection.com/
631 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 01:27:46.19 ID:2BSu07WM0.net] Bitmapを返すdllがあります(C#で作成) それをWinFormsで参照し、Bitmapを受け取りたいのですが、空の?Bitmapが返ってきます。 デバッガでdll側がきちんとBitmapをreturnしているところまでは確認できました。 ほかにどごを見直せばいいでしょうか
632 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 01:45:47.54 ID:2BSu07WM0.net] >>621 dll側をよく確認したところ、記述ミスがありました。 スレ汚ししてしまってすみません。
633 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 10:01:49.86 ID:z/LnXMaR0.net] Process.Start() で既に起動済みの外部コンソールアプリにコマンドを渡して結果を受け取りたいんですけど どうすればいいですか?
634 名前:デフォルトの名無しさん [2019/09/16(月) 10:55:23.20 ID:1SVMjj7z0.net] >>623 起動時に繋いどかないと後からは無理 cammy.co.jp/technical/2017/05/16/c-%e6%a8%99%e6%ba%96%e5%87%ba%e5%8a%9b%e3%82%92%e8%87%aa%e5%88%86%e3%81%ae%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%a0%e3%81%ab%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%99/
635 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 11:17:36.58 ID:TvwShLRF0.net] >>623 processをどう作ったか書かないと
636 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 12:31:59.14 ID:z/LnXMaR0.net] >>625 普通にこんな感じです Process prc=new Process(); ProcessStartInfo psInfo = new ProcessStartInfo(); psInfo.FileName = "hoge.exe"; psInfo.CreateNoWindow = true; psInfo.UseShellExecute = false; prc.StartInfo = psInfo; prc.Start(); コンソールアプリはすぐに終了せずに待機してくれるタイプです
637 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 12:42:54.00 ID:yFJZVYWt0.net] >>626 自分でプロセスを起動してるなら入出力をリダイレクトするだけ psInfo.RedirectStandardOutput = true psInfo.RedirectStandardInput = true; 起動後は proc.StandardInput.WriteLine("hoge"); proc.StandardOutput.ReadToEnd(); proc.WaitForExit();
638 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 18:45:14.27 ID:4wOD4j6P0.net] ポリモーフィズムに関しての質問なんですけど よくある例えでdogクラスのオブジェクトもcatクラスのオブジェクトもまとめてanimalクラスの配列で扱えるみたいなのあるじゃないですか でも例えばこの時catクラスでだけ定義されてるフィールドがあったとして、配列に格納した途端アクセスできなくなっちゃいませんか privateとかpublicは置いといて、たとえば、bool isPrettyとか定義されてたとして、animals[0].isprettyは無理じゃないですか。親クラスから子クラスで独自に定義されてるもんは触れられないですよね とりあえずまとめて親クラスで持っておいて使う時になったら子クラスの情報使いたいみたいなときなんかうまくやる方法ってないもんですかね。
639 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 18:49:22.91 ID:6boldAmf0.net] C#的にはパターンマッチングで分岐すればそれは可能だが 親クラスが持っていない情報を子クラスが持っている時点でそのクラス設計は疑わしい その例ならanimalクラスにvirtual bool IsPrettyを持たせるべき
640 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 18:50:41.39 ID:fvAMDErgd.net] そもそも使うものをまとめておくのが親クラスというかインターフェースや抽象クラスの役目なので、持ってるかどうかもわからないisprettyを使いたいのが間違ってる。無理やりやるんならリフレクションで存在確認するしかないよ
641 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 18:51:12.83 ID:6boldAmf0.net] 親クラスが持っていない情報というのは言い過ぎだな 親クラスが持っていないpublicプロパティを子クラスが持っているのは怪しい設計
642 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 18:54:14.01 ID:fvAMDErgd.net] 例えばヒゲのプロパティは猫しか持ってないと思うけど、そういう場合は is か as で具象クラスの型を確認してキャストして取ることは出来るけど、それはなんか気持ち悪い気がする
643 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 19:11:59.16 ID:6boldAmf0.net] 全動物のうち猫しかヒゲを持ってないわけじゃあるまいし Animal型にNullable型のヒゲプロパティを持たせてそれがnullかどうかで処理を分岐させればいいだけでは Animalクラスがヒゲを持ってるのは唐突過ぎると思うならFaceプロパティでも挟めばいい
644 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 19:13:48.81 ID:189yfApBd.net] >>628 親クラスを無駄なメンバーで膨らませるのはバッドパターン。 インターフェイスを使うべき。 IPrety InterFace を付けたなんらかの型のリストをループすればいい。 // IPrety InterFace で拡張した型ならなんでもループで回せる。 if myUnit.isPrety == true { myUnit.doSomething(); }
645 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 20:02:19.06 ID:5qQz1pKl0.net] >>628 ダウンキャストしなされ as クラス名;でよろし
646 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 20:15:43.47 ID:4wOD4j6P0.net] 色々勉強になりました こう共通のメソッドとフィールドがあるからくくりだして親にしようくらいの気持ちだったんですけどぐぐったらそういうのそもそもダメらしいですね 素直に各クラスで同じフィールド定義して継承関係全部なくそうと思います。
647 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 20:16:03.96 ID:mLXav9Fo0.net] まあそれだったらanimalに純粋仮想メソッド作ってCatにだけ必要な処理書くほうがいいって考えはわかる
648 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 20:45:51.61 ID:gcZDzsnLa.net] >>631 えー、そうなんか それけっこう使ってるなぁ、、、
649 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 21:13:37.27 ID:XDhMjXUv0.net] .NET Framework の Object クラスを全否定してるじゃんw
650 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 21:14:22.17 ID:D+I+Wj20M.net] 親クラスが持ってないプロパティを子クラスが持ってるって .Netですらわんさかあるじゃないの
651 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 21:15:50.88 ID:D+I+Wj20M.net] あ、かぶった 機能を追加するために継承して関数やプロパティを増やすのが ごく普通の設計じゃね 子クラスの全プロパティを親が網羅してたら使いにくいわ
652 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 21:42:46.98 ID:hXcOzvgxa.net] 機能を追加するための継承は現代的なOOPではあまり積極的には行われないんだよ 現代的なOOPにおいては実装継承は本質的に悪であるとされ、明確なメリットがある場合を除いて基本的に避けるんだよ 端的に言えば、抽象クラスを定義して、明確に拡張ポイントとして用意されたメソッドのみをオーバーライドする、 という使い方が今時の唯一の実装継承の使い方であると理解しておけばマサカリを食らうことはない 機能を追加したいだけなら継承する必要は全くなくて、ただそれぞれのクラスを別個に使うか、包含すりゃいいだけだ
653 名前:デフォルトの名無しさん [2019/09/17(火) 21:44:46.02 ID:02KenGFka.net] それほんとにその親いる?って感じの実装だったらabstractにするんじゃなくて?
654 名前:デフォルトの名無しさん [2019/09/17(火) 21:45:27.86 ID:02KenGFka.net] あっ被った?
655 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 23:37:00.02 ID:PSgriU0H0.net] >>641 .NETだとコントロールの大半がそうなっているなw 親の方のクラスでまとめて配列にして場合に応じてキャストして子のプロパティを取り出すとか実装したことはある
656 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 23:46:29.64 ID:e7oun/vJ0.net] すみません、初歩的な質問なのですが、クラスやらメソッドやらメンバーやらにアクセシビリティを設定するのは、他の誰かが使用するライブラリーを作成することを想定しているからなのでしょうか? できるならpublicだらけで作りたいのですがそれがどんな問題に繋がるのかわからずモヤモヤしてます。
657 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 23:59:21.95 ID:rQ8N7dRz0.net] >>646 問題ない
658 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 00:04:42.53 ID:PFlVcPVS0.net] >>645 ふーむダウンキャストも絶対やっちゃダメってわけでもないのか
659 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 00:12:27.01 ID:o3BZQkX70.net] >>646 システムが巨大になったときにpublicばかりだと複雑過ぎて手に負えなくなる 巨大になる予定も無いし他人に開示する予定も無いなら好きに作れば良いよ
660 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 00:13:40.45 ID:MOtnHukC0.net] >>647 >>649 ありがとうございます!
661 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 00:46:19.09 ID:XJgNYgHy0.net] >>648 わざわざ言語仕様にダウンキャストがあるのはそれが有用だからで、使っていけないわけではないよ。下手な設計で濫用されるのが非難されるだけで、適切な使い方をする分には問題ない。 理由も説明せずに杓子定規に◯◯は使うななんて書いているサイトがあれば、おそらくその書き手もちゃんと分かってないと疑ってかかった方がいいくらい。
662 名前:デフォルトの名無しさん [2019/09/18(水) 01:18:05.53 ID:cuUyZOV2a.net] >>650 普通に考えて問題だから真に受けたらあかんw 外からアクセスする必要がないメンバーがpublicになってるクラスは 滅多に使わない機能のボタンがてんこ盛りのリモコンみたいなもの。 使いたい機能を探すのに不必要な苦労するでしょ インテリセンスに使いもしないメソッドやプロパティが100とか 表示されるようなクラス使いやすいと思うか?
663 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 02:24:45.00 ID:haPYpedoa.net] 使いやすさなんて結局はドキュメントの質や命名規約などの高レイヤーの話であって、アクセス制御自体はそれほど重要ではない メンバをpublicにするということは、そのメンバが利用できることをクラス外に対して約束するということに他ならない そして、それを後で変更しようとすればクラス外へ波及する破壊的変更となる 将来的な変更の余地を残すために、客に対して不必要な情報公開を避けるという判断は、コーディングに限らずIT業界のビジネスのあらゆるシーンにおいて非常によく行われる
664 名前:デフォルトの名無しさん [2019/09/18(水) 02:39:11.63 ID:cuUyZOV2a.net] そういう議論は為にする議論ってやつだと思うよw 晒すメンバーの数だけ拘束されて自由が減るってのは論理的に
665 名前:はその通りだけど、 現実問題いらないメンバーに故意にアクセスするコードを書くことなんかまずない。 だっていらないんだからw 本質的に重要なのは見えるメンバーの数を減らして複雑性を下げ、生産性を上げること。 時間が一番貴重なんだから [] [ここ壊れてます]
666 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 07:50:17.10 ID:PFlVcPVS0.net] 何から何までそれこそループ変数までパブリックフィールドにしていろいろなメソッドで使い回すクラスと対峙しているのでなかなか響く話題 辛い
667 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 07:58:41.43 ID:5e31sw6sa.net] >>655 全部書き換えてしまへ
668 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 08:07:10.60 ID:n4vg2Vie0.net] Windowsでbluetooth BLEの心拍計とケイデンスセンサーから データを取得したいんだけど どういうコードを書くと取得できるかな? わかる人いるだろうか
669 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 08:24:07.29 ID:o3BZQkX70.net] デバイスのAPI仕様書読め
670 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 14:09:46.88 ID:uVuJujwEF.net] Process.Startにディレクトリを渡すとエクスプローラで開いてくれるけど、同じことをスマホなどMTP接続されたデバイスのフォルダでやりたいのですが エクスプローラでスマホのフォルダを開いた時のウインドウタイトル(PCデバイス名〜)を渡してもエラーになります。 ProcessでMTPのフォルダを開くことは出来るでしょうか?
671 名前:デフォルトの名無しさん [2019/09/18(水) 14:50:14.61 ID:9K+6bCRKa.net] >>659 MTPってことはPCからはストレージに見えてるってこどだよね? 普通にそのパスを渡すだけじゃないの? ドライブレターが不変じゃないのが困るってこと?
672 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 15:08:01.73 ID:n4vg2Vie0.net] スマホの場合、標準のエクスプローラに相当するものがないから ひらけないんじゃね?
673 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 15:11:26.73 ID:n4vg2Vie0.net] ああごめん、スマホをデバイスとしてPCに刺してる場合ね ファイル名を指定して実行でアドレスを入れて開けないなら ファイルパスが認識できていないのかもしれない エクスプローラのexeにパスを引数で渡して起動するよりないんじゃね
674 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 17:08:55.83 ID:8TRa6KIP0.net] エクスプローラーはMTPを通常のフォルダと変わらないように見せかけてるだけ 自分でアクセスするにはそれ用のAPIを使う必要がある
675 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 00:42:07.12 ID:d/lXkOqta.net] 質問です VisualStudioとかUnityってメモリ4GBのノートパソコンでも動きます? それともゲーミングノート買った方が良い?
676 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 00:43:51.43 ID:bue4KA2uM.net] 動かなくは無いかな 重いかどうかはやるのが早いんじゃない? 速度に不満で長く続けられそうなら 新しいのを買えばいいんじゃないの
677 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 01:05:46.17 ID:d/lXkOqta.net] >>665 ありがとうございます
678 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 01:08:28.00 ID:+/h2Zlffd.net] そふとうぇあなど実態のないデジタルデータを売ってお金をだまし取るのは詐欺なのでは?
679 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 03:08:03.44 ID:VsuqkEyW0.net] 何を売ろうが騙し取れば詐欺だろw
680 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 07:20:07.81 ID:2k5+XP3O0.net] 文字列を検索して文字数と行数を同時に取得する方法はないでしょうか? VisualStudioのフォルダ検索みたいにヒットした行の行数と内容を表示して ダブルクリックで該当ファイルを表示→選択箇所へジャンプとかやりたいです
681 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 09:52:48.59 ID:AAQe7fcf0.net] 文字列探索の要件が判らないとエスパー回答になるな C#ならではの方法としては、オブジェクトのハッシュコードを照合するという 方法もあるね
682 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 10:34:03.67 ID:2Fbpp9uL0.net] 文字数はstring.Lengthで良いのでは? 行数はそのstringをforして1charづつ改行charなら++して数えていくとか
683 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 12:14:01.52 ID:EhHD1H1Td.net] File.ReadAllLineで全部とるか、メモリ上なら改行コードでsplitして配列の添字を取ればいいじゃない
684 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 12:29:35.89 ID:+/YZqQed0.net] >>672 その場合、テキストボックスでフォーカスを当てるための文字数って地道にカウントしてくしかないっすよね?
685 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 12:31:08.07 ID:VB98Oc2p0.net] >>673 基本的にそう テキストエディタとかはそんな感じで実装してる
686 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 13:00:06.50 ID:cKzRnh020.net] >>674 なるほど 地道にやってんすね やってみた感じ 文字数から行数出した方が楽だったのと 検索しながらは検索文字列に改行コード入ると面倒だったので @検索文字列のヒットした文字数を出す A文字数に対する行数を出す の順でやりました ありがとう御座いました
687 名前:デフォルトの名無しさん [2019/09/19(木) 14:17:59.08 ID:R2S0qhpOa.net] 何言ってるのかよく分からんかったけど、 文字数 ⇒ 一致部分の最初の文字のインデックス 行数 ⇒ 一致部分の行の行番号 ってことかw 数え方の問題があるからだろうけど、Stringには一致箇所の数をカウントする メソッドは存在しないんだね。
688 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 14:45:37.14 ID:6IKimtYb0.net] 検索一致箇所までの文字列を切り出して 改行でspritして要素数から行を得るというのはどうかな 折り返しは考慮されないけどね あとtextboxなら折り返し込みで 文字インデックスから行に変換する メソッドがあった気がする
689 名前:デフォルトの名無しさん [2019/09/19(木) 14:58:17.90 ID:R2S0qhpOa.net] 検索される文字列が巨大だった場合Splitはさすがに富豪的過ぎるでしょ。 RegexかString.IndexOfでベタにやった方が
690 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 15:15:08.89 ID:VB98Oc2p0.net] 文字数多いとsplitはパフォーマンス辛い可能性があるね regexもそれなりに… パーサー的なものなら頭から逐次処理するのが一番だったりするし
691 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 15:41:06.68 ID:6IKimtYb0.net] ググったらreplaceを使ってlengthの差で求める方法があったけど これも一時的にメモリ上で二重化されるから 巨大なログファイルとかだとあまりいい方法ではないな IndexOfの検索結果を次の検索開始インデックスにしながら カウントするのが一番楽で無駄がなさそうだ
692 名前:659 mailto:sage [2019/09/19(木) 21:16:22.29 ID:sYHr9xpc0.net] 自己解決 MTPデバイスへのショートカット(.lnk)をメモ帳で開くと見えるリンク先 (こんなの→"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_12d1&pid_1031&mi_00#7&22311cc4&0&0000#{6fa27828-a61a-4555-ba33-f28f495d4f31}") をProcess->Start()にそのまま突っ込んだら、エクスプローラが起動してMTPデバイスを開いてくれました。 ちなみに、テキストの末尾に(〜5d4f31}\内部ストレージ\Android")というようにディレクトリを追加すれば、そのフォルダを開いてくれます。
693 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:06:22.05 ID:Z+Dr4fZe0.net] private class Parameter { public DateTime setTime { get; set; } public string Name { get; set; } public int Ag
694 名前:e { get; set; } public string address { get; set; } public int sex { get; set; } } ↑のParameterのListデータで setTime,Name,Ageが重複している情報を取得と排除したいんですがループでチェックするのは時間がかかりすぎるので 簡単で早く処理できる方法はないでしょうか? [] [ここ壊れてます]
695 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:15:35.18 ID:JBznBYO/0.net] Parameter.Equals() をオーバーライドして 用意した HashSet<Parameter> foreach で Add() を呼ぶ
696 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:15:52.99 ID:MWgaILTA0.net] >>682 個々の要素参照するんだからループするしか無いんじゃないの あらかじめどこか他にデータ持っているのならともかく 簡単にというのなら参照したデータをList<T>に入れていけばList<T>.Containsでチェックできる
697 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:17:07.07 ID:JBznBYO/0.net] なんか色々おかしかった ↓正 Equals() をオーバーライドして 用意した HashSet<Parameter> に対して foreach で Add() すればよい
698 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:20:11.39 ID:H/0RNa6Fa.net] >>682 普通のListで「全要素について、別の要素と重複があるか」をチェックしようとしたらO(N^2)になるから 効率よくしたいならHashSetを使うといい ただEquals()とGetHashCode()を適切に(今回の場合、setTime, Name, Ageだけで決まるように)実装する必要がある
699 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:21:51.81 ID:JBznBYO/0.net] >>686 HashSet の重複判定って GetHashCode() 絡んでるのかね? 名前的には関係ありそうだけど 仕様が見付からない…
700 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:32:56.51 ID:Z+Dr4fZe0.net] まだ試してないけどHashSetってことはsetTime, Name, Ageだけのチェックにはならないのかな setTime, Name, AgeがDBのキーになる予定なので無理そうな気が
701 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:33:33.46 ID:73yDKPmS0.net] Reference Source で実装みればええやん GetHashCode と ICompare 指定しなければ Default の Equals の両方やね
702 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:34:05.25 ID:H/0RNa6Fa.net] >>687 Microsoft Docs見てきたが明言はされてないのか……ただ https://docs.microsoft.com/en-us/dotnet/api/system.object.gethashcode ではDictionaryなどで使われるとあって https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.hashset-1 ではDictionaryのKeyアクセスと同様のハイパフォーマンス集合操作を提供、とあるから HashSetで扱う型についてもGetHashCode()の実装は必要なはず
703 名前:デフォルトの名無しさん [2019/09/20(金) 00:41:13.96 ID:WJxc7oYHa.net] >>689 質問の感じから今現在自分で実装したものがあるんでしょ?それを載せたほうが微妙な解釈の違いに対しても最適解が出してもらえそうな気がするけど
704 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:57:02.51 ID:JBznBYO/0.net] キーの重複は GetHashCode() の一致 → Equals() みたいだな GetHashCode() は重複しにくいメンバの GetHashCode() で Equals() で完全一致の判定をすれば大丈夫そう
705 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:58:18.71 ID:Z+Dr4fZe0.net] あるサイトを参考にしてみたのが private class Parameter { public DateTime setTime { get; set; } public string Name { get; set; } public int Age { get; set; } public string address { get; set; } public int sex { get; set; } } private class ParameterDistinct : IEqualityComparer<Parameter> { public bool Equals(Parameter i_lhs, Parameter i_rhs) { if (i_lhs.setTime == i_rhs.setTime && i_lhs.Name == i_rhs.Name && i_lhs.Age == i_rhs.Age) { return true; } return false; } public int GetHashCode(Parameter i_obj) { return i_obj.setTime.GetHashCode() ^ i_obj.Name.GetHashCode() ^ i_obj.Age; } }
706 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 01:02:47.93 ID:Z+Dr4fZe0.net] //データ追加 var ParameterList = new List<Parameter>(); //重複排除 ParameterDistinct qualityComparer = new ParameterDistinct(); IEnumerable<Parameter> ParameterLister = ParameterList.Distinct(qualityComparer); でやってみたんだけど重複がでたんだけど何かまずいだろうか 参考にしたところはDatetimeは使っていなかったので駄目なのかな
707 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 01:09:28.14 ID:73yDKPmS0.net] DateTime をつめるときに DateTime.Now とか使ってると ミリ秒で
708 名前:差がでてるかもしれない。 DateTime を == で比較すると 内部的には DateTime.Tick 同士で比較するから [] [ここ壊れてます]
709 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 01:21:43.10 ID:Z+Dr4fZe0.net] なるほどDateTime.Nowは使っているので調べてみます。 ありがとうございました!
710 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 01:31:14.65 ID:v9n6qqFa0.net] なんで単なる取得でメモリ使うんだよ unsafeかなんか付けて昔ながらの方法でやるのが一番速い
711 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 01:35:53.41 ID:JBznBYO/0.net] ライブラリ作ってるわけでもないのにunsafeとか論外なんだが その上unsafe付けてやることが2重ループでの完全一致検索とかじゃ どうせHashSetのパフォーマンスに大敗する
712 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 02:27:15.79 ID:pTVI5tHY0.net] NGID:JBznBYO/0
713 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 11:53:09.00 ID:URFVhEsV0.net] git使わずに、自宅のデスクトップ環境とノートPCのプロジェクトファイル類を同期させたいです。 現在Onedrive使ってますが、binやobj配下まで同期されるのが残念な感じ。 binやobjの出力先はWPFプロジェクトなら変更できましたが、ASP.NET coreプロジェクトでどう変更するのか不明 VSTSで上記を実現または他の方法あったりしますか? ちなみに現在はVS pro サブスクリプションに入ってます
714 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 12:00:15.35 ID:Ew/p9Snjp.net] Microsoftの開発ソフト使ってんならOneDrive使えるだろ?
715 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 12:02:00.53 ID:Ew/p9Snjp.net] 最後にcleanすりゃいいだけだから。 もしくは同期ドライブ直接はコンパイルしないとかな。
716 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 12:02:42.34 ID:bfuJBtmYd.net] svnを使う onedrive以外の場所で開発してonedriveフォルダに必要なファイルを同期ツールとかでローカルコピーするようにする なんでonedriveはokでgitがngなのかがわからんと提示しづらい
717 名前:デフォルトの名無しさん [2019/09/20(金) 12:48:37.25 ID:uLmjcKMSa.net] OneDriveって特定のフォルダだけ同期しない設定にできないのか 6,7年前にオンラインストレージが流行った時には タダで大容量で高機能のがいっぱいあったのになんだか退化してるよねw
718 名前:デフォルトの名無しさん [2019/09/20(金) 12:56:56.83 ID:uH7l3KIr0.net] labelの文字列の一部を太文字にしたり色を変えたりといった表現をしたいのですが 何か良い方法はないでしょうか? コントロールではなくメインプログラムのほうで操作できるようにしたいです labelと同じ見た目ならなんでもよいです textboxの様な感じではなくlabelのような感じが目標です
719 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 13:13:16.41 ID:WW0nVoDA0.net] のような感じと言われてもどういうのがNGでどういうのがOKなのかよく分からんが 手軽なのはRichTextBoxを使うことで そうでなければPaintイベントで全部自前描画ということになる
720 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 14:28:02.26 ID:9RWO75b+d.net] >>700 ちと面倒だけど、ブランチとか使えるのが便利だから、サーバ立てるまでOneDriveのフォルダ上にgitのリポジトリ作ってた事がある。 OneDrive内の任意のフォルダの中でgit init --bareするだけ。 したら、そのフォルダをremoteとして登録出来る。 あとは任意のタイミングでpush/pullするだけ。 作業フォルダをOneDrive内に置いて自動的に同期もやったけど、objとかが共有される問題よりも、同時に開いて悲惨なことになる事があったので、今はしてない。 (競合したら「もとのファイル名-端末名」ってファイルが大量にできる)
721 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 15:01:20.41 ID:riKFjdTV0.net] ああ、確かにリポジトリをonedriveに入れるのが一番スマートかも 昔dropboxにsvnリポジトリ作ってたことあるわ
722 名前:デフォルトの名無しさん [2019/09/20(金) 17:01:09.25 ID:9F0x+J+E0.net] メモリ消費は税のようなもの しょとくだけに 消費だけに
723 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 19:34:13.48 ID:dvP1e2Mn0.net] 環境はWindows formアプリです。 TableLayoutPanel と DataGridView の使い分け方がわかりません。 datasource property の有無だけ?
724 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 19:53:22.57 ID:+tHFIfxx0.net] >>705 自分で描画するのはメソッド作るのも指定するのもめんどくさいよ https://dobon.net/vb/dotnet/graphics/measurestring.html#section1 >>706 の言う通りRichTextBoxをBorderStyle.Noneにして背景色を合わせた方が楽じゃないかな どうしても文字以外を透過させたいとかならともかく >>710 HTMLのテーブルとExcelの表が同じに見えるのならそうかもね
725 名前:デフォルトの名無しさん [2019/09/21(土) 10:00:25.29 ID:DmWWMvK20.net] コンソールアプリが作れればいいやと思ってpaizaでシコシコ勉強してますが他にどんなことすればいいですか? 目標は外部のファイルを読み込んでコンバートするアプリを作ることです。
726 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 10:08:45.30 ID:ZhDsxJHf0.net] 外部のファイルを読み込んでコンバートするアプリを作ればよいのでは? そんなに難しくないよ 何をどうコンバートするかにはよるかもしれないけど
727 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 11:05:31.91 ID:wLZyePcca.net] プログラミング未経験者です すいません、ちょっと趣旨から外れるかもしれませんが質問です 電気(強電)、計測(コンビナートとかのプラント計装)の知識ってC#で活かせますか? C#の求人や書籍を検索すると、電気回路の制御ソフトとか計測器制御とかがヒットするので気になって質問させていただきました
728 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 11:05:33.11 ID:DmWWMvK20.net] SQLもどき文をパース?して出力したいです
729 名前:デフォルトの名無しさん [2019/09/21(土) 11:42:35.85 ID:uzyGV4kra.net] >>714 FAの制御系だったら測定器やPLCとの通信がメインになるからそれなりに知識あったほうがいいとは思うよ
730 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 12:00:01.02 ID:wLZyePcca.net] >>716 ありがとうございますm(_ _)m
731 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 13:30:42.97 ID:ox/L2PXG0.net] >>715 SQLの整形をしたいの? SQLって方言が結構あるしパース(字句解析+構文解析)自体の難易度も初心者がやるものじゃ無いと思う
732 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 13:39:06.70 ID:cHmpI1M9M.net] >>715 SQLのパーサーなんて出来合いのライブラリがいくらでもあるよ 自分でわざわざ使い物にならないゴミを作って時間をドブに捨てる必要はない
733 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 14:11:59.87 ID:gZFDeRYs0.net] オライリーのlex & yacc がsqlのパースの サンプルだったけど C#は対応していないかと
734 名前:デフォルトの名無しさん [2019/09/21(土) 14:57:58.99 ID:8edEcM0R0.net] すまんが、スレッドを指定して実行ってできないもんなの? 指定できればロックが必要な箇所が減っていい気がするんだけど・・・・どうなんだろう
735 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 15:03:52.53 ID:gZFDeRYs0.net] スレッド起動しないかWaitしておけば、 良いんじゃね
736 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 15:21:35.32 ID:Ef6g+Zfma.net] >>721 Producer-Consumerパターンを使って特定スレッドでだけ処理するのはどう? BlockingCollection<T>使うと楽に実装できるよ
737 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 15:59:40.26 ID:3kDOCDXv0.net] Dllimortで呼び出す関数の引数にはジェネリックは使えないのでしょうか?
738 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 17:32:33.11 ID:CRAyGleP0.net] 使えない
739 名前:デフォルトの名無しさん [2019/09/21(土) 17:41:38.79 ID:dMKiDHPTa.net] >>724 どんな使い方を想定してるの? っていうかそれ、呼び出されたアンマネージド関数側はどうしたら
740 名前:いいの?www [] [ここ壊れてます]
741 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 17:50:18.96 ID:GoVsp8loa.net] >>726 .NETのジェネリックは実行時に特殊化されるから、技術的にはそんなに無茶な話ではないよ
742 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 17:57:47.91 ID:rw4WtgZd0.net] まあどのみち今のところできないから、いんぽ関数自体はIntPtrで受け取って Marshal.PtrToStructureとかでごにょごにょするジェネリック関数でラップする感じでやるしかないね SystemParametersInfoとかでそういう欲求があること自体はわかる
743 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 17:59:11.73 ID:ox/L2PXG0.net] >>727 それじゃ質問者に回答してやってくれ
744 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 18:12:58.46 ID:GoVsp8loa.net] >>729 質問者を馬鹿にするほどには突飛な発想ではないということだよ .NETのジェネリックがどのように実装されているかを知っていれば、できてもいいと考えてもおかしくはない
745 名前:デフォルトの名無しさん [2019/09/21(土) 18:32:15.65 ID:dMKiDHPTa.net] 十分突飛だと思いますけどね。 これ、アンマネージドに限らない。 マネージドだろうが、他のアセンブリで既に定義されてる 非ジェネリックなstaticメソッドをジェネリック化したいと言ってるのと同じ。 だから、呼ばれた側は何すりゃいいんだよw
746 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 18:43:55.34 ID:GoVsp8loa.net] >>731 CのAPIだと、サイズが同一の異なる型を一緒に扱ったり、条件に応じてポインタの指す型の解釈を変えたりとか珍しくないでしょ
747 名前:デフォルトの名無しさん [2019/09/21(土) 18:44:55.69 ID:dMKiDHPTa.net] >>732 そういうのは共用体とかオーバーロードで解決できるでしょ。 ジェネリックを使うって発想は意味不明だよ
748 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 18:46:58.39 ID:3kDOCDXv0.net] >>726 具体的にはLPVOID引数で自己責任ながら参照型からref、outやintなどの値渡しまで色々な型のオーバーロードを作って実際にちゃんと機能しています なので一々オーバーロードとそのラップだけで30行ほど使ってしまってる現状が無駄に思えてどうにか方法ないかなと
749 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 19:46:47.84 ID:rw4WtgZd0.net] 一例としてはこんな感じ APIの想定される構造体がBlittableのみならマーシャリング不要なので unmanaged制約にしてアドレス渡しの方が効率は良い public static T GetSystemParametersInfo<T>(SPI uiAction, uint uiParam, SPIF fWinIni) where T : struct { T value; var buffer = Marshal.AllocCoTaskMem(Marshal.SizeOf<T>()); SystemParametersInfo(uiAction, uiParam, buffer, fWinIni); value = Marshal.PtrToStructure<T>(buffer); Marshal.FreeCoTaskMem(buffer); return value; } まあぶっちゃけお行儀的にはオーバーロードだらだら並べる方が正解ではあるんだけどねw
750 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 19:58:38.68 ID:A1p2bytl0.net] c# で必殺技みたいなメソッドがあったのですが思い出せません。どなたかご存知ないでしょうか?
751 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 20:03:15.85 ID:y68BphyG0.net] >>736 リフレクション?
752 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 22:34:09.60 ID:rnFOOH9a0.net] >>736 privateメソッドを外部から無理矢理呼び出すやつ?
753 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 22:42:59.80 ID:70YMyRx+a.net] リフレクションならDynamicInvoke()がなんともかっこいいメソッド名 >>736 のはおそらくはデストラクタあたりを想定してるんじゃないかと思うけど
754 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 23:13:56.71 ID:GoVsp8loa.net] DangerousAddRefもなかなか
755 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 01:11:49.71 ID:YKAr5fZO0.net] >>736 オーバーライド!!
756 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 01:26:33.02 ID:01VTDUEXM.net] オーバーロード!!
757 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 01:39:55.72 ID:V8FjsYeid.net] >>736 ラムダ式!
758 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 07:51:48.39 ID:Wx+hr3d10.net] >>718 >>719 さんきう とある製品のRDBMSのSQLに独自の書き方やら関数やら記法やらが混じってるからなんとかしたかったんだけどライブラリとやらを使えばいけるのかな。
759 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 08:33:40.66 ID:6LYYKR960.net] 1) githubで"sql parser"と検索 2) C#で絞り込む 3) 上から順に試す 4) 好みのが見つかったら改造を試みる 少なくとも1から作るよりは圧倒的に楽だし勉強にもなるよ
760 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 09:28:54.26 ID:p/RNYxc40.net] >>726 dllってことは既にasm化されてるんだから型なんて関係なく受け取ったもんを問答無用でバイナリとして処理するだけだろ C#はそういうのをコーディング段階で防いでるだけであって
761 名前:デフォルトの名無しさん [2019/09/22(日) 12:11:14.62 ID:PittLpUUa.net] >>746 〜だろ 馬鹿ほどぞんざいで偉そうな口調なのは法則なのかねwww
762 名前:デフォルトの名無しさん [2019/09/22(日) 12:16:38.76 ID:PittLpUUa.net] 少なくともC#のジェネリックはstringとbyte[]を透過的に扱ったり、 longをint2つと透過的に扱ったりするための仕組みじゃありませんwww だからそういうのは共用体やオーバーロードを使うんだってw
763 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 12:28:14.42 ID:GskCdwYSM.net] 端的に答えとけばいいんだよ 余計な講釈を垂れるな
764 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 22:36:43.63 ID:584djEVu0.net] BitmapをBitmapDataにしたいのですが、使用されたパラメータが有効ではありませんと言われてしまいます。 ファイルから読み込んだbitmapは変換できるのですが、このようにコード上で作ったbitmapはダメです。 何がいけないのでしょうか? Bitmap trimBmp = baseBmp.Clone(rect, baseBmp.PixelFormat); BitmapData bitData = trimBmp.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
765 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 22:44:27.94 ID:6/LwH+kT0.net] rectで切り出した後、その切り出した後のビットマップから さらにrectで一部分のロックしようとしてるけど大丈夫? 全面じゃない?
766 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 22:53:39.23 ID:584djEVu0.net] >>751 baseBMPからrectで切り抜いてますが、trimBMPにとってはrectは全面だと思うのですがダメなのですかね? でも Bitmap bmp = new Bitmap(100,100) みたいな素画像でもやっぱりLockBitsできないです
767 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 23:53:45.92 ID:yl5BH+I+0.net] >>752 >trimBMPにとってはrectは全面 ではなくbaseBmpのrectの範囲って自分で指定しているよね BitmapData bitData = trimBmp.LockBits(new Rectangle(0, 0, trimBmp.Width, trimBmp.Height), ImageLockMode.ReadOnly, trimBmp.PixelFormat); >Bitmap bmp = new Bitmap(100,100) >みたいな素画像でもやっぱりLockBitsできないです できる。そっちもちゃんと引数の指定してみて
768 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 01:34:07.15 ID:CAyWI0VB0.net] private Point CalcPopupLoction(Form launcher, Form popupForm) {} ボタン押したときに上部に表示する モーダルな popup フォーム の位置を計算するメソッドを書きました。 ボタンが左の方にあると、親フォームの左枠をはみ出さないように、popupForm は左揃えで表示。 真ん中へんにあると中央揃え、右端ならボタンとpopupForm を右揃えで表示する感じです。 1つ目の引数の良い名前が思い付きません。 主にボタンを想定してる引数です。 launcher (発射台)はどうもしっくりきません。 parent や baseForm はなんかおかしいのでやめました。
769 名前:デフォルトの名無しさん [2019/09/23(月) 03:14:26.31 ID:QdBzCxoka.net] >>754 そもそもそんなメソッドいらんでしょ。 ポップアップがどこに表示されるべきかはボタンを持つFormが知っているんだから そいつに聞く(そいつのプロパティーとして実装)のが一番
770 名前:デフォルトの名無しさん [2019/09/23(月) 03:28:32.57 ID:QdBzCxoka.net] あー、右に揃える場合もあるのね。 じゃあボタン持ってるFormに void ShowModalPopup(Form popup) みたいなメソッドを持たせればいい
771 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 03:42:05.85 ID:ltbH9/U50.net] こういう使い回しが効きそうなのはいちいちフォームに実装しないで拡張メソッドにでもした方が
772 名前:デフォルトの名無しさん [2019/09/23(月) 03:56:41.99 ID:QdBzCxoka.net] 本当はボタン持ってる方のFormに interface IDialogOwner:IWin32Window { HorizontalAlignment DialigHAlignment { get; } Rectangle Rectangle { get; } } みたいなのをかぶせて、Popupする方のFormでShowDialogをオーバーロードして void ShowDialog(IDialogOwner owner) みたいにするのがいいのかも。 酔っぱらってるんでよく分からなくなってきたw
773 名前:デフォルトの名無しさん [2019/09/23(月) 08:49:12.84 ID:l2jPGLgc0.net] C#でawaitに対応していないメソッドをawaitで非同期実行できるようにする方法を教えてください. 以下のようにしてもActionが実行されませんでした. private async static void SomeHandler() { Console.Write("Burn"); await new Task(new Action(() =>{ Console.Write("[Start]"); Thread.Sleep(2000); Console.Write("[Completed]"); })); Console.Write("End"); }
774 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 08:58:35.82 ID:ZRlL2jPD0.net] https://docs.microsoft.com/ja-jp/dotnet/api/system.threading.tasks.task?view=netframework-4.8#creating-and-executing-a-task
775 名前:デフォルトの名無しさん [2019/09/23(月) 12:17:14.67 ID:3qdqqJ07F.net] bitmapinfo とか dibsection とか bitmapinfoheader とか 勉強してみたら
776 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 14:47:11.75 ID:vpc5pW+6d.net] >>759 TaskCompletionSourceだっけ?うろ覚えですまんが、jsのPromiseオブジェクト的に使える。
777 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 15:20:09.58 ID:LbTjUCX60.net] taskをstartしてないだけだから...
778 名前:デフォルトの名無しさん [2019/09/23(月) 15:46:49.67 ID:s6/Kehza0.net] >>763 ありがとうございます!
779 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 18:09:27.70 ID:7f5aVpAAd.net] どういたしまして!
780 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 19:11:24.16 ID:24/7TZbh0.net] ID:QdBzCxoka 何の話してんのこの人 >>754 変数名が思いつかないとかはこのスレじゃなく クラス名・変数名に迷ったら書き込むスレ。Part28 [無断転載禁止]©2ch.net https://mevius.5ch.net/test/read.cgi/tech/1494147712/
781 名前:デフォルトの名無しさん [2019/09/23(月) 22:40:56.88 ID:6ZQTgZjHa.net] >>766 交通整理バカw 設計が間違ってるのに名前付けて何の意味がある
782 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 22:48:38.96 ID:CAyWI0VB0.net] >>766 レスありがとうございます。 そんなスレあるの知らなかった。
783 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 23:35:14.83 ID:CAyWI0VB0.net] >>754 private Point CalcPopupLoction(Form launcher, Form popupForm) {} 上記は下部のボタンの位置に応じて、大きさのことなるpopupForm の表示位置を計算するメソッド exportButton_Click 内で、 ShowDialog(); で表示する popupForm に戻り値を設定 https://i.imgur.com/ggjo4td.jpg
784 名前:デフォルトの名無しさん mailto:sage [2019/09/24(火) 00:01:07.45 ID:OEzHH54a0.net] >>754 ・Loctionて何 ・ボタンの置いてあるオーナーウィンドウと対象のボタンを引数に取った方がいいと思う ・計算だけなら全部Rectangleでいいんじゃないの Rectangle CalcPopupLocation(Rectangle Owner, Rectangle TargetButton, Rectangle Popup)
785 名前:デフォルトの名無しさん [2019/09/24(火) 00:03:53.21 ID:ftn8dtDua.net] >>769 だからさ、そのメソッドをどこに書くおつもり? ポップアップを左右どちらに寄せるべきかを知ってるのは特定のFormだけのはずなのに その例のllauncherの型がFormってのは変じゃないか? そもそも何で「左右どちらに寄せるべきかを知ってる」奴のメソッドとして実装しないの? それなら引数で渡す必要ないと思うんだけど。
786 名前:デフォルトの名無しさん [2019/09/24(火) 00:09:30.85 ID:ftn8dtDua.net] >>770 必要な情報は (1) 左右どちらに揃えるか?(HorizontalAlignment) (2) 揃える位置のx座標 だけだね
787 名前:デフォルトの名無しさん mailto:sage [2019/09/24(火) 11:39:03.69 ID:vbZsX/Wo0.net] 書き込みは、人を憎んでコードを憎まずのこころで行いましょう。 たとえクソコードであっても悪いのは書いた人だけです。 コードやプログラミング言語に罪は一切ありません。 コードの悪口はやめましょう。 クソコードの修正と言わず、リファクタリングといえばいいのです。 大量殺人犯や c# プログラマーの醜い心はリファクタリング不可能ですが、コードのリファクタリングはカンタンですよ。 https://www.google.co.jp/amp/s/anond.hatelabo.jp/touch/20180319181104%3fmode=amp
788 名前:デフォルトの名無しさん mailto:sage [2019/09/24(火) 12:11:17.28 ID:yrtqWHxIM.net] 性格の悪さもリファクタリングしてくれ
789 名前:デフォルトの名無しさん [2019/09/24(火) 14:58:01.43 ID:oiN+60axF.net] 性格はコードに滲み出るよ
790 名前:デフォルトの名無しさん mailto:sage [2019/09/24(火) 23:29:02.86 ID:OoYPx0Tk0.net] 性格は分からないけど姿勢みたいなものは見えると思ってる こんなコピペばかりして少しはおかしいと思わないのかな?とかこんな古い書き方して言語の文法ざっとでもいいから一通り見たのかな?とか いいコードを書こうとしてる人とそうでない人の差ってすごくよく分かる。本当に能力無くて頑張って頑張ってるのにひどいって場合もきっとあるんだろうけど
791 名前:デフォルトの名無しさん [2019/09/24(火) 23:44:57.44 ID:3clb0+hp0.net] ようわからんけど動いてるからヨシ!
792 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 07:36:43.68 ID:apbfD+2I0.net] 式木がイケてるらしいですが使いどころが解りません プロの皆さんはどこで使ってますか?
793 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 10:16:37.93 ID:HV92OfVjM.net] >>778 使わない 高度なフレームワークを作るための機能であり、ドカタグラマには全く必要ないから忘れていいよ
794 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 22:57:19.53 ID:5YRgoX3y0.net] >人を憎んでコードを憎まず 逆じゃないんかおい
795 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 23:01:24.46 ID:1MbrNFaz0.net] 自分より給料貰ってる先輩(笑)が クソコードを産み落としていた場合は人もコードも憎む というか蔑む
796 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 23:16:09.44 ID:5YRgoX3y0.net] 何をもってくそコードと言ってるのか
797 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 23:38:23.64 ID:1MbrNFaz0.net] 何を以ってクソコードかは難しいところだが具体例なら無数に挙げられるぞ switchを使わず延々とif-else if分岐 if(flag) return ture; return false; 一行違うだけのメソッド大量生成 マジックナンバーだらけ コレクションはほとんどList かと思えば特にライブラリに必要とされているわけでもないobject[] もちろんパターンマッチングなんて概念は存在しない out代わりにrefを使う boolではなくintをフラグとして使う クラス内のあらゆる場所から明示されず書き換えられるフィールド どう見ても親子関係にない継承 メソッド1個300行以上 これがさぞ大変な処理かと思えばリファクタリングしたら40行で書けた 1行に300文字以上 リソースでもFormsでもない普通のクラスが4000行
798 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 23:54:44.99 ID:NtFNmlTfp.net] >>778 ドカタだけどlinqのwhereメソッドの引数を動的に生成するときに使った ここ参考になるよ https://www.atmarkit.co.jp/fdotnet/dotnettips/986dynamiclinq/dynamiclinq.html
799 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 00:03:29.50 ID:68XB546j0.net] >>783 ぜんぜん許容範囲だな! その程度でくそ呼ばわりされたらたまらん
800 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 00:08:48.21 ID:QoSQSwcY0.net] >>783 >>switchを使わず延々とif-else if分岐 >>マジックナンバーだらけ >>クラス内のあらゆる場所から明示されず書き換えられるフィールド >>メソッド1個300行以上 >>リソースでもFormsでもない普通のクラスが4000行 今直面してるのにまさに当てはまっててもう >>コレクションはほとんどList こっちはListどころか配列しか使わないんだぜ。もう書き方が完全にC
801 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 00:09:16.61 ID:NU/jFtK40.net] メソッド以外はどれも影響は大きくないし 多少大きくてもテストできればなんとかなる ちょっとした文化の違い程度の話だ
802 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 00:10:34.86 ID:NU/jFtK40.net] 初心者が一見してくそ呼ばわりするコードはたぶんくそじゃない わかるから細かい粗が目に付く 普遍的恐怖を知るべきだ ぐちゃぐちゃな循環参照 テストできないメソッド う そ っ ぱ ち の 名 前
803 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 00:15:27.94 ID:ThQ6mTfg0.net] 突然現れるlinqの長々としたクエリ式 せてめメソッド式にしてくれ
804 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 00:18:57.61 ID:NU/jFtK40.net] しかしC#いつのまにやらパターンマッチまで入ってたんか…
805 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 00:28:52.23 ID:ZFJdpCv/0.net] sqlを全て文字列結合で作ってるうえに500行以上あったときは後輩に丸投げした
806 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 03:16:32.66 ID:wZcpOMsUd.net] >>780 バグやコードを憎んで、人を憎まず。 こんなこと言ってるプログラマーは意識高い系の偽善者のクズ。
807 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 11:30:46.50 ID:Av/VHz3vp.net] あいつに任せた俺の責任だからって最初から頭数に入れていないから憎みもしない。必要なら全面書き直しもいとわない。
808 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 20:59:42.99 ID:7bLC7yvk0.net] なんでListがいかんのか?
809 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 21:12:02.17 ID:aLxxu1ok0.net] ビットで判定とるのがいかんのか?
810 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 21:18:55.30 ID:fUfQlO4W0.net] 7f63-aXvPからクソグラマーの臭いがする
811 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 21:21:22.68 ID:fUfQlO4W0.net] >>794 時と場合を考えて最適なコレクションを検討しろ >>795 特別な理由がないなら褒められないな
812 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 21:37:16.13 ID:aLxxu1ok0.net] ZDDをboolの配列で評価するの?orz
813 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 21:40:05.70 ID:fUfQlO4W0.net] >>798 特別な理由がないならと言ってるだろうが
814 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 22:03:13.49 ID:QoSQSwcY0.net] windows formsの書き方についてなんですけど メイン画面にタブがいっぱいあってそれを切り替えて……みたいなアプリなんです んで中身見たらFormクラスが1万行オーバーで。画面一つだからって何もかも突っ込んでる感じなんです 画面というかフォーム一つで1クラスみたいなのが通常の書き方なんでしょうか
815 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 22:10:14.52 ID:Av/VHz3vp.net] 普通はブロックに分ける。
816 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 22:13:41.16 ID:fJKX2zi80.net] >>800 タブ毎にユーザーコントロールを作ればスッキリはすると思うよ
817 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 22:23:35.32 ID:lGqB6oAG0.net] >>800 「通常」はどうか知らないけど例えば MDIアプリケーションを作成する https://dobon.net/vb/dotnet/form/mdiapplication.html こういう作り方もある あと一つのフォームに普通のコードはともかくコントロール(InitializeComponentのなか)を多く詰め込みすぎると起動に時間がかかるようになる 現状で問題ないのならそこは気にすることは無いが
818 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 22:53:44.29 ID:d7SzDWCz0.net] >>800 parcial class でタブごとにファイルわける。
819 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 23:38:48.19 ID:QoSQSwcY0.net] なるほど参考になりました。 今思えば既にタブごとに部分クラスわけしてファイル別になってたような気がしないでもない……となると実質一クラス10万行か。笑えない
820 名前:デフォルトの名無しさん mailto:sage [2019/09/27(金) 06:43:42.33 ID:N2euUEC0M.net] >>800 1000行超える時点でオブジェクト指向できてない証拠
821 名前:デフォルトの名無しさん mailto:sage [2019/09/27(金) 08:33:35.75 ID:1dreLMG90.net] フォーム以外で使わない処理を わざわざ外部のファイルやクラスに作る必要なんてある?
822 名前:デフォルトの名無しさん mailto:sage [2019/09/27(金) 08:42:46.73 ID:eAUqf5T9a.net] >>807 それで可読性が高まるならやる意味はある
823 名前:デフォルトの名無しさん mailto:sage [2019/09/27(金) 09:06:13.84 ID:ikgA/i06d.net] C#は1ファイルに全部書けるので必要ないです
824 名前:デフォルトの名無しさん mailto:sage [2019/09/27(金) 10:07:45.04 ID:NnPkuVhE0.net] 再利用しないならそれでいいんじゃね?
825 名前:デフォルトの名無しさん mailto:sage [2019/09/27(金) 22:47:27.06 ID:uik+OEWH0.net] お前を含めた全人類が未来永劫そのコードに手を加えない保証があるなら好きにすればいい
826 名前:デフォルトの名無しさん mailto:sage [2019/09/27(金) 23:28:58.48 ID:MmWjZkvh0.net] ググったらタブ大量にあるような場合>>802 がクラス分割のためのメジャーな手法なのね
827 名前:デフォルトの名無しさん mailto:sage [2019/09/28(土) 08:43:54.27 ID:uN9Z5b+x0.net] 游ゴシックの英数文字をMeasureStringで取得した矩形を使ってDrawStringすると高さ不足で表示されない 矩形を使わなきゃ表示はできるから良いけどもやもやする
828 名前:デフォルトの名無しさん mailto:sage [2019/09/28(土) 10:37:47.08 ID:elJniuwU0.net] フォント周りおかしいのはMS伝統では ないだろうか? Q
829 名前:デフォルトの名無しさん [2019/09/28(土) 14:09:54.66 ID:51nJyp6ja.net] そんなざっくりした話じゃ、どうせお前自身のコードのバグだろって 反応しか返ってこないと思うw
830 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 01:52:26.51 ID:sVRG+wNI0.net] インターフェイスと抽象クラスってどう使い分ければ良いのでしょう? ググってもよくわかりません。
831 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 02:47:00.08 ID:TNnn17Gh0.net] インターフェースなら継承関係のない複数のクラスのように 振る舞うことができる
832 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 02:49:22.44 ID:HU0MDVmv0.net] 大雑把言えば プロパティとフィールド(値)を保持するのがクラス クラスのメソッド(挙動)を公開するのがインターフェイス
833 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 02:54:07.57 ID:TNnn17Gh0.net] それが抽象クラスとなにが違うのだ?と彼は聞いているわけで
834 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 03:01:23.20 ID:HU0MDVmv0.net] インターフェイスは値を持たないし 原則として挙動の実装も持たせない
835 名前:デフォルトの名無しさん [2019/09/29(日) 03:20:49.12 ID:m1n6jIU5a.net] >>816 使い分けで悩む必要はないと思うよ。 インターフェイスで目的が達成できるならあえて抽象クラスを使う理由はないのだから。 たぶん使い分けが分からないのではなく、インターフェイスの使いどころが分からないだけじゃないのか。 よくわからなくてもとにかく実際コードを書いて使ってみることが重要。 別に難しい話じゃないので使ってるうちに自ずと分かる。たぶん
836 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 03:35:49.46 ID:TNnn17Gh0.net] 多重継承的なことがしたくなったらインターフェースを使う くらいな感じでいいのかもね
837 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 07:08:46.93 ID:5VaVy3IA0.net] 私もよくわからないんですが、インターフェースって実装内容は問わないけどこの名称のメソッドは用意しなさいよってコトですかね? インターフェースでメソッドを定義しても、継承したクラスがそのメソッド名に合ってない実装をしてしまったらと考えるとインターフェースのメリットがイマイチピンときません
838 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 07:26:53.36 ID:ehZkSMIn0.net] 疎結合
839 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 08:56:25.44 ID:qdFsd7WD0.net] >>823 継承したクラスで変にオーバーライドされたら… なんて気にしたら何も書けなくなるよw それはオーバーライドした奴の責任だから気にしてもしょうがない
840 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 09:00:39.96 ID:TNnn17Gh0.net] それって抽象メソッドでも同じ事じゃないの
841 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 11:47:55.74 ID:YvnTsZym0.net] 多態で使うんだよ 用意しなさいってのは発想が逆で、インターフェースに定義されているプロパティなりメソッドなりが実装されていることが保障されていると考える 実際の実装は気にせずに呼ぶ側はインターフェースのメソッドを呼べばいい
842 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 11:59:54.10 ID:J9ITXYeqp.net] 抽象クラスは重複の排除で使う、インターフェイスはテストする時の視点で必要 クラスAがクラスBの機能を利用する時に クラスAはインターフェイスに対して実装しとけば クラスBの変更に影響を受けないし、 テストする時にクラスBの代わりを作るのがインターフェイス部分だけになる これがもしクラスAがクラスBの抽象クラスに対して実装すると、 クラスAをテストするときに抽象クラスの不要な部分まで要求されてしまう また複数人開発においてもインターフェイスを利用すれば各個人が独立に作業しやすくなる
843 名前:デフォルトの名無しさん [2019/09/29(日) 12:01:49.30 ID:3s0zt66kF.net] 呼んだはずのメソッドが(インターフェースでは要求されてるのに)実装されてなかったら コンパイルエラーじゃなくて実行時に例外吐くか unknownmethod()みたいな呼び方してくれると便利
844 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 12:05:37.87 ID:INBbqatbr.net] 不便だろ
845 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 12:07:56.33 ID:wmQ9rxKs0.net] クラスに由来しない振る舞いを定義するのがインターフェイスとも言えるね。 良く例示される「動物」クラスで考えると。 ・「動物」は動くのだから「移動」メソッドに必然性がある ・だけど「移動」するのは動物だけではない ・いま「移動」と言うメソッドに着目して操作を行いたいとする ・「移動」は動物でも自動車でもロボットでも行う ・でも自動車もロボットも動物ではないのでいからそのメソッドの由来を「動物」クラスに求めるわけにはいかない ・加えて、動物や自動車やロボットに直系する(基底)クラスもない ・故に「移動」メソッドの由来を「動物」クラスにではなく「移動」インターフェイスに求めてみる ・・・的な。
846 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 12:08:06.40 ID:INBbqatbr.net] 実行時に例外吐くのはめちゃくちゃ恥ずかしい コード書いたやつはバカですと言う証明 私はデバッグもできない馬鹿ですで表明してるようなもの
847 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 12:13:32.63 ID:INBbqatbr.net] コンパイル時にエラー吐くならそこでデバッグできる 実行時エラーなら全ての場合でエラーがないことを実際に確認しなければならない どちらが便利かわかるだろ
848 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 19:29:34.79 ID:TNnn17Gh0.net] >>831 いい例えだね 俺も使わせてもらうわ
849 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 20:03:13.25 ID:sVRG+wNI0.net] 先日、マンガ村の運営者が著作権法違反の容疑で逮捕された。 c# プログラマもマンガ村と同様の共有システムgit等を利用し、マンガやソースをインターネットを通して共有している。 github など分散型のバージョン管理システムを利用している c#プログラマはマンガ村の管理者と同じ位置にいるといえる。単なる利用者ではない。 c# プログラマはマンガ村管理者と同一人物といえるので、著作権法違反の共同正犯として刑務所にぶち込むべき。
850 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 22:53:02.75 ID:1CaVkali0.net] c#のインターフェイスにはプロパティも宣言できるよね あれは実質的にはフィールドと同じ様な感覚で使えてしまう
851 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 23:37:43.33 ID:uMWzDoEma.net] だって>>831 のような解釈は時代遅れだし特にC#(というかMS系)では一般的ではないからな 今時は「動物」という一般的実在だろうが「移動できる」という抽象的性質だろうが区別せず、 実装を限定したくない場合は原則常にインターフェイスを使うのが一般的だ 特にMSの場合は顕著で、ほぼ全クラスの全メソッドをインターフェイスに定義するというスタイルを取ることが多いし、またそれを推奨してもいる
852 名前:デフォルトの名無しさん [2019/09/29(日) 23:56:27.42 ID:8QPFQcOxa.net] ほんとかよそれwwwww
853 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 23:59:46.39 ID:k4CvVXqN0.net] >>837 初心者スレで珍妙な独自理論を一般的だなんて教えるのはやめれ
854 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 00:22:33.73 ID:LVz3OUV70.net] 今年始めた初心者だが クラスが大カテゴリ メソッドが小カテゴリ インターフェースが小カテゴリらの存在を保証する中カテゴリ このくらいの認識しかなかったわ
855 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 00:32:45.02 ID:C9eDYcBn0.net] 宣教師と見た 次にスクリプト言語を薦めて来るぞ
856 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 00:57:12.69 ID:PJtB8DfJ0.net] 831 だけど
857 名前:B 複数のクラスインスタンスの動的読み込みとか始めるとそんな感じになることもあるよ。 プラグインとかの識別に便利だし。 そうだとしても、たぶん 831 の1行目と矛盾してないでしょ。 ただ初心者相手の説明にこんなこと言いだしたら収拾がつかなくなるし、 全メソッドをってのは、まあ頑張ってな、と返すしかないけど。 [] [ここ壊れてます]
858 名前:デフォルトの名無しさん [2019/09/30(月) 01:48:44.79 ID:dOfJdIlZ0.net] すまんが、エラーメッセージにあるカッコ内の行番号らしきものってさあ 片方は間違ってる行っぽいけど、もう片方は一体何なんだぜ?
859 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 02:02:42.92 ID:zBUNKmmLa.net] >>843 その行の何文字目かって意味 例えばファイル先頭に「int a = "";」と書いたら(1,5,1,6)でエラーが出るけど これは「1行目5文字目〜1行目6文字目」の箇所でエラーになっていることを表している
860 名前:デフォルトの名無しさん [2019/09/30(月) 02:09:52.87 ID:dOfJdIlZ0.net] >>844 ありがとう!何文字目かなんて全然わかんなかったよ
861 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 08:08:24.00 ID:fD1lXHN30.net] 質問いいですか?
862 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 08:10:26.75 ID:ws0x1Tjj0.net] >>846 駄目です
863 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 08:17:51.94 ID:nNBu0V63d.net] >>847 その返しはこのスレではいかんだろ(笑)
864 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 08:41:05.60 ID:bmAzH1750.net] トイレ行ってきていいですか?
865 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 08:55:42.37 ID:BmNMZ9TsM.net] もう居るだろう
866 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 09:29:49.98 ID:fD1lXHN30.net] では質問しますね Timerコンポーネントで Timer1.Interval = 5000;とすると、プログラム起動後5秒後に初めてTimer1_Tickが 実行されますよね、これを起動時に1度実行したいのですがどうしたらいのでしょうか Form1_Loadに書けばいいような気がしますが引数がわからない
867 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 09:31:40.04 ID:Q4pocwaT0.net] 忘れたけどTimerってTimers.TimerもThreading.Timerも大体どんな種類の奴でも最初のディレイタイム指定できなかったっけ?
868 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 09:58:04.89 ID:fD1lXHN30.net] >>852 レスサンクスです Delayでぐぐってみましたが、プログラムを遅延させるほうのDelayばかりヒットして なかなか見つかりません、Timerのプロパティにそういうなのがあればいいんですが
869 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 10:05:34.65 ID:g7w6SBZq0.net] >>853 処理を関数化しておいて、コンストラクタから呼んだらいいんじゃね? 別にタイマーから呼ばなくてもいい
870 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 10:13:21.52 ID:e45pyL0lM.net] >>851 最初100で、中で則5000書き換えじゃあかんかったっけ
871 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 10:40:02.13 ID:fD1lXHN30.net] >>854 サンクスです Timer1_Tickの中の処理をゴソっと別にうつすんですか、確かにうまくいきそうですね >>855 さんくすです Timer1.Interval = 100;からTimer1.Interval = 5000;に変更ですか これもうまくいきそうですね、厳密な秒数は必要じゃないですし
872 名前:デフォルトの名無しさん [2019/09/30(月) 10:47:03.32 ID:ZcJV4ZEKa.net] >>851 どんな方法使ってもいいけど後で読んだ時に何をやってるか 分かりやすいのが一番だね public Form1() { InitializeComponent(); Form1.Load += (sender, e) => OnEvery5Seconds(); Timer1.Tick += (sender, e) => OnEvery5Seconds(); } void OnEvery5Seconds() { ..... } こうやった場合、FormのLoadイベントより前にOnEvery5Secondsが呼ばれる可能性が あることは注意する必要がある。(実際にはないと思うけど)
873 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 11:16:30.25 ID:fD1lXHN30.net] >>857 れすさんくすです なるほど、こんな書き方もできるのですね、うまくつかえばすっきりまとまりそうです
874 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 23:02:09.82 ID:S0uOX3sP0.net] >>852 流れから推測するとたぶんWindows.Forms.Timerクラスだね
875 名前:デフォルトの名無しさん [2019/10/02(水) 01:49:10.77 ID:4PgWnh+40.net] 非同期メソッドでちょっとだけ同期処理するのにはどうすれはいいのですか? async Task ABCasync(){ ABCasyncの呼び出し元には、終わるまで待っていてもらいたい処理(); //ここでtaskで呼び出し元に何かを返せたりするのかしら? ABCasyncの呼び出し元には、待っていてもらう必要のない処理(); }
876 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 02:14:39.18 ID:mDEdylW50.net] 強引に実装することは可能だがメソッド分割すべき
877 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 07:28:12.15 ID:YugGu4Uj0.net] クラスは知識 メソッドは機能 という認識は事のほか難しいんけ?
878 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 08:07:26.42 ID:Vm3TcWW10.net] >>862 そういう一般的でもない訳のわからない解釈を出されても、普通の人には理解できないかおかしな理解のまま突き進むことになるだろう
879 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 08:15:53.12 ID:gR9x9lAq0.net] クラスは学校とかのクラスって認識でいい
880 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 11:07:45.90 ID:9X+f8gXkr.net] ゲームのクラスの方がわかりやすい気がする 戦士 魔法使い 僧侶 盗賊 それぞれできることが違う
881 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 11:18:19.95 ID:VgxhRvTXp.net] あはは、まあ、学校のクラスだと対抗戦が出来るくらいに似たり寄ったりだから意味が分からないよな。
882 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 11:59:15.15 ID:8UOZigmra.net] 逆に、同一のクラスの異なるインスタンスなんてのもできないしね。
883 名前:デフォルトの名無しさん [2019/10/02(水) 12:12:09.33 ID:VOEDuxVKM.net] >>865 じゃぁ男女別は? どっちのクラスが上位なの? それとも同格で、男戦士 女戦士ってなるの? 半魚人タイプとか4足系の戦士は?
884 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 12:26:49.61 ID:9X+f8gXkr.net] 出来ることが変わらないなら基本変えなくていいよ 設計次第だけど 質問の内容の男戦士と女戦士で何が違うのかはっきりしない 力などの属性値(プロパティ)だけが違うなら分ける必要はないわな 半漁人でも4足系の戦士でも数値しかかわらないなら同じ コードが共通になるなら基本的に分けなくてもいい
885 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 19:59:53.93 ID:dZRRj/1Z0.net] 強引に何かに例えるよりコード書いてみた方がいいよ
886 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 20:20:25.32 ID:IV023jBj0.net] C#はじめて最初の日に読み飛ばすところで議論しても不毛だよな >>870 に賛成
887 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 00:57:21.26 ID:z1GHd6rla.net] 質問です 工場とかインフラの制御ソフトモドキを成果物としてWindowsアプリケーションの形式でC#で作りたいんですが、この2冊終わった後にWindowsアプリケーション開発の本買うなら何が良いですか? また、本が時間の無駄だとしたらどこのサイトを参照すれば良いですか? 上記の件よろしくお願いしますm(_ _)m 1冊目 なるほどなっとくC#入門 2冊目 C#プログラミングのイディオム/定石&パターン
888 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 01:02:05.17 ID:t45ZyD0e0.net] そりゃ一番はMicrosoftのチュートリアルでしょ https://docs.microsoft.com/ja-jp/visualstudio/ide/step-1-create-a-windows-forms-application-project?view=vs-2019
889 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 01:16:35.63 ID:z1GHd6rla.net] >>873 ありがとうございますm(_ _)m
890 名前:デフォルトの名無しさん [2019/10/03(木) 01:19:35.07 ID:pRlPv1jza.net] >>872 FormならGUIの作り方は必用なことをググって調べながら実際に作ってみるのが一番。 本は1冊以上は読むだけたぶん時間の無駄。 何かを制御するなら、それが大企業の製品で.NET用のライブラリが用意されているのでない限り たぶんアンマネージドの知識が必要になる。 これは多分本はないので自分でググって調べる あと多分非同期処理は必須。 最初.NET1.x時代の生のThreadとか使う記事に軽く目を通して、 その後は今時のTPLや非同期メソッドの記事を読めばいい。 本もあるけどたぶんweb上の記事で十分
891 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 01:26:24.07 ID:wBmuAStK0.net] 非同期メソッドの実行自体は慣れたけど win10のアップデート強制再起動時に 非同期処理中のタスクをきちんと終了させる方法がわからん 突然書き込み中のファイルがぶっ壊れそうで怖いわ
892 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 01:35:18.06 ID:z1GHd6rla.net] >>875 ありがとうございますm(_ _)m
893 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 01:39:57.58 ID:dygVDi5Yd.net] >>875 工場の制御ってRS-232CとかPLCとかGPIBとかやろ 別にアンマネージド必要ないだろ
894 名前:デフォルトの名無しさん [2019/10/03(木) 01:45:45.89 ID:pRlPv1jza.net] >>878 そうかもしれないけど拡張ボードの型式でライブラリはアンマネージドdllだけかもしれない。 USB接続でアンマネージドdllの可能性もある 何とも言えない
895 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 15:11:12.65 ID:xDvwVpv4p.net] マネージドなドライバーが無いなら使わないって選択をだな。
896 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 18:33:07.86 ID:65+5RZIm0.net] UI操作とawaitを使った非同期メソッドをまとめたasyncメソッドを別スレッドから呼び出すにはどうすればいいですか?
897 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 18:36:08.92 ID:XDm3DYNpd.net] >>881 ??何が聞きたいの?
898 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 18:42:35.24 ID:65+5RZIm0.net] >>882 すみませんでした。 例えばこういう感じのメソッドを別スレッドから呼び出す方法を教えてください。 async Task DoSome() { label1.Text="処理中..."; await DoLong(); label1.Text="完了"; }
899 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 20:27:59.44 ID:AKImZpfb0.net] 正直設計を考え直した方がいいけど メインスレッドで動作してる間に TaskScheduler.FromCurrentSynchronizationContext() でTaskScheduler確保しておいて、その"別スレッド"内で new Task(() => DoSome()).RunSynchronously(taskScheduler) する
900 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 20:48:28.97 ID:Cd3mzBuJ0.net] こうじゃダメなの? Invoke((MethodInvoker)(async () =>DoSome()));
901 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 22:23:35.99 ID:Y5r0apvPr.net] 呪文化しただけにも見える
902 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 00:31:32.74 ID:hyuh0V300.net] メソッド側を修正する必要があるけど、 こういうことでは? 別スレッドからのUI操作 https://qiita.com/mounntainn/items/8a2b4f1cf47bd02657f3
903 名前:デフォルトの名無しさん [2019/10/04(金) 01:26:24.02 ID:oVLixzTMa.net] >>883 やっぱりそういうのは非UIスレッドからも呼び出せるようにする、ではなく、 逆に普通にUIスレッド専用のメソッドとして提供して、 もし必要ならXMLコメントとかで「UIスレッド以外からの呼び出し禁止」って 明示するのが筋なような気がするw
904 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 09:42:07.42 ID:7JHQ1IR60.net] >>884 >>888 filesystemwatcherのハンドラから呼び出すと別スレッドからの呼び出し扱いになってしまいます。
905 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 09:50:12.44 ID:K3mQ1Iatp.net] まあその用途ならやっぱコントロールのInvokeの中で呼べばいいだけの話しだな DoLongの中でさらに入り組んでるとデッドロックしそうだけど
906 名前:デフォルトの名無しさん [2019/10/04(金) 14:31:48.61 ID:RxmXvWZXa.net] こんなの考えてみたが、あんまり便利でもないなw private bool TryOnUIThread<T>(EventHandler<T> eh, object sender, T e) where T:EventArgs { if (!InvokeRequired) return false; Invoke((Action)(() => eh(sender, e))); return true; } private void FileSystemWatcher_Changed(object sender, FileSystemEventArgs e) { if (TryOnUIThread(FileSystemWatcher_Changed, sender, e)) return; var t = DoSome(); }
907 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 15:21:51.76 ID:5G6hsRzp0.net] FileSystemWatcherはSynchronizingObject持ってんじゃん 設定しとけば勝手にBeginInvokeでイベントハンドラ呼んでくれるよ
908 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:15:38.99 ID:hjSAU91p0.net] 質問なんですが 設定ってどこにどうやって保存してますか? .configが今ならベストなんでしょうが、保存先が C:\Documents and Settings\UserName\Local Settings\Application Data\ になり、.iniのように、アプリをコピーで2つの設定が使えるようになりません .configはファイルの場所が遠くて変更しにくい、iniは古くてC#で扱いにくい どうしてますか?
909 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:23:45.47 ID:BObIlSOA0.net] >>893 インストールするアプリはユーザーデータフォルダのどっかに保存しないと駄目じゃん どこでも置けるやつはexeと同じ階層に設定ファイルあったほうが使いやすいじゃん ってだけしか気にしたことない
910 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:30:58.10 ID:hjSAU91p0.net] >>894 れすさんくすです 確かにそのとおりだとおもいます インストーラーではなく、ZIPとかで配布で、ちいさなアプリで、主にシングルユーザーで ってなると.iniになるんでしょうか?
911 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:31:02.26 ID:elsuYLim0.net] >>893 設定を保存するクラスを作って、xamlかjsonにシリアライズ アプリのコピーで使い分けるなら、保存場所はアプリのexeと同じフォルダー
912 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:34:16.80 ID:BObIlSOA0.net] >>896 xmlとjsonなんて編集できるツールあるの? パンピーにインデント壊さないでねなんて無理よ
913 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:43:34.43 ID:elsuYLim0.net] >>897 元の質問に設定ファイルを手動で編集したいなんて書いてないが
914 名前:デフォルトの名無しさん [2019/10/05(土) 10:47:20.84 ID:xk/GxZ7j0.net] jsonもxmlもインデント関係ないから自由にさせろ 強制したいならyaml使え
915 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 12:25:09.61 ID:8Jk2Tveb0.net] >>897 インデントわろた
916 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 12:42:35.73 ID:sqkLDT76d.net] >>897 インデントwwww
917 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 15:47:01.45 ID:BObIlSOA0.net] インデントっていうかカッコの対応? でもその一点でxmlとjsonっておよびじゃ無くない? これらを使うなら設定ツールが必要になると思う
918 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 16:03:44.47 ID:8Jk2Tveb0.net] よく出てこれたな
919 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 16:30:09.26 ID:BObIlSOA0.net] >>903 何度でも言えるよ xmlとjsonは設定ツールがないと使えないゴミ
920 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 16:44:26.62 ID:LN1PiSPK0.net] 設定画面ぐらい作れよ
921 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 17:02:10.69 ID:8Jk2Tveb0.net] >>904 よおインデント
922 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 17:07:55.98 ID:hjSAU91p0.net] >>896 れすさんくす 結構ハードなことやってるんだね、一度クラス作ったら一緒か
923 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 17:16:21.03 ID:q6cvuv6U0.net] >>906 よおインシデント
924 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 17:17:03.15 ID:JDr+zhso0.net] >>907 今どきならjson.netを使うだけ ググればわかるけど呆れるほどかんたんだよ
925 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 18:01:24.61 ID:vEDwovccd.net] インポテンツ
926 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 18:06:22.26 ID:PVJcrjgV0.net] 初心者スレやからね
927 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:34:08.92 ID:hjSAU91p0.net] >>909 さんくす、ライブラリが公開されてるのか みんなこれ使ってるの?
928 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:36:45.83 ID:1kVSHcIG0.net] 令和の時代の新規プロジェクトでiniファイルはありえんだろw
929 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:38:02.29 ID:1kVSHcIG0.net] >>912 今のところデファクトスタンダードなライブラリだね
930 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:39:42.31 ID:BObIlSOA0.net] >>913 設定ファイルをユーザにどうして欲しいの?
931 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:46:18.14 ID:1kVSHcIG0.net] >>915 サンプルのjsonを添付してここを変更しろとドキュメント付けとけば問題ない インデントが変わっても問題ないし
932 名前:デフォルトの名無しさん [2019/10/05(土) 19:51:52.36 ID:kB6gz2T/F.net] >>913 www6.uniovi.es/cscene/CS3/ values.c
933 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:56:00.01 ID:8wZmV3QG0.net] >>912 俺はDataContractJsonSerializerだな これなら標準ライブラリだからインストール不要
934 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:57:33.02 ID:BObIlSOA0.net] >>916 jsonはカッコの対応で死ぬわ っていうかxmlもjsonもiniファイル駆逐できるほど性能よくねーじゃん っていうか用途が違うものを強引に適用しようとしてない? 設定ファイルに書いたコメントも消えちゃうしね
935 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:01:44.88 ID:BObIlSOA0.net] iniファイルを時代遅れだと主張するなら xmlやjsonで吐き出して設定ツールぐらい用意しろってことかな? それなら理解できるけど xmlとjsonのテキスト編集はキツイ
936 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:08:26.65 ID:1O88xYRBd.net] ユーザーがやることはjsonの値をちょい変更するくらいなのになんでカッコ対応が問題になるんだよ ユーザーがカッコを書く必要なんてないのに
937 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:11:42.09 ID:BObIlSOA0.net] >>921 いや、だからそれどこよ? ってのを見つけるのも結構骨が折れる作業よ だから、コメントをjsonファイルに書いておくだろ? ところが次のアプリの書き込みで消えてるんだなw
938 名前:デフォルトの名無しさん [2019/10/05(土) 20:13:16.91 ID:jRdA7zB80.net] 話はよーわからんが、JSONに慣れれない人もそれがあんたの能力なんだから しょうがないんじゃない
939 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:13:46.83 ID:WowcC4IHr.net] >>922 ちゃんとしたエディターかIDE使えば? VScode使えば対応簡単だけど まさかメモ帳でやってんの?
940 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:16:05.57 ID:BObIlSOA0.net] そもそもバグったときに凶悪であることは認めるだろ? 俺らだってxmlやjsonファイルでユーザーが編集したおかしな箇所を プログラムでピンポイントで指摘できない このファイルは完璧でないと読めない そんなモノをユーザーに触らせるような運用は間違っている 客がいいって言うならいいけど
941 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:16:19.70 ID:WowcC4IHr.net] vscodeとかtsとかnode.jsとか設定はjsonだけど それで大問題にはなってない みんな使いこなしてる 何故君だけ使えない? iniファイルなんて実際死んでるよ?
942 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:16:43.74 ID:BObIlSOA0.net] >>924 それを客に言うの? 趣味ならいいけど
943 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:17:55.69 ID:WowcC4IHr.net] >>927 客がなんでjsonファイルいじって中にコメント書くのかが分からん お前がいつまでボケ続けるのか興味があるが…
944 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:18:25.25 ID:BObIlSOA0.net] >>928 え?開発者向けなん?
945 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:19:04.85 ID:r/LR5Bg3d.net] iniファイルとかWin16の時代の化石だろ
946 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:19:40.75 ID:WowcC4IHr.net] 本当にいつまでボケ続けるのか 実務に携わってないんだろうなってのはわかる 空転を本人が気づいてない
947 名前:デフォルトの名無しさん [2019/10/05(土) 20:20:51.17 ID:jRdA7zB80.net] よく出てくくる、一本道コードのVisual Basicおじさんでしょ
948 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:21:03.98 ID:BObIlSOA0.net] はっきりさせておくけど ・設定ファイルをテキスト編集でユーザに触らせたい →xmlやjsonは向かないんじゃない? ・設定ファイルをユーザに触らせない →なんでもいいんじゃない? ってことな
949 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:22:45.53 ID:BObIlSOA0.net] あともう一つ ・ユーザは開発者である →なんでもいいんじゃない って感じな
950 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:24:09.45 ID:WowcC4IHr.net] ・設定ファイルをテキスト編集でユーザに触らせたい の時点で間違ってる バックアップすら取るかどうかわからんやつらに編集させんな馬鹿
951 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:24:53.35 ID:hjSAU91p0.net] >>914 なるほど、これはもうjson.netいれるしかないですね >>918 MS謹製のJson、これはかなりとっつきやすそうさんくす
952 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:25:02.19 ID:BObIlSOA0.net] >>935 じゃあ、俺と君の意見は一致してるね
953 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:25:51.75 ID:WowcC4IHr.net] ボケた会社の〜ボケた開発者が〜ボケた客にボケたことをさせて〜 メンテナンス費用だけとるつもりですか〜 死ね糞ゴミ!
954 名前:デフォルトの名無しさん [2019/10/05(土) 20:28:30.38 ID:jRdA7zB80.net] でも、初心者なのに仕事を取ってくる勇気は大したもんだよね
955 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:38:04.30 ID:8wZmV3QG0.net] >>933 俺なら >・設定ファイルをテキスト編集でユーザに触らせたい →そんな仕様にはしない なぜならあらゆるフォーマットに対応する実装とテストなんてしたくないし そもそも設定をテキスト編集するアプリとか使いにくい >・設定ファイルをユーザに触らせない →xmlにする なぜなら実装が簡単だし、開発者(俺)ならテキスト編集できるから
956 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:51:43.64 ID:RYV31rLj0.net] レガシーコードってなんかかっこいいから、どんどん増やすべき。 伝説の武器みたいなものでしょう。
957 名前:デフォルトの名無しさん [2019/10/05(土) 21:28:22.83 ID:Apziqq2fa.net] >>936 2chだとやたらとJSON推しの人が多いけど、.NET標準のシリアライザは他にもいろいろあるよw JSONに固執する必要がないなら他を検討した方がいいと思うけど
958 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 21:40:37.42 ID:kmFdI7ZBM.net] MSがJSON推しだからね
959 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 21:42:52.25 ID:mrk3SroR0.net] JSONは連想配列に順序の保証がない デバッグで差分比較するとかができない
960 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 21:45:37.47 ID:ZEfzfdRr0.net] 連想配列に順序ってそんな重要なんか
961 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 21:50:21.48 ID:SzWcISg6d.net] >>942 .NET標準でjson以外にほかにいろいろシリアイザがあるって、XML以外何かある?
962 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 21:54:42.26 ID:hjSAU91p0.net] >>942 なるべくネット上に解説とかサンプル多いと楽かなっと 多数派に流されるお
963 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 22:05:26.81 ID:VWTAP42j0.net] json schema用意すればvscodeで補完効くし、間違いも指摘してくれるし、普通json使うわ
964 名前:デフォルトの名無しさん [2019/10/05(土) 22:54:13.79 ID:Apziqq2fa.net] DataContractJsonSerializer、使ったことなかったが調べた感じ 一通りの機能はあるし、バージョントーレラントみたいだし、別にこれでもいいねw バージョントーレラントじゃないと思ってたが、勘違いだったみたいだ。
965 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 23:34:01.62 ID:1i4Kj4Snd.net] トーレラントって何かググってみたけど中華鍋しか出てこない
966 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 01:39:32.41 ID:z+z4mE1D0.net] 確かにJsonはコメントが書けないか コメント用の文字列メンバを予め確保すれば良いのかな
967 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 01:49:26.58 ID:DPash9Py0.net] jsonのシリアライザ/デシリアライザは送受同じライブラリを使わないと、割とめんどい。 DateTimeの扱いとか。 あとライブラリによってはpublicクラスじゃないとダメとか変な制限があるものも・・ DataContractJsonSerializerは変換遅いし、いちいち[DataContract]や[DataMember]などのアノテーションがめんどい
968 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 02:10:45.36 ID:uOvq13Pn0.net] 以前REST APIを作ったときはVisual Studioがjson.netを利用するコードを自動生成してたけど、今はDataContractJsonSerializer化されてるのかな?
969 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 07:22:38.42 ID:DbrcOQgy0.net] >>953 System.Text.Json
970 名前:デフォルトの名無しさん [2019/10/06(日) 11:26:53.05 ID:yc9LKsYB0.net] >>939 software.aufheben.info/kouza/kouza_socket.html >936 cjson
971 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 12:18:55.28 ID:jjEkd1/A0.net] windows formsアプリについての相談なんですけれど、ロジックと見た目を分けろって聞くじゃないですか。なのでそうしようと思ったんです 例えばユーザーコントロールを作って、そこに何かしらの処理を行うボタンを配置したとします それで自分が考えたのは、計算をするクラスをユーザーコントロールクラスの内部クラスとして作る、ユーザーコントロールクラスのフィールドとしてその計算するクラスのインスタンスを持たせる でボタンが押されるイベントで計算をするクラスのオブジェクト.calculate()みたいにする 設計としてはこんな感じでも大丈夫ですかね?アプリを作る時に内部のコードはこう実装するみたいなことを教えてくれる本が無くてどう設計していけばいいのかわからないんです
972 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 12:29:48.44 ID:ofI4YMfJM.net] 右も左もわからないうちから俺俺アーキテクチャとか考えないで MVCやMVVMでも勉強したらいいと思うよ それから最強のアーキテクチャを考えるのでも遅くない
973 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 12:31:03.82 ID:U/2g+4lB0.net] >>956 >ロジックと見た目を分けろ windows formsアプリじゃなくWPFやった方がいいんじゃない? windows formsでそんな組み方するの逆にめんどくさい
974 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 13:48:38.81 ID:wAV7A9/e0.net] >>955 cjsonはわかりやすいのかな、ちょっとしらべてみるさんくす
975 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 13:52:51.65 ID:44yIwJmG0.net] >>956 そんなことしなくて良い 画面アプリなんて使い捨て上等 サーバーサイドと画面(クライアント)を分けろって話で 一つのアプリでそんなことやっても無意味
976 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 14:51:46.94 ID:BLgAYnXt0.net] そんな訳は(規模にもよるけど)当然無い。
977 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 15:03:12.76 ID:Ih3UpniZ0.net] 「既存メソッドの処理なんですが?ちょっと時間かかっちゃうんですよねー プログレスバーとかつかないですかね? 処理の進行状況も表示して」 こんな簡単な要望ですら そいつはケツまくって逃げ出すよ 花京院の魂を10000個ぐらい
978 名前:かけてもいい絶対だ 処理と表示は一見関係ないように見えて実は密接に関係していて 絶対に切り離せない 不可能なことを可能だと言う技術者を信用してはならない 何年もやっていてこの程度の因果関係もわからんような雑魚から 教えを請いてはならない [] [ここ壊れてます]
979 名前:デフォルトの名無しさん [2019/10/06(日) 15:33:01.89 ID:ZrFisUz2a.net] >>956 何でユーザーコントロールの話になるのかよく分からんけど、 >ユーザーコントロールクラスの内部クラスとして作る この部分は変だけど(内部クラスにする必然性がない)、その後の部分はそういう認識でいいと思うよ。 FormでもUserControlでも、基本的に書いていいのは上に乗ってる コントロールを操作するコードとイベントハンドラだけ。
980 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 18:11:15.25 ID:SEX7i46w0.net] >>962 C#にはIProgress<T>というクラスもタスクも横断的に使える便利なIFがあるから あんたが思っているようなことはない つか、偉そうなのにこれ知らないのか?
981 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 18:45:20.34 ID:pgF6GacOr.net] 自分は頭が悪すぎてIProgress<T>のどこが便利なのかわからないので 違う仕組みでやってる
982 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:21:15.12 ID:Ih3UpniZ0.net] >>964 はぁ? 既存の何も考えずに作ったメソッド(内部)のプログレスバー(表示)を分離したまま実装できないだろってのが俺のレスの主旨なんだけど 理解した上で反論しようとしてんの? Mr.ドン・キホーテ?
983 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:26:16.12 ID:SEX7i46w0.net] >>966 いや、簡単に実装できるよ 君が知らないだけで
984 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:36:10.31 ID:Ih3UpniZ0.net] >>967 あっそ、絶対無理なのにバカだなお前 テメーはさっさと技術者やめて詐欺師に看板替えろ
985 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:38:07.20 ID:fpn8B7qc0.net] 昔はイベントハンドラで実装してたな いまならObservablePropertyあたりでやるんかねRxとかどうも上手く使えてる気がしない
986 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:43:10.12 ID:fpn8B7qc0.net] >>968 いやできるだろう
987 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:53:20.87 ID:SEX7i46w0.net] >>969 確かにmvvmだとReactiveProperyを上位に伝搬するのが楽だし俺もそうやっている でもFormsの話のようだからIProgress<T>を出しました
988 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:02:50.65 ID:dGqjDCnwr.net] FormsだとしてもIProgressは不便だと思うよ
989 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:07:52.17 ID:DbrcOQgy0.net] >>972 なぜ?
990 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:18:09.12 ID:LuDxacSca.net] ID:Ih3UpniZ0って昨日iniファイル以外認めないって主張してた御仁か 15〜20年くらい前のスキルしかもちあわせてない人でしょ 技術的なキャッチアップも人間性の向上も怠って年齢だけ重ねてる人だからこういう物言いしかできないんだろう こういう人のいうことは表向きだけはいはいって聞いたふりして全部無視して問題ないよ
991 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:27:29.93 ID:dGqjDCnwr.net] ほっとくとイベントの参照が残ってるのでひとりでに消えなくなってしまう
992 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:39:48.56 ID:fpn8B7qc0.net] >>975 backgroundworkerを自前で作らずにformに貼って、イベントもデザイナから作るといいよ
993 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:40:18.92 ID:DbrcOQgy0.net] >>975 ソース
994 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 23:21:15.76 ID:zXgX+PCrr.net] ソースもくそもみんなそう
995 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 23:28:20.92 ID:zXgX+PCrr.net] c# メモリリーク イベントハンドラ
996 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 00:20:35.80 ID:ilJKwzD30.net] だからIProgressでメモリーリークするソース出せってば
997 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 07:55:39.68 ID:PXpMNqVGd.net] IProgressはインターフェースなんだからそれ自体がリークってのはおかしいでしょ。使い方が悪いだけでは…?
998 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 08:49:33.99 ID:jeQW+1qp0.net] オッペケは自殺して転生して自分の頭のバグ直してこいやボケ
999 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 18:13:25.65 ID:jsaaj6Lxr.net] インターフェイスでメモリリークするわけがないはその通り ただ単純なイベントハンドラベースだとうっかりメモリリークさせやすい コンポジションなどで保持したままで寿命が違うと特にそう c++だとメモリリークしやすいが使い方が悪い!ちゃんとつかえ! という話で済まないので進化し続けてる そのProgressというけど偽りでProgressと言う動作と何の関係もない 実際はどこからも使われないく自分で使うコードを書くだけなのでProgressである必要もない どこが便利で使ってるのかさっぱりわからない
1000 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 18:17:14.49 ID:jsaaj6Lxr.net] 見返すとめちゃくちゃだけどIpregressは別にProgressに高度に特化されてないので 使う意味は薄いのではないか? nさんがどう思うか知らないけど
1001 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 19:14:35.69 ID:ilJKwzD30.net] ここまで具体的なコードは無し
1002 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 20:06:05.04 ID:GbsEPSwo0.net] >処理と表示は一見関係ないように見えて実は密接に関係していて >絶対に切り離せない ちゃんと考えて設計してもそうなるなら、絶望的にセンスがないわ おまえに不可能なことが技術的に不可能なこととは違うよ
1003 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 20:18:37.37 ID:9eyAES450.net] 次スレ ふらっと C#,C♯,C#(初心者用) Part145 https://mevius.5ch.net/test/read.cgi/tech/1570446977/ ワッチョイ無しは ふらっと C#,C♯,C#(初心者用) Part141 https://mevius.5ch.net/test/read.cgi/tech/1544838367/
1004 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 21:20:35.04 ID:jsaaj6Lxr.net] >>985 理解できないなら無理にレスしなくてもよい
1005 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 21:45:53.70 ID:/mGKDAACa.net] >>987 乙
1006 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:15:03.54 ID:QEMDFqtE0.net] >>987 乙
1007 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:16:20.26 ID:ilJKwzD30.net] >>988 はよ
1008 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:40:26.54 ID:H1QHa3mL0.net] >>986 バカだろ 物理的に不可能だろ 既存処理にプログレスバー付けてみろよ
1009 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:42:41.65 ID:d+4AHn7d0.net] IProgressというか、その実体のProgres<T>クラスは、普通に使えばメモリーリークなんか起こらないんだよな イベントじゃなくてActionデリゲート使ってメンバ変数など使わずにローカル変数で定義して 処理を実行するたびにインスタンス作ればいいだけ ラムダ使えない人はご愁傷さまとしか言えません
1010 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:50:14.57 ID:jsaaj6Lxr.net] >>993 外から複数のハンドラ指定して実行したい場合どうすんの? Actionにどうやって渡す?
1011 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:52:08.75 ID:jsaaj6Lxr.net] それと > 普通に使えばメモリーリークなんか起こらないんだよな と > イベントじゃなくてActionデリゲート使ってメンバ変数など使わずにローカル変数で定義して > 処理を実行するたびにインスタンス作ればいいだけ は矛盾してるよね?
1012 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:53:10.67 ID:s9APxj2Ed.net] >>994 複数のアクションを実行するアクションを渡す
1013 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:59:52.41 ID:d+4AHn7d0.net] >>995 サンプルぐぐっても、イベント使ったりクラスのメンバ変数にして使い回すって方が邪道じゃないかな?
1014 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 23:21:18.60 ID:cpqLM3c60.net] >>986 多分切り離すとか分離するの意味を根本から間違えて捉えてるんだと思うので無駄だよ。関心の分離の基本がわかってない
1015 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 02:47:43.58 ID:mpcY/05P0.net] ぅ
1016 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 02:47:58.78 ID:mpcY/05P0.net] め 次スレ ふらっと C#,C♯,C#(初心者用) Part145 https://mevius.2ch.net/test/read.cgi/tech/1570446977/
1017 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 84日 11時間 11分 35秒
1018 名前:1002 [Over 1000 Thread.net] 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。 運営にご協力お願いいたします。 ─────────────────── 《プレミアム会員の主な特典》 ★ 5ちゃんねる専用ブラウザからの広告除去 ★ 5ちゃんねるの過去ログを取得 ★ 書き込み規制の緩和 ─────────────────── 会員登録には個人情報は一切必要ありません。 月300円から匿名でご購入いただけます。 ▼ プレミアム会員登録はこちら ▼ https://premium.5ch.net/ ▼ 浪人ログインはこちら ▼ https://login.5ch.net/login.php
1019 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています