ふらっと C#,C♯,C#(初心者用) Part146

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 9f0b-Fgt1)
垢版 |
2019/12/11(水) 22:12:11.28ID:d09CciDz0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part145
https://mevius.5ch.net/test/read.cgi/tech/1570446977/
■関連スレ
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
2020/02/01(土) 20:21:47.40ID:BvtANEfa0
参照を直接持つ神クラスは巨大なクラスになって破綻しそう
partialはファイルで分けるだけの問題だし

画像リソースやサウンドクラスの参照を返す、サービスロケータパターンなら有り得る

XNAだとgameクラスがこれに相当
unityのGetComponentでは、コンポーネントパターンとの組み合わせで使われてたりはする

サービスロケータにも宗教的な賛否はあるが実用的ではある
2020/02/01(土) 20:33:59.73ID:75XTVAQS0
>>722
いや、単体で完結するクラスはしっかり最小構成で切り分けてるっすよ
ただ互いが互いを参照し合うクモの巣みたいなクラス群は、
参照先を一本にまとめる方が理に適っているのではないかと思って、
デザパタでいうFacadeやMadiatorを突き詰めて行ったら、
全てがGameManagerに集約されて神クラスっぽくなったのでこれはどうなんだと思った次第で
2020/02/01(土) 20:41:23.47ID:JWECbGc70
>>721
どのクラスが持ってるか分からなくなるのはクラス分けが下手だったからだろう。
すべて神クラスに押し込んだら、こんどは逆にあるメンバが元々何のために用意したものか分からなくなったり、別のメンバと取り違えたりして、破綻するだけだと思うぞ。
2020/02/01(土) 20:42:04.40ID:XYPXtNPRM
互いに参照し合うってのがそもそもあまり良くないけどそれは別の問題としておいておくとする
参照しあうとしても必要な相互参照だけ持ってればいい
相互参照してるから神クラスにするって発想は全く繋がらない
無関係な参照を持ってたらコード読んだ人が混乱するだろ
727デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/02/01(土) 21:01:38.43ID:agRHfxgWa
>>724
プログラムと同じ寿命で複数個所からアクセスする必要があるインスタンスを
グローバル変数として提供する静的クラスは是か非か、という意味なら
個人的には支持しますね。
728デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/02/01(土) 21:03:13.43ID:agRHfxgWa
いや、グローバル変数という言い方は変かw
「グローバル変数」と書くべきだった
2020/02/01(土) 21:34:07.42ID:Ar+g0K07a
>>724
実際にコードを書く人間を無視して、設計ありきで開発を統制しようとすると必ず破綻するものだ
モジュール化は基本的に開発の作業単位と一致しているのが理想
その作業単位こそがメソッドになったりクラスになったり、
開発チームや部門などもっと大きな粒度ならドメインやマイクロサービスになるわけだ
君が一人で開発していて、一緒に全部触ることが多いんだったらそれらは一箇所にあるのが自然
2020/02/02(日) 00:24:57.00ID:iIujTevhr
処理を神クラスに全部入れるのは感心しない
クラスAとBで○○をするクラスをたくさん作ってそれを神クラスが使うならまだわかる
2020/02/02(日) 00:27:26.42ID:iIujTevhr
自分ではある処理にAとBしか使わないつもりだったのにいつの間にかCを参照してて
状態によって動いたり動かなかったりするのを避けられる
2020/02/02(日) 02:17:31.38ID:a0o6eu/N0
>>730
宙ぶらりんだとxmlに出せねぇから!
2020/02/02(日) 07:46:40.77ID:x40xU8c9M
>>729
めちゃくちゃなこと言って初心者を惑わすの良くないp
2020/02/02(日) 08:08:49.36ID:ukQ22csD0
staticなクラスにロジックを集中させるのが今風
2020/02/02(日) 17:13:46.82ID:IAcIXRCS0
https://ideone.com/L4OaZ0

ユーザーが自分でカスタム書式指定文字列を入力して、
出力名を決められるコードを書きました。
switch文のところが冗長な気がしますが、
もっとよい実装方法はありますでしょうか。
2020/02/02(日) 17:49:10.92ID:PECaEDf90
オブジェクト指向が全然わかりません。助けてください。

