!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part148
https://mevius.5ch.net/test/read.cgi/tech/1590578921/
■関連スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
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/
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#(初心者用) Part149
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワキゲー MMca-Gz4g)
2020/12/16(水) 11:29:35.35ID:TSvQ057dM320デフォルトの名無しさん (ワッチョイ 87ad-QXKr)
2021/01/24(日) 15:52:16.29ID:3jwmj/rb0321デフォルトの名無しさん (ワッチョイ 87ad-QXKr)
2021/01/24(日) 16:05:06.18ID:3jwmj/rb0 一応言っとくが、びっくり返すのも直接Visibleを変えるんじゃなくて、Visibleにエラーが有るか無いかから算出されるプロパティをバインディングすれば良いからな。
322デフォルトの名無しさん (ワッチョイ a7a7-Bv92)
2021/01/24(日) 16:11:45.64ID:H0Ke+o4H0 データバインド使うためだけに余波が物凄くね?
開始日と終了日のエラーを許容してる間って他の値を変えたときはそっちは保存するの?
開始日と終了日のエラーを許容してる間って他の値を変えたときはそっちは保存するの?
323デフォルトの名無しさん (ワッチョイ 87ad-QXKr)
2021/01/24(日) 16:18:07.86ID:3jwmj/rb0 ViewModel使う事によって余波が減ってると思うが。
他の値は他の値でバリデーションかけたら良いだろ。
保存されるも何も、Modelとしてされないよ。一部がおかしいデータは全体として必ずおかしいだろ。
ViewModelとしては一時保存したければするかもしれんが、Modelにはならん。
その別のデータとやらが開始日と終了日に挟まれているべき日付、なんかだったらそもそもの定義が揺らいでくるじゃん。
全部Leaveするときにチェックするの?コントロール順とか、入力バリデーションに引っかかる順番ごとにテストする?組み合わせ爆発するし、ダイアログが出るかどうかなんてテスト、自動化しづらくて仕方ないじゃん。
明らかに、ViewModelとして帳尻が合ってるかをチェックする方が確実だし効率的でしょ。
だから許容も何もない。
他の値は他の値でバリデーションかけたら良いだろ。
保存されるも何も、Modelとしてされないよ。一部がおかしいデータは全体として必ずおかしいだろ。
ViewModelとしては一時保存したければするかもしれんが、Modelにはならん。
その別のデータとやらが開始日と終了日に挟まれているべき日付、なんかだったらそもそもの定義が揺らいでくるじゃん。
全部Leaveするときにチェックするの?コントロール順とか、入力バリデーションに引っかかる順番ごとにテストする?組み合わせ爆発するし、ダイアログが出るかどうかなんてテスト、自動化しづらくて仕方ないじゃん。
明らかに、ViewModelとして帳尻が合ってるかをチェックする方が確実だし効率的でしょ。
だから許容も何もない。
324デフォルトの名無しさん (ワッチョイ a7a7-Bv92)
2021/01/24(日) 16:46:04.32ID:H0Ke+o4H0 いや、UNDOどうなん?
本格的にエラー値を保存しちゃうの?
本格的にエラー値を保存しちゃうの?
325デフォルトの名無しさん (ワッチョイ 87ad-QXKr)
2021/01/24(日) 16:53:34.11ID:3jwmj/rb0 エラー値をViewModelとして表示するし、一時保存もするだろう。
Modelは保存しない(できない)から問題無い。
エラーも含めてUndo、Redoできて何かおかしいか?
未入力 2020/12/31
2021/01/02 2020/12/31
2021/01/02 2021/02/21
全部Undoすれば良いじゃん。
俺がよく使うのは、Undoはコントロールレベルに留めて、「入力破棄」とか「再読込」ってボタンを用意する事だけど。
変更はViewModelに留まってるから、普通に破棄してModelから再読み込みしてViewModel再構成したら終わる。
開始日終了日は確定してないけど一部だけ変更されたデータなんかを保存するつもりなの?
Modelは保存しない(できない)から問題無い。
エラーも含めてUndo、Redoできて何かおかしいか?
未入力 2020/12/31
2021/01/02 2020/12/31
2021/01/02 2021/02/21
全部Undoすれば良いじゃん。
俺がよく使うのは、Undoはコントロールレベルに留めて、「入力破棄」とか「再読込」ってボタンを用意する事だけど。
変更はViewModelに留まってるから、普通に破棄してModelから再読み込みしてViewModel再構成したら終わる。
開始日終了日は確定してないけど一部だけ変更されたデータなんかを保存するつもりなの?
326デフォルトの名無しさん (ワッチョイ 87ad-QXKr)
2021/01/24(日) 17:00:54.66ID:3jwmj/rb0 ViewModelにエラーを表示している状態を保存してなんの問題があるんだろう。
実データとは全く関係ないデータなんだが。
そのあと修正して確定させないとModelに落ちないなら問題なくね?
いっつもそうして「仮保存」やってるんだけど。
番号取っとかないとダメとかはまた別のやり方するけどさ。
実データとは全く関係ないデータなんだが。
そのあと修正して確定させないとModelに落ちないなら問題なくね?
いっつもそうして「仮保存」やってるんだけど。
番号取っとかないとダメとかはまた別のやり方するけどさ。
327デフォルトの名無しさん (ワッチョイ 0763-n48n)
2021/01/24(日) 17:51:29.07ID:VCT3oYN70 twitterでやれ
328デフォルトの名無しさん (ワッチョイ a7a7-Bv92)
2021/01/24(日) 17:55:17.05ID:H0Ke+o4H0 この間別の正しい値はmodelまで保存できるの?
開始日と終了日に関わるすべての値が保存対象でなくなる?
開始日と終了日に関わるすべての値が保存対象でなくなる?
329デフォルトの名無しさん (アウアウエー Sa1f-rvE3)
2021/01/24(日) 18:03:41.68ID:zEWhRUHAa 何を争ってるのかいまいちよく分からないけどずいぶん盛り上がってるね。
さすがに誰かタオル投げた方がいいレベルのような気がするけど
こういう時はなぜかだんまりなのねw
さすがに誰かタオル投げた方がいいレベルのような気がするけど
こういう時はなぜかだんまりなのねw
330デフォルトの名無しさん (ブーイモ MMcb-74EK)
2021/01/24(日) 18:06:22.86ID:RuSK0e8mM 続きはこっちでどうぞ
WPF(.NET4.x, .NET Core) GUIプログラミング Part24
https://mevius.5ch.net/test/read.cgi/tech/1575862574/
WPF(.NET4.x, .NET Core) GUIプログラミング Part24
https://mevius.5ch.net/test/read.cgi/tech/1575862574/
331デフォルトの名無しさん (ワッチョイ a7a7-Bv92)
2021/01/24(日) 18:18:42.23ID:H0Ke+o4H0332デフォルトの名無しさん (ワッチョイ 87ad-QXKr)
2021/01/24(日) 18:19:27.82ID:3jwmj/rb0 >>328
一つのModelに開始日終了日とその別の値が入ってるなら保存するべきじゃないし、保存しないと思うぞ。
開始日終了日に関わるんじゃなくて、その画面上に表示されてるデータが確定できるデータじゃないでしょ。
正しい値でもなんでもない。
あのさあ。結局データバインディング使ってどう解決したら良いか知らないから、データバインディング使わないほうがお前の場合良いって事にしかならんでしょ。
エアプそのものじゃん。
一つのModelに開始日終了日とその別の値が入ってるなら保存するべきじゃないし、保存しないと思うぞ。
開始日終了日に関わるんじゃなくて、その画面上に表示されてるデータが確定できるデータじゃないでしょ。
正しい値でもなんでもない。
あのさあ。結局データバインディング使ってどう解決したら良いか知らないから、データバインディング使わないほうがお前の場合良いって事にしかならんでしょ。
エアプそのものじゃん。
333デフォルトの名無しさん (ワッチョイ 87ad-QXKr)
2021/01/24(日) 18:20:37.83ID:3jwmj/rb0 >>331
そのエラー値のデータは、確定されない、永続化されないから対応に追われることは無いよ。
だからViewModelに閉じ込めるんであって。
ViewModelとModelを区別できて無いじゃん。
何聞いてんの?
そのエラー値のデータは、確定されない、永続化されないから対応に追われることは無いよ。
だからViewModelに閉じ込めるんであって。
ViewModelとModelを区別できて無いじゃん。
何聞いてんの?
334デフォルトの名無しさん (ワッチョイ 87ad-QXKr)
2021/01/24(日) 18:23:05.74ID:3jwmj/rb0 がっかり回答どころかがっかり理解力だわ。
俺が間違ってるなら指摘してくれ。
俺が間違ってるなら指摘してくれ。
335デフォルトの名無しさん (ワッチョイ a7a7-Bv92)
2021/01/24(日) 18:25:54.36ID:H0Ke+o4H0 いや、だったらデータバインドいらねーじゃん
だってそれ普通にダイアログ出してOKボタンでチェック&保存してんのと変わらんもん
なんかいい方法を知ってる神が舞い降りるのをみんな待っているのさ(笑)
俺はデータバインド使うのやめたけどw
だってそれ普通にダイアログ出してOKボタンでチェック&保存してんのと変わらんもん
なんかいい方法を知ってる神が舞い降りるのをみんな待っているのさ(笑)
俺はデータバインド使うのやめたけどw
336デフォルトの名無しさん (ワッチョイ 87ad-QXKr)
2021/01/24(日) 18:38:06.15ID:3jwmj/rb0 >>335
UI層変わったらどうすんの?
WPFからUWPやXamarinなんかに移植するとき、全部コントロール貼り直して、コントロールへの値のSet,Get全部やり変えて、全部テストすんの?
新しいUIフレームワーク出たら?
アホでしょ、常識的に考えて。
UI層変わったらどうすんの?
WPFからUWPやXamarinなんかに移植するとき、全部コントロール貼り直して、コントロールへの値のSet,Get全部やり変えて、全部テストすんの?
新しいUIフレームワーク出たら?
アホでしょ、常識的に考えて。
337デフォルトの名無しさん (ワッチョイ 87ad-QXKr)
2021/01/24(日) 18:39:44.53ID:3jwmj/rb0 テストするときにモックのUI差し替えて自動テスト出来るんだけど。
最終的には結合試験するだろうけど、その前の段階でも画面ポチポチしながら決定表みてテストしてくの?
工数の無駄遣いでしょ。
最終的には結合試験するだろうけど、その前の段階でも画面ポチポチしながら決定表みてテストしてくの?
工数の無駄遣いでしょ。
338デフォルトの名無しさん (ワッチョイ df2d-Woof)
2021/01/24(日) 18:45:29.80ID:QhWu03/T0 元はデータバインディング使うと上手く行かないことがあるって話だったのにすり替わっているな
339デフォルトの名無しさん (ワッチョイ a7a7-Bv92)
2021/01/24(日) 18:47:17.74ID:H0Ke+o4H0 >>338
うまくいってねぇじゃん
うまくいってねぇじゃん
340デフォルトの名無しさん (ワッチョイ 5fad-mCaM)
2021/01/24(日) 18:50:14.09ID:Ok705ENM0 NGでスッキリ
341デフォルトの名無しさん (テテンテンテン MM8f-3C30)
2021/01/24(日) 18:50:33.38ID:g03tv9KOM 横からだけど
いままでMVVMの意義が理解できてなかったのがID:3jwmj/rb0の説明で開眼したかもしれない
WPFスレで聞くべきかもしれないけど、
View=ViewModelの保持値を表示する&入力値が変わったりボタンが押されたらViewModelの当該プロパティやメソッドを呼び出すだけの存在
(決してビジネスロジックやバリデーションをView自体に持たせてはいけない)
ViewModel=画面上のいろんなTextBoxやLabelのTextだったりButtonのEnabledだったりを一元的に保持することだけを担う存在
(エラー入力値なんかもあるがままに保持すべきであり、
ViewModelでバリデーションチェックを行ったうえでバリデーションNGとかの結果もエラー表示項目の値としてセットすべきである)
Model:極論してしまえばView/ViewModel以外のビジネスロジック的な処理すべて
(UIに依存しない処理は全部Modelで書く)
っていう理解でおおむねあってる?
なんとなくだけど、上記の考え方なのだとしたら
そもそも ID:H0Ke+o4H0 の人はMVVMでなかったとしてもMVVMでいうModelとそれ以外の処理もごちゃ混ぜで書いてそうな印象
いままでMVVMの意義が理解できてなかったのがID:3jwmj/rb0の説明で開眼したかもしれない
WPFスレで聞くべきかもしれないけど、
View=ViewModelの保持値を表示する&入力値が変わったりボタンが押されたらViewModelの当該プロパティやメソッドを呼び出すだけの存在
(決してビジネスロジックやバリデーションをView自体に持たせてはいけない)
ViewModel=画面上のいろんなTextBoxやLabelのTextだったりButtonのEnabledだったりを一元的に保持することだけを担う存在
(エラー入力値なんかもあるがままに保持すべきであり、
ViewModelでバリデーションチェックを行ったうえでバリデーションNGとかの結果もエラー表示項目の値としてセットすべきである)
Model:極論してしまえばView/ViewModel以外のビジネスロジック的な処理すべて
(UIに依存しない処理は全部Modelで書く)
っていう理解でおおむねあってる?
なんとなくだけど、上記の考え方なのだとしたら
そもそも ID:H0Ke+o4H0 の人はMVVMでなかったとしてもMVVMでいうModelとそれ以外の処理もごちゃ混ぜで書いてそうな印象
342デフォルトの名無しさん (ワッチョイ a7a7-Bv92)
2021/01/24(日) 18:59:46.81ID:H0Ke+o4H0 >>341
開始日と終了日エラーでたままじゃグラフの表示範囲も決まらんかもしれんのによくやるわ
ビジネスロジック入れないでグラフの表示範囲計算できると思ってるのかよ
夢見んな
んでエラー値許容のまま放置できちゃったらエラー箇所ユーザにわかるのかよ的な
visualstudioだって一発ビルドしないとエラー箇所わからん
ボクはうまくいってないと思います
開始日と終了日エラーでたままじゃグラフの表示範囲も決まらんかもしれんのによくやるわ
ビジネスロジック入れないでグラフの表示範囲計算できると思ってるのかよ
夢見んな
んでエラー値許容のまま放置できちゃったらエラー箇所ユーザにわかるのかよ的な
visualstudioだって一発ビルドしないとエラー箇所わからん
ボクはうまくいってないと思います
343デフォルトの名無しさん (アウアウエー Sa1f-rvE3)
2021/01/24(日) 19:01:12.31ID:zEWhRUHAa やっぱり何の話をしてるのかよく分からんけど
UI上の値がモデルに今反映されているのかどうかはっきりしないUIはイラッとくるね。
UI上の値がモデルに反映されていない状態を許すなら>>335が言ってるように
ダイアログ出してくれる方がフレンドリーだと思う。
許さないならUI上の値も常に不整合を許すべきではないと思う。
数直線上の閉区間(a≦x≦b)を入力するUIがあったとして、
ユーザーによるaの入力が確定した時a>bになっちゃってたらb = aに変わるべき。
UI上の値がモデルに今反映されているのかどうかはっきりしないUIはイラッとくるね。
UI上の値がモデルに反映されていない状態を許すなら>>335が言ってるように
ダイアログ出してくれる方がフレンドリーだと思う。
許さないならUI上の値も常に不整合を許すべきではないと思う。
数直線上の閉区間(a≦x≦b)を入力するUIがあったとして、
ユーザーによるaの入力が確定した時a>bになっちゃってたらb = aに変わるべき。
344デフォルトの名無しさん (ワッチョイ 874f-b71I)
2021/01/24(日) 19:05:57.47ID:1wsdfsyQ0 WinFormsのコントロールは内部状態を抱え込んでたんでテストが面倒くさかったのを
VMで外出しにした、というくらいに理解しておけばいいと思う。
バインデングいらないの人はFormsじゃあどうしてたんだろうか。
VMで外出しにした、というくらいに理解しておけばいいと思う。
バインデングいらないの人はFormsじゃあどうしてたんだろうか。
345デフォルトの名無しさん (テテンテンテン MM8f-3C30)
2021/01/24(日) 19:09:39.64ID:g03tv9KOM ??
グラフ表示に必要な項目が入力エラーなら「日付が間違ってるのでグラフが表示できません」ってテキストで表示するだけだと思うんだけど
ていうか>>342のいう「グラフ作成」がbmpみたいな画像生成を指すのであれば
その処理はたぶんModelで持つのが正しい気がするし、
View/Modelが密接不可分に結合するような処理であれば
わざわざViewとModelの分離を意図してる(で合ってるよね?)MVVMにしないほうがいいのは当たり前の話だと思う
グラフ表示に必要な項目が入力エラーなら「日付が間違ってるのでグラフが表示できません」ってテキストで表示するだけだと思うんだけど
ていうか>>342のいう「グラフ作成」がbmpみたいな画像生成を指すのであれば
その処理はたぶんModelで持つのが正しい気がするし、
View/Modelが密接不可分に結合するような処理であれば
わざわざViewとModelの分離を意図してる(で合ってるよね?)MVVMにしないほうがいいのは当たり前の話だと思う
346デフォルトの名無しさん (ワッチョイ 87ad-QXKr)
2021/01/24(日) 19:57:04.13ID:3jwmj/rb0 >>341
値にしなくてもプロパティとして表現すると読み書きの方向がはっきりするし良いよ。特にEnabledとかは。
>>342
表示範囲が決まってないのに、グラフが表示できるわけないんだから、「現在描画できません」って表示するのは正でしょ。
ビジネスロジックに通したとしても、それをModelとして保存するかどうかは別問題。
エラー値許容って考え方がおかしい。
エラー箇所がわかるようにバインドするのであって、
各変数がバインドできてるかはモックViewModelを使ったUIテスト、
各種バリデーションがきちんと発生するからモックUIを使ったViewModelテストで、疎に担保するべきもの。
コンパイルエラーとかそういう次元ではなくてUnitTestぐらい通すだろ、普通。
責任範囲がまぜこぜじゃん。
>>343
業務アプリで、画面表示中の項目と、入力項目が不一致になるのは禁忌に近いんじゃないかな。
スクリーンショットからトラブルシュートするのがほぼ不能になる。
>>345
そのグラフ作成、Modelではなくて、切り出しておくべきでは?
結局のところ、一定範囲のデータを与えられて、グラフを描画するって関数なりコントロールになって然るべきだと思うよ。
内部的にbmpを生成しようが、画面に描画する以上。
そうしといたら、グラフコントロールを差し替えたい時に気楽に差し替えられる。
値にしなくてもプロパティとして表現すると読み書きの方向がはっきりするし良いよ。特にEnabledとかは。
>>342
表示範囲が決まってないのに、グラフが表示できるわけないんだから、「現在描画できません」って表示するのは正でしょ。
ビジネスロジックに通したとしても、それをModelとして保存するかどうかは別問題。
エラー値許容って考え方がおかしい。
エラー箇所がわかるようにバインドするのであって、
各変数がバインドできてるかはモックViewModelを使ったUIテスト、
各種バリデーションがきちんと発生するからモックUIを使ったViewModelテストで、疎に担保するべきもの。
コンパイルエラーとかそういう次元ではなくてUnitTestぐらい通すだろ、普通。
責任範囲がまぜこぜじゃん。
>>343
業務アプリで、画面表示中の項目と、入力項目が不一致になるのは禁忌に近いんじゃないかな。
スクリーンショットからトラブルシュートするのがほぼ不能になる。
>>345
そのグラフ作成、Modelではなくて、切り出しておくべきでは?
結局のところ、一定範囲のデータを与えられて、グラフを描画するって関数なりコントロールになって然るべきだと思うよ。
内部的にbmpを生成しようが、画面に描画する以上。
そうしといたら、グラフコントロールを差し替えたい時に気楽に差し替えられる。
347デフォルトの名無しさん (ドコグロ MM8b-Wxou)
2021/01/24(日) 20:50:20.30ID:ELcioWmtM348デフォルトの名無しさん (テテンテンテン MM8f-3C30)
2021/01/24(日) 20:57:17.36ID:nmX/+8uTM >>346にある「プロパティ」って他言語でいうComputed Property(ごめんC#で何て言うか分からない)のことでいいのかな
であれば(and>>344の理解で良いなら)MVVM完全に理解した
ただしく適用すればソースコードの見通しがめちゃくちゃよくなるだろうと思いました
といっても普段の開発がWinFormsかASPNETCoreばっかりなんで活かせる機会なんて来ないんだけどさ
グラフ作成はViewやViewModelに押し込むくらいならModelに置いてくれと思ったけど
別に切り出せるならそのほうがもっと良いのはごもっともです
層分けって大事だよねー・・・と普段メンテしてるようなソースを思い起こしながらため息をついてみたり
であれば(and>>344の理解で良いなら)MVVM完全に理解した
ただしく適用すればソースコードの見通しがめちゃくちゃよくなるだろうと思いました
といっても普段の開発がWinFormsかASPNETCoreばっかりなんで活かせる機会なんて来ないんだけどさ
グラフ作成はViewやViewModelに押し込むくらいならModelに置いてくれと思ったけど
別に切り出せるならそのほうがもっと良いのはごもっともです
層分けって大事だよねー・・・と普段メンテしてるようなソースを思い起こしながらため息をついてみたり
349デフォルトの名無しさん (ワッチョイ 5fad-mCaM)
2021/01/24(日) 21:15:16.63ID:Ok705ENM0 >>348
C#でプロパティって言えば迷うはずないだろ
C#でプロパティって言えば迷うはずないだろ
350デフォルトの名無しさん (テテンテンテン MM8f-3C30)
2021/01/24(日) 21:27:56.19ID:nmX/+8uTM プロパティと聞いて「自動プロパティ」のほうがまっさきに思い浮かんじゃって
「自動プロパティじゃないほうのプロパティ」の呼び方が分からなかったんだけど・・・
何て呼ぶのが一般的なのかな
「自動プロパティじゃないほうのプロパティ」の呼び方が分からなかったんだけど・・・
何て呼ぶのが一般的なのかな
351デフォルトの名無しさん (ワッチョイ a733-Vkx9)
2021/01/24(日) 22:00:13.52ID:W8Ofgakl0 >>341
あってます。
ViewModelは具体的なUIを持たないViewだと思えば良いです。
なのでVisible等のViewに関するロジックはここが持ちます。
ViewはViewModelをそのまま具体的なUIで表現するだけです。
あってます。
ViewModelは具体的なUIを持たないViewだと思えば良いです。
なのでVisible等のViewに関するロジックはここが持ちます。
ViewはViewModelをそのまま具体的なUIで表現するだけです。
352デフォルトの名無しさん (ワッチョイ 87ad-QXKr)
2021/01/24(日) 22:02:48.96ID:3jwmj/rb0 プロパティ、そりゃどれもプロパティだな、言葉足らず申し訳ない。
Computed Propertyググった。
そう、これの事。値を持たず他のプロパティの内容から算出されるプロパティ。
Computed Propertyググった。
そう、これの事。値を持たず他のプロパティの内容から算出されるプロパティ。
353デフォルトの名無しさん (ワントンキン MM3f-FIml)
2021/01/25(月) 08:56:15.41ID:Qq8daOwnM354デフォルトの名無しさん (スププ Sd7f-QXKr)
2021/01/25(月) 12:28:32.14ID:8A1Q9MV4d ちゃんとスレあるんだな。
すまなんだ。
すまなんだ。
355デフォルトの名無しさん (オッペケ Sr7b-ereA)
2021/01/25(月) 12:49:25.57ID:5TPK3+z7r いえいえ
356デフォルトの名無しさん (ワッチョイ c701-Vkx9)
2021/01/25(月) 20:38:53.42ID:FWpwiUbb0 プログラマできちんと反省できる人はレア。
357デフォルトの名無しさん (ブーイモ MMcf-BQY2)
2021/01/26(火) 08:08:46.68ID:z9KCwqI+M プログラマが反省してたら精神がもちません
358デフォルトの名無しさん (テテンテンテン MM8f-jQT1)
2021/01/28(木) 12:09:38.85ID:ud5nmCvYM Enumerable.OrderBy メソッドを呼び出す際に、
引数に送るデリゲート(Func<TSource,TKey>)を動的に指定したい。
具体的には、
List<Person> people = new List<Person>(basePeople.orderby(person => person.名前))
といった並べ替え処理を、Personクラスの各プロパティについて行いたい。
(年齢、整理番号、生年月日など)
現在はそれぞれのプロパティ(20以上)について上記メソッドを作成して
やりたいことは実現していますが、全くスマートじゃないです。
propertyinfoクラスを使って何かできないかと思ったんですが、
デリゲートの中に組み込むような使い方が全く思いつきませんでした。
どなたか分かる方教えて下さい。
引数に送るデリゲート(Func<TSource,TKey>)を動的に指定したい。
具体的には、
List<Person> people = new List<Person>(basePeople.orderby(person => person.名前))
といった並べ替え処理を、Personクラスの各プロパティについて行いたい。
(年齢、整理番号、生年月日など)
現在はそれぞれのプロパティ(20以上)について上記メソッドを作成して
やりたいことは実現していますが、全くスマートじゃないです。
propertyinfoクラスを使って何かできないかと思ったんですが、
デリゲートの中に組み込むような使い方が全く思いつきませんでした。
どなたか分かる方教えて下さい。
359デフォルトの名無しさん (ブーイモ MMcf-j2E3)
2021/01/28(木) 12:59:34.80ID:ow1EdAwiM Syatem.Linq.Dynamic
360デフォルトの名無しさん (アウアウエー Sa1f-rvE3)
2021/01/28(木) 13:42:24.38ID:lJ0XEYQza362デフォルトの名無しさん (アウアウエー Sa1f-j2E3)
2021/01/28(木) 14:49:10.30ID:5GS4w4/Ua System.Linq.Dynamic
363デフォルトの名無しさん (オッペケ Sr7b-bv8J)
2021/01/28(木) 15:13:49.91ID:VSUe7hwUr 同一PC上でのアプリ同士の連動のさせかたを教えてください
フォームアプリケーションA.Bを作り、
Aが単独でも動くメインアプリ、Bは拡張機能付きリモコン、という風にしたいんですが、
Aのサブフォームではなく、別のexeファイルからBを起動したいです
そのうえで、同時起動中にBを操作することでAのtextboxを変更したり、Aを動かすためのメソッドをBのソースに書いてボタンイベントで呼び出し、等できると最高なんですが、
これはそもそも可能なことなのか、検索ワードすらわからず詰まってます
可能であればできるだけシンプルな方法を教えてください、
現在、C#、windowsformでAの途中まで制作中です
フォームアプリケーションA.Bを作り、
Aが単独でも動くメインアプリ、Bは拡張機能付きリモコン、という風にしたいんですが、
Aのサブフォームではなく、別のexeファイルからBを起動したいです
そのうえで、同時起動中にBを操作することでAのtextboxを変更したり、Aを動かすためのメソッドをBのソースに書いてボタンイベントで呼び出し、等できると最高なんですが、
これはそもそも可能なことなのか、検索ワードすらわからず詰まってます
可能であればできるだけシンプルな方法を教えてください、
現在、C#、windowsformでAの途中まで制作中です
364デフォルトの名無しさん (ワッチョイ 7fda-3kb+)
2021/01/28(木) 15:14:46.55ID:r2+Y9V1O0 つ UIAutomation
365デフォルトの名無しさん (ワッチョイ 5f42-xA1r)
2021/01/28(木) 15:26:15.90ID:7g2F6RGP0366363 (オッペケ Sr7b-bv8J)
2021/01/28(木) 16:28:24.36ID:VSUe7hwUr ありがとう、検索して試してみます!
367デフォルトの名無しさん (アウアウエー Sa1f-rvE3)
2021/01/28(木) 16:33:51.84ID:lJ0XEYQza >>361
こんなのとか。
ただの思い付きなので動作するか確認してないし欲しいものと違ったらごめんね。
class DynamicComparer<T>:IComparer<T>
{
public string PropertyToCompare { get; set; }
public DynamicComparer(string propertyToCompare)
{
this.PropertyToCompare = propertyToCompare;
}
int IComparer<T>.Compare(T x, T y)
{
var t = typeof(T);
var p = t.GetProperty(PropertyToCompare, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
var xp = p.GetValue(x);
var yp = p.GetValue(y);
return System.Collections.Comparer.Default.Compare(xp, yp);
}
}
こんなのとか。
ただの思い付きなので動作するか確認してないし欲しいものと違ったらごめんね。
class DynamicComparer<T>:IComparer<T>
{
public string PropertyToCompare { get; set; }
public DynamicComparer(string propertyToCompare)
{
this.PropertyToCompare = propertyToCompare;
}
int IComparer<T>.Compare(T x, T y)
{
var t = typeof(T);
var p = t.GetProperty(PropertyToCompare, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
var xp = p.GetValue(x);
var yp = p.GetValue(y);
return System.Collections.Comparer.Default.Compare(xp, yp);
}
}
368デフォルトの名無しさん (ワッチョイ 2778-Jq7D)
2021/01/28(木) 21:47:36.42ID:SNcV832D0 何回も上がっているけどSystem.Linq.Dynamicを使いなよ
369デフォルトの名無しさん (ワッチョイ fa2d-M8vF)
2021/01/29(金) 00:11:56.19ID:SOOUWe4N0 System.Linq.Dynamic使うとどんな風に書けるの
370デフォルトの名無しさん (アウアウエー Sa52-fG0K)
2021/01/29(金) 00:14:38.17ID:hhAzUQXda var list = customers
.Where("Name.Contains(@0)","ZZZ Projects")
.ToList();
.Where("Name.Contains(@0)","ZZZ Projects")
.ToList();
371デフォルトの名無しさん (ワッチョイ a635-7iTp)
2021/01/29(金) 13:25:03.45ID:Hs1mJoLC0 >>363
SendMessage PostMessageは
SendMessage PostMessageは
372デフォルトの名無しさん (アウウィフ FF21-qCTK)
2021/01/29(金) 16:32:59.15ID:5pIDnM+SF pipe
socket
socket
373デフォルトの名無しさん (ワッチョイ 6a2f-bDzS)
2021/01/29(金) 19:24:38.38ID:IAlTEreC0 COM公開して操作とかできんか?
374デフォルトの名無しさん (ワッチョイ 9e8c-JUiw)
2021/01/30(土) 10:31:51.17ID:U3K72huj0 gRPC使ってプロセス間通信でよくね?
375デフォルトの名無しさん (ワッチョイ 79a7-YX0t)
2021/01/30(土) 10:32:40.83ID:pteiWSPF0 もう何もかもなくなってしまったのか
376デフォルトの名無しさん (ワッチョイ 66bb-RNyz)
2021/01/31(日) 09:44:26.84ID:RldRqHno0 入門書には、クラスの設定系のメンバーは、公開する必要が無ければprivateにせよ、
みたいなことがよく書かれています。
ですが、例えば自作クラス ClassA, ClassBがあるとして、
ClassA
{
public int IntVal { get; private set; }
public ClassB BVal { get; private set; }
}
IntValはいいとして、BValに関しては、getプロパティでBValへの参照を取得できてしまいます。
その参照を通してBValにある設定メソッドを呼べば、BValの内容を外部から変更し放題です。
これを防ぐ方法として
1. ClassBを不変にする(ClassB内には、コンストラクタ以外に設定方法を用意しない)
2. ClassBのクローンを返す
3. ClassB内の取得系メソッドのみを集めたインターフェースを返す
4. ClassBを値型(構造体)にする
一応、以上のようなことを思いつくのですが、ここで質問です。
この問題(メンバがクラス型の場合に、セッターを単にprivateにしてもカプセル化できない)について、
皆さんはどう対処してますか?
単に「カプセル化したければこんなテクニックもあるよ」というのを紹介してほしいのではありません。
皆さんが(使い捨てでない)プログラムを書く際に、実際に、どういう考え方で、どう対処しているのか、
あるいは特に対処していないのか、を知りたいです。
よろしくお願いします。
みたいなことがよく書かれています。
ですが、例えば自作クラス ClassA, ClassBがあるとして、
ClassA
{
public int IntVal { get; private set; }
public ClassB BVal { get; private set; }
}
IntValはいいとして、BValに関しては、getプロパティでBValへの参照を取得できてしまいます。
その参照を通してBValにある設定メソッドを呼べば、BValの内容を外部から変更し放題です。
これを防ぐ方法として
1. ClassBを不変にする(ClassB内には、コンストラクタ以外に設定方法を用意しない)
2. ClassBのクローンを返す
3. ClassB内の取得系メソッドのみを集めたインターフェースを返す
4. ClassBを値型(構造体)にする
一応、以上のようなことを思いつくのですが、ここで質問です。
この問題(メンバがクラス型の場合に、セッターを単にprivateにしてもカプセル化できない)について、
皆さんはどう対処してますか?
単に「カプセル化したければこんなテクニックもあるよ」というのを紹介してほしいのではありません。
皆さんが(使い捨てでない)プログラムを書く際に、実際に、どういう考え方で、どう対処しているのか、
あるいは特に対処していないのか、を知りたいです。
よろしくお願いします。
377デフォルトの名無しさん (ワッチョイ 66bb-RNyz)
2021/01/31(日) 09:50:34.81ID:RldRqHno0 ちなみに、お前自身はどう対処するんだ?と聞かれるかもしれませんが、
C#の経験が乏しいこともあって、どうすればいいのか正直よくわからないです。
(だからみんなのやり方を参考にしたい)
C++なら、公開したい相手だけをfriendにするとか、constなポインタを返すとかするのですが。
C#の経験が乏しいこともあって、どうすればいいのか正直よくわからないです。
(だからみんなのやり方を参考にしたい)
C++なら、公開したい相手だけをfriendにするとか、constなポインタを返すとかするのですが。
378デフォルトの名無しさん (ベーイモ MM2e-1MsU)
2021/01/31(日) 09:55:53.85ID:wMusnPrAM ClassBについても設定系のメンバがprivateになってれば何も問題ない
むしろprivateでないsetterがClassBにあるなら必要があって公開してるはず
むしろprivateでないsetterがClassBにあるなら必要があって公開してるはず
379デフォルトの名無しさん (ワッチョイ 79a7-YX0t)
2021/01/31(日) 10:14:39.41ID:8OVECKvh0 そもそもpublicじゃん
380デフォルトの名無しさん (ワッチョイ 66bb-RNyz)
2021/01/31(日) 10:29:08.15ID:RldRqHno0 例えばint型は自由に値を設定できます(その必要があります)が、
ClassAにとっては、int型の内部データであるIntValを、ClassAの外から
変更されたくない(値の参照はしたい)ため、setのみをprivateにしています。
同様のことをClassBでもやりたいと考えているのですが・・・。
そもそもそういう考え方自体がおかしいのかな?
ClassAにとっては、int型の内部データであるIntValを、ClassAの外から
変更されたくない(値の参照はしたい)ため、setのみをprivateにしています。
同様のことをClassBでもやりたいと考えているのですが・・・。
そもそもそういう考え方自体がおかしいのかな?
381デフォルトの名無しさん (アウアウエー Sa52-fG0K)
2021/01/31(日) 10:43:24.54ID:Xb450EhAa とりあえずイミュータブルにしとけばいいよ
どうしてもイミュータブルではいけない理由が出来たときにどうするか悩めばいい
どうしてもイミュータブルではいけない理由が出来たときにどうするか悩めばいい
382デフォルトの名無しさん (ワッチョイ 79a7-YX0t)
2021/01/31(日) 10:57:10.85ID:8OVECKvh0 >>380
まず前提だけど
publicやprivateで改修時の設計を制限しようと思ってるの?
正直、こんなもんお飾りだし
いざ自分がやりたい機能の邪魔になったら問答無用でpublicにする
俺だったら
まあちょっとしたメモアピールぐらいに思っておけばいいんじゃない?
会社として公開するライブラリやdllのクラスだったらそもそもクラスを丸ごと渡すような仕組みにしちゃ駄目だろ
やるにしてもアクセス用のクラス挟んでって長ったらしい設計になることは致し方ない
まず前提だけど
publicやprivateで改修時の設計を制限しようと思ってるの?
正直、こんなもんお飾りだし
いざ自分がやりたい機能の邪魔になったら問答無用でpublicにする
俺だったら
まあちょっとしたメモアピールぐらいに思っておけばいいんじゃない?
会社として公開するライブラリやdllのクラスだったらそもそもクラスを丸ごと渡すような仕組みにしちゃ駄目だろ
やるにしてもアクセス用のクラス挟んでって長ったらしい設計になることは致し方ない
383デフォルトの名無しさん (ワッチョイ 66bb-RNyz)
2021/01/31(日) 10:59:20.78ID:RldRqHno0 イミュータブルというのは、>>376の方法1のことですよね?
たしかに、.Netに標準で用意されているクラスの多くは、インスタンスを一度作成したら、
内容を変更できないようになっている気がします
内容の一部を変更したいとき(例えばFontのサイズだけを変更したいとか)は面倒ですが・・・
たしかに、.Netに標準で用意されているクラスの多くは、インスタンスを一度作成したら、
内容を変更できないようになっている気がします
内容の一部を変更したいとき(例えばFontのサイズだけを変更したいとか)は面倒ですが・・・
384デフォルトの名無しさん (ワッチョイ 66bb-RNyz)
2021/01/31(日) 11:07:26.15ID:RldRqHno0 >>382
たしかに、あくまでメモ程度に考えて、気にしなければいいのかもしれません
以前、C++で、引数をポインタで渡す際、引数の中身を関数内で変更されたくないので
引数をconstポインタ型にしてたのに、関数の中でconstをキャストで外すように関数内を
書き換えられてしまっていたことがあります
気にしたらきりがないですね
たしかに、あくまでメモ程度に考えて、気にしなければいいのかもしれません
以前、C++で、引数をポインタで渡す際、引数の中身を関数内で変更されたくないので
引数をconstポインタ型にしてたのに、関数の中でconstをキャストで外すように関数内を
書き換えられてしまっていたことがあります
気にしたらきりがないですね
385デフォルトの名無しさん (アウアウエー Sa52-fG0K)
2021/01/31(日) 11:14:00.48ID:Xb450EhAa >>383
1のことでいいよ
イミュータブルの内容を少し変えたオブジェクトがほしいけどコード書くのめんどくさい問題は昔からあった
昔は言語サポートがなかったのでコード生成で対処していた
新しいC#ではwith構文が追加されたのでこの問題は解決済み
1のことでいいよ
イミュータブルの内容を少し変えたオブジェクトがほしいけどコード書くのめんどくさい問題は昔からあった
昔は言語サポートがなかったのでコード生成で対処していた
新しいC#ではwith構文が追加されたのでこの問題は解決済み
386デフォルトの名無しさん (ワッチョイ 66bb-RNyz)
2021/01/31(日) 11:25:38.47ID:RldRqHno0 ありがとうございます
With構文というのは知りませんでした
With構文というのは知りませんでした
387デフォルトの名無しさん (ワッチョイ 2a01-I+PI)
2021/01/31(日) 12:05:56.26ID:+uTrKl1S0 with式の前にその前提となってるレコード型を調べるといい
388デフォルトの名無しさん (ワッチョイ 66bb-RNyz)
2021/01/31(日) 13:37:12.02ID:RldRqHno0 レコード型とwithについてざっとですがWebで調べてみました。
これらの機能を実際に使うかどうかはともかくとして、イミュータブルにすべきという
指針が得られたのはとても参考になりました。
ありがとうございました。
これらの機能を実際に使うかどうかはともかくとして、イミュータブルにすべきという
指針が得られたのはとても参考になりました。
ありがとうございました。
389デフォルトの名無しさん (ワッチョイ 79de-YX0t)
2021/01/31(日) 14:24:54.16ID:pXICYBtJ0 俺はコードの仕組みまでいじってやるほどの問題ではないと思う
ちょっとした仕様の変更でprivateをpublicにしなければならないときクソ邪魔過ぎて作ったやつ呪うレベル
ちょっとした仕様の変更でprivateをpublicにしなければならないときクソ邪魔過ぎて作ったやつ呪うレベル
390デフォルトの名無しさん (ワッチョイ 662f-unxX)
2021/01/31(日) 15:52:52.73ID:QuI6Fit80 C#で作ったアプリケーションをVS2019でビルドしました。
実行ファイルが作成されたbin>releaseのフォルダに、実行ファイルがあると正常に実行できるのですが、
他のフォルダにコピーすると実行できない(ダブルクリックしても反応しない)
状態です。
なぜなんでしょう?
実行ファイルが作成されたbin>releaseのフォルダに、実行ファイルがあると正常に実行できるのですが、
他のフォルダにコピーすると実行できない(ダブルクリックしても反応しない)
状態です。
なぜなんでしょう?
391デフォルトの名無しさん (ワッチョイ 1eda-vNtm)
2021/01/31(日) 15:55:01.39ID:AZLe64Sd0 releaseフォルダをまるっとコピーしたんか?
exeだけ移動させても、dllが不足してたら動かんぞ
exeだけ移動させても、dllが不足してたら動かんぞ
392デフォルトの名無しさん (ワッチョイ 66bb-RNyz)
2021/01/31(日) 16:02:29.10ID:RldRqHno0393デフォルトの名無しさん (アウアウエー Sa52-fG0K)
2021/01/31(日) 16:24:40.13ID:Xb450EhAa >>389
privateをpublicにするのは構わないがイミュータブルなクラスをミュタブルにするのは絶対に駄目
privateをpublicにするのは構わないがイミュータブルなクラスをミュタブルにするのは絶対に駄目
394デフォルトの名無しさん (ワントンキン MM7a-ovjX)
2021/01/31(日) 16:36:30.32ID:TH60xXxXM >>392
そういう状況になるような設計がそもそも悪い、に一票
他のクラスAの内臓を引き摺り出さないといけないような処理があるなら、それはA自身に持たせるべき
Tell, Don't Ask でググるといい
そういう状況になるような設計がそもそも悪い、に一票
他のクラスAの内臓を引き摺り出さないといけないような処理があるなら、それはA自身に持たせるべき
Tell, Don't Ask でググるといい
395デフォルトの名無しさん (ワッチョイ 662f-unxX)
2021/01/31(日) 17:15:07.79ID:QuI6Fit80396デフォルトの名無しさん (ワッチョイ 662f-unxX)
2021/01/31(日) 17:16:51.45ID:QuI6Fit80 ちょっとやっかいなことになったなぁ・・・
現在tobiiのアイトラッカーは使っていないので、
tobii抜きでビルドしたいのですが、どこで設定しているのかわからないので取り除けません
sdkのアンインストールツールなんてものもなさそうだし・・・
現在tobiiのアイトラッカーは使っていないので、
tobii抜きでビルドしたいのですが、どこで設定しているのかわからないので取り除けません
sdkのアンインストールツールなんてものもなさそうだし・・・
397デフォルトの名無しさん (ワッチョイ 662f-unxX)
2021/01/31(日) 17:19:17.00ID:QuI6Fit80 開発したオブジェクトをtobiiを使っていない旧バージョンのプログラムにコピーしたらうまく行かないかと思ったんですが、
プロジェクト間でオブジェクトのコピーができない・・・
プロジェクト間でオブジェクトのコピーができない・・・
398デフォルトの名無しさん (ワッチョイ 662f-unxX)
2021/01/31(日) 17:57:24.91ID:QuI6Fit80 プロジェクトをまたいでフォームをコピーしようとすると
「この操作のソースファイルがこのソリューションに見つかりません。」
と表示されるのですが、何が悪いのでしょうか?
「この操作のソースファイルがこのソリューションに見つかりません。」
と表示されるのですが、何が悪いのでしょうか?
399デフォルトの名無しさん (アウアウエー Sa52-fG0K)
2021/01/31(日) 18:13:15.24ID:Xb450EhAa >>392
根本的な設計は問題ないよ
例えば注文と注文明細のようにオブジェクトが別のオブジェクトを含むという構造はよくあることだ
それ自体にはなんの問題もない
では何が問題かというとそれは注文明細をミュータブルにしてしまったこと
注文明細をミュータブルにしてしまうと
注文と注文明細の間にあったはずの不変条件を簡単に壊すことができてしまう
根本的な設計は問題ないよ
例えば注文と注文明細のようにオブジェクトが別のオブジェクトを含むという構造はよくあることだ
それ自体にはなんの問題もない
では何が問題かというとそれは注文明細をミュータブルにしてしまったこと
注文明細をミュータブルにしてしまうと
注文と注文明細の間にあったはずの不変条件を簡単に壊すことができてしまう
400デフォルトの名無しさん (ワッチョイ 662f-unxX)
2021/01/31(日) 18:57:41.42ID:QuI6Fit80 C#というかVSではソリューションをまたいでフォームをコピーするとかは不可能なんでしょうか?
またいでコピーすると
「この操作のソースファイルがこのソリューションに見つかりません。」
と表示されコピーできないのですが、これが出来ないとフォームを別アプリとかで再利用できないですよね
コピーできないはずがないだろうと思って調べているのですがやり方が分からい・・・
またいでコピーすると
「この操作のソースファイルがこのソリューションに見つかりません。」
と表示されコピーできないのですが、これが出来ないとフォームを別アプリとかで再利用できないですよね
コピーできないはずがないだろうと思って調べているのですがやり方が分からい・・・
401デフォルトの名無しさん (ワッチョイ 6978-unxX)
2021/01/31(日) 19:36:48.60ID:N+Pm82Ll0 エクスプローラーでファイルをコピーするという発想は無いの?
402デフォルトの名無しさん (ワッチョイ 662f-unxX)
2021/01/31(日) 20:20:00.00ID:QuI6Fit80 >>401
ありがとうございます
知りませんでした・・・
ファイルコピーしたらプロジェク内に表示されましたが、
SDK導入前のプロジェクトにSDK導入後開発したフォームを移植してもうまく動かないですね
SDKを一度導入すると取り除くのは不可能なのか・・・
全く使わないDLLファイルが大量にあるってなんか気持ち悪いですが、我慢するしかないのかな・・・
ありがとうございます
知りませんでした・・・
ファイルコピーしたらプロジェク内に表示されましたが、
SDK導入前のプロジェクトにSDK導入後開発したフォームを移植してもうまく動かないですね
SDKを一度導入すると取り除くのは不可能なのか・・・
全く使わないDLLファイルが大量にあるってなんか気持ち悪いですが、我慢するしかないのかな・・・
403デフォルトの名無しさん (ワッチョイ 66bb-RNyz)
2021/01/31(日) 21:08:22.28ID:RldRqHno0404デフォルトの名無しさん (オッペケ Srbd-Z/xs)
2021/01/31(日) 21:42:41.93ID:1LV1XQdcr405デフォルトの名無しさん (ワッチョイ 5d2d-merL)
2021/01/31(日) 21:49:02.35ID:d4v/P7z60 List<int>の中で最大の数値の個数をLINQで数えたいのですが
どう書いたらいいのでしょうか?
どう書いたらいいのでしょうか?
406デフォルトの名無しさん (ワッチョイ 1eda-vNtm)
2021/01/31(日) 22:20:10.23ID:AZLe64Sd0 >>405
var hoge = new List<int> { 1, 2, 3, 4, 5, 4, 5, 4, 5 };
var maxCount = hoge.Where( x => x == hoge.Max() ).Count();
var hoge = new List<int> { 1, 2, 3, 4, 5, 4, 5, 4, 5 };
var maxCount = hoge.Where( x => x == hoge.Max() ).Count();
407デフォルトの名無しさん (ワッチョイ 662c-xuBi)
2021/01/31(日) 22:20:29.15ID:nDa51Aej0 Max()で最大値取った後Count(x => x == max)すればいいんじゃない普通に
408デフォルトの名無しさん (ワッチョイ 1eda-vNtm)
2021/01/31(日) 22:23:53.17ID:AZLe64Sd0 たしかに、Whereの中にhoge.Max()を書いちゃうと毎回評価されて効率わるいのかな。
すまん
すまん
409デフォルトの名無しさん (ワッチョイ 1e62-zR5L)
2021/01/31(日) 22:24:43.04ID:6uii1UZd0 >>405
GroupByでキーを値、バリューを個数にしたグループを作ってキーで並び替えて最後の行を取得するってのが1回の実行で完結する時の一般的なやり方
GroupByでキーを値、バリューを個数にしたグループを作ってキーで並び替えて最後の行を取得するってのが1回の実行で完結する時の一般的なやり方
410デフォルトの名無しさん (アウアウエー Sa52-qCTK)
2021/01/31(日) 22:24:51.03ID:tsmk7oeqa 計算量と可読性考えた素直に自分で書いた方がよい気がするよw
411デフォルトの名無しさん (ワッチョイ 5d2d-merL)
2021/01/31(日) 22:36:08.49ID:d4v/P7z60 みなさまありがとうございました
GroupBy調べてみます。
GroupBy調べてみます。
412デフォルトの名無しさん (ワッチョイ 8dac-aXb2)
2021/01/31(日) 22:36:31.74ID:jjH+MY7o0 いえいえ
413デフォルトの名無しさん (アウアウエー Sa52-qCTK)
2021/01/31(日) 22:47:04.53ID:tsmk7oeqa LINQというかその乱用者が嫌われる理由の一端を見た気がするw
414デフォルトの名無しさん (ワッチョイ b501-Z/xs)
2021/01/31(日) 23:08:40.21ID:r9k2b4HI0 >>413
あんたがついてけて無いだけ。
あんたがついてけて無いだけ。
415デフォルトの名無しさん (ワッチョイ 79a7-YX0t)
2021/01/31(日) 23:14:50.67ID:8OVECKvh0 ループでMax出しながらカウントも行けると思うんやけど
速度的にもわかりやすさ的にも
絶対こっちのが上やんか?
それに対する反省はないん?
けったいな方法使って性能も悪いなんてなんや最高にダッサイなぁ?
速度的にもわかりやすさ的にも
絶対こっちのが上やんか?
それに対する反省はないん?
けったいな方法使って性能も悪いなんてなんや最高にダッサイなぁ?
416デフォルトの名無しさん (アウアウエー Sa52-qCTK)
2021/01/31(日) 23:36:34.74ID:tsmk7oeqa >>414
これ言ってる本人は語るに落ちてるって気付いてないんだろうねw
KISSの原則とか青臭いこと言いたくないけど、
ダメな人は自分が自己確証を目的にしてる自覚がないからダメなんだな
前にも書いたけどこの業界にはイキってる連中が群がってる技術は
絶対に衰退する法則があるけどそれも上記が理由の一つだねw
これ言ってる本人は語るに落ちてるって気付いてないんだろうねw
KISSの原則とか青臭いこと言いたくないけど、
ダメな人は自分が自己確証を目的にしてる自覚がないからダメなんだな
前にも書いたけどこの業界にはイキってる連中が群がってる技術は
絶対に衰退する法則があるけどそれも上記が理由の一つだねw
417デフォルトの名無しさん (ワッチョイ b501-Z/xs)
2021/02/01(月) 00:28:41.11ID:YBzqaDjv0 >>407
これすら理解できんの?
これすら理解できんの?
418デフォルトの名無しさん (ワッチョイ b602-P+vo)
2021/02/01(月) 00:49:03.93ID:BmIrX0ai0 >>405
dotnet add package System.Interactive
using System;
using System.Collections.Generic;
using System.Linq;
var q = new List<int>() { ... };
var ans = q.MaxBy(x => x).Count();
System.Console.WriteLine(ans);
dotnet add package System.Interactive
using System;
using System.Collections.Generic;
using System.Linq;
var q = new List<int>() { ... };
var ans = q.MaxBy(x => x).Count();
System.Console.WriteLine(ans);
419デフォルトの名無しさん (アウアウエー Sa52-qCTK)
2021/02/01(月) 01:19:51.10ID:LuxfmHdua■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★2 [蚤の市★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ ★2 [蚤の市★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 【悲報】維新の政治資金でガールズバー、高市首相「良いか悪いかは国民の皆さまが判断されること」 [115996789]
- 【マギレコ】VIPでマギアレコード&マギアエクセドラ【まどドラ】
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- 衛生的に気持ち悪くて性風俗店行ったこと無いんだ
- いじめられてる男子中学生だけど質問ある?
