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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん (ドコグロ MM2f-DHp5)2019/07/16(火) 15:36:23.74ID:i1fbuZ/pM
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part143
https://mevius.5ch.net/test/read.cgi/tech/1558002486/

■情報源
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/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

0952デフォルトの名無しさん (ワッチョイ 7dda-G1PU)2019/10/06(日) 01:49:26.58ID:DPash9Py0
jsonのシリアライザ/デシリアライザは送受同じライブラリを使わないと、割とめんどい。
DateTimeの扱いとか。

あとライブラリによってはpublicクラスじゃないとダメとか変な制限があるものも・・

DataContractJsonSerializerは変換遅いし、いちいち[DataContract]や[DataMember]などのアノテーションがめんどい

0953デフォルトの名無しさん (ワッチョイ e522-reJN)2019/10/06(日) 02:10:45.36ID:uOvq13Pn0
以前REST APIを作ったときはVisual Studioがjson.netを利用するコードを自動生成してたけど、今はDataContractJsonSerializer化されてるのかな?

0954デフォルトの名無しさん (ワッチョイ 6aad-y84I)2019/10/06(日) 07:22:38.42ID:DbrcOQgy0
>>953
System.Text.Json

0955デフォルトの名無しさん (ワッチョイ b67c-WcZE)2019/10/06(日) 11:26:53.05ID:yc9LKsYB0

0956デフォルトの名無しさん (ワッチョイ 3d6e-Qh1z)2019/10/06(日) 12:18:55.28ID:jjEkd1/A0
windows formsアプリについての相談なんですけれど、ロジックと見た目を分けろって聞くじゃないですか。なのでそうしようと思ったんです

例えばユーザーコントロールを作って、そこに何かしらの処理を行うボタンを配置したとします
それで自分が考えたのは、計算をするクラスをユーザーコントロールクラスの内部クラスとして作る、ユーザーコントロールクラスのフィールドとしてその計算するクラスのインスタンスを持たせる
でボタンが押されるイベントで計算をするクラスのオブジェクト.calculate()みたいにする

設計としてはこんな感じでも大丈夫ですかね?アプリを作る時に内部のコードはこう実装するみたいなことを教えてくれる本が無くてどう設計していけばいいのかわからないんです

0957デフォルトの名無しさん (ラクペッ MM65-V2QA)2019/10/06(日) 12:29:48.44ID:ofI4YMfJM
右も左もわからないうちから俺俺アーキテクチャとか考えないで

MVCやMVVMでも勉強したらいいと思うよ

それから最強のアーキテクチャを考えるのでも遅くない

0958デフォルトの名無しさん (ワッチョイ 667b-qjLW)2019/10/06(日) 12:31:03.82ID:U/2g+4lB0
>>956
>ロジックと見た目を分けろ
windows formsアプリじゃなくWPFやった方がいいんじゃない?
windows formsでそんな組み方するの逆にめんどくさい

0959デフォルトの名無しさん (ワッチョイ 5d01-iyyE)2019/10/06(日) 13:48:38.81ID:wAV7A9/e0
>>955
cjsonはわかりやすいのかな、ちょっとしらべてみるさんくす

0960デフォルトの名無しさん (ワッチョイ 5ede-ogEr)2019/10/06(日) 13:52:51.65ID:44yIwJmG0
>>956
そんなことしなくて良い
画面アプリなんて使い捨て上等

サーバーサイドと画面(クライアント)を分けろって話で
一つのアプリでそんなことやっても無意味

0961デフォルトの名無しさん (ワッチョイ 39da-acgG)2019/10/06(日) 14:51:46.94ID:BLgAYnXt0
そんな訳は(規模にもよるけど)当然無い。

0962デフォルトの名無しさん (ワッチョイ 5961-ogEr)2019/10/06(日) 15:03:12.76ID:Ih3UpniZ0
「既存メソッドの処理なんですが?ちょっと時間かかっちゃうんですよねー
プログレスバーとかつかないですかね?
処理の進行状況も表示して」

こんな簡単な要望ですら
そいつはケツまくって逃げ出すよ
花京院の魂を10000個ぐらいかけてもいい絶対だ

処理と表示は一見関係ないように見えて実は密接に関係していて
絶対に切り離せない

不可能なことを可能だと言う技術者を信用してはならない

何年もやっていてこの程度の因果関係もわからんような雑魚から
教えを請いてはならない

0963デフォルトの名無しさん (アウアウウー Sa21-5zAY)2019/10/06(日) 15:33:01.89ID:ZrFisUz2a
>>956
何でユーザーコントロールの話になるのかよく分からんけど、

>ユーザーコントロールクラスの内部クラスとして作る
この部分は変だけど(内部クラスにする必然性がない)、その後の部分はそういう認識でいいと思うよ。

FormでもUserControlでも、基本的に書いていいのは上に乗ってる
コントロールを操作するコードとイベントハンドラだけ。

0964デフォルトの名無しさん (ワッチョイ 6a42-G1PU)2019/10/06(日) 18:11:15.25ID:SEX7i46w0
>>962
C#にはIProgress<T>というクラスもタスクも横断的に使える便利なIFがあるから
あんたが思っているようなことはない