オブジェクト指向では、クラスしか使わないのでしょうか。
そもそも関数とクラスの使い分けがわかりません。
関数、クラスどちらでも良いように思えてしまいます。

クラス内で別のクラスや関数を使うことはあるのでしょうか。
その場合、呼ぶクラスの配置は、外にすればよいのか混乱しています。
2020/02/02(日) 17:49:25.52ID:pxkKXZqI0
https://github.com/dotnet/runtime/blob/master/src/libraries/System.Private.CoreLib/src/System/Globalization/DateTimeFormat.cs#L447

DoeNetCoreの実装も似たようなものだから好きにすればいいんじゃないの?
2020/02/02(日) 17:57:12.48ID:2oi7q6200
>>736
オブジェクト指向が理解できなくてもC#は書けるからそれだけならスレ違い
>クラス内で別のクラスや関数を使うことはあるのでしょうか
コントロールもクラスだしむしろクラス内で別のクラス使わずに書くことの方が少ない
関数はC#には無い定義だからどんな意味で書いているかわからない
初心者ならそんなこと気にせずにコード書いておけばそのうち身につく
2020/02/02(日) 19:05:51.36ID:iIujTevhr
>>736
c#の関数は全てクラスの中でしか宣言できません
終わり
2020/02/02(日) 19:34:54.43ID:PECaEDf90
>>737-739
関数は、クラスの中でしか宣言出来ないのですね。
ご指摘の通り、初心者なので気にしないようにします。
ありがとうございました。
2020/02/02(日) 20:19:18.10ID:o79zkFFu0
>>735
if(isEscape){
 switch(f){
 case 'c':
  result += Code;
  break;
 case 'n':
  result += Name;
  break;
 case 'y':
  result += DateTime.Now.ToString("yyyy");
  break;
 case 'm':
  result += DateTime.Now.ToString("MM");
  break;
 case 'd':
  result += DateTime.Now.ToString("dd");
  break;
 default:
  result += f;
  break;
 }
 isEscape = false;
} else if(f == '%'){
 isEscape = true;
} else {
 result += f;
}
742デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/02/02(日) 20:24:30.59ID:p5iYeTFJa
>>735
別の意見の人もいるかもしれんけど、
とりあえず置換箇所を抜き出す部分と置換する部分は
分けた方が後でメンテしやすいコードになると思うよ
2020/02/02(日) 21:33:42.70ID:Ng7YaIlp0
>>737
case '%': の時は次の文字読んで再帰呼び出しか
参考になるわ

>>735だと’%’を文字列に入れられないのかな?
744デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/02/02(日) 21:50:42.59ID:p5iYeTFJa
>>735
書いてみた
俺も暇だな
ただし大人の事情でProductはイミュータブルなクラスに変えさせてもらったw
https://ideone.com/Ck6bNl
2020/02/02(日) 22:59:32.43ID:1z8f9n64M
こういうのは結局if羅列が正解なんだよな
switchだと値の単純比較しかできないからifで柔軟に分岐させるほうがいい
あらかじめ書式を増やせるような工夫は大抵の場合YAGNIでコードを複雑に遅くするだけで終わる
746デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/02/02(日) 23:04:32.56ID:p5iYeTFJa
>>745
なんか2行目と3行目が矛盾してると思うんだけどw
2020/02/02(日) 23:04:47.87ID:IAcIXRCS0
>>737
.NetCoreでもswitchべた書きなんですね
参考になります

>>743
ご指摘の通り%が出力できない仕様でした
>>741さんのがよりスマートで%も出力できますね

>>742
>>744さんのコードのような感じでしょうか
高度すぎて自分には発想にも至らなかったです。すごく勉強になります

みなさんありがとうございます
2020/02/02(日) 23:06:51.13ID:IAcIXRCS0
あ、>>742 = >>744さんでしたね
749デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/02/02(日) 23:07:46.54ID:p5iYeTFJa
それはともかく、くどいようだけど、
どんな方法で実装するにしろ置換箇所の検出と置換は
分けた方がいいと思うよ

