[過去ログ]
ふらっと C#,C♯,C#(初心者用) Part137 (1002レス)
ふらっと C#,C♯,C#(初心者用) Part137 http://mevius.5ch.net/test/read.cgi/tech/1523004019/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
173: デフォルトの名無しさん (ワッチョイ b7e3-i2qG) [sage] 2018/04/23(月) 21:45:21.31 ID:Xa6TKCtV0 >>167 おそらく配置したコントロールから欲しい情報は座標とサイズぐらいしかない それらの特定情報は別ファイルにある なのでコントロールが上から もしくは左からか順番に取得できれば 別ファイルに記述した通りの順番で情報を並べることができる Controlsで取得できる順番はよく知らないけど 作った順かあるいわなんの特徴もなくランダムか何かを保証するものではないのかな?と http://mevius.5ch.net/test/read.cgi/tech/1523004019/173
174: デフォルトの名無しさん (ワッチョイ 9a7f-fvqh) [sage] 2018/04/23(月) 22:10:47.18 ID:48XgAlPp0 >>173 Controlsが返す順番は保証されてないけど、自分でソートすれば良い。 (1)TabIndex順 (各CheckBoxにタブオーダー(TabIndex)を設定しておく) this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.TabIndex ).ToArray(); (2)Tag順 (各CheckBoxのTagに数値を設定しておく) this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Tag ).ToArray(); (3-1)Location順(左から) this.ch
eckBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Location.X ).ThenBy( x=> x.Location.Y ).ToArray(); (3-2)Location順(上から) this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Location.Y ).ThenBy( x=> x.Location.X ).ToArray(); http://mevius.5ch.net/test/read.cgi/tech/1523004019/174
175: デフォルトの名無しさん (ワッチョイ 179b-Jtac) [sage] 2018/04/23(月) 22:33:20.75 ID:fnmaDcrK0 >>155 そういう使い方なら、チェックボックスを先に作っておくんじゃなくて ファイルから読んだ内容で動的に作っていった方が手っ取り早い どうせチェックボックスは全部等間隔に並べるんじゃろ? http://mevius.5ch.net/test/read.cgi/tech/1523004019/175
176: デフォルトの名無しさん (ワッチョイ 73d7-TcdZ) [sage] 2018/04/23(月) 22:53:14.98 ID:pYJnxPYX0 WPFのサンプルでありそうな話だ http://mevius.5ch.net/test/read.cgi/tech/1523004019/176
177: デフォルトの名無しさん (アウアウアー Sa06-S9Qq) [sage] 2018/04/23(月) 23:04:57.82 ID:0nhwdYRFa >>126,>>128 >>123です SetPrinter関数を使用することで実現できました。ありがとうございました。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/177
178: デフォルトの名無しさん (ワッチョイ 1781-5Fj3) [sage] 2018/04/24(火) 00:40:53.09 ID:U7B9av/W0 >>168 そのtry意味ないんだけど。。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/178
179: デフォルトの名無しさん (ワッチョイ 239f-xI9k) [sage] 2018/04/24(火) 00:55:02.77 ID:P/LpDfjz0 >>178 ネストのイメージ書きたかっただけだろうよ http://mevius.5ch.net/test/read.cgi/tech/1523004019/179
180: デフォルトの名無しさん (ワッチョイ 3bc3-9jjH) [sage] 2018/04/24(火) 06:02:26.80 ID:PLNFE8AC0 >>173 なるほど、コントロールから情報を取得する必要があると思えたのですね 実際はそれ以前の段階でしたが >>175 それも考えたのですが、デザイナで画面を確認したいので、静的に用意して おきたいという結論になりました 動的に置くほうが難易度高そうだ、と思ったのもありますが http://mevius.5ch.net/test/read.cgi/tech/1523004019/180
181: デフォルトの名無しさん (ワッチョイ 47c9-8E8L) [] 2018/04/24(火) 11:44:27.10 ID:MJ0NRymv0 >>178-179 「意味無い」って、どういう意味? http://mevius.5ch.net/test/read.cgi/tech/1523004019/181
182: デフォルトの名無しさん (ワッチョイ 47c9-8E8L) [] 2018/04/24(火) 12:45:33.19 ID:MJ0NRymv0 うぇぇ、C#、goto文使えるし… http://mevius.5ch.net/test/read.cgi/tech/1523004019/182
183: デフォルトの名無しさん (ワッチョイ 47c9-8E8L) [] 2018/04/24(火) 13:15:16.40 ID:MJ0NRymv0 うーん、string x = "10"; に対して x.toString(); するんじゃなくて、int.Parse(x); するのか…。 xオブジェクトにintegerを吐き出させるのではなく、 integerオブジェクトにxオブジェクトを与えてintegerを吐き出させる…。 これは初めての体験だな…。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/183
184: デフォルトの名無しさん (ワッチョイ 4ec9-9jjH) [sage] 2018/04/24(火) 13:18:45.32 ID:Ajvhvjmq0 何もかも間違っててワロタw http://mevius.5ch.net/test/read.cgi/tech/1523004019/184
185: デフォルトの名無しさん (ワッチョイ 47c9-8E8L) [] 2018/04/24(火) 13:34:52.91 ID:MJ0NRymv0 なにゆえ? http://mevius.5ch.net/test/read.cgi/tech/1523004019/185
186: デフォルトの名無しさん (ワッチョイ 47c9-8E8L) [] 2018/04/24(火) 13:45:01.31 ID:MJ0NRymv0 expression-bodied関数は、なんかエロいな… http://mevius.5ch.net/test/read.cgi/tech/1523004019/186
187: デフォルトの名無しさん (ワッチョイ 47c9-8E8L) [] 2018/04/24(火) 13:46:08.52 ID:MJ0NRymv0 やってる事は違うけど、考え方的にはCのマクロに近いのかな… http://mevius.5ch.net/test/read.cgi/tech/1523004019/187
188: デフォルトの名無しさん (ワッチョイ 47c9-8E8L) [] 2018/04/24(火) 13:50:59.68 ID:MJ0NRymv0 LINQ…、エロいな…。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/188
189: デフォルトの名無しさん (ワッチョイ 47c9-8E8L) [] 2018/04/24(火) 13:53:53.94 ID:MJ0NRymv0 関数名がアッパーキャメルなのは感心せんなぁ… http://mevius.5ch.net/test/read.cgi/tech/1523004019/189
190: デフォルトの名無しさん (ワッチョイ 17d3-9jjH) [sage] 2018/04/24(火) 14:00:18.73 ID:a0zqzGgA0 ここ質問スレなんで日記は他所でな http://mevius.5ch.net/test/read.cgi/tech/1523004019/190
191: デフォルトの名無しさん (ワッチョイ 47c9-8E8L) [] 2018/04/24(火) 14:04:20.23 ID:MJ0NRymv0 なんだよ、ToString()メソッドあるじゃねぇかよ…。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/191
192: デフォルトの名無しさん (ワッチョイ 47c9-8E8L) [] 2018/04/24(火) 14:05:02.22 ID:MJ0NRymv0 >>190 ごめん。 質問です。なんだよ、ToString()メソッドあるじゃねぇかよ… http://mevius.5ch.net/test/read.cgi/tech/1523004019/192
193: デフォルトの名無しさん (ワッチョイ 9a98-9jjH) [sage] 2018/04/24(火) 14:39:12.39 ID:5gRbnpaG0 VisualStudioでC#のフォームアプリを開発するときに プロジェクトのプロパティから 出力の種類を「コンソールアプリ」にして デバッグ用のConsole.WriteLineを出力できるようにしてるんだけど リリースするときは、種類を「Windowsアプリ」にするだけで コード中のConsole.WriteLineはコメントアウトとかしなくても 大丈夫ですか? http://mevius.5ch.net/test/read.cgi/tech/1523004019/193
194: デフォルトの名無しさん (ワッチョイ 9a7f-fvqh) [sage] 2018/04/24(火) 15:12:41.47 ID:aRAC41/V0 >>193 デバッグ用に文字列を出したいなら、using System.Diagnostics;して、Debug.WriteLine()とか使うべき。 これならリリースビルドにするだけで無効になるからコメントアウトも不要。 リリースビルドでも使いたいなら、Trace.WriteLine()。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/194
195: デフォルトの名無しさん (ワッチョイ fac3-TcdZ) [sage] 2018/04/24(火) 17:00:53.50 ID:Le/zmSZT0 >>193 パイプで繋ぐとみえちゃうよ http://mevius.5ch.net/test/read.cgi/tech/1523004019/195
196: デフォルトの名無しさん (ワッチョイ 9a98-9jjH) [sage] 2018/04/24(火) 17:22:41.52 ID:5gRbnpaG0 >>194 おお、ちゃんとデバッグ用のがあるんだ 聞いてよかった ありがとう >>195 なるほど 別に見られて困るようなものでも無かったけど 無知を晒す所だった・・・ てか、独学でやってると気づかずおかしなことやってそうで怖いわ たまたま、ネット上で解説見つかるか 質問して教えてもらえるかの 綱渡りで進んでるw http://mevius.5ch.net/test/read.cgi/tech/1523004019/196
197: デフォルトの名無しさん (ブーイモ MMff-5Fj3) [sage] 2018/04/24(火) 19:15:00.82 ID:QP8ofl3+M >>192 おまえ出身言語化どこだよw レヴェルが低すぎるぞ http://mevius.5ch.net/test/read.cgi/tech/1523004019/197
198: デフォルトの名無しさん (ワッチョイ 0e8a-xhTL) [sage] 2018/04/24(火) 20:32:35.47 ID:AF96232m0 引数の文字列が、データグリッドに含まれていない場合だけ追加したいんですが、追加されません。 何が原因でしょうか? void AddToDataGrid(string[] strs) { bool exists = false; foreach(string str in strs) { for(int i = 0; i <= view.Rows.Count; i++) { if(str == view[0, i].Value.ToString()) exists = true; } if(!exists) { view.Rows.Add(str); } } } http://mevius.5ch.net
/test/read.cgi/tech/1523004019/198
199: デフォルトの名無しさん (ワッチョイ 4ec9-9jjH) [sage] 2018/04/24(火) 20:43:20.78 ID:Ajvhvjmq0 >>198 >view.Rows.Add(str); これじゃね http://mevius.5ch.net/test/read.cgi/tech/1523004019/199
200: デフォルトの名無しさん (ワッチョイ 0e8a-xhTL) [sage] 2018/04/24(火) 20:48:40.81 ID:AF96232m0 >>199 view.Rows.Add(str); だけだと正常に追加されるので、条件判定かループあたりに原因があると思っています。 フラグの位置がおかしいので以下に修正してもダメでした。 void AddToDataGrid(string[] strs) { foreach(string str in strs) { bool exists = false; for(int i = 0; i <= view.Rows.Count; i++) { if(str == view[0, i].Value.ToString()) exists = true; } if(!exists) {
view.Rows.Add(str); } } } http://mevius.5ch.net/test/read.cgi/tech/1523004019/200
201: デフォルトの名無しさん (ワッチョイ 3e9f-rSH3) [sage] 2018/04/24(火) 20:53:14.94 ID:ZpST366k0 >>200 exist=trueでブレークポイントを置いてデバッグ実行すればわかるのでは? http://mevius.5ch.net/test/read.cgi/tech/1523004019/201
202: デフォルトの名無しさん (ワッチョイ 1aa6-wlRc) [sage] 2018/04/24(火) 20:54:05.17 ID:UZOTbxqf0 そもそも exists = true; の行に到達してないというオチな気がする http://mevius.5ch.net/test/read.cgi/tech/1523004019/202
203: デフォルトの名無しさん (ワッチョイ 1aa6-wlRc) [sage] 2018/04/24(火) 20:55:27.49 ID:UZOTbxqf0 >>201とかぶってしまった >>201の方が指摘として親切だからそっちだけ読めばいいよ http://mevius.5ch.net/test/read.cgi/tech/1523004019/203
204: デフォルトの名無しさん (ワッチョイ 4e9a-9jjH) [sage] 2018/04/24(火) 21:00:23.35 ID:PfeXTBpB0 >>200 for(int i = 0; i < view.Rows.Count; i++)//Rows.Count以下じゃなく未満 { bool exists = false;//ここに移動 if(str == Convert.ToString(view[0, i].Value))//ToString()だとValueがnullのときエラー http://mevius.5ch.net/test/read.cgi/tech/1523004019/204
205: デフォルトの名無しさん (ワッチョイ 1aa6-wlRc) [sage] 2018/04/24(火) 21:12:02.89 ID:UZOTbxqf0 >>204はとってもそれっぽい で、例外が握りつぶされるような場所でAddToDataGridが使われてるせいで気づけてないとか こういう場合自分はtry{...}catch(Exception exception){throw;}で囲って throwの直前にブレークポイントを置いたりしてるけどもっとうまい方法があったら誰か教えてちょ http://mevius.5ch.net/test/read.cgi/tech/1523004019/205
206: デフォルトの名無しさん (ワッチョイ 1aa6-wlRc) [sage] 2018/04/24(火) 21:26:25.44 ID:UZOTbxqf0 >>204はそれっぽいと言ったけど よく読むと bool exists = false;//ここに移動 の部分は自分には理解できなかった >>204の勘違い? http://mevius.5ch.net/test/read.cgi/tech/1523004019/206
207: デフォルトの名無しさん (ワッチョイ 4ee8-9jjH) [] 2018/04/24(火) 21:31:25.92 ID:zd8+57fN0 全一 FXきた http://mevius.5ch.net/test/read.cgi/tech/1523004019/207
208: デフォルトの名無しさん (ワッチョイ 4e9a-9jjH) [sage] 2018/04/24(火) 21:36:01.31 ID:PfeXTBpB0 >>206 フラグよく見ていないからとりあえず if(str == Convert.ToString(view[0, i].Value)) {exists = true;break} に変更で http://mevius.5ch.net/test/read.cgi/tech/1523004019/208
209: デフォルトの名無しさん (ワッチョイ 0e8a-xhTL) [sage] 2018/04/24(火) 21:38:44.73 ID:AF96232m0 みなさん本当にありがとうございます。 結局原因はわからず仕舞いでしたが、最終的に以下の方法で打開しました。 void AddToDataGrid(string[] strs) { foreach(string str in strs) { bool exists = false; for(int i = 0; i < view.Rows.Count; i++) { if(Convert.ToString(view[0,i].Value) == str) exists = true; } if(!exists) { view.Rows.Add(name); } } } http://mevius.5ch.n
et/test/read.cgi/tech/1523004019/209
210: デフォルトの名無しさん (ワッチョイ 1aa6-wlRc) [sage] 2018/04/24(火) 21:49:35.82 ID:UZOTbxqf0 >>208 それなら納得 existsの宣言の位置を移動するとif(!exists)がスコープから外れちゃうもんね >>209 >>204の方法で解決したんなら>>204の指摘が正しかったんでしょうよ で、それに気づかなかったんならやっぱり例外が握りつぶされてたんでしょ なら今後のためにも原因は分からずで片付けず例外の名前くらい確認しといたほうが良いと思うよ http://mevius.5ch.net/test/read.cgi/tech/1523004019/210
211: デフォルトの名無しさん (ワッチョイ 9a98-9jjH) [] 2018/04/25(水) 15:12:14.28 ID:lzwohvOS0 オブジェクト指向のプログラミングでは 変数じゃなくてプロパティにアクセスさせるべき みたいな事をよく聞くんだけど ・プログラムの開始時にあるフラグ(true/false)を決めて、その後一切変更されることがない ・そのフラグには、コード中の様々な所からアクセスがある って場合は、プロパティじゃなくてpublicな変数でフラグを定義してもいいんですか? オブジェクト指向がよくわかってないせいか プロパティを経由するのがどうしても遠回りというか
一つ余分な作業を挟んでるように感じてしまう・・・ http://mevius.5ch.net/test/read.cgi/tech/1523004019/211
212: デフォルトの名無しさん (ワッチョイ 4e80-c0HJ) [sage] 2018/04/25(水) 15:30:51.28 ID:eqJJBtIM0 変数は、公開しちゃダメ その変数に、誰かが代入するかも知れないと考えると、 その変数に代入しているか、すべての場所を確かめないといけなくなるから、 プログラミングできなくなる だから、プロパティで代入禁止に設定する ただし、絶対に代入できない定数なら、公開してもよい http://mevius.5ch.net/test/read.cgi/tech/1523004019/212
213: デフォルトの名無しさん (ワッチョイ 9a98-9jjH) [] 2018/04/25(水) 16:03:36.81 ID:lzwohvOS0 >>212 後から書き換えられるのを確実に防止するために プロパティを使うってことか なるほど 1人でコード書いてるからそういう発想が無かったけど 自分も後から絶対変な値を代入しない保証ないもんな てことは、>>211の例だと ・引数付きのコンストラクタを使って、フラグの状態をインスタンス化 ・そのフラグのプロパティはgetのみ設定 ってすればいいのか? でもこれだと、そういうフラグを立てるタイミングがたくさんあったら その分だ
けクラスを準備しとくことになると思うんだけど そういうもんなの? http://mevius.5ch.net/test/read.cgi/tech/1523004019/213
214: デフォルトの名無しさん (ワッチョイ 9a98-9jjH) [] 2018/04/25(水) 16:12:23.29 ID:lzwohvOS0 あ、いや クラスを複数準備する必要はないな >>213の後半の話は無しで http://mevius.5ch.net/test/read.cgi/tech/1523004019/214
215: デフォルトの名無しさん (ワッチョイ 4bbb-txNp) [sage] 2018/04/25(水) 16:13:38.42 ID:VelEInRI0 >>211 212は読まなくていい フィールドだってreadonly修飾子で代入禁止できるが、212はそんなことも分かってないから プロパティがフィールドと違う点は大ざっぱに * 派生クラスでオーバーライドできる * プロパティから構造体を返すとコピーされる の2点 この2つの特性が必要ない(または避けたい)場合にフィールドを選択してよい 判断できないならプロパティを選択する http://mevius.5ch.net/test/read.cgi/tech/1523004019/215
216: デフォルトの名無しさん (スプッッ Sd5a-0snq) [sage] 2018/04/25(水) 16:15:28.83 ID:ym3YbVtBd IOption使っとけ http://mevius.5ch.net/test/read.cgi/tech/1523004019/216
217: デフォルトの名無しさん (ワッチョイ 1aa6-wlRc) [sage] 2018/04/25(水) 16:51:44.20 ID:I8kFq/qw0 >>211 >>215はどこかのコピペじゃないならすごい分かりやすくて尊敬 一つだけ補足すると、↓のようなこともあるからクラスがpublicの場合は 現状だけでなく将来の変更の可能性も考えてフィールドかプロパティか判断したほうが良い public フィールドをプロパティに変える (2016/05/16追記) https://qiita.com/chocolamint/items/f04665ce2db211abb2d2#public-%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%82%92%E3%83%97%E3%83%AD
%E3%83%91%E3%83%86%E3%82%A3%E3%81%AB%E5%A4%89%E3%81%88%E3%82%8B-20160516%E8%BF%BD%E8%A8%98 あと>>212も善意で答えてるのは分かるんだけど 代入できるかどうかだけを判断基準にしてる時点でズレてて 定数の説明も参考にならない気がするから割と真面目に>>212は読まないほうが良いと思う すまぬ>>212 http://mevius.5ch.net/test/read.cgi/tech/1523004019/217
218: デフォルトの名無しさん (ワッチョイ 9a98-9jjH) [sage] 2018/04/25(水) 17:43:22.74 ID:lzwohvOS0 >>215 >* プロパティから構造体を返すとコピーされる これが、全然分からんのだけど classの代わりにstructを使った場合の話であってる? 今の自分が考えたところで、どうせちゃんと理解出来ない気もするけど http://mevius.5ch.net/test/read.cgi/tech/1523004019/218
219: デフォルトの名無しさん (ワッチョイ 1a1e-fvqh) [sage] 2018/04/25(水) 17:44:09.08 ID:EO6K8yEq0 >>212は別に全く問題ないだろ。 >>211の要はカプセル化の質問に対して、>>212はカプセル化の話として一般論として答えただけじゃん。 それに対して>>215と>>217はここはC#のスレだからC#特有のreadonlyなフィールドあるよとか言語依存の情報 つけ足してるだけじゃん。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/219
220: 212 (ワッチョイ 4e80-c0HJ) [sage] 2018/04/25(水) 17:48:51.21 ID:eqJJBtIM0 オブジェクト指向では、変数は公開しない。 公開できるのは、処理(関数)だけ クラス内を開発する人と、そのクラスを使う人は、別の会社・人を想定しているから、 変数にアクセスさせたら、絶対にダメ クラス内を作っている開発者は、後で付け加えられる処理を予想できないから。 クラス内を開発した後に、別人が変数にアクセスして、動きを変えたらバグる 異なる会社間での開発を可能にする、 オブジェクト指向の大原則・カプセル化 http://mevius.5ch.net/test/read
.cgi/tech/1523004019/220
221: デフォルトの名無しさん (アウアウエー Sa52-PKj8) [sage] 2018/04/25(水) 17:50:35.02 ID:ClmIY1xNa プロパティから構造体を返すとコピーってのは意味わかんないね コピーされるのは右辺がプロパティだろうがフィルドだろうが同じだよw >>211 少なくともパブリックなメンバーに関しては、あえてフィールドを使う理由はないって 理解でいいと思うよ。例外はアンマネージドコードの呼び出しで使う型を定義する場合ぐらい。 フォールドのプロパティーに対して優位な点は (1) 軽量である (2) 簡潔に書ける このぐらいしかない。 (1)が重要なケ
ースなんかまずない。 (2)については、古いC#はともかく今のC#は儒分簡潔に書けるようになって来てる。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/221
222: デフォルトの名無しさん (アウアウエー Sa52-PKj8) [sage] 2018/04/25(水) 17:59:38.62 ID:ClmIY1xNa >>220 カプセル化っていのは、触る必要がないもの、触られては困るものを隠すこと。 この質問にはほとんど関係ない話w フィールドをプロパティにしようが、触る必要がない文脈で触られることを防げるわけじゃないw せいぜいセッターで値が適切かどうかチェックできる程度 http://mevius.5ch.net/test/read.cgi/tech/1523004019/222
223: デフォルトの名無しさん (ワッチョイ 1a1e-fvqh) [sage] 2018/04/25(水) 18:00:19.55 ID:EO6K8yEq0 まぁ、むしろ>>211のカプセル化などの話に対して、考え方説明せずに 初心者にいきなり言語仕様の詳細を羅列する>>215の方が教え方としてははぁーー??だわww http://mevius.5ch.net/test/read.cgi/tech/1523004019/223
224: デフォルトの名無しさん (ワッチョイ 1a1e-fvqh) [sage] 2018/04/25(水) 18:04:12.14 ID:EO6K8yEq0 >>222 質問者は >オブジェクト指向のプログラミングでは >変数じゃなくてプロパティにアクセスさせるべき >みたいな事をよく聞くんだけど で書いて始めてんじゃん。だから、カプセル化の説明した方がまずいいんじゃねぇか?? http://mevius.5ch.net/test/read.cgi/tech/1523004019/224
225: デフォルトの名無しさん (アウアウエー Sa52-PKj8) [sage] 2018/04/25(水) 18:09:53.61 ID:ClmIY1xNa >>224 何が「だから」なのかよくわかりませんw 質問は外部に見せるデータをプロパティとして実装すべきかフィールドでもよいのか。 カプセル化(余分なものを外に見せるな)は何も関係ないってw http://mevius.5ch.net/test/read.cgi/tech/1523004019/225
226: デフォルトの名無しさん (ワッチョイ 1a1e-fvqh) [sage] 2018/04/25(水) 18:14:14.76 ID:EO6K8yEq0 >>224 >オブジェクト指向のプログラミングでは >変数じゃなくてプロパティにアクセスさせるべき >みたいな事をよく聞くんだけど を質問者が引き合いに出した以上、質問者はここからはしっかりわかってなくて、色々ごちゃ混ぜになってると 思われる。だから、そっから説明しなきゃ、おそらく習得できない。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/226
227: デフォルトの名無しさん (ワッチョイ 9a98-9jjH) [sage] 2018/04/25(水) 18:17:11.69 ID:lzwohvOS0 自分はオブジェクト指向じゃない言語をちょっとだけやってたんだけど そういう言語では、コードの最初の方に public bool JudgFlag = true って1行書いて、それにどこからでもアクセスするみたいな感じだと思うんだ (全部独学だからこれも正解なのか知らんけど) でも、オブジェクト指向ではこれやったらダメなんだよね? ってのが知りたい 後、俺マジで初心者だから 質問文で聞きたいことが正確に表現できてる保証ないwすまん http://mevius.5ch
.net/test/read.cgi/tech/1523004019/227
228: デフォルトの名無しさん (ワッチョイ 1a1e-fvqh) [sage] 2018/04/25(水) 18:20:06.19 ID:EO6K8yEq0 >>225だった・・ http://mevius.5ch.net/test/read.cgi/tech/1523004019/228
229: デフォルトの名無しさん (アウアウエー Sa52-PKj8) [sage] 2018/04/25(水) 18:22:03.13 ID:ClmIY1xNa >>227 別にダメじゃないよw 何度も言うけど、あえてフィールドを使う理由があんまりないだけw フィールドをプロパティにしたらバグが減らせるとか可読性が上がるとか、 ほとんどの場合そんなことはない http://mevius.5ch.net/test/read.cgi/tech/1523004019/229
230: 212 (ワッチョイ 4e80-c0HJ) [sage] 2018/04/25(水) 18:26:03.04 ID:eqJJBtIM0 >変数じゃなくてプロパティにアクセスさせるべき これが異なる会社間での開発を可能にする、 オブジェクト指向の大原則・カプセル化 どの教科書にも書いてある その理由は、クラス内を開発している会社・人と、 そのクラスを使う会社・人は、異なっているから オブジェクト指向では、これらの2つの立場からの見方が大切。 君はどちらの開発者ですか? クラスを作る方・使う方? クラス内を開発しているのは、過去だから、 そこから未来の、クラスを使う人の動き
を予測できない だから、変数に直接触らせたらダメ。 そこまで予測して、クラス内を作れないから http://mevius.5ch.net/test/read.cgi/tech/1523004019/230
231: デフォルトの名無しさん (ワッチョイ 9a98-9jjH) [sage] 2018/04/25(水) 18:31:21.63 ID:lzwohvOS0 >>229 そうなのか・・・ でも、解説サイト見てると 「ダメ」的な雰囲気で書いてあるとこばっかりじゃない? 俺の理解が間違ってるのかもしれないが 俺的には現状>>229に書いてある事が正解に思えちゃうんだよな 俺が1人で小規模な開発してるだけだから いまいちオブジェクト指向のメリットを感じる場面が少ないのかな http://mevius.5ch.net/test/read.cgi/tech/1523004019/231
232: 212 (ワッチョイ 4e80-c0HJ) [sage] 2018/04/25(水) 18:31:24.51 ID:eqJJBtIM0 >>227 >public bool JudgFlag = true 変数を公開したら、ダメ。 カプセル化にならない 理由は、 >>212 に書いてある http://mevius.5ch.net/test/read.cgi/tech/1523004019/232
233: デフォルトの名無しさん (ワッチョイ 0bb3-x/V4) [sage] 2018/04/25(水) 18:36:43.91 ID:Y4/R4Zt40 >俺が1人で小規模な開発してるだけだから >いまいちオブジェクト指向のメリットを感じる場面が少ないのかな まあこれだな >>212の言ってる事は、OOPの「思想」としては間違いなく正しい 但し、単独での小規模開発という状況を前提にするなら「現実的なメリット」は無いに等しい http://mevius.5ch.net/test/read.cgi/tech/1523004019/233
234: デフォルトの名無しさん (ワッチョイ 1a1e-fvqh) [sage] 2018/04/25(水) 18:37:15.31 ID:EO6K8yEq0 >>227 うん。君のケースだとダメだね。それだと、クラスの内部状態JudgFlagが誰でも自由に書き換えられちゃう。 だから、まずは君は基本、>>220のようなC#とか言語関係ない一般的なカプセル化について勉強しよう。 で、君のケースだと自分で書いてるが >・引数付きのコンストラクタを使って、フラグの状態をインスタンス化 >・そのフラグのプロパティはgetのみ設定 ってやるか、 getプロパティ書くの嫌なら>>215が書いたよ
うにC#にはreadonlyフィールドというのがあるのでそれで代用できる。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/234
235: デフォルトの名無しさん (ワッチョイ 4703-AlOi) [] 2018/04/25(水) 18:47:02.51 ID:yqUO4I2d0 おまえら変数は公開しちゃだめだけど、プロパティやgetter/setterなら公開してもいいって思っとるやろw http://mevius.5ch.net/test/read.cgi/tech/1523004019/235
236: デフォルトの名無しさん (アウアウエー Sa52-PKj8) [sage] 2018/04/25(水) 18:48:12.94 ID:ClmIY1xNa >>231 どこの世界でも教条的(思い込みが激しいともいう)人はいるからねw 外部から取得/設定してもらう必要がある値をフィールドではなくプロパティにしたからって ヒューマンエラーを減らす効果なんかないのは事実 ただ機能がより少ないフィールドをあえて使うことないでしょってだけの話 オブジェクトの公開するデータは必ずしもいつも変数に入っているわけではなく、 何らかの処理の結果を返す場合もあって、その場合はプロパティにな
るから、 だったら全部プロパティの方が統一感があるという考え方はあるかもしれない http://mevius.5ch.net/test/read.cgi/tech/1523004019/236
237: デフォルトの名無しさん (ワンミングク MM8a-Pnzf) [sage] 2018/04/25(水) 18:49:19.77 ID:s99z6Kr1M >>233 嘘おしえるなよ http://mevius.5ch.net/test/read.cgi/tech/1523004019/237
238: デフォルトの名無しさん (ワッチョイ 9a98-9jjH) [sage] 2018/04/25(水) 19:04:09.02 ID:lzwohvOS0 まとめると 「1人で小規模なコード書いてるだけなら public bool JudgFlag = true を書き換えたらダメなことぐらい自明だから、フィールドに1行書いて終わりでいい 若干雑だけど楽」 って考え方と 「いや、自分で決めたルールを自分で忘れることもあるから ちゃんとプロパティにして触れない様にすべき 多少面倒でもコストを払うメリットがある」 って考えの対立なのかな get;set;とか全く意味がわからなかった頃の嫌なイメージのせいで プロパティ
を書く事が、「面倒・難しい」って体が拒否反応しちゃうんだよね 自動プロパティとか実装されてる今の時代に 何言ってんだって笑われそうだけど まあ、でも色々モヤモヤしてた所がスッキリしました ありがとう http://mevius.5ch.net/test/read.cgi/tech/1523004019/238
239: デフォルトの名無しさん (スップ Sdba-BoQL) [sage] 2018/04/25(水) 19:24:43.78 ID:q/XXvHKQd >>236 処理の結果を返すならメソッドにしろよ http://mevius.5ch.net/test/read.cgi/tech/1523004019/239
240: デフォルトの名無しさん (アウアウエー Sa52-PKj8) [sage] 2018/04/25(水) 20:11:47.21 ID:ClmIY1xNa >>239 具体例 https://msdn.microsoft.com/ja-jp/library/system.drawing.rectangle.right.aspx http://mevius.5ch.net/test/read.cgi/tech/1523004019/240
241: デフォルトの名無しさん (ワッチョイ 3bc3-9jjH) [sage] 2018/04/25(水) 20:30:49.45 ID:XWOG1WtT0 フォーム間のデータ受け渡しのやり方について教えてください プログラムを起動して、最初にForm1でパラメータなどを設定、次にForm2で設定した パラメータを元にデータを編集したいとします (Form1で編集済みのデータをForm2に表示する、でもいいです) このときにデータを受け渡すのは、program.cs で Application.Run(new Form1()); と 呼び出す前に 1. Form2 のインスタンスを作っておいて、それを Form1 の引数として与えてやる 2. 必要なデ
ータのインスタンスを Main() 内に用意しておいて、そのインスタンスを Form1 と Form2 のそれぞれに送る 3. どっちもダメで他の方法がある のどれが良いのでしょうか。 Form1 の中で Form2 のインスタンスを作成して、Form2 に送るという方法も考えましたが、 そうすると Form1 が不要になったときに Dispose() すると Form2 も落ちてしまいます。 http://mevius.5ch.net/test/read.cgi/tech/1523004019/241
242: デフォルトの名無しさん (ワッチョイ 5bd2-8E8L) [] 2018/04/25(水) 20:44:39.30 ID:3+niHUT+0 【マイトLーヤとPS4】 FFとDQの最新作、VR開発は危険、プレーヤーの日常感覚を損なうおそれ http://rosie.5ch.net/test/read.cgi/liveplus/1524621704/l50 http://mevius.5ch.net/test/read.cgi/tech/1523004019/242
243: デフォルトの名無しさん (スップ Sdba-BoQL) [sage] 2018/04/25(水) 21:00:51.62 ID:q/XXvHKQd >>240 それは右座標を計算して返しただけであって処理を実行するのとは違う 面倒だからここ読んで https://msdn.microsoft.com/ja-jp/library/ms229054(v=vs.100).aspx http://mevius.5ch.net/test/read.cgi/tech/1523004019/243
244: デフォルトの名無しさん (ワッチョイ e717-9jjH) [sage] 2018/04/25(水) 21:06:28.54 ID:XHhjs7vi0 >>241 Form2にプロパティを追加 Form1の該当メソッド内でForm2を宣言&インスタンス化してプロパティにパラメータをセット Show(Dialog)メソッドで呼び出し http://mevius.5ch.net/test/read.cgi/tech/1523004019/244
245: デフォルトの名無しさん (ワッチョイ 23ab-9jjH) [sage] 2018/04/25(水) 21:09:48.37 ID:ckNZ5jJB0 メッセージキューを勉強中なんですが、 MSMQとMessageQueueクラスって何が違うんでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1523004019/245
246: デフォルトの名無しさん (ワッチョイ 3bc3-9jjH) [sage] 2018/04/25(水) 21:17:11.34 ID:XWOG1WtT0 >>244 ありがとうございます この場合、もう二度と Form1 を使わないという状況であれば、Form2 の ShowDialog を 呼び出す前に this.Hide(); で隠しておいて、戻ってきたら this.Dispose(); でしょうか Hide() だけで処理を抜けるコードを書き忘れて、いつまでもプログラムが残り続けるバグを やったので、二度と戻ってこないフォームは Dispose() したいのです http://mevius.5ch.net/test/read.cgi/tech/1523004019/246
247: デフォルトの名無しさん (ワッチョイ 3bc3-9jjH) [sage] 2018/04/25(水) 21:18:56.58 ID:XWOG1WtT0 今思ったのですが、そういう使い方だとむしろ Form2 を非表示で実行しておいて、 その中で Form1 を呼び出すべき? で、Form1 を抜けたら this.Show(); とか http://mevius.5ch.net/test/read.cgi/tech/1523004019/247
248: デフォルトの名無しさん (アウアウエー Sa52-PKj8) [sage] 2018/04/25(水) 21:20:04.33 ID:ClmIY1xNa >>243 頭悪そうだけど、単にバッキングフィールドの値をそのまま返すのではないケースを 「何らかの処理の結果を返す」と言っている。 処理 = 高価な処理ではない。 重かろうが単なる足し算だろうが処理は処理だ http://mevius.5ch.net/test/read.cgi/tech/1523004019/248
249: デフォルトの名無しさん (スププ Sdba-TcdZ) [sage] 2018/04/25(水) 22:11:10.02 ID:jHFwiJ5Yd Applicationに共通のパラメータ持って、Form1とForm2で共有しちゃダメなんか http://mevius.5ch.net/test/read.cgi/tech/1523004019/249
250: デフォルトの名無しさん (アウアウウー Sa47-Mp6C) [sage] 2018/04/25(水) 22:17:09.52 ID:fPsUNFh1a 使い方次第じゃないかなとは思う 双方で同時に書き換えたりするならやめたほうがいい それ以前にタダクソダサイと思う http://mevius.5ch.net/test/read.cgi/tech/1523004019/250
251: デフォルトの名無しさん (ワッチョイ b7e3-i2qG) [sage] 2018/04/25(水) 22:41:48.50 ID:TqrgnB+10 シングルトンの出番だ http://mevius.5ch.net/test/read.cgi/tech/1523004019/251
252: デフォルトの名無しさん (ワッチョイ 1ad2-0snq) [sage] 2018/04/25(水) 23:10:10.54 ID:Kx9WW2Xx0 >>216 これやろ http://mevius.5ch.net/test/read.cgi/tech/1523004019/252
253: デフォルトの名無しさん (アウアウカー Sa43-AqIk) [] 2018/04/25(水) 23:38:15.43 ID:8cfef6Y0a もう親フォーム作れば? http://mevius.5ch.net/test/read.cgi/tech/1523004019/253
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 749 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.032s