■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part94
http://mevius.2ch.net/test/read.cgi/tech/1492843013/
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C#, C♯, C#相談室 Part95
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7b7f-3FY0)
2017/10/17(火) 00:41:22.60ID:JxIRdCj70285デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 13:00:29.22ID:7KQ7NXxs0 >>281
エラーになる設定に値を設定への操作を許可してりゃ詰んでないじゃんw
そもそもそういう操作を禁止するなんて話どこにあった?
ユーザーの操作は何も制限なんてする必要は無い
設定保持classが現在入力されている設定値が正常か否かだけを分かってればいい
エラーになる設定に値を設定への操作を許可してりゃ詰んでないじゃんw
そもそもそういう操作を禁止するなんて話どこにあった?
ユーザーの操作は何も制限なんてする必要は無い
設定保持classが現在入力されている設定値が正常か否かだけを分かってればいい
286デフォルトの名無しさん (ワッチョイ 152f-V35x)
2019/12/08(日) 13:00:57.18ID:pSs03yKS0 画面に入力された文字は変数記録クラスに記録させて、
変数記録クラスを参照していると、
「あれ、この変数って画面ではどこのことだっけ?」
とかなるのは自分の頭がクソ仕様ということか・・・。
変数記録クラスを参照していると、
「あれ、この変数って画面ではどこのことだっけ?」
とかなるのは自分の頭がクソ仕様ということか・・・。
287デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 13:04:18.68ID:7KQ7NXxs0 この理論、パスワードは8文字以上でって制限だと
1文字目を打ったタイミングでエラー出して入力ボックス消すってことか?
そんでコピペ以外で8文字以上打つことができずに詰んだってか?
そんなびっくり仕様どこにあるの?
1文字目を打ったタイミングでエラー出して入力ボックス消すってことか?
そんでコピペ以外で8文字以上打つことができずに詰んだってか?
そんなびっくり仕様どこにあるの?
288デフォルトの名無しさん (ワッチョイ 95ad-dl55)
2019/12/08(日) 13:04:22.11ID:oZbmRsqQ0 >>286
そこは間違いないな
そこは間違いないな
289デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 13:06:20.25ID:BE6HVZz80 だからワンクッション置かないと駄目だよねって話
290デフォルトの名無しさん (ワッチョイ ed5f-QX1D)
2019/12/08(日) 13:08:13.78ID:KIb7eBZ10 >>286
変数記録クラスで変数を入れておくのをプロパティにしておけば、VSの機能で参照先をすぐに探せる
変数記録クラスで変数を入れておくのをプロパティにしておけば、VSの機能で参照先をすぐに探せる
291デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 13:17:20.81ID:WI1y2v9y0292デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 13:26:39.13ID:7KQ7NXxs0 >>291
だからダメだったら何なの?
不正な値が入力されたらそうであることが参照するclassがわかればいいだけ
登録ボタン形式であっても登録時にチェックして正常異常を判定するのだから異常入力をユーザーに通知できるタイミングの違いでしか無い
何も詰まないのに詰むでしょ?考えて?組んだこと無いの?
って勝手に操作入力制限の要件足して突っかかってくるのやめてね
だからダメだったら何なの?
不正な値が入力されたらそうであることが参照するclassがわかればいいだけ
登録ボタン形式であっても登録時にチェックして正常異常を判定するのだから異常入力をユーザーに通知できるタイミングの違いでしか無い
何も詰まないのに詰むでしょ?考えて?組んだこと無いの?
って勝手に操作入力制限の要件足して突っかかってくるのやめてね
293デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 13:42:37.78ID:z1c2Df2S0294デフォルトの名無しさん (ワッチョイ a301-8opd)
2019/12/08(日) 13:49:38.20ID:B7mwO2xN0295デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 13:50:09.94ID:7KQ7NXxs0296デフォルトの名無しさん (ワッチョイ a54f-Fgt1)
2019/12/08(日) 13:53:27.09ID:rNTMaYhL0 >設定値が変更されたら即座に
>設定値管理用classに反映させればいいのでは?
これ、バリデーションとか無い場合の方がやっかいだよね。
ユーザーは10を入力したかったのに1で処理されちゃうとか。
>設定値管理用classに反映させればいいのでは?
これ、バリデーションとか無い場合の方がやっかいだよね。
ユーザーは10を入力したかったのに1で処理されちゃうとか。
297デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 13:58:30.12ID:7KQ7NXxs0 個人的に割とよくある設計だと思ってる
入力したタイミングからエラーチェックして早めにユーザーに通知できるメリットがでかい
webなんかではよく見る形式
で、そんなよくある設計を詰むよ、なんて言って初学者(かどうかわからんが)に対して無意味に敬遠させるべきでは無いと思う
入力したタイミングからエラーチェックして早めにユーザーに通知できるメリットがでかい
webなんかではよく見る形式
で、そんなよくある設計を詰むよ、なんて言って初学者(かどうかわからんが)に対して無意味に敬遠させるべきでは無いと思う
298デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 14:06:24.08ID:90QfBCQ40299デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 14:08:43.35ID:90QfBCQ40300デフォルトの名無しさん (ワッチョイ 25e7-xqEQ)
2019/12/08(日) 14:18:51.74ID:WpCL9e8A0 MVVMを持ち出してる割にVMとMがごっちゃになってるように見える
301デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 14:19:22.37ID:7KQ7NXxs0 >>299
何を無理だと感じているのかさっぱりわからん
from/toが範囲外になったってユーザーがそう入力してるならその値を保持するだけ
で処理に進む段階で異常値があるなら進ませない
登録ボタン形式なら異常値があるなら受け付けない
処理に進むのを実行ボタンとすれば
前者なら異常値があれば実行ボタンを無効化しておき、設定値が全て正常になったタイミングで有効化する
みたいな要件が実現しやすい
何を無理だと感じているのかさっぱりわからん
from/toが範囲外になったってユーザーがそう入力してるならその値を保持するだけ
で処理に進む段階で異常値があるなら進ませない
登録ボタン形式なら異常値があるなら受け付けない
処理に進むのを実行ボタンとすれば
前者なら異常値があれば実行ボタンを無効化しておき、設定値が全て正常になったタイミングで有効化する
みたいな要件が実現しやすい
302デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 14:25:09.69ID:90QfBCQ40 >>301
即時反映の話はどこいったん?
即時反映の話はどこいったん?
303デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 14:26:41.39ID:90QfBCQ40 さらに設定値を参照してる奴全員に異常値の対応をさせるってありえなくね?
304デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 14:27:36.72ID:7KQ7NXxs0305デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 14:28:42.21ID:7KQ7NXxs0 >>303
そんな仕様どこに書いてあった?
そんな仕様どこに書いてあった?
306デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 14:32:02.79ID:90QfBCQ40 なんかすでに議論に勝つためだけに頑張っちゃってる感じ?
307デフォルトの名無しさん (ワッチョイ a54f-Fgt1)
2019/12/08(日) 14:34:19.70ID:rNTMaYhL0 登録ボタンと実行ボタンがある前提で登録ボタンの方は無くせる、と言っているのかな?
308デフォルトの名無しさん (ブーイモ MM6b-zX1Z)
2019/12/08(日) 14:41:07.50ID:eGeBS+CxM >>299
入力中はアンダーラインを引いたりメッセージを出して通知はするが間違ってても即保存する
入力された不正な設定値を読み取る時に無視するあるいは警告を出して無視するはたまたエラーを出して失敗させる
後々設定をアプリ外から弄ることも視野に入れると読み取り時にデータの正確性を保証したほうがいい
入力中はアンダーラインを引いたりメッセージを出して通知はするが間違ってても即保存する
入力された不正な設定値を読み取る時に無視するあるいは警告を出して無視するはたまたエラーを出して失敗させる
後々設定をアプリ外から弄ることも視野に入れると読み取り時にデータの正確性を保証したほうがいい
309デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 14:50:30.86ID:7KQ7NXxs0 UI→登録ボタンによるチェック処理→設定値保持class
UI→チェック機能を有した設定値保持class
こんだけ
前者はチェック処理で弾けば設定値保持classには異常値が入っていないことが担保できる
後者は設定値保持class自身が正常と判断してるかどうかで異常値があるかどうかを判断する
別に前者の設計が一概にダメとは思わないしこういうこともよくするが後者が詰むという理論は理解できん
UI→チェック機能を有した設定値保持class
こんだけ
前者はチェック処理で弾けば設定値保持classには異常値が入っていないことが担保できる
後者は設定値保持class自身が正常と判断してるかどうかで異常値があるかどうかを判断する
別に前者の設計が一概にダメとは思わないしこういうこともよくするが後者が詰むという理論は理解できん
310デフォルトの名無しさん (ワッチョイ a301-8opd)
2019/12/08(日) 14:51:48.07ID:B7mwO2xN0 >>272
一般的には読みやすくメンテしやすくするため
画面からの入力を処理する役割と設定値を管理する役割は別のクラスに持たせる
ただ簡単なプログラムなら画面クラスに設定値管理の役割を持たせるのでも別に構わない
他クラスから不用意に値を書き換えられないようにするのはそいうふうに設定管理クラスを作ればいいだけ
レス見る限り他のクラスの変数を
プロパティやメソッド経由せずに直接設定したり直接参照してる風に読めるんだが
もしそうなら役割ごとにクラスを分離したのに密結合してるのが一番の問題
でもブチ切れるレベルの人ならササッと書き換えるから心配する必要ないと思う
一般的には読みやすくメンテしやすくするため
画面からの入力を処理する役割と設定値を管理する役割は別のクラスに持たせる
ただ簡単なプログラムなら画面クラスに設定値管理の役割を持たせるのでも別に構わない
他クラスから不用意に値を書き換えられないようにするのはそいうふうに設定管理クラスを作ればいいだけ
レス見る限り他のクラスの変数を
プロパティやメソッド経由せずに直接設定したり直接参照してる風に読めるんだが
もしそうなら役割ごとにクラスを分離したのに密結合してるのが一番の問題
でもブチ切れるレベルの人ならササッと書き換えるから心配する必要ないと思う
311デフォルトの名無しさん (ワッチョイ 032d-Do/g)
2019/12/08(日) 15:03:31.77ID:Oblj5J3Y0 >>272
いやいや、2みたいなものは要るし、3は一番ダメだよ
問題なのはフィールドを他クラスのオブジェクトから読み書きする点で、ここをプロパティーやフレームワークの内部コマンドに置き換えたりしないと徐々にコードが酷くなっていくよ
いやいや、2みたいなものは要るし、3は一番ダメだよ
問題なのはフィールドを他クラスのオブジェクトから読み書きする点で、ここをプロパティーやフレームワークの内部コマンドに置き換えたりしないと徐々にコードが酷くなっていくよ
312デフォルトの名無しさん (ワッチョイ 45a9-hz4T)
2019/12/08(日) 17:55:31.29ID:zhe6A2K90 この一連の流れは相談か?
313デフォルトの名無しさん (ワッチョイ 95ad-dl55)
2019/12/08(日) 18:19:08.18ID:54HI4DkC0 そうだんですよ川崎さん
314デフォルトの名無しさん (アウアウウー Saa9-FVm2)
2019/12/08(日) 18:25:13.90ID:q5OZjWUaa 正直最初の質問が結局何を質問してるんだか俺にはいまいちよく分からないんだけど、
こんな雲をつかむような話でよくレスが50も進むよねw
まず質問者が何を聞きたいと思ってるのかを明確にするのが先だと思うんだけど
こんな雲をつかむような話でよくレスが50も進むよねw
まず質問者が何を聞きたいと思ってるのかを明確にするのが先だと思うんだけど
315デフォルトの名無しさん (ワッチョイ 2301-cb5P)
2019/12/08(日) 19:25:44.35ID:h14g0YSH0316デフォルトの名無しさん (アウアウウー Saa9-FVm2)
2019/12/08(日) 19:40:58.07ID:q5OZjWUaa317デフォルトの名無しさん (ワッチョイ 2301-cb5P)
2019/12/08(日) 20:06:20.23ID:h14g0YSH0 いや、わからないならスルーしとけよ
別にお前がわかる必要はないんだしw
別にお前がわかる必要はないんだしw
318デフォルトの名無しさん (ワッチョイ 6d17-Fgt1)
2019/12/08(日) 20:19:46.26ID:vQtEDwKW0 また昨日の続きかよ
319デフォルトの名無しさん (ワッチョイ 2301-cb5P)
2019/12/08(日) 20:37:00.33ID:h14g0YSH0 自分がわからないのは質問者のせいだ
って思い込んでる人は一定数いるからw
って思い込んでる人は一定数いるからw
320デフォルトの名無しさん (ブーイモ MM39-bVmn)
2019/12/11(水) 18:58:15.46ID:neU6iLAlM 該当クラスがどこのネイムスペースから
なのかすぐわかる方法ってない?
なのかすぐわかる方法ってない?
321デフォルトの名無しさん (アウアウウー Saa9-FVm2)
2019/12/11(水) 19:12:17.36ID:A2ve7TTYa322デフォルトの名無しさん (ブーイモ MM39-bVmn)
2019/12/11(水) 19:16:20.62ID:neU6iLAlM323デフォルトの名無しさん (ワッチョイ 6d17-Fgt1)
2019/12/11(水) 19:22:09.23ID:3diBwqZu0 名前空間を省略せずに書けばいいだろ
324デフォルトの名無しさん (ワッチョイ 95ad-dl55)
2019/12/11(水) 19:27:51.94ID:2za+15ZK0 javaだってするだろ
325デフォルトの名無しさん (ワッチョイ 2363-Uyjt)
2019/12/11(水) 19:31:24.40ID:tBBOlHQ00 >>322
C#に限らず最近の言語はほぼIDEや高機能エディタ前提だと思うが
C#に限らず最近の言語はほぼIDEや高機能エディタ前提だと思うが
326デフォルトの名無しさん (アウアウウー Saa9-FVm2)
2019/12/11(水) 20:19:46.44ID:A2ve7TTYa >>322
ライブラリの型ならC#と一緒にググればすぐ出てくるでしょ
ライブラリの型ならC#と一緒にググればすぐ出てくるでしょ
327デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/11(水) 20:25:15.92ID:EPJ4Sm/w0 vscodeすら入れられないの?
メモ帳縛りとかコンパイルもめんどいやん
てかコンパイラ単体で持ってきたの?
メモ帳縛りとかコンパイルもめんどいやん
てかコンパイラ単体で持ってきたの?
328デフォルトの名無しさん (ワッチョイ 23ad-XnaB)
2019/12/11(水) 23:25:24.84ID:fjLZq11N0 昔はviとかで普通にコーディングしてたが
今更メモ帳でコーディングする気にはなれんな
今のIDEとかもう便利すぎる
今更メモ帳でコーディングする気にはなれんな
今のIDEとかもう便利すぎる
329デフォルトの名無しさん (ワッチョイ a201-VrMI)
2019/12/12(木) 00:08:12.86ID:n05Ewb3K0 dotnet buildでいいからコンパイルは楽でしょ
330デフォルトの名無しさん (ワッチョイ e26a-xO71)
2019/12/12(木) 00:22:15.51ID:AJjh9lU00 今時viだってコーディング支援あるしね
331デフォルトの名無しさん (オッペケ Srcb-elTq)
2019/12/21(土) 08:44:14.52ID:mOkYxWI2r インデントもわざわざ打たなきゃならんでしょメモ帳・・・
332デフォルトの名無しさん (スップ Sd3f-JseX)
2019/12/21(土) 09:28:59.77ID:RVospelqd333デフォルトの名無しさん (ブーイモ MMbf-70ba)
2019/12/21(土) 09:53:05.63ID:elCUYmNmM クラウドIDE良いよ
インストール不自由でも使える
インストール不自由でも使える
334デフォルトの名無しさん (ワッチョイ 9f01-pdcM)
2019/12/21(土) 11:11:56.97ID:tKqa0Mcd0335デフォルトの名無しさん (ワッチョイ 7717-prDO)
2019/12/21(土) 12:14:55.25ID:wj7YAMPY0 メモ帳しか使えない環境だからいくら紹介しても無駄だぞ
336デフォルトの名無しさん (ササクッテロ Spcb-JQOI)
2019/12/22(日) 01:12:40.65ID:BLYFt7Uup 最初にメモ帳でC#に特化したエディタ作る
以降はそれで開発
以降はそれで開発
337デフォルトの名無しさん (ワッチョイ 5701-EwPn)
2019/12/22(日) 02:09:51.62ID:thbQEK090 C言語はC言語で書かれてると聞いたことがあるような…
最初にどう始めたかは知らない
アセンブラか他言語で始めてCに移行だとは思うが
最初にどう始めたかは知らない
アセンブラか他言語で始めてCに移行だとは思うが
338デフォルトの名無しさん (ワッチョイ b754-+Tiu)
2019/12/22(日) 05:49:50.97ID:By9IH60L0 セルフホスティングやな
339デフォルトの名無しさん (ブーイモ MMdb-gy34)
2019/12/22(日) 12:27:43.38ID:BM7u1zydM そんなことも知らないのかよ
cの場合は最初にクロスコンパイラを作るから、新しいプラットフォームでもアセンブラは不要。
て、さっきwikiで読んだ
cの場合は最初にクロスコンパイラを作るから、新しいプラットフォームでもアセンブラは不要。
て、さっきwikiで読んだ
340デフォルトの名無しさん (ワッチョイ 9f6a-prDO)
2019/12/22(日) 13:11:54.70ID:0l5I7UXk0 原初の環境では機械語直入力だ
341デフォルトの名無しさん (ワッチョイ 9f01-fd2f)
2019/12/22(日) 14:27:23.59ID:4GpMlcpo0 >>339
そのクロスコンパイラとやらはなんの言語で書かれてるんだ?
そのクロスコンパイラとやらはなんの言語で書かれてるんだ?
342デフォルトの名無しさん (ワッチョイ ff12-gy34)
2019/12/22(日) 15:28:16.06ID:la1jzM750 もちろんCだよ。
gccに関して言えば、まず、Cで書かれた自分自身のサブセットを別のCコンパイラでコンパイルしてから、自分自身のサブセットで自分自身をコンパイルする。
だから今後Cコンパイラがアセンブラで書かれる必要はまったくない。書きたければ書くのは自由だが。
なお、最初のCコンパイラはBで書かれたものとDECマシン向けのアセンブラで書かれたものがあり、Bコンパイラはすべてアセンブラで書かれていた。
僕くらい博識になるとこんなの常識だね。明日には忘れるけど
gccに関して言えば、まず、Cで書かれた自分自身のサブセットを別のCコンパイラでコンパイルしてから、自分自身のサブセットで自分自身をコンパイルする。
だから今後Cコンパイラがアセンブラで書かれる必要はまったくない。書きたければ書くのは自由だが。
なお、最初のCコンパイラはBで書かれたものとDECマシン向けのアセンブラで書かれたものがあり、Bコンパイラはすべてアセンブラで書かれていた。
僕くらい博識になるとこんなの常識だね。明日には忘れるけど
343デフォルトの名無しさん (ブーイモ MMbf-70ba)
2019/12/22(日) 15:36:37.89ID:ngCRczT7M まるでC博士だな
大したやつだ
大したやつだ
344デフォルトの名無しさん (アウアウウー Sa5b-1WEo)
2019/12/22(日) 15:38:35.28ID:sqLa+RyJa いきなりネイティブのコンパイラは無理っぽいわ。
>>342
gcc は確か C++ で記述されていたはず、C++ のサブセットなんてどんなものなんですかね?
gcc は確か C++ で記述されていたはず、C++ のサブセットなんてどんなものなんですかね?
346デフォルトの名無しさん (ワッチョイ d7ad-6AKx)
2019/12/22(日) 16:11:14.32ID:5lkZulIS0 元々はただのCだぞ
>>346
ずいぶん昔に gcc は c++ になってしまいましたよ…
ずいぶん昔に gcc は c++ になってしまいましたよ…
348デフォルトの名無しさん (アウアウカー Sa2b-6AKx)
2019/12/22(日) 16:45:16.31ID:lRvby7lea 元々はって日本語わからんのかな
349デフォルトの名無しさん (ワッチョイ 17da-UiIE)
2019/12/22(日) 16:46:38.86ID:uiOI59Hv0 昔のc++はcのコードを一旦出力してcコンパイラでバイナリを作っていたな
350デフォルトの名無しさん (ワッチョイ 9f01-fd2f)
2019/12/22(日) 17:21:58.53ID:4GpMlcpo0352デフォルトの名無しさん (ワッチョイ d7ad-6AKx)
2019/12/22(日) 18:56:50.05ID:5lkZulIS0 かわいそうに、馬鹿なのだな
353デフォルトの名無しさん (ワッチョイ 7717-prDO)
2019/12/22(日) 19:39:34.09ID:tqOBQt+/0 >>352
コテでググったら各所で問題児扱いされている奴だったわ
コテでググったら各所で問題児扱いされている奴だったわ
354デフォルトの名無しさん (ワッチョイ 9f6a-prDO)
2019/12/22(日) 21:03:00.98ID:0l5I7UXk0 >>350
よーく読んでみ
よーく読んでみ
355デフォルトの名無しさん (ワッチョイ ff12-gy34)
2019/12/22(日) 21:43:42.23ID:la1jzM750356デフォルトの名無しさん (ワッチョイ 9f01-fd2f)
2019/12/22(日) 21:55:06.63ID:4GpMlcpo0357デフォルトの名無しさん (ワッチョイ 9f6a-prDO)
2019/12/23(月) 00:11:53.87ID:GXjcw1770 だめだこいつ…w
358デフォルトの名無しさん (ドコグロ MMdf-fd2f)
2019/12/23(月) 06:44:48.06ID:AlxEeRKZM >>357
自己紹介乙ww
自己紹介乙ww
359デフォルトの名無しさん (ワッチョイ 978e-Imov)
2019/12/25(水) 16:59:22.64ID:Zg8ebJFL0 今日もつまらないことで5chは盛り上がっております
360デフォルトの名無しさん (ワッチョイ 7f7b-JrBF)
2019/12/26(木) 11:49:58.62ID:2UlJm9YS0 using/disposeについて確認したいんだが、
あれって厳密には「リークする」ではなくて、
「解放のタイミングが不明で、場合によっては問題が発生することもあり得る」なだけだよな?
https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/using-objects
具体的にはGDI+オブジェクトのGraphicsやBrush等について、
MSDNのドキュメントもほぼusingなしで記述されているので気になっている。
https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/advanced/how-to-draw-a-line-filled-with-a-texture
一応、using使えということになっていたはずだが?
そこで色々ググって見ると、どうやら以下のようだが、あってるか?
・try-catch で finally にdisposeが入ってなかったとき、(≒つまりusing使わなかったとき)にも、
例外が発生したその時のリソースも、参照が切れ次第、いつかはGCによって回収される。
・GDI+リソースはシステムリソースで、場合によっては枯渇するから、作法としては不要になり次第解放すべき。
・とはいえ32bit化でこの辺の問題は大幅に緩和され、GDI+はプロセス毎の上限は10,000になってる。
だから余程酷いことをしない限りこれに引っかかることはない。
結果、作法としては正しいがほぼ命中しない問題に関して一々using使うのもウザイ、
ということでMSDNのドキュメントがusing無しになってる、ということで合ってるかな?
(なお関係ないとは思うが俺が使っているのはVC++/CLIとForms)
あれって厳密には「リークする」ではなくて、
「解放のタイミングが不明で、場合によっては問題が発生することもあり得る」なだけだよな?
https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/using-objects
具体的にはGDI+オブジェクトのGraphicsやBrush等について、
MSDNのドキュメントもほぼusingなしで記述されているので気になっている。
https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/advanced/how-to-draw-a-line-filled-with-a-texture
一応、using使えということになっていたはずだが?
そこで色々ググって見ると、どうやら以下のようだが、あってるか?
・try-catch で finally にdisposeが入ってなかったとき、(≒つまりusing使わなかったとき)にも、
例外が発生したその時のリソースも、参照が切れ次第、いつかはGCによって回収される。
・GDI+リソースはシステムリソースで、場合によっては枯渇するから、作法としては不要になり次第解放すべき。
・とはいえ32bit化でこの辺の問題は大幅に緩和され、GDI+はプロセス毎の上限は10,000になってる。
だから余程酷いことをしない限りこれに引っかかることはない。
結果、作法としては正しいがほぼ命中しない問題に関して一々using使うのもウザイ、
ということでMSDNのドキュメントがusing無しになってる、ということで合ってるかな?
(なお関係ないとは思うが俺が使っているのはVC++/CLIとForms)
361デフォルトの名無しさん (ワッチョイ dc2c-++NQ)
2019/12/26(木) 12:35:29.16ID:WMR2NHe80 サンプルプログラムに厳密性を求めるな ってだけ
362デフォルトの名無しさん (ドコグロ MM46-Nxir)
2019/12/26(木) 12:37:11.96ID:Fsuom43iM サンプルだから本質には関係ないところをバッサリ省略してるだけでしょ
ガチな例外処理とか入れられても見辛いだけだし
それと同じ話
ガチな例外処理とか入れられても見辛いだけだし
それと同じ話
363デフォルトの名無しさん (ドコグロ MM40-NvuD)
2019/12/26(木) 13:02:58.04ID:Wx+k6OqqM まあサンプルをコピペしちゃうレベルなら他にもっとまずいところはいくらでもあるだろうから、
少々Disposeが先延ばしになるくらいは無視しても問題ないかと
少々Disposeが先延ばしになるくらいは無視しても問題ないかと
364デフォルトの名無しさん (ワッチョイ 7f7b-JrBF)
2019/12/26(木) 13:36:36.96ID:2UlJm9YS0 >>253
周回遅れだが一応参戦。当該院生が冬休みでもう一度読んでいることを期待する。
他の人も言っているとおり、設計としては253で正しい。直す必要はない。
なおその点はForms->WPFで思想が修正された点であり、(つまりFormsが駄目だった点)
これも他の人が既に言っているとおり、「最新のフレームワークの流儀」で設計するのが妥当。
判断する能力がないなら、とにかく「最新の流儀」に乗っかるのが
無駄に嵌るのを未然に防ぐ適切な方策となるのでそうすべき。
構成としては、おそらく、
「設定値変更画面(V)」「設定値保管用クラス(M)」「他クラス(多分演算ルーチン)(EXE)」で、
これはMVCの通りであり、V-M, M-EXE 間は結合しているがV-EXEは結合していない。
これに対して、誰か(≒老害)に指摘されたのだと思うが、君が253の時点でいいと思っている構成は、
「設定値変更画面(V+M)」「他クラス(多分演算ルーチン)(EXE)」となっており、Mが分離していない。
(=EXE側がVを知っている必要がある)
この構成の利点は、
・コードが多少少なく済む
点であるが、結局使い勝手が悪いので、ずっと改善していくと最終的に253みたくMVCに分離することになる。
周回遅れだが一応参戦。当該院生が冬休みでもう一度読んでいることを期待する。
他の人も言っているとおり、設計としては253で正しい。直す必要はない。
なおその点はForms->WPFで思想が修正された点であり、(つまりFormsが駄目だった点)
これも他の人が既に言っているとおり、「最新のフレームワークの流儀」で設計するのが妥当。
判断する能力がないなら、とにかく「最新の流儀」に乗っかるのが
無駄に嵌るのを未然に防ぐ適切な方策となるのでそうすべき。
構成としては、おそらく、
「設定値変更画面(V)」「設定値保管用クラス(M)」「他クラス(多分演算ルーチン)(EXE)」で、
これはMVCの通りであり、V-M, M-EXE 間は結合しているがV-EXEは結合していない。
これに対して、誰か(≒老害)に指摘されたのだと思うが、君が253の時点でいいと思っている構成は、
「設定値変更画面(V+M)」「他クラス(多分演算ルーチン)(EXE)」となっており、Mが分離していない。
(=EXE側がVを知っている必要がある)
この構成の利点は、
・コードが多少少なく済む
点であるが、結局使い勝手が悪いので、ずっと改善していくと最終的に253みたくMVCに分離することになる。
365デフォルトの名無しさん (ワッチョイ 7f7b-JrBF)
2019/12/26(木) 13:37:07.04ID:2UlJm9YS0 >>259
といっても分かりにくいだろうから具体的に指摘すると、
君の問題は、間違った方策で解決しようとして、余計におかしくなっていることだ。
> 他クラスで使用しているときに値を変更されないように2、3を実装したんですけど、単に画面を入力できないようにロックすればよかった。
これは「画面をロック」ではなく、演算開始時に「設定値保管クラスのコピーを演算ルーチンに渡す」とすべき。
これにより、一つの実行画面から多数の演算ルーチンを並列に起動したり、
或いはGUI無しでコマンドラインから起動することも普通に可能となる。
(つまりプログラムとしての汎用性/柔軟性が上がっている)
「クラスのコピー」ってのはディープコピーだが、単純に値が入っているクラスなら、
Cなら構造体の代入、つまり
SomeClass myCopy = reference;
の1行で事足りる。或いは通常、関数呼び出しには構造体への「ポインタ」を用いているはずだが、そこを構造体の「値」に変えればいいだけ。
C#だとstructは値型だったと思うので、設定値保管用『struct』なら自動的に上記が常に行われる構造になるが、
余程小さくない限りそれでは使いにくい筈なので、設定値保管用『クラス』で正しく、何らかの方策でディープコピーをした方がいい。
インミュータブルに組んでいればシャローコピーでも行けるようには出来るはずだが。
といっても分かりにくいだろうから具体的に指摘すると、
君の問題は、間違った方策で解決しようとして、余計におかしくなっていることだ。
> 他クラスで使用しているときに値を変更されないように2、3を実装したんですけど、単に画面を入力できないようにロックすればよかった。
これは「画面をロック」ではなく、演算開始時に「設定値保管クラスのコピーを演算ルーチンに渡す」とすべき。
これにより、一つの実行画面から多数の演算ルーチンを並列に起動したり、
或いはGUI無しでコマンドラインから起動することも普通に可能となる。
(つまりプログラムとしての汎用性/柔軟性が上がっている)
「クラスのコピー」ってのはディープコピーだが、単純に値が入っているクラスなら、
Cなら構造体の代入、つまり
SomeClass myCopy = reference;
の1行で事足りる。或いは通常、関数呼び出しには構造体への「ポインタ」を用いているはずだが、そこを構造体の「値」に変えればいいだけ。
C#だとstructは値型だったと思うので、設定値保管用『struct』なら自動的に上記が常に行われる構造になるが、
余程小さくない限りそれでは使いにくい筈なので、設定値保管用『クラス』で正しく、何らかの方策でディープコピーをした方がいい。
インミュータブルに組んでいればシャローコピーでも行けるようには出来るはずだが。
366デフォルトの名無しさん (ワッチョイ 7f7b-JrBF)
2019/12/26(木) 14:38:18.82ID:2UlJm9YS0 >>361-363
つかこれ、どれくらいgraphicsヘビーにすればヒットするんだ?
以下はヒットしているようだが、俺はヒットしない。
https://sorayukinoyume.hatenadiary.org/entry/20121029/1351525436
俺のは40k個Brushを作ってそのまま放置、それを1秒ごとに再描画、
みたいな感じだが、OutOfMemoryなんて起きない。
(ただし、カクつく事があったから今はDisposeを入れてしまったが)
プログラムは演算結果をGUIで表示するもので、演算ヘビーだが、
演算自体はC++ネイティブなのでGCは行われない。
(演算ルーチンではマネージドメモリを消費しない)
なお以下とかは正しいように思う。
https://uchukamen.com/Programming/GC/
https://ladybug.hatenadiary.org/entries/2004/01/10
https://ufcpp.net/study/csharp/rm_gc.html
https://divakk.co.jp/aoyagi/csharp_tips_using.html
https://www.codeproject.com/Articles/48701/Using-GDI-Objects-the-Right-Way
(なお最後はシステムで10,000が上限だと言っているが、これはプロセスの間違いだと思う。《他でそう書いてあったところもあった》
また、タスクマネージャーで見る限り、俺のPCでは全体で10,000は越えているし。
なお一番使っているのはJane2chの8,653だった。Jane糞だなオイ。
chromeは各プロセス毎に600-800位、俺のプログラムはどうやっても50-70を推移してる)
MSも馬鹿じゃないからサンプルコードはそれなりに正しいはず。
絶対にこう書け、なら必ずそう書く。そうでないのはその必要が「普通は」ないからだ。
逆に、普通にサンプルコードで問題が発生するようなら、クレーム来まくりで大変だから、当然のように修正される。
それが為されてないのは、それなりに使用に耐えるコードだからだ。
という感じなのだが、お前らこれヒットするのか?
VC++/CLIとC#だとGC周りがだいぶ違うって事か?
つかこれ、どれくらいgraphicsヘビーにすればヒットするんだ?
以下はヒットしているようだが、俺はヒットしない。
https://sorayukinoyume.hatenadiary.org/entry/20121029/1351525436
俺のは40k個Brushを作ってそのまま放置、それを1秒ごとに再描画、
みたいな感じだが、OutOfMemoryなんて起きない。
(ただし、カクつく事があったから今はDisposeを入れてしまったが)
プログラムは演算結果をGUIで表示するもので、演算ヘビーだが、
演算自体はC++ネイティブなのでGCは行われない。
(演算ルーチンではマネージドメモリを消費しない)
なお以下とかは正しいように思う。
https://uchukamen.com/Programming/GC/
https://ladybug.hatenadiary.org/entries/2004/01/10
https://ufcpp.net/study/csharp/rm_gc.html
https://divakk.co.jp/aoyagi/csharp_tips_using.html
https://www.codeproject.com/Articles/48701/Using-GDI-Objects-the-Right-Way
(なお最後はシステムで10,000が上限だと言っているが、これはプロセスの間違いだと思う。《他でそう書いてあったところもあった》
また、タスクマネージャーで見る限り、俺のPCでは全体で10,000は越えているし。
なお一番使っているのはJane2chの8,653だった。Jane糞だなオイ。
chromeは各プロセス毎に600-800位、俺のプログラムはどうやっても50-70を推移してる)
MSも馬鹿じゃないからサンプルコードはそれなりに正しいはず。
絶対にこう書け、なら必ずそう書く。そうでないのはその必要が「普通は」ないからだ。
逆に、普通にサンプルコードで問題が発生するようなら、クレーム来まくりで大変だから、当然のように修正される。
それが為されてないのは、それなりに使用に耐えるコードだからだ。
という感じなのだが、お前らこれヒットするのか?
VC++/CLIとC#だとGC周りがだいぶ違うって事か?
367デフォルトの名無しさん (アウアウウー Sab5-655U)
2019/12/26(木) 14:50:50.75ID:+pzqFzNua >>366
DC(Graphics)は不要になった時点でDisposeした方がいいと思うけど、
PebとかBrushとかFontとか、このあたりがIDisposable実装してるのは
たぶんWin9xを想定してるんだろうねw
.NET 1.1とかの時代に、Win2kやXPではそこまで神経質にならなくていいよ、
って記事を結構読んだ記憶がある
DC(Graphics)は不要になった時点でDisposeした方がいいと思うけど、
PebとかBrushとかFontとか、このあたりがIDisposable実装してるのは
たぶんWin9xを想定してるんだろうねw
.NET 1.1とかの時代に、Win2kやXPではそこまで神経質にならなくていいよ、
って記事を結構読んだ記憶がある
368デフォルトの名無しさん (ワッチョイ ef4f-K0SF)
2019/12/26(木) 14:53:40.92ID:g3TV29VW0 多いから糞って単純な話でもないだろ。表示しているオブジェクトが多いなら仕方がない。
explorerもウィンドウを大量に開くとモリモリ消費する。
explorerもウィンドウを大量に開くとモリモリ消費する。
369デフォルトの名無しさん (ワッチョイ 7f7b-JrBF)
2019/12/26(木) 15:25:02.44ID:2UlJm9YS0 >>368
いやJaneはガチでリークしてると思うぜ。
俺のPC内での今の順位
1. Jane2ch 8,677 ←増えてやがるし
2. explorer 1,340
3. chrome 826
以下chromeが20個ほど続く。
字しか表示しねえJaneでどうやって8,677個になるんだよ?
フォントや色でも精々100だろ。
そもそも複数ページ表示してるchrome越えてる時点でだいぶおかしい。
いやJaneはガチでリークしてると思うぜ。
俺のPC内での今の順位
1. Jane2ch 8,677 ←増えてやがるし
2. explorer 1,340
3. chrome 826
以下chromeが20個ほど続く。
字しか表示しねえJaneでどうやって8,677個になるんだよ?
フォントや色でも精々100だろ。
そもそも複数ページ表示してるchrome越えてる時点でだいぶおかしい。
370デフォルトの名無しさん (ワッチョイ 7f7b-JrBF)
2019/12/26(木) 15:25:33.99ID:2UlJm9YS0 >>367
そのわりにusingガーというのが多いのはなんでだ?
若干Java的オブジェクト指向(オブジェクト指向が唯一絶対神であり、それ以外は認めない)に近い偏見を感じる。
GCなんて手抜きの為の機構であり、逆に言えば、GC使っている以上、書かなくて済む事は書かない、というのが正しいだろ。
全部書け、ならC++を使って全部書き、GCなんて使っている軟派野郎は死ね、とあるべき。
C#でusingって、なんか違うくね?
まあ現実的にヒットするなら致し方ないとして、俺が試した限りでは、どうにもヒットしないように見える。
それとも
> DC(Graphics)は
これはdevice context だけは即時解放した方がいい、ということか?
具体的にはGetHdcメソッドを有する連中だが、見た目Graphicsだけかな。
だとすると俺がやってるBrushでは再現しないのも納得だが、
かといってGraphicsを10,000取得とかいう使い方もないとも思うが。
そのわりにusingガーというのが多いのはなんでだ?
若干Java的オブジェクト指向(オブジェクト指向が唯一絶対神であり、それ以外は認めない)に近い偏見を感じる。
GCなんて手抜きの為の機構であり、逆に言えば、GC使っている以上、書かなくて済む事は書かない、というのが正しいだろ。
全部書け、ならC++を使って全部書き、GCなんて使っている軟派野郎は死ね、とあるべき。
C#でusingって、なんか違うくね?
まあ現実的にヒットするなら致し方ないとして、俺が試した限りでは、どうにもヒットしないように見える。
それとも
> DC(Graphics)は
これはdevice context だけは即時解放した方がいい、ということか?
具体的にはGetHdcメソッドを有する連中だが、見た目Graphicsだけかな。
だとすると俺がやってるBrushでは再現しないのも納得だが、
かといってGraphicsを10,000取得とかいう使い方もないとも思うが。
371デフォルトの名無しさん (ササクッテロル Sp88-9la5)
2019/12/26(木) 15:49:32.19ID:8rtfbEtYp 何をグダグタと気にしてるのかよーわからんな
どうせそのうち回収されるんだから無駄に残ってるのが気にならねえならどうでもいいだろ
精々Janeみたいに過剰に確保されてるのを観測されてクソクソ言われるのが自分のアプリになるだけだ
どうせそのうち回収されるんだから無駄に残ってるのが気にならねえならどうでもいいだろ
精々Janeみたいに過剰に確保されてるのを観測されてクソクソ言われるのが自分のアプリになるだけだ
372デフォルトの名無しさん (ドコグロ MM40-NvuD)
2019/12/26(木) 16:01:00.94ID:Wx+k6OqqM つか本来は実際に画面に表示されてる間だけアンマネージリソースを確保すればいいわけで、設計が手抜きなんだよ
まあ、そういう思想でスマートなリソース管理をしてるWPFはゴミのように遅いわけだがw
まあ、そういう思想でスマートなリソース管理をしてるWPFはゴミのように遅いわけだがw
373デフォルトの名無しさん (アウアウウー Sab5-655U)
2019/12/26(木) 16:08:06.67ID:+pzqFzNua >>370
なんかちょっと被害妄想激しいよw
IDisposableを実装してたら絶対Disposeすべき、という教条主義を展開してる記事って
あんまり読んだ記憶ないけど、まあusingブロックは十分コンパクトに書けてかつ便利なので、
Disposeしなくてもいい、という確信が持てないなら素直にDisposeするのが普通に安全牌だよね。
※ 個別にDisposeを呼ぶんじゃなくてusingを使え、という趣旨の記事ならいくつか読んだことある
なんかちょっと被害妄想激しいよw
IDisposableを実装してたら絶対Disposeすべき、という教条主義を展開してる記事って
あんまり読んだ記憶ないけど、まあusingブロックは十分コンパクトに書けてかつ便利なので、
Disposeしなくてもいい、という確信が持てないなら素直にDisposeするのが普通に安全牌だよね。
※ 個別にDisposeを呼ぶんじゃなくてusingを使え、という趣旨の記事ならいくつか読んだことある
374デフォルトの名無しさん (ワッチョイ 7f7b-JrBF)
2019/12/26(木) 16:15:52.27ID:2UlJm9YS0 >>371
俺自身は「usingを使うべき」とされる解説ページでお約束的に出される
・そこで例外が発生してdisposeされずに抜けてしまった場合、リークする
が間違い(というか誇大)だと見ているのだが、これが間違ってるかどうかをここで尋ねている。
俺の認識に間違いがないとすると、
俺が試した限りではヒットすることが難しいのに、何故ここまでusingにこだわるのか?というのが疑問になる。
勿論こだわるのもありだが、C#ってそういう言語でもないし。
なお俺のはdisposeしてなくて50-70だぞ。
そこで上記の通り、Brushを40k個作ってもだ。
(もっとも、多すぎてGCが常に速攻行われているだけかもしれないが)
JaneStyleは調べたところOpenJaneからの派生で、OpenJaneはDelphiで、これはGC無しらしい。
つまりモロにリークしてるだけだよ。
俺自身は「usingを使うべき」とされる解説ページでお約束的に出される
・そこで例外が発生してdisposeされずに抜けてしまった場合、リークする
が間違い(というか誇大)だと見ているのだが、これが間違ってるかどうかをここで尋ねている。
俺の認識に間違いがないとすると、
俺が試した限りではヒットすることが難しいのに、何故ここまでusingにこだわるのか?というのが疑問になる。
勿論こだわるのもありだが、C#ってそういう言語でもないし。
なお俺のはdisposeしてなくて50-70だぞ。
そこで上記の通り、Brushを40k個作ってもだ。
(もっとも、多すぎてGCが常に速攻行われているだけかもしれないが)
JaneStyleは調べたところOpenJaneからの派生で、OpenJaneはDelphiで、これはGC無しらしい。
つまりモロにリークしてるだけだよ。
375デフォルトの名無しさん (ワッチョイ f12d-vQnI)
2019/12/26(木) 16:30:20.52ID:bzjIw0U90 尋ねてるって言うけど、君の求めてる通りの回答以外は認めないんでしょ
聞くだけ無駄じゃん
聞くだけ無駄じゃん
376デフォルトの名無しさん (ワッチョイ 7f7b-JrBF)
2019/12/26(木) 16:40:38.25ID:2UlJm9YS0 >>373
> Disposeしなくてもいい、という確信が持てないなら素直にDisposeするのが普通に安全牌だよね。
つまりこれ。
実はDisposeしなくていいんじゃねえの?というのが俺の疑問。
ヒットしている人がいるから何か要件はあるのだろうけど、俺が試してる限りではヒットさせようがないように見える。
とはいえ、ヒットする可能性がある限り、解説ページ等では「Disposeしなくていい」とは書けない。
だけどほぼ必要がないことはMSも認めてるからサンプルページではusingなんて使っておらず、
usingについてのリンクすらない、というように見える。
(つまりサンプルページを確認しているレベルの奴がヒットさせようがなく、
余計な混乱を防ぐ為にも書かない方がいい、とMSが判断してる。
まあ>>361-363はモロにそう言ってるわけだが)
ただこの状況でも、自分だけが使うならともかく、他人も使うとなると、
using使わないわけには行かない、というのは認める。
だからなんだかなあ、みたいな感じになってる。
結局のところ、これは俺の環境のみならず、
.NETが動くありとあらゆる環境に於いて問題なく動くプログラムを作る為の作法であって、
MSがusing使えと言う以上、書くしかない、ということか。
それが俺のPCでは再現不能だとしても、それはたまたまでしかない、ということであって。
> Disposeしなくてもいい、という確信が持てないなら素直にDisposeするのが普通に安全牌だよね。
つまりこれ。
実はDisposeしなくていいんじゃねえの?というのが俺の疑問。
ヒットしている人がいるから何か要件はあるのだろうけど、俺が試してる限りではヒットさせようがないように見える。
とはいえ、ヒットする可能性がある限り、解説ページ等では「Disposeしなくていい」とは書けない。
だけどほぼ必要がないことはMSも認めてるからサンプルページではusingなんて使っておらず、
usingについてのリンクすらない、というように見える。
(つまりサンプルページを確認しているレベルの奴がヒットさせようがなく、
余計な混乱を防ぐ為にも書かない方がいい、とMSが判断してる。
まあ>>361-363はモロにそう言ってるわけだが)
ただこの状況でも、自分だけが使うならともかく、他人も使うとなると、
using使わないわけには行かない、というのは認める。
だからなんだかなあ、みたいな感じになってる。
結局のところ、これは俺の環境のみならず、
.NETが動くありとあらゆる環境に於いて問題なく動くプログラムを作る為の作法であって、
MSがusing使えと言う以上、書くしかない、ということか。
それが俺のPCでは再現不能だとしても、それはたまたまでしかない、ということであって。
377デフォルトの名無しさん (ガックシ 0634-K0SF)
2019/12/26(木) 16:47:16.53ID:BHrZHcGr6 c#のListをイテレーションするサンプルをウェブで探していたんだけど、インデックスでアクセスして回しているコードがよく見つかるんだけど、
Listのデータ構造はリストではないの?
Listのデータ構造はリストではないの?
378デフォルトの名無しさん (アウアウウー Sab5-655U)
2019/12/26(木) 16:48:04.03ID:+pzqFzNua >>376
上に書いたWin9x環境を特に想定した実装、というようなケースを除けば
そのクラスを作ったプログラマは「不要になったらDisposeを呼んで欲しい」と思っているから
IDisposableを実装している。
だからDisposeしなくてもいい、という確信が持てないなら(以下略
上に書いたWin9x環境を特に想定した実装、というようなケースを除けば
そのクラスを作ったプログラマは「不要になったらDisposeを呼んで欲しい」と思っているから
IDisposableを実装している。
だからDisposeしなくてもいい、という確信が持てないなら(以下略
379デフォルトの名無しさん (ワッチョイ dc2c-++NQ)
2019/12/26(木) 16:55:18.99ID:WMR2NHe80380デフォルトの名無しさん (ワッチョイ 6c88-hRE6)
2019/12/26(木) 16:59:42.72ID:F8ujXl8x0 GC任せではなく明示的にメモリを開放していかきゃ動作に支障をきたすような少メモリな環境だって世の中にはある
381デフォルトの名無しさん (ドコグロ MM40-NvuD)
2019/12/26(木) 17:03:28.05ID:Wx+k6OqqM382デフォルトの名無しさん (ワッチョイ 7f7b-JrBF)
2019/12/26(木) 17:07:04.85ID:2UlJm9YS0 >>378
なるほど確かにその通りだ。
設計者が想定したとおりに使うのが安牌であり、
書いておけば済む物を、特段メリットもないのに書かずに済ませて後で嵌るのは生産性が悪い、というのはC#的には当たりだ。
呼ぶか呼ばないかは使用者が判断するものではなく、設計者がIDisposableを実装するかどうかで示し、それに従え、ということか。
まあ長期的に見てその思想が正しいんだろう。
なるほど納得した。
なるほど確かにその通りだ。
設計者が想定したとおりに使うのが安牌であり、
書いておけば済む物を、特段メリットもないのに書かずに済ませて後で嵌るのは生産性が悪い、というのはC#的には当たりだ。
呼ぶか呼ばないかは使用者が判断するものではなく、設計者がIDisposableを実装するかどうかで示し、それに従え、ということか。
まあ長期的に見てその思想が正しいんだろう。
なるほど納得した。
383デフォルトの名無しさん (ワッチョイ 7f7b-JrBF)
2019/12/26(木) 17:10:19.42ID:2UlJm9YS0384デフォルトの名無しさん (ワッチョイ 1e6f-RbSw)
2019/12/26(木) 18:35:58.39ID:EoULV8Z50 disposeされなくてもデストラクタで解放されるが、
かなり高コストな処理が発生するそうな
https://ufcpp.net/study/csharp/rm_disposable.html#idisposable
かなり高コストな処理が発生するそうな
https://ufcpp.net/study/csharp/rm_disposable.html#idisposable
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【実況】博衣こよりのえちえち歌枠🧪★2
- 【画像】外務省局長「この度はうちの🦎がすみません…」中国「……」 [165981677]
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 外務省局長、よくわからないまま帰国へ [834922174]