>>741とか>>735みたいな両者が混然一体となったカオスなコードはあかんw
2020/02/02(日) 23:21:57.19ID:IAcIXRCS0
>>749
趣味プログラマーということもあり、
あまり人から教えてもらえる機会がないのでとてもありがたいです

ただの直感ですが、リファクタリング大好きなあのMDさんだったりして、
と感じましたw
2020/02/02(日) 23:31:26.88ID:1z8f9n64M
>>746
全く矛盾してないけど?
2020/02/02(日) 23:39:18.65ID:wS50t4rMd
>>745
パターンマッチングやwhenって知ってるかい?
2020/02/02(日) 23:39:49.23ID:Lpo4bRzP0
>>746
確かに矛盾してるw
2020/02/02(日) 23:52:30.43ID:1z8f9n64M
>>752
知ってるけどif分のほうが遥かに柔軟よ

>>753
してないよ
ここで言ってる柔軟姓って拡張性って意味じゃないからね
2020/02/02(日) 23:57:18.28ID:Ng7YaIlp0
>>744
うーん、参考にはなるがpremature abstractionに感じる

置換箇所の検出と置換を分けるかどうかより
Productが直接SymbolTranslatorを参照したり
formatルールがコンストラクタに入り込んできてたり
EvaluatorみたいなProductと関係ないメソッドが生えてるほうがずっと気になる

クラスを分けるならまずProductFormatterに委譲する形にしておいて
他のFormatterを書く時にもう一段階抽象化するかどうかを考えたほうがいい気がする
2020/02/03(月) 01:04:19.06ID:ergCU4VA0
>>754
具体的には?
2020/02/03(月) 01:40:48.87ID:uUg+nbORM
>>756
while Nが文字列長より小さい
if N文字目以後に%を含まない then 終了
if N文字目が% then ネストしてプレースホルダ解析してNを更新
else 次の%直前までまとめて読み取ってNを更新

例えばこういうの
2020/02/03(月) 02:26:49.09ID:qfSpWMgCd
C#のソースは改行コードはCR + LFで書くんですか?
2020/02/03(月) 07:35:26.68ID:0n0692Cx0
Environment.NewLine
2020/02/03(月) 08:12:45.52ID:rL8lKTlkr
ビルドはLF・CRLFどっちでも出来るので
後は好みとeditorconfigの設定次第<ソースの改行

自分の場合最近はLFで統一するようにしてる
2020/02/04(火) 19:06:59.64ID:26FK/H9g0
Genericのtype constraintでTを+=演算子が使える型だって宣言することできる?
2020/02/04(火) 19:16:33.46ID:XAK/YcTOr
演算子そのものが無理
2020/02/04(火) 20:43:01.50ID:gbPgeOt9M
>>761
中二病は早く卒業しよう
その計算、本当に他の型で使う?
自分に聞いてみれば答えは明らかだろう
2020/02/04(火) 23:41:46.07ID:26FK/H9g0
>>762
了解、ありがとう

>>763
処理別 × 型別の比較をするマイクロベンチのコードで+=演算子を使ってて
処理か型を追加するたびに処理数 × 型数のコードを追加するのが
面倒くさいからGenericにしたかったんだよ

C#の場合オーバーヘッドがあるから正確な測定には適さないけど
Genericでも傾向は分かるから
2020/02/05(水) 01:32:24.11ID:6fUVVF1Va
理由になってないじゃん
結局現実的なユースケースは無いってことだな
2020/02/05(水) 22:48:02.31ID:YDjicEKX0
ちょっと教えて下さい。

CADで書いた2次元の平面図を読み取りエクセル等のシートにに貼り付ける事は可能ですか?
可能であれは加えて、アルファベットと数字を取得も出来ますか?
2020/02/05(水) 22:51:43.41ID:YDjicEKX0
もしくは、PDFをコピペして、アルファベットと数字を読み取れますか?
2020/02/05(水) 22:52:57.09ID:hUfo/ofY0
書き込むスレ間違えてない?
2020/02/05(水) 23:17:28.76ID:AmvkifrY0
>>766
スレ的にはlibreDWGとかかのう
CADがwmfとかBMP吐いているなら
スレ違い