つか、偉そうなのにこれ知らないのか?

0965デフォルトの名無しさん (オッペケ Srbd-jw9j)2019/10/06(日) 18:45:20.34ID:pgF6GacOr
自分は頭が悪すぎてIProgress<T>のどこが便利なのかわからないので
違う仕組みでやってる

0966デフォルトの名無しさん (ワッチョイ 5961-ogEr)2019/10/06(日) 19:21:15.12ID:Ih3UpniZ0
>>964
はぁ?
既存の何も考えずに作ったメソッド(内部)のプログレスバー(表示)を分離したまま実装できないだろってのが俺のレスの主旨なんだけど
理解した上で反論しようとしてんの?
Mr.ドン・キホーテ?

0967デフォルトの名無しさん (ワッチョイ 6a42-G1PU)2019/10/06(日) 19:26:16.12ID:SEX7i46w0
>>966
いや、簡単に実装できるよ
君が知らないだけで

0968デフォルトの名無しさん (ワッチョイ 5961-ogEr)2019/10/06(日) 19:36:10.31ID:Ih3UpniZ0
>>967
あっそ、絶対無理なのにバカだなお前
テメーはさっさと技術者やめて詐欺師に看板替えろ

0969デフォルトの名無しさん (ワッチョイ 492c-Fwoc)2019/10/06(日) 19:38:07.20ID:fpn8B7qc0
昔はイベントハンドラで実装してたな
いまならObservablePropertyあたりでやるんかねRxとかどうも上手く使えてる気がしない

0970デフォルトの名無しさん (ワッチョイ 492c-Fwoc)2019/10/06(日) 19:43:10.12ID:fpn8B7qc0
>>968
いやできるだろう

0971デフォルトの名無しさん (ワッチョイ 6a42-G1PU)2019/10/06(日) 19:53:20.87ID:SEX7i46w0
>>969
確かにmvvmだとReactiveProperyを上位に伝搬するのが楽だし俺もそうやっている
でもFormsの話のようだからIProgress<T>を出しました

0972デフォルトの名無しさん (オッペケ Srbd-jw9j)2019/10/06(日) 20:02:50.65ID:dGqjDCnwr
FormsだとしてもIProgressは不便だと思うよ

0973デフォルトの名無しさん (ワッチョイ 6aad-y84I)2019/10/06(日) 20:07:52.17ID:DbrcOQgy0
>>972
なぜ?

0974デフォルトの名無しさん (アウアウイー Sa7d-Y1tm)2019/10/06(日) 20:18:09.12ID:LuDxacSca
ID:Ih3UpniZ0って昨日iniファイル以外認めないって主張してた御仁か
15〜20年くらい前のスキルしかもちあわせてない人でしょ
技術的なキャッチアップも人間性の向上も怠って年齢だけ重ねてる人だからこういう物言いしかできないんだろう

こういう人のいうことは表向きだけはいはいって聞いたふりして全部無視して問題ないよ

0975デフォルトの名無しさん (オッペケ Srbd-jw9j)2019/10/06(日) 20:27:29.93ID:dGqjDCnwr
ほっとくとイベントの参照が残ってるのでひとりでに消えなくなってしまう

0976デフォルトの名無しさん (ワッチョイ 492c-Fwoc)2019/10/06(日) 20:39:48.56ID:fpn8B7qc0
>>975
backgroundworkerを自前で作らずにformに貼って、イベントもデザイナから作るといいよ

0977デフォルトの名無しさん (ワッチョイ 6aad-y84I)2019/10/06(日) 20:40:18.92ID:DbrcOQgy0
>>975
ソース

0978デフォルトの名無しさん (オッペケ Srbd-G1PU)2019/10/06(日) 23:21:15.76ID:zXgX+PCrr
ソースもくそもみんなそう

0979デフォルトの名無しさん (オッペケ Srbd-G1PU)2019/10/06(日) 23:28:20.92ID:zXgX+PCrr
c# メモリリーク イベントハンドラ

0980デフォルトの名無しさん (ワッチョイ 6aad-y84I)2019/10/07(月) 00:20:35.80ID:ilJKwzD30
だからIProgressでメモリーリークするソース出せってば

0981デフォルトの名無しさん (スフッ Sd0a-Fwoc)2019/10/07(月) 07:55:39.68ID:PXpMNqVGd
IProgressはインターフェースなんだからそれ自体がリークってのはおかしいでしょ。使い方が悪いだけでは…?

0982デフォルトの名無しさん (ワッチョイ 6d63-V2QA)2019/10/07(月) 08:49:33.99ID:jeQW+1qp0
オッペケは自殺して転生して自分の頭のバグ直してこいやボケ

0983デフォルトの名無しさん (オッペケ Srbd-jw9j)2019/10/07(月) 18:13:25.65ID:jsaaj6Lxr
インターフェイスでメモリリークするわけがないはその通り

ただ単純なイベントハンドラベースだとうっかりメモリリークさせやすい
コンポジションなどで保持したままで寿命が違うと特にそう

