[過去ログ]
ふらっと C#,C♯,C#(初心者用) Part154 (1002レス)
ふらっと C#,C♯,C#(初心者用) Part154 http://mevius.5ch.net/test/read.cgi/tech/1644416019/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
271: デフォルトの名無しさん (ワッチョイ 8bbb-216p) [sage] 2022/03/22(火) 09:03:08.94 ID:kAgwAO/L0 >>270 草 http://mevius.5ch.net/test/read.cgi/tech/1644416019/271
272: デフォルトの名無しさん (ワッチョイ 51d2-3X4l) [sage] 2022/03/22(火) 09:22:16.11 ID:OaCGWLhd0 ( ´_ゝ`)プッ http://mevius.5ch.net/test/read.cgi/tech/1644416019/272
273: デフォルトの名無しさん (ワッチョイ 8bbb-216p) [sage] 2022/03/22(火) 10:11:19.03 ID:kAgwAO/L0 使い終わったら常にdispose()呼ぶだけ!キリッ 話の本質わかってなくて草生える http://mevius.5ch.net/test/read.cgi/tech/1644416019/273
274: デフォルトの名無しさん (ワッチョイ 132c-P46e) [sage] 2022/03/22(火) 10:34:09.76 ID:G7lfoYcY0 Disposeでマネージ/アンマネージってことは protected virtual Dispose(bool disposing) のdisposingの真偽で何を解放すべきかってことだよね .NETのオブジェクトとして存在しているモノがマネージリソース 大体は自分がメンバに持ってるIDisposableなオブジェクトを意味する これらはdisposing==trueのときだけDisposeすればいい アンマネージリソースはWindowsのAPIとかで直接確保したデバイスコンテキストとかメモリ 大抵はIntPtr型で保持してい
る こういうのはそれぞれのリソースの解放方法に従った方法で直接解放する これらはdisposingに関わらず常に解放する http://mevius.5ch.net/test/read.cgi/tech/1644416019/274
275: デフォルトの名無しさん (ワッチョイ 51d2-3X4l) [sage] 2022/03/22(火) 10:35:59.07 ID:OaCGWLhd0 > いちいち継承元全部辿ってIDisposableあるか確認して手動で開放しないとリークしまーすとかいう欠陥言語 分かってるよ。話の本質は、馬鹿がヘジが開発した言語にマウンティングした、ということだろう。 だがその試みは失敗した。それだけ。 なんならwin32リソースについて言語はどう管理すべきいくらでもキミの意見を語っていいんだぜ? だがキミからは何も出てこない。知ったか初心者だからだ。 http://mevius.5ch.net/test/read.cgi/tech/1
644416019/275
276: デフォルトの名無しさん (ブーイモ MMeb-n2Eo) [sage] 2022/03/22(火) 11:53:43.00 ID:myN/pITuM そうカッカすんなよおっさん見苦しいぞ http://mevius.5ch.net/test/read.cgi/tech/1644416019/276
277: デフォルトの名無しさん (ワッチョイ 8bbb-216p) [sage] 2022/03/22(火) 12:15:11.68 ID:kAgwAO/L0 >>275 顔真っ赤で草 http://mevius.5ch.net/test/read.cgi/tech/1644416019/277
278: デフォルトの名無しさん (ワッチョイ 51d2-3X4l) [sage] 2022/03/22(火) 12:31:50.91 ID:OaCGWLhd0 初歩的なリソース管理程度で発狂して言語貶してるド初心者に 馬鹿にされてキレるわけないだろう。馬鹿かこいつ、としか思わん。 http://mevius.5ch.net/test/read.cgi/tech/1644416019/278
279: デフォルトの名無しさん (ワッチョイ 8b63-whB1) [sage] 2022/03/22(火) 15:52:49.70 ID:XhX0v2Lu0 その調子で血管切って死なねーかな http://mevius.5ch.net/test/read.cgi/tech/1644416019/279
280: デフォルトの名無しさん (テテンテンテン MMeb-zKmY) [sage] 2022/03/22(火) 17:16:17.21 ID:pk95uqSaM あああああああああああああああああああああああああああああああ!!!!!!!!!!!(ブリブリブリブリュリュリュリュリュリュ!!!!!!ブツチチブブブチチチチブリリイリブブブブゥゥゥゥッッッ!!!!!!!) http://mevius.5ch.net/test/read.cgi/tech/1644416019/280
281: デフォルトの名無しさん (ワッチョイ 2979-zSlE) [sage] 2022/03/22(火) 19:17:57.13 ID:kPYOUkgu0 そもそもc#のデストラクタが産廃だからあてにしてる動作だろ http://mevius.5ch.net/test/read.cgi/tech/1644416019/281
282: デフォルトの名無しさん (スップ Sd73-2DeC) [sage] 2022/03/22(火) 19:49:04.13 ID:1zUmccnld GC(マークアンドスイープ)+FinalizeとDisposeの相性が悪いだけだろ C#に限った話じゃない http://mevius.5ch.net/test/read.cgi/tech/1644416019/282
283: デフォルトの名無しさん (ワッチョイ 4901-cTkz) [sage] 2022/03/22(火) 20:58:45.96 ID:hNvbiY4S0 exe終了したら何もかも解放されるんでしょ? http://mevius.5ch.net/test/read.cgi/tech/1644416019/283
284: デフォルトの名無しさん (アウアウウー Sa5d-580B) [sage] 2022/03/22(火) 21:05:08.48 ID:HvRJN3MAa 基本的には終了で開放だけど、すべてが開放されるとは限らない よくあるのがexe内部でexcel使ったら、exe終了してもexcelのプロセス残ったままみたいなやつ http://mevius.5ch.net/test/read.cgi/tech/1644416019/284
285: デフォルトの名無しさん (ワッチョイ 8bbb-216p) [sage] 2022/03/22(火) 21:09:25.23 ID:kAgwAO/L0 ようやく>>282みたいなまともな回答出てきて嬉しい スコープ外れたタイミングでデストラクタ呼び出し保証しなかった理由ってどこかに解説とかないのかな? C#の現状のデストラクタとかガチゴミじゃん http://mevius.5ch.net/test/read.cgi/tech/1644416019/285
286: デフォルトの名無しさん (テテンテンテン MMeb-NT4g) [sage] 2022/03/22(火) 21:19:04.18 ID:Ky9cYioTM またいつもの質問者そっちのけでの罵倒合戦かよ・・・・・ アンマネージドリソースは文字通りC#の管理下にない(un-managedな)リソース 具体的にはunsafeで確保した配列・ポインタやWin32APIを呼び出して確保したIntPtrなど Disposeのタイミングで適切な手法で(それこそWin32APIを呼ぶなどして)リソース解放しないとメモリリークする マネージドリソースはC#の管理下にあるリソース全般 FileStreamやDbConnection、Bitmapオブジェクトなどもこれ
そういうオブジェクトをクラス内のメンバ変数で持ってるなら、Disposeメソッド内で それらのメンバ変数のDispose()を呼ぶことでリソース解放するお約束になってる >>263の説明はデタラメもいいとこだしそもそも「IDispose」ってなんだよ >>263のデタラメに気付かずC#を欠陥言語呼ばわりするために乗っかった>>266の言ってることも同じくデタラメなんだけど こいつは罵倒マウンティングすること自体が目的でわざとデタラメに乗ってるのかそれとも素で理解してないのかは分からん http://mevius.5ch.net/test/read.cgi/tech/164441
6019/286
287: デフォルトの名無しさん (ワッチョイ 8bcf-noGs) [sage] 2022/03/22(火) 21:23:17.10 ID:0A7XAa2y0 C++/CLIならデストラクタが使えるから問題ないんだよな。捨てたのはもったいない。 http://mevius.5ch.net/test/read.cgi/tech/1644416019/287
288: デフォルトの名無しさん (ワッチョイ 8bbb-216p) [sage] 2022/03/22(火) 21:31:04.74 ID:kAgwAO/L0 それな GCとかの仕組み上どうしても無理でしたってんなら納得逝くんだけどその辺知りたい http://mevius.5ch.net/test/read.cgi/tech/1644416019/288
289: デフォルトの名無しさん (スップ Sd73-foG8) [sage] 2022/03/22(火) 21:39:13.30 ID:6LsnJNlYd >>285 スコープ外れたってどうやって判断するの? http://mevius.5ch.net/test/read.cgi/tech/1644416019/289
290: デフォルトの名無しさん (ワッチョイ f9ac-MdQT) [sage] 2022/03/22(火) 21:39:56.93 ID:3weeWjHs0 というかここら辺はサンプルというか、実際使ってるコードみないとピンとこんよな これは意味あるIdisposable、こっちは意味ないとかで http://mevius.5ch.net/test/read.cgi/tech/1644416019/290
291: デフォルトの名無しさん (スップ Sd73-2DeC) [sage] 2022/03/22(火) 21:41:21.16 ID:1zUmccnld >>287 ref class C{ ~C(){} // Destructor !C(){} // Finalizer }; のコンパイル結果が // C# DLL class C:IDisposable{ Dispose(); //Destructor??? ~C();//Finalizer } であることをご存知でない? http://mevius.5ch.net/test/read.cgi/tech/1644416019/291
292: デフォルトの名無しさん (ワッチョイ 51d2-3X4l) [sage] 2022/03/22(火) 21:46:59.16 ID:OaCGWLhd0 C#を欠陥言語呼ばわりするだけあってGCが何かすら知らないアホの子だったとさ。 ヤレヤレ ┐(´ー`)┌ マイッタネ http://mevius.5ch.net/test/read.cgi/tech/1644416019/292
293: デフォルトの名無しさん (ワッチョイ 8bbb-216p) [sage] 2022/03/22(火) 21:51:59.68 ID:kAgwAO/L0 >>289 言語自体の実装は見たこと無いからサパーリ せやから解説とかしてる人いないのかなって http://mevius.5ch.net/test/read.cgi/tech/1644416019/293
294: デフォルトの名無しさん (ワッチョイ 2979-zSlE) [sage] 2022/03/22(火) 21:52:39.06 ID:kPYOUkgu0 >>283 されねーんじゃねーか? 俺はあふれるまで動かないって言ってるじゃん msdnより ガベージ コレクションの条件 ガベージ コレクションは、次のいずれかの条件に当てはまる場合に発生します。 システムの物理メモリが少ない場合。 OS からのメモリ不足通知またはホストによって示されたメモリ不足のいずれかによって検出されます。 マネージド ヒープで割り当てられたオブジェクトによって使用されているメモリが、許容されるしきい値
を超える場合。 このしきい値は、プロセスの進行に合わせて絶えず調整されます。 GC.Collect メソッドが呼び出されます。 ほとんどの場合、ガベージ コレクターは継続して実行されるため、このメソッドを呼び出す必要はありません。 このメソッドは、主に特別な状況やテストで使用されます。 http://mevius.5ch.net/test/read.cgi/tech/1644416019/294
295: デフォルトの名無しさん (ワッチョイ 8bcf-noGs) [sage] 2022/03/22(火) 21:53:03.08 ID:0A7XAa2y0 >>291 スコープを外れたときに自動的にDispose()が呼ばれるから問題ないってことなんだが。 http://mevius.5ch.net/test/read.cgi/tech/1644416019/295
296: デフォルトの名無しさん (スップ Sd73-2DeC) [sage] 2022/03/22(火) 22:22:58.92 ID:1zUmccnld >>288 お前はメモリとかリソースの管理を他の言語でどうしてるかもっと勉強するべきだ C/C++がユーザーに全部丸投げしてるのがいい加減辛いので言語側が管理すればいいんじゃね?ってのがGC。 GCの方式で主流なのは参照カウント方式とマークアンドスイープ方式。 参照カウント方式は循環参照(this._obj=this)があると回収されないから、 C#多少大きめのコストを支払ってでもマークアンドスイープ方式にした。 リソース解放のタイミングをコン
トロールしたけりゃIDisposable使え 解放漏れの保険でファイナライザ使え https://ufcpp.net/study/csharp/rm_disposable.html C#1.0のリリースが2002/02だから当時はそれでも充分だったんだろう http://mevius.5ch.net/test/read.cgi/tech/1644416019/296
297: デフォルトの名無しさん (テテンテンテン MMeb-NT4g) [sage] 2022/03/22(火) 22:39:21.44 ID:Ky9cYioTM そもそもC#は「デストラクタなぞ使うべきではない」っていう思想だし それゆえにリソースの解放はデストラクタではなくDispose()で行う (万一Dispose()を呼び忘れた場合に備えて>>291の実装でデストラクタで救済するけど、これも パフォーマンス上好ましくないんでDispose(bool disposing)みたいなDisposeパターンの書き方で処理を最小化する) って方針で首尾一貫してるんだけどさあ その方針にケチつけてデストラクタがクソだのIDispose確
認がメンドクサイだの言ってる人たちのほうがおかしいだけなんだよ >>273が 「話の本質わかってなくて草生える」 とか書いてるけどまさにそのとおり http://mevius.5ch.net/test/read.cgi/tech/1644416019/297
298: デフォルトの名無しさん (テテンテンテン MMeb-NT4g) [sage] 2022/03/22(火) 22:49:13.09 ID:Ky9cYioTM もひとつ気になってたんだけど、Dispose()呼び出しの必要性をいちいち確認して書くのが大変っていうけどホントかよ? マネージドリソースを扱うにしたって、ローカル変数ならusingで書けばDisposeいらないよね? 最近のC#のバージョンなら中括弧で囲う必要すらなくなったよ? クラス内のインスタンス変数だとしてもさあ、 DIで初期化するフィールドならDIコンテナに任せればDispose()呼ばなくていい 自前で生成初期化するフィールドだとしてもその
個数もたかが知れてるしDisposeの要否も明快に分かるでしょ それとも、自分で書いてるクラスの中がごちゃごちゃでDisposeが必要な変数がどれか把握しきれないってこと? そんなクソみたいなゴミ溜めクラスしか書いてないのだとすれば、言語仕様じゃなくてクラス設計/実装能力の問題だと思うんだよね http://mevius.5ch.net/test/read.cgi/tech/1644416019/298
299: デフォルトの名無しさん (テテンテンテン MMeb-NT4g) [sage] 2022/03/22(火) 22:56:19.99 ID:Ky9cYioTM ごめん嘘書いた >>291の実装はC++/CLIの話だったのか(ごめんC++/CLIはやったことがないので判らない) Disposeパターンのデストラクタと似たようなものだと思い込んで混同しちゃってた http://mevius.5ch.net/test/read.cgi/tech/1644416019/299
300: デフォルトの名無しさん (ワッチョイ 51d2-3X4l) [sage] 2022/03/22(火) 22:56:39.59 ID:OaCGWLhd0 > そもそもC#は「デストラクタなぞ使うべきではない」っていう思想だし 聞いたことねーなw デストラクタは非同期ですってだけだ。同期したいならdispose使えという単純な話でしかない。 http://mevius.5ch.net/test/read.cgi/tech/1644416019/300
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 702 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.027s