DXF読むのは結構大変
770デフォルトの名無しさん (ワッチョイ 9f84-tipF)
垢版 |
2020/02/06(木) 11:15:51.94ID:p3rMUukc0
質問よろしくお願いします
親フォームに作ったlistBoxのItemsプロパティを子フォームから取得したいので
公開用のpublicのプロパティを作って、(Form1)this.Ownerで取得する方法でやろうとしてるのですが
Itemsプロパティの型が分からずできません。objectではできませんでした。
同じことをtextBox.Textでやるとstring型で簡単にできました。
2020/02/06(木) 11:26:06.63ID:gSRAmVRD0
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.listbox.items?view=netframework-4.8#System_Windows_Forms_ListBox_Items
調べればいいじゃん?
772デフォルトの名無しさん (ワッチョイ 9f84-tipF)
垢版 |
2020/02/06(木) 11:32:10.09ID:p3rMUukc0
>>771
そこは見たのですが
どこに型が書かれてるのかわかりません
2020/02/06(木) 11:39:03.53ID:Jb1VrEaQM
型うんぬん以前の話だと思うの
親フォームのうえでなら、Items扱えてるの?
774デフォルトの名無しさん (ワッチョイ 9f84-tipF)
垢版 |
2020/02/06(木) 11:42:39.07ID:p3rMUukc0
>>773
はい。親フォーム上なら取得できます。
2020/02/06(木) 11:59:57.37ID:gSRAmVRD0
>>772
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.textbox.text?view=netframework-4.8
TextBox.Textがstring型だって分かってるなら、そっちの記述と比較すればいいじゃん?
776デフォルトの名無しさん (アウアウウー Sa9b-WggA)
垢版 |
2020/02/06(木) 12:25:01.67ID:3avRIqPoa
>>770
一般的にはそもそもForm上のコントロールを外から参照するのは不適切。