c++だとメモリリークしやすいが使い方が悪い!ちゃんとつかえ!
という話で済まないので進化し続けてる

そのProgressというけど偽りでProgressと言う動作と何の関係もない
実際はどこからも使われないく自分で使うコードを書くだけなのでProgressである必要もない
どこが便利で使ってるのかさっぱりわからない

0984デフォルトの名無しさん (オッペケ Srbd-jw9j)2019/10/07(月) 18:17:14.49ID:jsaaj6Lxr
見返すとめちゃくちゃだけどIpregressは別にProgressに高度に特化されてないので
使う意味は薄いのではないか?
nさんがどう思うか知らないけど

0985デフォルトの名無しさん (ワッチョイ 6aad-y84I)2019/10/07(月) 19:14:35.69ID:ilJKwzD30
ここまで具体的なコードは無し

0986デフォルトの名無しさん (ワッチョイ 6a2f-2rUB)2019/10/07(月) 20:06:05.04ID:GbsEPSwo0
>処理と表示は一見関係ないように見えて実は密接に関係していて
>絶対に切り離せない

ちゃんと考えて設計してもそうなるなら、絶望的にセンスがないわ
おまえに不可能なことが技術的に不可能なこととは違うよ

0987デフォルトの名無しさん (ワッチョイ 667b-qjLW)2019/10/07(月) 20:18:37.37ID:9eyAES450
次スレ
ふらっと C#,C♯,C#(初心者用) Part145
https://mevius.5ch.net/test/read.cgi/tech/1570446977/
ワッチョイ無しは
ふらっと C#,C♯,C#(初心者用) Part141
https://mevius.5ch.net/test/read.cgi/tech/1544838367/

0988デフォルトの名無しさん (オッペケ Srbd-jw9j)2019/10/07(月) 21:20:35.04ID:jsaaj6Lxr
>>985
理解できないなら無理にレスしなくてもよい

0989デフォルトの名無しさん (アウアウウー Sa21-qxT7)2019/10/07(月) 21:45:53.70ID:/mGKDAACa
>>987

0990デフォルトの名無しさん (ワッチョイ b501-acgG)2019/10/07(月) 22:15:03.54ID:QEMDFqtE0
>>987

0991デフォルトの名無しさん (ワッチョイ 6aad-y84I)2019/10/07(月) 22:16:20.26ID:ilJKwzD30
>>988
はよ

0992デフォルトの名無しさん (ワッチョイ 5961-ogEr)2019/10/07(月) 22:40:26.54ID:H1QHa3mL0
>>986
バカだろ
物理的に不可能だろ
既存処理にプログレスバー付けてみろよ

0993デフォルトの名無しさん (ワッチョイ 6a42-G1PU)2019/10/07(月) 22:42:41.65ID:d+4AHn7d0
IProgressというか、その実体のProgres<T>クラスは、普通に使えばメモリーリークなんか起こらないんだよな
イベントじゃなくてActionデリゲート使ってメンバ変数など使わずにローカル変数で定義して
処理を実行するたびにインスタンス作ればいいだけ
ラムダ使えない人はご愁傷さまとしか言えません

0994デフォルトの名無しさん (オッペケ Srbd-G1PU)2019/10/07(月) 22:50:14.57ID:jsaaj6Lxr
>>993
外から複数のハンドラ指定して実行したい場合どうすんの?
Actionにどうやって渡す?

0995デフォルトの名無しさん (オッペケ Srbd-G1PU)2019/10/07(月) 22:52:08.75ID:jsaaj6Lxr
それと
> 普通に使えばメモリーリークなんか起こらないんだよな



> イベントじゃなくてActionデリゲート使ってメンバ変数など使わずにローカル変数で定義して
> 処理を実行するたびにインスタンス作ればいいだけ

は矛盾してるよね?

0996デフォルトの名無しさん (スププ Sd0a-reJN)2019/10/07(月) 22:53:10.67ID:s9APxj2Ed
>>994
複数のアクションを実行するアクションを渡す

0997デフォルトの名無しさん (ワッチョイ 6a42-G1PU)2019/10/07(月) 22:59:52.41ID:d+4AHn7d0
>>995
サンプルぐぐっても、イベント使ったりクラスのメンバ変数にして使い回すって方が邪道じゃないかな?

0998デフォルトの名無しさん (ワッチョイ 492c-q6lj)2019/10/07(月) 23:21:18.60ID:cpqLM3c60
>>986
多分切り離すとか分離するの意味を根本から間違えて捉えてるんだと思うので無駄だよ。関心の分離の基本がわかってない

0999デフォルトの名無しさん (ワッチョイ a95f-p+4i)2019/10/09(水) 02:47:43.58ID:mpcY/05P0

1000デフォルトの名無しさん (ワッチョイ a95f-p+4i)2019/10/09(水) 02:47:58.78ID:mpcY/05P0


次スレ

ふらっと C#,C♯,C#(初心者用) Part145
https://mevius.2ch.net/test/read.cgi/tech/1570446977/

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 84日 11時間 11分 35秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。