!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part146
https://mevius.5ch.net/test/read.cgi/tech/1576069931/
■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
ふらっと C#,C♯,C#(初心者用) Part147
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (エムゾネ FF9f-HF0o)
2020/02/19(水) 17:25:41.55ID:IsrGexiaF779デフォルトの名無しさん (アウアウエー Sa93-ahgx)
2020/05/19(火) 18:34:15.56ID:h69Ba80Ra vb.net うれしくない
C# どちらでもない
C# どちらでもない
780デフォルトの名無しさん (ワッチョイ 17f1-8kLo)
2020/05/19(火) 18:49:46.90ID:DkycvRhf0 >>777
ハゲとるやないか
ハゲとるやないか
781デフォルトの名無しさん (ワッチョイ 3d01-gIXh)
2020/05/19(火) 19:07:11.03ID:klHbQUiE0 >>778
開発終了と開発続行
開発終了と開発続行
782デフォルトの名無しさん (オッペケ Sra5-4TjA)
2020/05/19(火) 19:56:29.83ID:FEuqCu/Yr そんなに大きく違いますか?
文法書見てる感じではそこまで大きな差はないなかな、と思ったりしてますが
文法書見てる感じではそこまで大きな差はないなかな、と思ったりしてますが
783デフォルトの名無しさん (ワッチョイ 6b63-S0xs)
2020/05/19(火) 20:07:13.61ID:T11FGKSX0 >>782
どっちも.NETベースだから基本は大して変わらんけどC#のほうが長続きしてるのでVB.NETにない新しい言語機能がいろいろある
どっちも.NETベースだから基本は大して変わらんけどC#のほうが長続きしてるのでVB.NETにない新しい言語機能がいろいろある
784デフォルトの名無しさん (ワッチョイ 3bad-fRvC)
2020/05/19(火) 20:40:43.92ID:a0TVrn2w0 >>782
リソースが段違い
リソースが段違い
785デフォルトの名無しさん (アウアウウー Sa31-L7FI)
2020/05/19(火) 20:48:48.06ID:Hcak2SNoa >>782
あんまり意味のある質問に思えないんだけどw
あんまり意味のある質問に思えないんだけどw
786デフォルトの名無しさん (アウアウウー Saaf-Wcp/)
2020/05/19(火) 20:49:42.54ID:jcXcpHtca >>782
言語仕様はほぼ一緒なんだけど使い手のレベルとか文化とかに雲泥の差が
控えめに言ってVBしかできないような人は20世紀から取り残されたゴミみたいな開発者が大半
BASICの歴史的な経緯からくる負の遺産、いままでに蓄積されたクソコードもてんこ盛り
VBに関わるとダメプログラマに転落するぞ
といいつつC#でも下手するとVS2005〜2008位で時間が止まったままの案件も結構あるけどな
そういう現場にどっぷり漬かるとVBでもC#でもダメエンジニアへの道まっしぐらだ
言語仕様はほぼ一緒なんだけど使い手のレベルとか文化とかに雲泥の差が
控えめに言ってVBしかできないような人は20世紀から取り残されたゴミみたいな開発者が大半
BASICの歴史的な経緯からくる負の遺産、いままでに蓄積されたクソコードもてんこ盛り
VBに関わるとダメプログラマに転落するぞ
といいつつC#でも下手するとVS2005〜2008位で時間が止まったままの案件も結構あるけどな
そういう現場にどっぷり漬かるとVBでもC#でもダメエンジニアへの道まっしぐらだ
787デフォルトの名無しさん (ブーイモ MM81-DBEz)
2020/05/19(火) 20:55:05.94ID:1ZWHWWZ0M っていうか言語で出来ることが変わるとか制限あるのがおかしい
日本語の「ツンデレ」を訳せる言語が無いとかそういうレベルと違う
日本語の「ツンデレ」を訳せる言語が無いとかそういうレベルと違う
788デフォルトの名無しさん (ワッチョイ 3fac-5iCk)
2020/05/19(火) 20:57:59.68ID:HSamcFUd0 VBはちょっと。。
言語もだけど、書く人の頭が古いからコードまで至るところで古さを感じる
多重for、ifとかそんなレベルで
VB現役でやってる人でもすごい人はいるんだろうけど、稀有やろなあ
言語もだけど、書く人の頭が古いからコードまで至るところで古さを感じる
多重for、ifとかそんなレベルで
VB現役でやってる人でもすごい人はいるんだろうけど、稀有やろなあ
789デフォルトの名無しさん (ワッチョイ 3f6a-gIXh)
2020/05/19(火) 21:07:44.17ID:+YYtOpaV0 VBの言語仕様はラムダ式とかクロージャと相性が悪い
790デフォルトの名無しさん (ワッチョイ d978-gIXh)
2020/05/19(火) 21:11:51.54ID:nVxChFQF0 C# と VB.NET、同じコード書いても IL レベルで見るとVB.NET側にゴミが付くんだよな
791デフォルトの名無しさん (ワッチョイ 55da-N57e)
2020/05/19(火) 21:23:56.06ID:u8EJQdwC0 C#とVB.NETどっちも選べる状態でVB.NET選んでる人やプロジェクトってどれくらいあるんかな?
792デフォルトの名無しさん (ワッチョイ d390-6tiU)
2020/05/19(火) 22:18:57.18ID:KmzCw2hp0 数年前に作られたVB.NETのWebシステム知ってる
オフショアで作らせたら動く粗大ゴミが誕生したと聞いた
詳しくは知らんが
オフショアで作らせたら動く粗大ゴミが誕生したと聞いた
詳しくは知らんが
793デフォルトの名無しさん (アウアウウー Sac7-RnIb)
2020/05/20(水) 06:51:50.32ID:AQWueC8Ga 自分が作ってるツールはexcel操作する場合
いつもvb.netで書いてしまうわ
いつもvb.netで書いてしまうわ
794デフォルトの名無しさん (ワッチョイ 8b01-xuiy)
2020/05/20(水) 07:03:39.27ID:lHd0Mfby0 VBはC#より稀に先進的な記述方法がある
行末に;要らないとか
つかC#もそうして欲しい
簡単だろ
行末に;要らないとか
つかC#もそうして欲しい
簡単だろ
795デフォルトの名無しさん (アウアウウー Sac7-tPY3)
2020/05/20(水) 07:05:09.78ID:QEwx4hM4a C#で書いてると、たまにVB使うとエンターキーの違いでイラっとくるわ
796デフォルトの名無しさん (ワッチョイ 8b01-xuiy)
2020/05/20(水) 07:11:31.80ID:lHd0Mfby0 VBに限っては改修業務が良い
新規でVBとか考えたくない
新規でVBとか考えたくない
797デフォルトの名無しさん (ワッチョイ 5bf1-D4L3)
2020/05/20(水) 10:16:35.82ID:qjNDk5Cx0 エンターキーの違いとは?
798デフォルトの名無しさん (ワッチョイ c74e-no6W)
2020/05/20(水) 12:59:08.46ID:nNq7q5wW0 public Class MyCustomForm : Form
という自作の拡張Formクラスを作り、コンストラクタで色やいくつかのコントロールを配置したものをメインのForm1で継承させ、コンパイルも上手くいき実際の動作も希望通りではあるのですが、
上記のMyCustomFormのコンストラクタ内で追加したコントロールがデザイナで編集することができません。
まるで背景画像かのように選択すら出来ないものや、選択こそ出来てもAutoSizeやLocationなどの項目が灰色掛かって編集不可能になっていたりします。
InitializeComponent()以外で追加したコントロールをデザイナ上で操作することは不可能なのでしょうか?
という自作の拡張Formクラスを作り、コンストラクタで色やいくつかのコントロールを配置したものをメインのForm1で継承させ、コンパイルも上手くいき実際の動作も希望通りではあるのですが、
上記のMyCustomFormのコンストラクタ内で追加したコントロールがデザイナで編集することができません。
まるで背景画像かのように選択すら出来ないものや、選択こそ出来てもAutoSizeやLocationなどの項目が灰色掛かって編集不可能になっていたりします。
InitializeComponent()以外で追加したコントロールをデザイナ上で操作することは不可能なのでしょうか?
799デフォルトの名無しさん (ワッチョイ 2702-crVl)
2020/05/20(水) 13:29:58.53ID:ABO4MomS0 VBで作ったシステムをVB.NETに移植しようとしたが
あまりも超絶スパゲッティだったのでほぐしたら
最終的にコード量が1/4になった事がある
あまりも超絶スパゲッティだったのでほぐしたら
最終的にコード量が1/4になった事がある
800デフォルトの名無しさん (ワッチョイ 3761-crVl)
2020/05/20(水) 13:51:44.57ID:AVjmh1IR0 VB6で長年熟成された秘伝のソースをぽっと出のVB.netごときで再現できるわけがない
801デフォルトの名無しさん (オッペケ Srbb-jY78)
2020/05/20(水) 14:39:55.33ID:JM16LRl0r https://pc.watch.impress.co.jp/docs/news/1253193.html
Microsoft、Win32とUWPの2つのAPIを再統合する「Project Reunion」
Microsoft、Win32とUWPの2つのAPIを再統合する「Project Reunion」
802デフォルトの名無しさん (アウアウエー Sa52-NLVI)
2020/05/20(水) 14:41:38.06ID:mXqWoGfUa VBのツールいまだに動くからリプレイスする意味ない
放置が安全
放置が安全
803デフォルトの名無しさん (ワッチョイ 8b01-oW4g)
2020/05/20(水) 16:24:15.65ID:wnqJe1lz0 プロジェクト・リュニオン!
ゴー!リュニオン!
ゴー!リュニオン!
804デフォルトの名無しさん (ワッチョイ 6301-UYz0)
2020/05/20(水) 16:27:54.60ID:kLEW4Vt90 >>801
眩暈がして来た
眩暈がして来た
805デフォルトの名無しさん (アウアウウー Sac7-lIs9)
2020/05/20(水) 18:05:51.93ID:e2MEnn77a 要するに5年ぐらい前に言ってたはずの「Win32を全廃してUWPで一本化する」計画は
諦めたってこと?
まああの話も一瞬出ただけでその後まったく聞かなくなってたけど
>>798
アクセスレベルがprivateになってるとかではなくて?
っていうか、もしコントロールをユーザーコードで追加している場合だけ起こる(デザイナで追加した場合は起こらない)
問題だと分かっているなら変なこだわりを捨てればよいだけなのでは?
まあバグでプロパティがいじれないコントロールも一部あるらしい
https://teratail.com/questions/236012
諦めたってこと?
まああの話も一瞬出ただけでその後まったく聞かなくなってたけど
>>798
アクセスレベルがprivateになってるとかではなくて?
っていうか、もしコントロールをユーザーコードで追加している場合だけ起こる(デザイナで追加した場合は起こらない)
問題だと分かっているなら変なこだわりを捨てればよいだけなのでは?
まあバグでプロパティがいじれないコントロールも一部あるらしい
https://teratail.com/questions/236012
806デフォルトの名無しさん (オッペケ Srbb-yNr9)
2020/05/20(水) 18:40:47.31ID:t37lmoTKr デザイナはわりと属性見てるので、その辺ちゃんとやっとかないとうまくいかないことがある
807デフォルトの名無しさん (ワッチョイ 9763-xLuj)
2020/05/20(水) 19:08:47.13ID:2OJQAkVy0 リユニオンとか真っ黒になりそう
808デフォルトの名無しさん (ワッチョイ 8b01-oW4g)
2020/05/20(水) 20:43:28.09ID:wnqJe1lz0 トレイン変形!ゴー!リュニオン!
809デフォルトの名無しさん (ワッチョイ 9a01-hY51)
2020/05/21(木) 04:25:59.16ID:ShhpHDma0 winフォームアプリなのですが、Form1上のtextBox1に他クラスからアクセスしたい時って
Form1.Designer.csの下の方にあるフィールドをpublicに変えるのはよくない例ですか?
Form1のコンストラクタで自分自身を当該他クラスに引き渡す処理は済んでいます
Form1で、textBox1.TEXTをプロパティにして
他クラスからアクセスする方法も考えたんですけど、
じゃ、テキストボックスじゃなくてリストビューとかだとどうするんだとか考えたら
めんどくさいからもうpublicでいいんじゃないかとか思っちゃうんですけど
ベテランの皆さんはどうしてるんでしょうか
Form1.Designer.csの下の方にあるフィールドをpublicに変えるのはよくない例ですか?
Form1のコンストラクタで自分自身を当該他クラスに引き渡す処理は済んでいます
Form1で、textBox1.TEXTをプロパティにして
他クラスからアクセスする方法も考えたんですけど、
じゃ、テキストボックスじゃなくてリストビューとかだとどうするんだとか考えたら
めんどくさいからもうpublicでいいんじゃないかとか思っちゃうんですけど
ベテランの皆さんはどうしてるんでしょうか
810デフォルトの名無しさん (ワッチョイ 1aad-cFKA)
2020/05/21(木) 04:48:51.98ID:KUTx9pVe0 だめ
811デフォルトの名無しさん (ワッチョイ 9a01-hY51)
2020/05/21(木) 04:53:08.19ID:ShhpHDma0 >>810
はい、頑張って考えてみます
はい、頑張って考えてみます
812デフォルトの名無しさん (ワッチョイ 33a7-2bic)
2020/05/21(木) 07:23:16.29ID:iIzHpd9H0813デフォルトの名無しさん (ワッチョイ 8b01-crVl)
2020/05/21(木) 07:32:49.70ID:MQs/4XZV0 ボタン継承して新しいの作れば
814デフォルトの名無しさん (ワッチョイ 8b01-crVl)
2020/05/21(木) 07:33:55.89ID:MQs/4XZV0 あっtextboxか
815デフォルトの名無しさん (アウアウウー Sac7-anYt)
2020/05/21(木) 08:59:55.50ID:9RboWam4a internal でよくね?
816デフォルトの名無しさん (アウアウウー Sac7-lIs9)
2020/05/21(木) 11:45:51.28ID:LNx85Gx+a >>811
頑張って考えるまでもない。
XがFormを参照するんじゃなくて、FormがXを参照するように変えるだけ。
なぜUIの更新なんていう猿仕事を他のクラスにやらせようとするの?
それはUI自身の仕事だよ。
頑張って考えるまでもない。
XがFormを参照するんじゃなくて、FormがXを参照するように変えるだけ。
なぜUIの更新なんていう猿仕事を他のクラスにやらせようとするの?
それはUI自身の仕事だよ。
817デフォルトの名無しさん (ワッチョイ 9a01-hY51)
2020/05/21(木) 14:57:27.90ID:ShhpHDma0 >>812
誘惑にかられますわ
>>813-815
カスタムコントロールとかですか?
ググっていろいろ調べたんですけど面白そうですねこれ
今回の用途にどう使うのかについてはまだ理解できてないですけど
継承ってこういうことに使うんですね
>>816
つまり、他クラスからForm1のtextBox1に書き込む仕様自体がおかしいってことですか
Form1から他クラスに仕事させて、結果をForm1で受けとってForm1からtextBox1に書き込むべきという理解でよいですか
確かにそうですね
他クラスから書き込むとForm1のコードがスッキリするので気に入ってたんですけどよくないってことですね
他クラスの汎用性を奪っているとも言えますね
誘惑にかられますわ
>>813-815
カスタムコントロールとかですか?
ググっていろいろ調べたんですけど面白そうですねこれ
今回の用途にどう使うのかについてはまだ理解できてないですけど
継承ってこういうことに使うんですね
>>816
つまり、他クラスからForm1のtextBox1に書き込む仕様自体がおかしいってことですか
Form1から他クラスに仕事させて、結果をForm1で受けとってForm1からtextBox1に書き込むべきという理解でよいですか
確かにそうですね
他クラスから書き込むとForm1のコードがスッキリするので気に入ってたんですけどよくないってことですね
他クラスの汎用性を奪っているとも言えますね
818デフォルトの名無しさん (ワッチョイ 9a01-hY51)
2020/05/21(木) 15:28:29.26ID:ShhpHDma0 >>813-815
なんとなく分かりました
public partial class CustomTextBox1 : TextBox
こうやって定義してから、このクラスに処理のためのメソッドをおくとともに
自分自身のTextプロパティに書き込むようにしておく
で、このメソッドをForm1から呼んで処理させればボックスに書き込むことができるっていうことですね
あー勉強になりました
なんとなく分かりました
public partial class CustomTextBox1 : TextBox
こうやって定義してから、このクラスに処理のためのメソッドをおくとともに
自分自身のTextプロパティに書き込むようにしておく
で、このメソッドをForm1から呼んで処理させればボックスに書き込むことができるっていうことですね
あー勉強になりました
819デフォルトの名無しさん (ワッチョイ 9a01-hY51)
2020/05/21(木) 15:32:59.43ID:ShhpHDma0820デフォルトの名無しさん (ワッチョイ 0e84-BCZG)
2020/05/21(木) 17:41:35.31ID:66n7MLhy0 >>809
やり方は人それぞれなので何が良いとかないと思うけど、デザイナで操作できる
ところはデザイナで操作したほうが良いと思うよ
Designer.csをいじっても結果は同じなんだけど、おかしなコードを書くとデザイナの
挙動がおかしくなったりしてイランことに時間がかかったりするから
やり方は人それぞれなので何が良いとかないと思うけど、デザイナで操作できる
ところはデザイナで操作したほうが良いと思うよ
Designer.csをいじっても結果は同じなんだけど、おかしなコードを書くとデザイナの
挙動がおかしくなったりしてイランことに時間がかかったりするから
821デフォルトの名無しさん (スッップ Sdba-6rFm)
2020/05/21(木) 17:47:51.10ID:LaJH1wCvd 見掛けは同じように見えても、改行コードのせいでエラー吐いてたプロジェクトをなんとかしてくれと依頼されたことがある
822デフォルトの名無しさん (ワッチョイ 3761-crVl)
2020/05/21(木) 18:45:11.84ID:/Pr2yAaR0823デフォルトの名無しさん (ワッチョイ 2702-crVl)
2020/05/21(木) 18:58:27.14ID:MVvwgJKT0 空っぽのイベントハンドラを一発で消去する消去する方法は無いのでしょうか?
824デフォルトの名無しさん (ワッチョイ 6301-UYz0)
2020/05/21(木) 19:17:33.27ID:n40K1Wl40 日本語でOK
825デフォルトの名無しさん (ワッチョイ 9a01-hY51)
2020/05/21(木) 19:27:16.30ID:ShhpHDma0826デフォルトの名無しさん (アウアウウー Sac7-vdj3)
2020/05/21(木) 22:44:16.71ID:y7fmuH5Aa TextBox自体をpublicにするのはやっぱり微妙かなあ
自分だったらForm1クラスにpublic(or internal)なメソッドを作って、
メソッド名をTextBoxにアクセスする目的を明確に表す名前にする
たとえば、
void set合計金額Text(int price, Color textColor) { }
string get現在のその他欄入力値()
とか言った感じで
自分だったらForm1クラスにpublic(or internal)なメソッドを作って、
メソッド名をTextBoxにアクセスする目的を明確に表す名前にする
たとえば、
void set合計金額Text(int price, Color textColor) { }
string get現在のその他欄入力値()
とか言った感じで
827デフォルトの名無しさん (アウアウウー Sac7-vdj3)
2020/05/21(木) 22:49:45.68ID:y7fmuH5Aa あ、小文字始まりでJavaのsetter/getterみたいにしちゃったけどC#なら当然大文字始まり
受け取りたい項目が複数、例えポップアップ表示ダイアログの各項目の入力値を取り出すなら、
入力値を詰め込むInputValuesクラスとかを定義したうえで、
InputValues GetInputValues() { }
みたいなメソッドを作って入力値をオブジェクトで扱いやすくして返すようにする
受け取りたい項目が複数、例えポップアップ表示ダイアログの各項目の入力値を取り出すなら、
入力値を詰め込むInputValuesクラスとかを定義したうえで、
InputValues GetInputValues() { }
みたいなメソッドを作って入力値をオブジェクトで扱いやすくして返すようにする
828デフォルトの名無しさん (ワッチョイ 6301-UYz0)
2020/05/21(木) 22:58:08.80ID:n40K1Wl40 インデクサー作った方がスマートかな?
public var this[int i]
public var this[int i]
829デフォルトの名無しさん (ワッチョイ 33a7-2bic)
2020/05/21(木) 23:13:48.54ID:iIzHpd9H0 >>826
やめろやめろ
そんなバカなことなれて
コントロールが300個とかあるときどうするんだ
〜するべきとかそもそも元の造りがそんなふうになってないことのが多いのに
無駄なラッピングなんてするべきじゃない
想定するならそれが1000個あるときそれをやってられるかどうかを想定しろ
そもそも少数ならアクセス方法なんてどうだっていいだろ?
想定してるのは大量にある時なんだよね?
やめろやめろ
そんなバカなことなれて
コントロールが300個とかあるときどうするんだ
〜するべきとかそもそも元の造りがそんなふうになってないことのが多いのに
無駄なラッピングなんてするべきじゃない
想定するならそれが1000個あるときそれをやってられるかどうかを想定しろ
そもそも少数ならアクセス方法なんてどうだっていいだろ?
想定してるのは大量にある時なんだよね?
830デフォルトの名無しさん (ワッチョイ ba52-NhWw)
2020/05/21(木) 23:54:34.06ID:VEFS25bE0 >>829
何で勝手に膨大な数のコントロールがある前提なんだ?
質問者はそんなこと全く言ってないし、読んだ限りでは初心者が小規模なプログラムを作ってる可能性の方が高そうだ。
そういう相手に実務上の仕方なくやる汚いやり方を教えるより、場合によっては理想論になるかもしれないが基本的に良いとされる考え方をまず教えた方がいいだろう。
何で勝手に膨大な数のコントロールがある前提なんだ?
質問者はそんなこと全く言ってないし、読んだ限りでは初心者が小規模なプログラムを作ってる可能性の方が高そうだ。
そういう相手に実務上の仕方なくやる汚いやり方を教えるより、場合によっては理想論になるかもしれないが基本的に良いとされる考え方をまず教えた方がいいだろう。
831デフォルトの名無しさん (アウアウウー Sac7-vdj3)
2020/05/22(金) 00:00:35.63ID:2K6mKaTxa ???
おおもとの>>809では対象はtextBox1の一つだけみたいだけど
でこれがTextBoxからListViewに変わったときとかの話はあるけど
対象項目が大量なんて前提はどこから湧いてきたんだっけ?
というか1画面にコントロールが300個とか1000個とか配置されてて、
全部publicフィールドになってて、法則性もなくあらゆるコントロールに無尽蔵にアクセスする
なんて、その時点でソースから腐臭が漂ってるよ
そこまで酷い状態になってるなら諦めて全部publicにするしかないでしょう
後日メンテナンスしなきゃならないときの影響調査で死ぬだろうけど
おおもとの>>809では対象はtextBox1の一つだけみたいだけど
でこれがTextBoxからListViewに変わったときとかの話はあるけど
対象項目が大量なんて前提はどこから湧いてきたんだっけ?
というか1画面にコントロールが300個とか1000個とか配置されてて、
全部publicフィールドになってて、法則性もなくあらゆるコントロールに無尽蔵にアクセスする
なんて、その時点でソースから腐臭が漂ってるよ
そこまで酷い状態になってるなら諦めて全部publicにするしかないでしょう
後日メンテナンスしなきゃならないときの影響調査で死ぬだろうけど
832デフォルトの名無しさん (アウアウエー Sa52-NLVI)
2020/05/22(金) 01:09:32.35ID:xIO0+KZFa833デフォルトの名無しさん (アウアウウー Sac7-lIs9)
2020/05/22(金) 01:10:19.16ID:mKnPmupma834デフォルトの名無しさん (ワッチョイ b6de-2bic)
2020/05/22(金) 01:25:23.44ID:HA9eXiUk0835デフォルトの名無しさん (ワッチョイ 97de-2bic)
2020/05/22(金) 01:29:28.72ID:tRHrER1d0836デフォルトの名無しさん (アウアウウー Sac7-lIs9)
2020/05/22(金) 01:35:16.74ID:mKnPmupma837デフォルトの名無しさん (ワッチョイ b6de-2bic)
2020/05/22(金) 01:38:59.95ID:bg8HuHxQ0 >>836
publicにするのの何が駄目なん?
publicにするのの何が駄目なん?
838デフォルトの名無しさん (アウアウウー Sac7-lIs9)
2020/05/22(金) 01:47:55.06ID:mKnPmupma >>837
だから、それって「どうしてカプセル化なんて必要なの?」って聞いてるのと同じだよw
カプセル化が重要なのは人間の脳が複雑性に対して脆弱だから。
だから必要な物だけ見せてそうでないものは見せないことによって複雑性を減らす必要がある。
例外はあるが、基本的にはUIはメンバーを外部に公開する必要がない。
表示を更新するのも、ユーザー入力をモデルに伝達するのも全部それはUIの仕事。
それを他人にやらせようとする発想が根本的に間違っている
だから、それって「どうしてカプセル化なんて必要なの?」って聞いてるのと同じだよw
カプセル化が重要なのは人間の脳が複雑性に対して脆弱だから。
だから必要な物だけ見せてそうでないものは見せないことによって複雑性を減らす必要がある。
例外はあるが、基本的にはUIはメンバーを外部に公開する必要がない。
表示を更新するのも、ユーザー入力をモデルに伝達するのも全部それはUIの仕事。
それを他人にやらせようとする発想が根本的に間違っている
839デフォルトの名無しさん (ワッチョイ dbde-2bic)
2020/05/22(金) 01:54:29.41ID:sv4o2LUU0840デフォルトの名無しさん (アウアウウー Sac7-VIJV)
2020/05/22(金) 08:35:08.41ID:JafM55Gga841デフォルトの名無しさん (アウアウウー Sac7-anYt)
2020/05/22(金) 09:03:50.95ID:7ltZImPja UIスレッド以外のスレッドから操作されると危険だよね、単純にコントロールを公開すると。
842デフォルトの名無しさん (ワッチョイ 9a02-crVl)
2020/05/22(金) 09:10:28.54ID:VBq+8Qqi0 そう。後悔することになる。
843デフォルトの名無しさん (アウアウウー Sac7-TxaJ)
2020/05/22(金) 09:49:54.76ID:+j//r/2da 全部private readonlyにしろ
844デフォルトの名無しさん (ワッチョイ 3761-crVl)
2020/05/22(金) 10:09:40.93ID:ImtqKYD30 コントロールに直接アクセスを許すんじゃなくて根っこにあるデータへのアクセスを許すようにしとけばいいんじゃね?
コントロールとデータはBindingしてんだからそれでいいだろ
コントロールとデータはBindingしてんだからそれでいいだろ
845デフォルトの名無しさん (ワッチョイ 1b8c-crVl)
2020/05/22(金) 10:15:33.46ID:NtcwyNbz0 WinFormsだからバインディングはしてないとおもう
846デフォルトの名無しさん (ワッチョイ 0301-f9J/)
2020/05/22(金) 10:20:34.04ID:+ec+XM8b0 >>833
現実的に問題解決の方法が知りたい
現実的に問題解決の方法が知りたい
847デフォルトの名無しさん (アウアウウー Sac7-8pht)
2020/05/22(金) 10:32:58.69ID:I4qPJ3i7a >>841
それはフォームにメンバを追加してラップしたところで解決にならん
フォーム自身がコントロールとして元々持っている大量のメンバはどうするんだ?
もしスレッドセーフにしたいのならフォーム自体も公開してはいけない
それはフォームにメンバを追加してラップしたところで解決にならん
フォーム自身がコントロールとして元々持っている大量のメンバはどうするんだ?
もしスレッドセーフにしたいのならフォーム自体も公開してはいけない
848デフォルトの名無しさん (アウアウウー Sac7-lIs9)
2020/05/22(金) 12:22:25.06ID:/6UQkCjLa >>846
そんな大げさな話?
コントロールへのアクセスはFormの仕事だから他人にやらせようとせずにForm自身にやらせろと言っている。
これのどこがそんな難しい話?
ファミレスで客が厨房に乗り込んで注文出さないのと同じことだよ
注文を受けるのはウェイトレスの仕事
パスタの担当が厨房の佐藤さんであることを客が知ってないとナポリタンの注文を
出せなようなファミレスにあんた行きたいか?w
そんな大げさな話?
コントロールへのアクセスはFormの仕事だから他人にやらせようとせずにForm自身にやらせろと言っている。
これのどこがそんな難しい話?
ファミレスで客が厨房に乗り込んで注文出さないのと同じことだよ
注文を受けるのはウェイトレスの仕事
パスタの担当が厨房の佐藤さんであることを客が知ってないとナポリタンの注文を
出せなようなファミレスにあんた行きたいか?w
849デフォルトの名無しさん (アウアウウー Sac7-VIJV)
2020/05/22(金) 12:30:46.95ID:JafM55Gga850デフォルトの名無しさん (ブーイモ MM26-NLVI)
2020/05/22(金) 13:06:32.78ID:Yx9iiiQWM ぶっちゃけアーキテクチャパターンと規模次第
MVVM、MVU、MVCの場合はVの機能をV以外に公開することは滅多にない
MVPでは逆にVの基本的な機能をインターフェースで抽象化して積極的にPに公開してコントロールを委ねる
Formの主力アーキテクチャはどうなっているかというとMVPのVPが結合した怠惰なアーキテクチャになってる場合が非常に多い
丁寧に作るならPに書くべきコードが手抜きされてVのFormイベントに書かれてしまっている状態
VPが結合してるからprivateなコントロールを抽象化しなくてもアクセスすることはできる
しかしそれでは規模が大きくなるほどメンテナンスしにくくなる
VPが結合していても基本的な機能を抽象化しておくと後々のメンテナンスが楽になる
このような自クラス内部に向けて抽象化された安全なインターフェースを提供する開発手法を自己カプセル化と言う
MVVM、MVU、MVCの場合はVの機能をV以外に公開することは滅多にない
MVPでは逆にVの基本的な機能をインターフェースで抽象化して積極的にPに公開してコントロールを委ねる
Formの主力アーキテクチャはどうなっているかというとMVPのVPが結合した怠惰なアーキテクチャになってる場合が非常に多い
丁寧に作るならPに書くべきコードが手抜きされてVのFormイベントに書かれてしまっている状態
VPが結合してるからprivateなコントロールを抽象化しなくてもアクセスすることはできる
しかしそれでは規模が大きくなるほどメンテナンスしにくくなる
VPが結合していても基本的な機能を抽象化しておくと後々のメンテナンスが楽になる
このような自クラス内部に向けて抽象化された安全なインターフェースを提供する開発手法を自己カプセル化と言う
851デフォルトの名無しさん (ワッチョイ 072c-QPgs)
2020/05/22(金) 13:17:57.12ID:F9tTEKoS0 規模が小さい練習用のアプリなら>>826 の言ってるように組むと思うけどな。なにが問題なんだ
852デフォルトの名無しさん (テテンテンテン MMb6-8pht)
2020/05/22(金) 13:22:07.31ID:jD2+szsjM >>849
そういう問題じゃない
注文相手がウェイトレスだろうと厨房にいる店主のオッサンだろうと、客がすることは「注文を店の人に伝える」だ
その注文を受けて店がどうするかという実装の詳細は知ったことではない
ケースバイケースで判断するべきは、そのフォーム同士のやり取りが客と店の間で行われるのか、それとも店の中で行われるのか、という点
後者なら例えばウェイトレスが厨房の設備のレイアウト等を知っていることを前提としてコックへ依頼をすることは店の規模次第では許されるし、そうしたほうが手っ取り早いケースは多いだろう
これは突き詰めると責任分界の問題で、フォームの役割や開発チームの構成等によって最適解は変わってくる
そういう問題じゃない
注文相手がウェイトレスだろうと厨房にいる店主のオッサンだろうと、客がすることは「注文を店の人に伝える」だ
その注文を受けて店がどうするかという実装の詳細は知ったことではない
ケースバイケースで判断するべきは、そのフォーム同士のやり取りが客と店の間で行われるのか、それとも店の中で行われるのか、という点
後者なら例えばウェイトレスが厨房の設備のレイアウト等を知っていることを前提としてコックへ依頼をすることは店の規模次第では許されるし、そうしたほうが手っ取り早いケースは多いだろう
これは突き詰めると責任分界の問題で、フォームの役割や開発チームの構成等によって最適解は変わってくる
853デフォルトの名無しさん (ワッチョイ 6301-UYz0)
2020/05/22(金) 13:33:40.82ID:H3nV2EgY0 そう言う実装がヤバいってのを
身を持って体験するのも勉強の一つじゃね?
初心者スレなんだし😅
身を持って体験するのも勉強の一つじゃね?
初心者スレなんだし😅
854デフォルトの名無しさん (ワッチョイ 5a01-S/TN)
2020/05/22(金) 13:59:56.31ID:IED0c2cK0 客: 「すみませーん、注文お願いします」
店員:「注文はそちらのタブレットからお願いします」(NotImplementedException)
店員:「注文はそちらのタブレットからお願いします」(NotImplementedException)
855デフォルトの名無しさん (ワッチョイ ba52-NhWw)
2020/05/22(金) 14:44:15.74ID:YTFb7Y3X0 >>853
初心者のうちに気づける失敗はどんどん経験させた方がいいと思うけど、今回の話みたいに、規模が小さいうちは悪手でも問題なくてそれに気づかず変な癖をつけてしまって、後になって大きな規模で問題に直面することもあるからちゃんと説明するのは大事だと思う。
初心者のうちに気づける失敗はどんどん経験させた方がいいと思うけど、今回の話みたいに、規模が小さいうちは悪手でも問題なくてそれに気づかず変な癖をつけてしまって、後になって大きな規模で問題に直面することもあるからちゃんと説明するのは大事だと思う。
856デフォルトの名無しさん (アウアウエー Sa52-NLVI)
2020/05/22(金) 14:50:45.75ID:I90ID8Hwa >>851
規模が大きくなるほど抽象化が重要になる
規模が大きくなるほど抽象化が重要になる
857デフォルトの名無しさん (ワッチョイ b6de-2bic)
2020/05/22(金) 15:17:04.96ID:aYr0yvAC0858デフォルトの名無しさん (ワッチョイ df63-ONnU)
2020/05/22(金) 16:16:46.92ID:GLaq/xoS0 ビジネスホテルの朝バイキングたのしいよね
859デフォルトの名無しさん (ブーイモ MM7f-t91P)
2020/05/22(金) 17:41:35.26ID:49gWHqYrM 朝バイキングあるような高級ビジネスホテルなんて泊まったこと無いな
860デフォルトの名無しさん (ワッチョイ dbde-2bic)
2020/05/22(金) 17:59:13.72ID:mtheMDmH0 >>859
東横インにもないのかよ
東横インにもないのかよ
861デフォルトの名無しさん (ワッチョイ cb59-x2L0)
2020/05/22(金) 18:29:14.17ID:7QsDy1x+0862デフォルトの名無しさん (ワッチョイ 1b8c-crVl)
2020/05/22(金) 18:48:22.56ID:NtcwyNbz0 東横インって高級ビジネスホテルなの?
863デフォルトの名無しさん (ワッチョイ 0e2d-f9m4)
2020/05/22(金) 18:51:49.21ID:W0pT+Psy0 >>861
ドーミーインはちょっぴり高級
ドーミーインはちょっぴり高級
864デフォルトの名無しさん (ブーイモ MM7f-t91P)
2020/05/22(金) 19:05:57.40ID:49gWHqYrM >>860
東横インの朝食をバイキングと呼ぶかね?
東横インの朝食をバイキングと呼ぶかね?
865デフォルトの名無しさん (ワッチョイ 977b-KA8w)
2020/05/22(金) 19:17:57.88ID:V6jLBdBV0 役に立たない議論と雑談をどれだけ続けるんだお前ら
マ板でやれ
マ板でやれ
866デフォルトの名無しさん (ワッチョイ 5a01-S/TN)
2020/05/23(土) 00:48:15.75ID:KnmbZWpz0867デフォルトの名無しさん (テテンテンテン MMb6-8pht)
2020/05/23(土) 00:54:53.82ID:dlI7NS18M もう関数型言語だな
ジャパニーズドカタは完全に置き去り
ジャパニーズドカタは完全に置き去り
868デフォルトの名無しさん (ワッチョイ 9a6a-crVl)
2020/05/23(土) 01:08:33.82ID:Gttmmg320 遂に登場!コピーコンストラクタ
not とか and とか basic ぽい
でも is not はいいね
Covariant returns 個人的には欲しかった機能
not とか and とか basic ぽい
でも is not はいいね
Covariant returns 個人的には欲しかった機能
869デフォルトの名無しさん (ワッチョイ a302-crVl)
2020/05/23(土) 07:48:04.30ID:tXW5Hyqw0 .NET5に合わせる感じか
結構良い感じだけど付いていけない老害は騒ぐだろうな
結構良い感じだけど付いていけない老害は騒ぐだろうな
870デフォルトの名無しさん (ワッチョイ 032d-ze6u)
2020/05/23(土) 11:45:11.67ID:USRRjb5n0 withってコンストラクタは呼ばれるのかな?
871デフォルトの名無しさん (ブーイモ MM26-NLVI)
2020/05/23(土) 12:49:31.00ID:YCd5Ugn0M 便利になるのは嬉しいけど最近、他の言語の後追いが多くねえか?
async/awaitのときみたいな、C#すげえって感動をまた味わいたいものだ
async/awaitのときみたいな、C#すげえって感動をまた味わいたいものだ
872デフォルトの名無しさん (ワッチョイ a3ad-T1cz)
2020/05/23(土) 12:58:29.38ID:MMWDLofe0 何気にトップレベルで直接プログラムが開始できるの嬉しいな。
小さいスクリプト的な使い方で便利になるかもしれん。
dotnet run xxxx.csみたいに出来ると言うことないな。
小さいスクリプト的な使い方で便利になるかもしれん。
dotnet run xxxx.csみたいに出来ると言うことないな。
873デフォルトの名無しさん (ドコグロ MM92-zJk2)
2020/05/23(土) 14:33:05.59ID:N5u382BOM >>872
個人的にはやり過ぎだと思うわ
コンパイルが不要になるわけじゃないしちょっと複雑なことしようと思ったら変数宣言も要るからあんまりメリットに思えない
スクリプトならPowerShellでお腹いっぱい
個人的にはやり過ぎだと思うわ
コンパイルが不要になるわけじゃないしちょっと複雑なことしようと思ったら変数宣言も要るからあんまりメリットに思えない
スクリプトならPowerShellでお腹いっぱい
874デフォルトの名無しさん (アウアウエー Sa52-NLVI)
2020/05/23(土) 14:39:56.71ID:wudsPJksa CakeやC# Scriptがすでにあるしなぁ
Record周りの新機能といい、C#チームはTypeScriptを真似しようとしてるのかね
Record周りの新機能といい、C#チームはTypeScriptを真似しようとしてるのかね
875デフォルトの名無しさん (テテンテンテン MMb6-8pht)
2020/05/23(土) 14:50:01.02ID:rR3WkHU8M 今時のWeb開発だとマイクロサービス指向で小物を沢山作ることが多くなってて、
振る舞いを色々備えててカプセル化とかもきっちりやったリッチなモデルよりも、単にデータクラスを関数で弄るだけみたいなスタイルが主流になりつつあるんだよ
Main省略もその文脈で言えば自然
最近のC#周りは完全にアメリカで主流な内製開発に迎合していて、日本のドカタには理解されにくいね
振る舞いを色々備えててカプセル化とかもきっちりやったリッチなモデルよりも、単にデータクラスを関数で弄るだけみたいなスタイルが主流になりつつあるんだよ
Main省略もその文脈で言えば自然
最近のC#周りは完全にアメリカで主流な内製開発に迎合していて、日本のドカタには理解されにくいね
876デフォルトの名無しさん (ワッチョイ a3ad-T1cz)
2020/05/23(土) 15:00:31.21ID:MMWDLofe0 >>873
コンパイルがまるで不要かのように振る舞わせたいんだと思うよ。
replできたり、dotnetコマンド見てると。
確かに、csxはどうしたいんだろうな。
個人的にはPowerShellは抵抗感あるかもしれん。
コンパイルがまるで不要かのように振る舞わせたいんだと思うよ。
replできたり、dotnetコマンド見てると。
確かに、csxはどうしたいんだろうな。
個人的にはPowerShellは抵抗感あるかもしれん。
877デフォルトの名無しさん (アウアウエー Sa52-NLVI)
2020/05/23(土) 16:46:21.29ID:wudsPJksa 新しいものごとを追求するのはNodeとかにまかせておけばいい
静的並の型安全性、動的の起動速度、モダンな構文、モダンな機能、豊富なパッケージと全てが揃ってるからC#が追いかけても勝ち目ない
C#に求められてるのは業務向けの特性、つまり安定性、安全性、後方互換性、学習の簡単さ(シンプルさとも言える)とかだよ
ポストJavaにふさわしい言語に育ってほしい
静的並の型安全性、動的の起動速度、モダンな構文、モダンな機能、豊富なパッケージと全てが揃ってるからC#が追いかけても勝ち目ない
C#に求められてるのは業務向けの特性、つまり安定性、安全性、後方互換性、学習の簡単さ(シンプルさとも言える)とかだよ
ポストJavaにふさわしい言語に育ってほしい
878デフォルトの名無しさん (ワッチョイ a3ad-T1cz)
2020/05/23(土) 17:07:15.43ID:MMWDLofe0 追いかけてると言うよりも、ニーズがあるんだと思うよ。
実際にはnodeとかより、同じコンパイル言語のkotlinあたりからの機能な印象が強い。
initアクセサとか。
あと、データクラスの
public data class Person(string FirstName, string LastName);
は実際、滅茶苦茶便利だと思う。これもkotlinでもできる。
ポストJavaは言うとおりだと思うけど。
実際にはnodeとかより、同じコンパイル言語のkotlinあたりからの機能な印象が強い。
initアクセサとか。
あと、データクラスの
public data class Person(string FirstName, string LastName);
は実際、滅茶苦茶便利だと思う。これもkotlinでもできる。
ポストJavaは言うとおりだと思うけど。
■ このスレッドは過去ログ倉庫に格納されています