それ、「PCのモニターに写っている同じ映像を別のモニターにも表示したいので
PCのモニターからHDMI出力を出せないか?」って言ってるのと同じでは?
発想が間違ってるよ。
なぜ映像のソース側にその機能を求めないでただの表示機に求める?
777デフォルトの名無しさん (ワッチョイ 9f84-tipF)
垢版 |
2020/02/06(木) 12:43:34.73ID:p3rMUukc0
>>775
なるほど!
あの長い文字列からusing除いた部分が型だったのか
できました!
>>776
やり方間違ってます?
Itemsに直接行かないで、
Itemsを配列に落としてからそっちを取る情が良いのかな?
なんか二度手間
2020/02/06(木) 12:50:38.55ID:wOe8UCqWa
>>776
デイジーチェーンという既にあるものを例に出して発想が間違ってるとか無能感が凄えな
使う側が加工する発想が無いとか普段どんな神クラスを生み出してるのか興味ある
779デフォルトの名無しさん (アウアウウー Sa9b-WggA)
垢版 |
2020/02/06(木) 13:02:40.83ID:3avRIqPoa
>>778
世の中こういう人が多いから糞コードで溢れてるんだなw
2020/02/06(木) 13:07:54.43ID:wOe8UCqWa
「機能はソース元が持つべき(キリッ」

数十年前のオブジェクト指向かな
この時代にまったく追い付いていない感よ
781デフォルトの名無しさん (アウアウウー Sa9b-WggA)
垢版 |
2020/02/06(木) 13:09:27.22ID:3avRIqPoa
>>777
何でそうなるの
ListBoxのItems自体何かを参照して作ってるんでしょ?
その同じソースを子フォームも参照するのが筋ですよ。
782デフォルトの名無しさん (アウアウウー Sa9b-WggA)
垢版 |
2020/02/06(木) 13:10:20.78ID:3avRIqPoa
香ばしい人が来たねw
本気で自分が正しいと思ってそうで怖いけどw
783デフォルトの名無しさん (アウアウウー Sa9b-WggA)
垢版 |
2020/02/06(木) 13:16:45.15ID:3avRIqPoa
質問者の人みたいな、役割分担を意識しない有機的な(笑)コードでも
学生さんの宿題程度の小さなプログラムなら問題は顕在化しないよもちろん。

ちょっと規模がでかくなるとすぐ死ぬけどねw
こういう発想でやってると

>>780の人は一人で大きなプログラムを設計して書いたことないんだろうね
784デフォルトの名無しさん (ワッチョイ 9f84-tipF)
垢版 |
2020/02/06(木) 13:16:56.29ID:p3rMUukc0
>>781
うーん。listBoxをただのソース表示用にするならそうなんでしょうけど。
それだとItems.Addとか必要無くなりますね・・・
2020/02/06(木) 13:17:51.17ID:OK3H5xtI0
な、アウアウウーだろ?
2020/02/06(木) 13:31:00.38ID:wOe8UCqWa
>>781-783
この怒涛の三連投である

ごめんね、初心者スレで難しい話しちゃって
素人は今まで通りデータと機能をセットにしたオブジェクト指向で良いと思うよ
787デフォルトの名無しさん (ラクッペ MMcb-OK07)
垢版 |
2020/02/06(木) 14:34:33.24ID:wPTmJZ51M
ガイジはこんなところに来なくていいんだよ
ママと喋っててくれな
2020/02/06(木) 15:31:49.41ID:Jb1VrEaQM
あー子フォームにはプロパティ経由でItemsのインスタンスだけ見せたかったてことか
2020/02/06(木) 17:25:31.37ID:rr8+dQJ50
>>778
デイジーチェーンは普通バスがあって見る側でフィルターしてるだけでしょ
本来はI/O(型変換)が要らないところにI/O入れちゃうのはどう考えても悪手でしょ。今回の話でいえば子要素から参照したくなったときに、
リストボックスに直でaddしてるのをやめて、元リストを作ってリストボックスのdatasourceにするか手動同期するかして、トータルのI/Oが少なくなるようにリファクタリングするよね。
2020/02/06(木) 17:46:36.56ID:2CNFUZCo0
バイクのエンジンの掛け方を訊ねているのに
「バイクは転ぶから車にしろ」とか言ってくる不思議な人が世の中にはいる
2020/02/06(木) 18:00:29.92ID:BIpKXfQOM
MVVMの基盤がしっかりしてるならそれでいいけど
Formsのバインドはクソだからなあ
792デフォルトの名無しさん (ワイーワ2 FFdf-VM48)
垢版 |
2020/02/06(木) 18:09:16.22ID:v+RXRHu+F
バイクは転ぶし
転んだ時のダメージも大きいし
車とぶつかっても死ぬのはバイク
百害あって一利なし
793デフォルトの名無しさん (ワッチョイ ffb0-tipF)
垢版 |
2020/02/06(木) 18:09:26.47ID:yYpacz/p0
いやーここは良いスレですよ
色々情報や知識が得られて
私のいるニッチな業界のスレじゃ
下手にかかわると顔バレしそうなんで
なるべく情報出さないようにスルーが基本ですからww
2020/02/06(木) 18:13:45.05ID:DNa4Mn1G0
UIプログラミングの原則として、コントロールを複数のクラスからアクセスるってのは
動作の競合起こしたときにどうにもならんから普通は避けるものですね
この場合、サブフォームからメインフォームのメソッドを呼び出して処理自体をメインフォームのクラスでやらせるのが普通かな?
呼び出すにはサブフォームにFunc<T>の変数を用意して、メインでサブフォームを起動するときにコールバックをセットする
2020/02/06(木) 18:47:00.08ID:ePr9F6TEr
クラスとスレッドの概念は別物だからそれはおかしい
796デフォルトの名無しさん (アウアウウー Sa9b-WggA)
垢版 |
2020/02/06(木) 19:37:43.07ID:3avRIqPoa
>>790
そういう比喩ならこっちの方が適切だね

バイクのエンジンのシリンダーにソレノイドを仕込んで「始動機能内蔵エンジン」
を発明(笑)した気になってるバカがいるので、そんな後でメンテに困るような
設計はやめて普通に外側にセルモーター付けろやと言ってるわけね。
2020/02/06(木) 19:39:03.30ID:bk3hpXlEM
>>782
ブーメランすぎるw
2020/02/06(木) 20:09:27.53ID:2CNFUZCo0
〜正午〜
>>776「コントロールを外から参照するのは不適切。何故ソース側にその機能を求めない?」

〜午後〜
>>796「内蔵なんて後でメンテに困るから普通に外側に機能を付けろ」

僅か半日の出来事である
一体何が彼を変えてしまったのか・・・
2020/02/06(木) 20:51:56.60ID:bargJKer0
すべて筋肉で説明がつく
800デフォルトの名無しさん (アウアウウー Sa9b-WggA)
垢版 |
2020/02/06(木) 21:02:33.81ID:3avRIqPoa
>>798
くだらなすぎワロタw
それを言うなら>>790はどうなるのかねw
これが比喩として成立していると思う人は一人もいないと思うよw

しかし、幼稚だね
2020/02/06(木) 21:13:05.64ID:4TJ952d10
バイクの乗り方の話してるのに、唐突にバイクの機構の話で割り込んできた空気読めない人
802デフォルトの名無しさん (アウアウウー Sa9b-WggA)
垢版 |
2020/02/06(木) 21:33:06.95ID:3avRIqPoa
まだ懲りずに言ってるしw

>>801>>798みたいなのにとっては「始動機能内蔵エンジン」実現のために
シリンダーにソレノドを仕込む機構の実現方法を聞いてる人には対しては
質問に対して真正面にベタに解答するのが正しいことなんだろうw

間違ってると思うよ。
そんな馬鹿なことなぜやるんだ、とアドバイスするのが正しいでしょ
2020/02/06(木) 21:34:18.40ID:QKvxUR9D0
スレタイ読めないの?
2020/02/06(木) 22:23:36.57ID:CL10fagq0
>>777
usingってどこのことだろ。普通に一番上の方に
> public System.Windows.Forms.ListBox.ObjectCollection Items { get; }
とか
> プロパティ値 ListBox.ObjectCollection
って書いてあるのに。
2020/02/06(木) 22:29:08.50ID:QYwN1zQ10
>>804
エスパー読みすると
System.Windows.Forms.ListBox の参照が足りなくてキャスト部分でエラーが出てたんじゃない?
2020/02/06(木) 22:51:51.07ID:O+zcmlkO0
やりたいことができるようになってから、それが最適かどうか考えればいいことで
相手のレベル考えないでアドバイスしたって意味ないんだが

それなら聞かれたことだけに素直に答えてるほうがよっぽど役に立つ
2020/02/06(木) 23:31:46.82ID:rr8+dQJ50
ビューからデータを取り出してあれこれするのはそれ以外方法がない場合は基本的に避けなきゃいけないレベルのことだと思うけどなあ

jQueryでアプリ作るのが衰退してReactとかになったのも同じ理由だし。
(あくまでアプリの話でjQuery自体は今でもWebの表現に役立つライブラリで衰退してないと思う)
2020/02/06(木) 23:41:34.74ID:eMC8OYbwM
フレームワークの出来次第なんだよ
WPFやWEB系の流行りの流儀をFormsに持ち込む必要はない
Formsではイベント〜Formへの問い合わせ〜サービス〜Formの更新が基本的な流れなんだからその流儀に従えばいい
逆にモデルバインディングで作りたいならFormsを捨てる
2020/02/06(木) 23:43:20.57ID:e739Nkpr0
MS公式セミナーにて
「技術より人脈ですよ」

ぺっ
2020/02/07(金) 00:50:21.95ID:JyRMIzlO0
モデルを分離して管理するコストに見合わないような
小規模で保守性をあまり考慮する必要がないアプリなら
Form間で密結合させるのも選択肢の一つ

仕事で作るようなそこそこの規模のアプリで
保守性が重要なケースではまずやらない
2020/02/07(金) 00:53:15.15ID:yv1noF0X0
ワンライナーのノリで書いて捨てるなら適当にやればいい
2020/02/07(金) 07:52:46.57ID:Osl0dJ3Qa
>>792
歩行者も同じだろw
2020/02/07(金) 08:06:28.65ID:PtYUZReyM
Formsではモデルを分離しても間違いなくモデルバインディングを実装するコストは意外と高い
モデルを分離しただけのつもりが状態の二重管理になっていたなんてこともしばしば起こりうる
なのでFormsでは入力が必要ならその都度ヴューに問合せたほうがいい
そうすれば状態が重複しないので管理が楽になる
モデルバインディングを使いたいならWPFにフレームワークを変更すること
2020/02/07(金) 09:35:52.76ID:WtTaalc4M
>>809
お○んぽ騎士団の話はやめて差し上げろ
2020/02/07(金) 19:18:34.16ID:sr6ubIFXM
DataTableのカスタムソートの方法を教えてください。
あるカラムを独自のルールでソートせたいのです。Selectで単純なソートはできるのは分かったのですが、delegate 的なので、ルールを設定できないでしょうか。
2020/02/07(金) 19:36:55.19ID:N36mMxo20
Linq To DataSetでいけんじゃね
817デフォルトの名無しさん (アウアウウー Sa9b-VM48)
垢版 |
2020/02/07(金) 21:48:37.46ID:m5SOWGhma
1秒ごとに、FormのTextBoxに1を加算していく・・Func1
2秒ごとに、FormのTextBoxに2を加算していく・・Func2
つまり
112112112.........このようにTextBox.Textの文字が増えていくプログラムを
非同期で作りたいと思います。
グローバル変数を一切使わずに実装することは可能でしょうか?
1週間考えてるんですが、Timerを使う方法しか思いつきません。
Timer Func1Timer
Timer Func2TImer
というグローバル変数を使ってしまうので、これはNGです。

いい方法はありますか?
2020/02/07(金) 21:55:30.06ID:ZGpQM5Go0
Rx便利よ
Observable.Timer
819デフォルトの名無しさん (アウアウウー Sa9b-VM48)
垢版 |
2020/02/07(金) 22:02:19.48ID:m5SOWGhma
>>818
検討します
ちなみにTask使えばグローバル変数は一切必要ないですか?
2020/02/07(金) 22:24:38.95ID:726N/Ezo0
何がしたいん?
書き手にしかわからない前提条件が色々見えて
「ああ、こいつバカなんだな」
って思った
821デフォルトの名無しさん (ワッチョイ 571d-uqPE)
垢版 |
2020/02/07(金) 22:51:59.66ID:GxNDg+Fe0
実務経験1年で月収80万稼げるエンジニアになった理由
https://www.youtube.com/watch?v=DrbbyGsHQic
意識が低いエンジニアこそフリーランスになれ
https://www.youtube.com/watch?v=nSEaAJlgjbQ
フリーランスエンジニアの週3労働ってどんな感じ?
https://www.youtube.com/watch?v=8yjoDCdbzMc
ぼくがスキルのない社畜ならこうやって脱する
https://www.youtube.com/watch?v=aae8xxbUlMM
初めて人を雇ったらもう二度とサラリーマンをやりたくないと思った話
https://www.youtube.com/watch?v=U0OCGRVLFsM
プログラミングは文系でも余裕で出来ます!理由を現役プログラマーが解説
https://www.youtube.com/watch?v=iBOeiSKBIW8
貧乏人こそ社会不適合者
https://www.youtube.com/watch?v=O3BT72BIBJI
元ド貧乏が教える】貧乏を抜け出すための2つの考え方
https://www.youtube.com/watch?v=IRrCgTy3ckc
より良いオファー貰ってるのに転職しないとか何考えてるの?
https://www.youtube.com/watch?v=i0J6uRhlj7o
822デフォルトの名無しさん (アウアウウー Sa9b-VM48)
垢版 |
2020/02/07(金) 23:40:24.00ID:m5SOWGhma
>>820
非同期プログラミングでフォーム上の値を変えたいってだけです。
TextBoxの値を変えるっていう超単純なプログラムでまずは試すってことです。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況