[過去ログ]
ふらっと C#,C♯,C#(初心者用) Part137 (1002レス)
ふらっと C#,C♯,C#(初心者用) Part137 http://mevius.5ch.net/test/read.cgi/tech/1523004019/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
664: デフォルトの名無しさん (アウアウカー Sa11-+fqb) [] 2018/05/16(水) 12:22:33.98 ID:CHLBL3ILa async/awaitって呼び出しのネストが深くなると、大元の呼び出しで波線が立ってすごくもどかしいんですが、気にしなくていいでしょうか?それとも呼び出しのやり方を見直したほうがいいのでしょうか http://mevius.5ch.net/test/read.cgi/tech/1523004019/664
665: デフォルトの名無しさん (スップ Sd03-UqMB) [sage] 2018/05/16(水) 12:29:36.06 ID:+dukoeHCd >>664 ネスト関係なくね? http://mevius.5ch.net/test/read.cgi/tech/1523004019/665
666: デフォルトの名無しさん (ブーイモ MM19-9jLD) [] 2018/05/16(水) 13:23:25.14 ID:v6bC0eDAM >>660 カウントをCountメソッドにして引数に突っ込むラムダ式を閾値によって切り替える http://mevius.5ch.net/test/read.cgi/tech/1523004019/666
667: 662,666 (ワッチョイ 23e3-Iyo3) [sage] 2018/05/16(水) 14:23:23.94 ID:mC1mbnpn0 ごめん。Count以外の処理もあるんだね。おらの回答は無視してくれ。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/667
668: デフォルトの名無しさん (ワッチョイ a5d6-bFqk) [sage] 2018/05/16(水) 14:55:11.81 ID:c5ZU3C2K0 dataGridViewのデータソースをBindingListにしています。 この時にデータの絞込を実装する方法はあるのでしょうか。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/668
669: デフォルトの名無しさん (ワッチョイ cbc9-k37M) [sage] 2018/05/16(水) 19:51:48.39 ID:oU1pyBE30 >>664 波線が立つのは単にasyncなメソッドをawai付けずに投げっぱなし呼び出しの警告出ているだけじゃないのか >>665の言う通りネスト関係ない http://mevius.5ch.net/test/read.cgi/tech/1523004019/669
670: デフォルトの名無しさん (ワッチョイ 1a61-XGZI) [] 2018/05/17(木) 00:16:57.84 ID:OeNqnCBl0 すいません。ちょっと教えてください。 //Form1にて Form2 f = new Form2(); f.show(); this.visible=false; としてForm2を開いて、Form1を非表示にします。 //Form2にて Form1 f = new Form1(); f.visible=true; this.visible=false; としてForm1に戻った場合、先程form1で入力した内容が消えてしまいます。 form1の内容を消さずにform2からform1に戻る方法を教えてください。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/670
671: デフォルトの名無しさん (ワッチョイ 769a-NEzo) [sage] 2018/05/17(木) 00:28:09.71 ID:yjgdFlmp0 >>670 Form1 f = 「new」 Form1(); 新しいForm1を作ったんだから前のはVisible=false;のままで表示されていない 例えばこうする //Form1にて Form2 f = new Form2(this);//Form2のコンストラクタの引数にForm1の参照を渡す f.show(); this.visible=false; //Form2にて private Form1 form1; //コンストラクタ public Form2(Form1 f) { InitializeComponent(); form1=f; } //戻る処理 form1.Visible=true; this.Visible=false; http://mevius.5
ch.net/test/read.cgi/tech/1523004019/671
672: デフォルトの名無しさん (アウアウエー Sa02-vTsT) [sage] 2018/05/17(木) 00:35:36.78 ID:hTaKG8n8a >>670 目の前の問題を解決するよりまずインスタンスとは何かちゃんと理解した方がいいねw http://mevius.5ch.net/test/read.cgi/tech/1523004019/672
673: デフォルトの名無しさん (ワッチョイ 1a61-XGZI) [] 2018/05/17(木) 00:41:03.31 ID:OeNqnCBl0 ありがとうございました。 大変助かりました。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/673
674: デフォルトの名無しさん (アウアウエー Sa02-vTsT) [sage] 2018/05/17(木) 00:45:08.18 ID:hTaKG8n8a もっと簡単にこれでもできるよw var f2 = new Form2(); f2.Shown += (s, ev) => Hide(); f2.ShowDialog(this); Show(); http://mevius.5ch.net/test/read.cgi/tech/1523004019/674
675: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/17(木) 21:40:59.40 ID:Kw1Q24F60 class Program { TargetOpe targetOpe = new TargetOpe(); static void Main(string[] args) { Target [] target= targetOpe.InitializeTarget(); Console.WriteLine(target[1].x); } } Target [] target= targetOpe.InitializeTarget();の行のtargeOpeで 静的でないフィールド、メソッド、またはプロパティ 'Program.targetOpe' で、オブジェクト参照が必要です のエラーがでます。 newしてるのになんででしょう? http://mevius.5ch.net/test/rea
d.cgi/tech/1523004019/675
676: デフォルトの名無しさん (ワッチョイ 5ad2-FO+i) [sage] 2018/05/17(木) 21:46:08.12 ID:xJtGZ4kt0 >>675 静的メソッドだから http://mevius.5ch.net/test/read.cgi/tech/1523004019/676
677: デフォルトの名無しさん (ワッチョイ 5ad2-HRP5) [sage] 2018/05/17(木) 23:37:38.13 ID:03oIkg7y0 C#初心者です。 ある変数のその時々の値によって呼ぶメソッドを変えたいため初歩的にifやswitchで分岐させていたのですが、毎回分岐させるのもどうかと思い変数が変わるタイミングでデリゲートに代入して呼び出す方法を試してみました。 しかしながらパフォーマンステストを行ったところ、10程度の条件分岐であればifでメソッド呼び出し >>> デリゲートで呼び出しという結果でした。 速度を重視しつつ動的に呼び出すメソッドを変えるという
場合はデリゲートではなく毎回条件分岐を行ったほうが良いということなのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1523004019/677
678: デフォルトの名無しさん (ワッチョイ 5ad2-FO+i) [sage] 2018/05/17(木) 23:45:29.87 ID:xJtGZ4kt0 >>677 どんな用途で? http://mevius.5ch.net/test/read.cgi/tech/1523004019/678
679: デフォルトの名無しさん (ブーイモ MMde-mCTX) [sage] 2018/05/17(木) 23:47:12.44 ID:fnhXcK68M >>677 どうでもいい そんなミクロなレベルの速度が問題になることはない IO一つで跡形も無く吹き飛ぶ http://mevius.5ch.net/test/read.cgi/tech/1523004019/679
680: デフォルトの名無しさん (ワッチョイ 7681-0XvN) [sage] 2018/05/17(木) 23:49:51.73 ID:8WFSeAEB0 くだらねーパフォーマンスとくだらねー暗号化の話題が大好きだよな http://mevius.5ch.net/test/read.cgi/tech/1523004019/680
681: デフォルトの名無しさん (ワッチョイ 75eb-KqYp) [] 2018/05/18(金) 01:57:49.78 ID:3OrmdyFD0 パフォーマンスは重要だよ だけど、そんなのを語る以前に、コンピュータの仕組みについての素養を極端に欠く人が多すぎるんだよ 最近のC#入門書はよく出来ていて、大抵の本が最低限の仕組みが知識が身につくようページを割いて解説してるわけだけど・・・・分かっていない人ほど読み飛ばすんだな その結果、コンピュータの仕組みからしたらとてもありえないことを言い出す高卒様が出来上がるんだ http://mevius.5ch.net/test/read.cgi/tech/1523004019/6
81
682: デフォルトの名無しさん (ワッチョイ aa9d-zw5z) [] 2018/05/18(金) 02:22:20.29 ID:tl8rJsN/0 >その結果、コンピュータの仕組みからしたらとてもありえないことを言い出す高卒様が出来上がるんだ ありえないことなんてないだろ。頭硬すぎじゃねーの。「コンピュータはこうあるべきだ」とかに縛られてると新しい発想のソフトが生まれない。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/682
683: デフォルトの名無しさん (ワッチョイ 75eb-KqYp) [] 2018/05/18(金) 02:48:57.75 ID:3OrmdyFD0 新しいものができたってのならいいけど、言うこと為すこと高卒様じゃあ・・・・ http://mevius.5ch.net/test/read.cgi/tech/1523004019/683
684: デフォルトの名無しさん (ワッチョイ fa27-ZkFG) [sage] 2018/05/18(金) 03:11:25.94 ID:eSpLSQVO0 >>677 条件次第なのでなんとも言えない インライン展開とかCPUのキャッシュとかまで関わってくる可能性がある 気にしなければいけないほどパフォーマンスを気遣うなら、JITの結果を比較したほうがいいけど、多くはそこまでするほどではない http://mevius.5ch.net/test/read.cgi/tech/1523004019/684
685: デフォルトの名無しさん (ワッチョイ 1a23-RYnA) [sage] 2018/05/18(金) 04:39:51.09 ID:rO+HsCUo0 デリゲート使ってる時点で初心者じゃないだろw http://mevius.5ch.net/test/read.cgi/tech/1523004019/685
686: デフォルトの名無しさん (ワッチョイ 5ad2-FO+i) [sage] 2018/05/18(金) 07:16:45.92 ID:tpc+hoQ/0 >>685 いや、初心者がググった知識で背伸びしてるんだろ http://mevius.5ch.net/test/read.cgi/tech/1523004019/686
687: デフォルトの名無しさん (ワッチョイ 5ae3-+Nwo) [] 2018/05/18(金) 07:25:31.73 ID:40IvU0mB0 デリゲートとラムダ式ってちゃうの? http://mevius.5ch.net/test/read.cgi/tech/1523004019/687
688: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/18(金) 07:56:30.88 ID:mGKF1mXv0 >>676 ありがとうございます。 私アホでした。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/688
689: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/18(金) 08:01:25.12 ID:mGKF1mXv0 public class TargetOperation { Target[] target = new Target[Constants.MaximumNumberOfTarget]; public Target[] InitializeTarget() { for (int i = 0; i < Constants.MaximumNumberOfTarget; i++) { target[i] = new Target(); target[i].x = 100; } } return target; } http://mevius.5ch.net/test/read.cgi/tech/1523004019/689
690: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/18(金) 08:05:21.79 ID:mGKF1mXv0 最後の行で クラス、構造体、またはインターフェイス メンバーの宣言でトークン 'return' が無効です。 です。 またアホなことをしてそうな気がしますが、昨夜からわからず・・・。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/690
691: デフォルトの名無しさん (ワッチョイ 76c9-NEzo) [sage] 2018/05/18(金) 08:09:16.96 ID:WjwLG2oV0 >>689 } } return target; } じゃなくて } return target; } } じゃね http://mevius.5ch.net/test/read.cgi/tech/1523004019/691
692: デフォルトの名無しさん (ドコグロ MMfa-hlLb) [sage] 2018/05/18(金) 08:15:13.01 ID:SuBLVM61M >>677 サンプルコードと結果貼れよ http://mevius.5ch.net/test/read.cgi/tech/1523004019/692
693: デフォルトの名無しさん (アウアウカー Sa4d-amnG) [sage] 2018/05/18(金) 08:34:05.30 ID:Yy5wJYpea デリゲート使うくらいならストラテジパターン使うけど http://mevius.5ch.net/test/read.cgi/tech/1523004019/693
694: デフォルトの名無しさん (ラクッペ MMa5-0XvN) [sage] 2018/05/18(金) 09:57:58.57 ID:crDPuGzZM >>683 こんにちは猿の学校卒様 http://mevius.5ch.net/test/read.cgi/tech/1523004019/694
695: デフォルトの名無しさん (ワッチョイ 6e8a-/w+O) [] 2018/05/18(金) 22:42:24.82 ID:6iumh9Vb0 DataGridViewのセルのValueを取得すると、既定の型がObject型なんですが、既定の型をstringに変更する方法はありますか? 今はConvert.ToStringで変換してるんですが、記述数が多くなりすぎて参ってます。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/695
696: デフォルトの名無しさん (ブーイモ MMfa-1jw3) [sage] 2018/05/18(金) 22:48:37.44 ID:/dMxgLqhM As string http://mevius.5ch.net/test/read.cgi/tech/1523004019/696
697: デフォルトの名無しさん (アウアウカー Sa4d-5W05) [] 2018/05/19(土) 01:23:31.00 ID:5ZvwKnWja C#初心者でフォームアプリを作っているんですが 例えばあるクラスAが非同期で外部機器を延々ポーリングしていて、トリガーが発生したらクラスBの処理を行いたいといった場合 ・クラスAにクラスBのインスタンスを渡して、クラスBのメソッドを呼び出す ・クラスAに宣言したデリゲート(evemt?)にクラスBのメソッドをコールバック関数として登録し、クラスAはデリゲートを実行する どちらが一般的なコーディングなんでしょうか 後者だと複数実行したい処理が
あるとかなり冗長な気がするんですが、他にセオリーあれば教えて頂きたいです よろしくお願いします http://mevius.5ch.net/test/read.cgi/tech/1523004019/697
698: デフォルトの名無しさん (アウアウウー Sa39-RYnA) [sage] 2018/05/19(土) 01:32:36.76 ID:VIvIbG0Fa 女? http://mevius.5ch.net/test/read.cgi/tech/1523004019/698
699: デフォルトの名無しさん (アウアウウー Sa39-mCTX) [sage] 2018/05/19(土) 01:53:30.54 ID:ZECHChrda >>697 前者 デリゲートは現段階で呼び出し先が定まってなくて後でアドホックに処理を差し込みたいときに使うも 最初から呼ぶ相手が決まってるならそんなまどろっこしいことをしないで直接メソッドを呼べばよい http://mevius.5ch.net/test/read.cgi/tech/1523004019/699
700: デフォルトの名無しさん (アウアウエー Sa02-vTsT) [sage] 2018/05/19(土) 02:13:21.77 ID:FwiHY2dca >>697 騙されちゃダメwww そういうのはイベントで実装する。 何故か? 前者で作っちゃったら、その外部デバイスをポーリングしてるクラス(普通はそのデバイスの名前を付けると思うけど)、 前者で作っちゃったら他に流用できないよ http://mevius.5ch.net/test/read.cgi/tech/1523004019/700
701: デフォルトの名無しさん (ブーイモ MMa1-mCTX) [sage] 2018/05/19(土) 02:22:01.39 ID:6pEEqPiCM >>700 YAGNI もしそれが必要になったらそのとき変更すればいい そして、ほとんどの場合において結局必要にならない 職業プログラマじゃないとアプリのコードを目にする機会って少ないから、 .NET Framework自体のクラスのような不特定多数向けの設計を真似してしまいがち 一般に、アプリケーションプログラミングにおいては無駄な拡張性は極力組み込まずに必要最小限のコードでコンパクトに実装するのが正解 そのほうが結果的に変更時のコスト
も小さくなるよ http://mevius.5ch.net/test/read.cgi/tech/1523004019/701
702: デフォルトの名無しさん (アウアウエー Sa02-vTsT) [sage] 2018/05/19(土) 02:27:56.45 ID:FwiHY2dca >>701 YAGNIなんか関係ない アホか 必要もない仕様変更を想定して寛容に複雑にするのは愚かだが、 抽象度の高い(つまり汎用性も高い)方のクラスにより具体的(つまりそのプログラムでしか利用できない)クラスの 参照を持たせて依存させるなんてもっと愚かだ http://mevius.5ch.net/test/read.cgi/tech/1523004019/702
703: デフォルトの名無しさん (ブーイモ MMa1-mCTX) [sage] 2018/05/19(土) 02:32:39.74 ID:6pEEqPiCM >>702 自己矛盾してるね 依存させるのが何故愚かだと思う? 理由は、「必要もない(質問者のレスにない)仕様変更を想定しているから」に他ならないだろ http://mevius.5ch.net/test/read.cgi/tech/1523004019/703
704: デフォルトの名無しさん (アウアウエー Sa02-vTsT) [sage] 2018/05/19(土) 02:38:49.87 ID:FwiHY2dca >>703 たぶん言っても無駄な人だと思うけど、普通はViewをModelに依存させるように作るのであって ModelをViewに依存させない(Modelの参照をViewが持ってはダメ)なのと同じ。 こんな基本が分からない奴が回答する側に回ってはダメだと思うw http://mevius.5ch.net/test/read.cgi/tech/1523004019/704
705: デフォルトの名無しさん (アウアウエー Sa02-vTsT) [sage] 2018/05/19(土) 02:40:16.65 ID:FwiHY2dca >>704 いかん酔っぱらって逆を書いちまったw × (Modelの参照をViewが持ってはダメ) 〇 (Viewの参照をModelが持ってはダメ) http://mevius.5ch.net/test/read.cgi/tech/1523004019/705
706: デフォルトの名無しさん (ブーイモ MMa1-mCTX) [sage] 2018/05/19(土) 02:40:41.00 ID:6pEEqPiCM あと、仮に>>700の想定が正しいとするなら、抽象化すべきはクラスBではなくAの方でしょ 例えばAのデバイス依存部分だけをIDeviceインターフェイスとして切り出して委譲するとかね Aにイベントを持たせるんだと、別のデバイスを監視するクラスCができたら AのイベントとCのイベントをそれぞれ個別にイベントハンドリングしなきゃいけなくなる ちゃんと頭使おうね http://mevius.5ch.net/test/read.cgi/tech/1523004019/706
707: デフォルトの名無しさん (ブーイモ MMa1-mCTX) [sage] 2018/05/19(土) 02:47:51.94 ID:6pEEqPiCM >>705 揚げ足取るようで悪いけど、Viewの参照をModelが持つこと自体は何の問題もないよ というか、そうしないとMからVへの変化通知が実現できない イベントを使うにしても結局参照は持ってるよ MVPといって、IViewのようなインターフェイスを通してMからVを呼ぶパターンもあるね なるべく疎にしたいのは型同士の依存関係の話で、参照するのがダメなわけじゃない http://mevius.5ch.net/test/read.cgi/tech/1523004019/707
708: デフォルトの名無しさん (アウアウエー Sa02-vTsT) [sage] 2018/05/19(土) 02:58:10.85 ID:FwiHY2dca >>706 そういうのをYAGNIっていうんだよw 本当に何もわかってないねお宅w http://mevius.5ch.net/test/read.cgi/tech/1523004019/708
709: デフォルトの名無しさん (アウアウエー Sa02-vTsT) [sage] 2018/05/19(土) 03:03:16.45 ID:FwiHY2dca まあ質問者の>>697に言うけど、実際書いてみれば イベントで実装した方がずっとコンパクトかつ可読的に書けることが分かると思うよ。 Bが仮にAでしか利用しないクラスだとしても、普通はAはイベントを発行するだけ、 Bはそのイベントを受信して何か処理をする、ってやった方がずっと分かりやすい http://mevius.5ch.net/test/read.cgi/tech/1523004019/709
710: デフォルトの名無しさん (アウアウウー Sa39-mCTX) [sage] 2018/05/19(土) 03:21:21.26 ID:ZECHChrda メソッド一つだけならイベントでもいいけど、少なくとも>>697はメソッドが複数あるときもあると言ってるんだからイベントは不適切でしょ インターフェイスで纏めたほうが扱いやすい あえてそこにインターフェイスを噛ませる必要があるかどうかはYAGNIの問題だが、それとはまた別の観点の判断だ http://mevius.5ch.net/test/read.cgi/tech/1523004019/710
711: デフォルトの名無しさん (ワッチョイ 9dc3-NEzo) [sage] 2018/05/19(土) 06:03:27.91 ID:uNgfR/HH0 プログラムで使用するテキストデータを、excelで管理しています closecXMLを使ってアクセスしていて、これ自体は無事に実装できました テストが一通り終わって、テキストデータも確定したので、データの散逸や 改ざんを防ぐために実行ファイルに埋め込みたいのですが、リソースとして 取り扱うことってできないでしょうか 具体的には、 workbook = new XLWorkbook(filename); として開いているところがあるのですが、このfilenameにリソースファ
イルの 名前を当てることができないのか調べています string filename = "Properties.Resources.textdata.xlsx"; としてアクセスできれば簡単だと思っていたのですが、そうはいきませんでした http://mevius.5ch.net/test/read.cgi/tech/1523004019/711
712: デフォルトの名無しさん (ブーイモ MMfa-1jw3) [sage] 2018/05/19(土) 06:14:14.58 ID:gOuRua2dM ユーザー定義リソースは何でも書けるよ。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/712
713: デフォルトの名無しさん (ワッチョイ 9dc3-NEzo) [sage] 2018/05/19(土) 06:37:08.02 ID:uNgfR/HH0 具体的にどういう手順を踏めばよいのでしょう? excelデータは1,000行以上あるので、取り込みではなく手入力が必要だと ちょっと切ないです でももう修正しないもの(修正するとしても部分的)ですから、機械的に データを移行できるのであればそれでも問題ありません http://mevius.5ch.net/test/read.cgi/tech/1523004019/713
714: デフォルトの名無しさん (ブーイモ MMfa-1jw3) [sage] 2018/05/19(土) 07:47:44.04 ID:gOuRua2dM 静的に呼びだすなら5つのAPI FindResource() LoadResource() SizeofResource() LockResource() FreeResource() 動的に更新するなら更に3つ BeginUpdateResource() EndUpdateResource() UpdateResource() http://mevius.5ch.net/test/read.cgi/tech/1523004019/714
715: デフォルトの名無しさん (ワントンキン MMea-wqAz) [sage] 2018/05/19(土) 07:53:26.18 ID:z3BmCHYgM >>701 こういう奴が頻繁に現れるのを見るとYAGNIの罪は大きいなって思う http://mevius.5ch.net/test/read.cgi/tech/1523004019/715
716: デフォルトの名無しさん (ワッチョイ 5a1e-XbkE) [sage] 2018/05/19(土) 07:55:26.69 ID:7BFPa/Jf0 別に複数でもそんな多くなければイベントでも問題ないんじゃねぇかな http://mevius.5ch.net/test/read.cgi/tech/1523004019/716
717: デフォルトの名無しさん (ワッチョイ 9dc3-NEzo) [sage] 2018/05/19(土) 08:03:52.08 ID:uNgfR/HH0 >>714 ありがとうございます、それぞれのAPIについて調べてみます http://mevius.5ch.net/test/read.cgi/tech/1523004019/717
718: デフォルトの名無しさん (ワッチョイ 5a1e-XbkE) [sage] 2018/05/19(土) 08:13:32.92 ID:7BFPa/Jf0 結局バランスの問題だな。もちろん人によってバランス違うけど。 イベントによって結果再利用性あがるけど、 >イベントで実装した方がずっとコンパクトかつ可読的に書けることが分かると思うよ。 の通り、可読性の観点からしてもイベントの方が分かりやすいと思う。 これぐらいもYAGNIとかいってるようじゃ、極端すぎてバランス感覚おかしいんじゃねぇかな。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/718
719: デフォルトの名無しさん (アウアウウー Sa39-mCTX) [sage] 2018/05/19(土) 09:36:48.03 ID:ZECHChrda >>718 極端なのは君だと思うぞ まさかクラス間の依存関係に全部いちいちイベントを噛ましてるってわけではないよね その上で、この例において特にイベントを使うのが適切だと判断した合理的な根拠は? 少なくとも>>697のレスからはそれを具体的に読み取れないから、根拠のない仮定に基づいた無駄な拡張性だと言ってるんだけど http://mevius.5ch.net/test/read.cgi/tech/1523004019/719
720: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 10:02:26.30 ID:35k9lSzB0 >>691 ( ゚д゚) ありがとうございます。 その通りです。 一晩見直したのに気づかなかった・・・。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/720
721: デフォルトの名無しさん (アウアウカー Sa4d-5W05) [] 2018/05/19(土) 10:47:04.32 ID:zmVeGZ3Ia >>697です みなさん色々なご意見ありがとうございます 基本的にはイベント等で疎結合にしたクラス作りが望ましいが、ケースバイケースで状況に応じてどちらの実装でも問題はないといったところでしょうか レスして頂いた内容は非常に参考になり、まさにその両者のいい分で自分もどちらが最適解なのか悩んでいましたが、結局状況を判断出来る私が決めて実装するしかないのかなと思いました 途中インターフェースをかましてすれば良いとのレスがあり
ましたが、どういった実装をすればいいのか全くわかりませんでした。この方法でも検討してみたいので、すみませんが具体的な実装を教えて頂けないでしょうか http://mevius.5ch.net/test/read.cgi/tech/1523004019/721
722: デフォルトの名無しさん (アウアウウー Sa39-mCTX) [sage] 2018/05/19(土) 11:44:50.68 ID:mNRmauI8a >>721 interface IAlert { void Set(Severity severity); void Unset(); } たとえば、あるアラートに対してこういうインターフェイスを定義する クラスAはこれをコンストラクタで受け取り、温度センサーの値が閾値を超えたら危険度に応じた引数でSetメソッドを呼ぶ 温度が低下して閾値を割ったらUnsetを呼んで解除する このIAlertインターフェイスを、具体的な実装、たとえばパトランプを操作するクラスが実装するわけ こうしておけば、 パト
ランプじゃなくて画面でアラート状態を表示したくなったときにAに手を入れずにIAlertを実装するだけで済む もちろん、パトランプしか想定しなくていいなら直接パトランプクラスのメソッドを呼んでもいいし、Unsetが必要ないならイベントでもいいかもね ただしイベントの場合はBからAへの密結合が発生するとか、それを避けるなら追加で橋渡しのコードが都度必要になるといった懸念点もある http://mevius.5ch.net/test/read.cgi/tech/1523004019/722
723: デフォルトの名無しさん (ワッチョイ 7680-zp6D) [sage] 2018/05/19(土) 11:49:58.15 ID:F9kKaYLV0 >>695 拡張メソッドでも定義すれば http://mevius.5ch.net/test/read.cgi/tech/1523004019/723
724: デフォルトの名無しさん (アウアウカー Sa4d-5W05) [] 2018/05/19(土) 12:01:43.59 ID:hl18fyg5a >>722 早速ありがとうございます ちょっとまだピンときませんが、じっくり検討してみたいと思います http://mevius.5ch.net/test/read.cgi/tech/1523004019/724
725: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 12:20:10.98 ID:35k9lSzB0 BASICしか経験がないど素人がC#始めたんだけど、 クラス間の参照の受け渡しというのが難しいです・・・。 クラスの参照を配列に入れて、それを受け渡しするとか動くコードはなんとかかけてるんだけど、 自分で一体何をしているのか分からなくなる時がある。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/725
726: デフォルトの名無しさん (ワッチョイ 75eb-/w+O) [] 2018/05/19(土) 13:04:35.48 ID:uWI+Vuzc0 >>725 真っ先に直さなきゃならないのは、「スコープの広い配列にインスタンスを入れておけば、どこからでも全てのデータにすぐにアクセスできていいじゃん!」と思っちゃう点でさあ C#のスキルの無さから設計までメチャクチャにしてるんじゃないのかねえ http://mevius.5ch.net/test/read.cgi/tech/1523004019/726
727: デフォルトの名無しさん (ワンミングク MMea-wqAz) [sage] 2018/05/19(土) 13:15:00.73 ID:m/ZPa8pNM BASIC系って悪い習慣を覚えちゃうよね 特にVBAはひどい http://mevius.5ch.net/test/read.cgi/tech/1523004019/727
728: デフォルトの名無しさん (ワンミングク MMea-wqAz) [sage] 2018/05/19(土) 13:27:26.49 ID:m/ZPa8pNM >>722 それだと温度センサーがアラートをコントロールしているように解釈される 常識的に考えてアラートのコントロールは温度センサーの仕事ではないだろう これは名前の問題であってインターフェースよりイベントを使えと言ってるわけではない http://mevius.5ch.net/test/read.cgi/tech/1523004019/728
729: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 14:08:44.26 ID:35k9lSzB0 >>726 その通りです。 すべての変数をどこからでもアクセスしたい衝動にかられます。 Aのクラスの機能がA1とA2に分化できるから分けようと思うと、 AはCを参照してたからA1とA2両方にCのインスタンス参照を渡そうとなり、 結局機能は分けれたものの、どのクラスがどのクラスを参照してるのかがよくわからなくなってきました。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/729
730: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 14:11:58.71 ID:35k9lSzB0 値1、2個を渡すのは簡単なんですけど、 クラスのインスタンスを100個つくるためにその参照を配列にいれる 参照の入った配列をreturnで返す とかしてるとなんの値をいじってるのかわけわかめです。 これまで値と参照の区別をして思考してこなかったからなのかなぁ。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/730
731: デフォルトの名無しさん (ワンミングク MMea-wqAz) [sage] 2018/05/19(土) 14:31:05.11 ID:m/ZPa8pNM >>730 オブジェクト指向で参照を共有することは少ない 共有するとしてもイミュータブル、ステートレスにして共有によるデメリットを消した上で共有する 長時間生存するインスタンスがあちこち参照しあって状態を刻々と変化させていくような設計が最悪のパターン http://mevius.5ch.net/test/read.cgi/tech/1523004019/731
732: デフォルトの名無しさん (ワッチョイ 5a1e-XbkE) [sage] 2018/05/19(土) 15:29:17.89 ID:7BFPa/Jf0 >>719 それは君が経験値不足なだけ。>>697である程度は想像できる。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/732
733: デフォルトの名無しさん (ワッチョイ 7681-0XvN) [sage] 2018/05/19(土) 16:13:13.77 ID:t/qQFhE80 休みだってのに暇な奴ら http://mevius.5ch.net/test/read.cgi/tech/1523004019/733
734: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 16:13:20.90 ID:35k9lSzB0 >>731 なるほどCを参照しているA1、A2はCと独立したオブジェクトじゃなくなってしまいますものね。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/734
735: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 16:20:14.69 ID:35k9lSzB0 Target[] target = new Target[Constants.MaximumNumberOfTarget]; public Target[] InitializeTarget() { for (int i = 0; i < Constants.MaximumNumberOfTarget; i++) { target[i] = new Target(); target[i].x = 100; target[i].y = 100; } } こういうふうにForm1のクラスでターゲットの座標100個発生させて表示させます。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/735
736: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 16:23:28.77 ID:35k9lSzB0 ターゲットをクリック出来たら消す 一定時間クリックできなかったら点滅させる ゲーム終了後にターゲットの座標をテキストファイルに書き出す などの処理がすべてForm1上に存在することになるのですが、 それでもいいのでしょうか? これらの作業を無理にクラスに分けようとすると ターゲットクラスインスタンスの参照100個を渡さなくてはいけなくなります。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/736
737: デフォルトの名無しさん (ワッチョイ 91e3-/zvX) [sage] 2018/05/19(土) 16:41:59.05 ID:H4w+h7ji0 そんなミニゲームどう組んだっていいよ http://mevius.5ch.net/test/read.cgi/tech/1523004019/737
738: デフォルトの名無しさん (ワッチョイ 559a-NEzo) [sage] 2018/05/19(土) 16:44:12.66 ID:5aQMcYYW0 >>736 何が駄目なのかわからない 何か縛りプレイしているのならその前提から出してもらわないと たとえば特定のデザインパターンの勉強が目的だとか http://mevius.5ch.net/test/read.cgi/tech/1523004019/738
739: デフォルトの名無しさん (ワッチョイ 75eb-/w+O) [] 2018/05/19(土) 16:55:29.90 ID:uWI+Vuzc0 どうせこの人は一生治んないよ ただプログラムなんてちゃんと動けば目的達成できるんだし、まあ、これでも良いんじゃないの http://mevius.5ch.net/test/read.cgi/tech/1523004019/739
740: デフォルトの名無しさん (アウアウウー Sa39-HRP5) [sage] 2018/05/19(土) 16:56:47.37 ID:F+BrwfqWa listやdictionaryを使ってないのかな だったらまだそのアプリを作る段階まで届いてない http://mevius.5ch.net/test/read.cgi/tech/1523004019/740
741: デフォルトの名無しさん (ワッチョイ 5ad2-PioB) [sage] 2018/05/19(土) 17:10:27.25 ID:UwdEx54W0 まあ普通はエンジン部分だけ切り離すわな http://mevius.5ch.net/test/read.cgi/tech/1523004019/741
742: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 17:20:42.40 ID:35k9lSzB0 target class にx,y,timeなどメンバ変数7個程度を入れてます。 このターゲットを表示するためForm1上にクラスのインスタンスを参照する配列を置くと、 表示とゲームのコントロールすべてがForm1上におくことになって見苦しいのかと思いました。 でもテトリスとか他のミニゲームみても同じような設計になってるんですね。 無理して別クラスにするよりもtargetクラスの配列に関連した、表示、ゲーム処理はForm1上に置いてみます。 (というか実際に配
列を別クラスに切り分けたら、余計読みづらくなった・・・) http://mevius.5ch.net/test/read.cgi/tech/1523004019/742
743: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 17:22:57.84 ID:35k9lSzB0 >>738 縛りはなかったのですが、見やすいコードということを考えすぎてました。 まずは動くコード書いて、人の書いたプログラムも見ながら勉強していきます。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/743
744: デフォルトの名無しさん (ワッチョイ 7696-NEzo) [sage] 2018/05/19(土) 17:23:58.19 ID:35k9lSzB0 >>740 最初Dictionay使うつもりだったのですが、 構造体かクラスに変数をまとめたほうがよさそうだったので今の形になりました。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/744
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 258 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.020s