[過去ログ]
ふらっと C#,C♯,C#(初心者用) Part154 (1002レス)
ふらっと C#,C♯,C#(初心者用) Part154 http://mevius.5ch.net/test/read.cgi/tech/1644416019/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
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/1644416019/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
301: デフォルトの名無しさん (テテンテンテン MMeb-NT4g) [sage] 2022/03/22(火) 23:25:36.30 ID:Ky9cYioTM あれどっかに書かれてたと思ったんだが・・・と思って調べたら https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/finalizers#explicit-release-of-resources 「高額な外部リソースを使用している場合」という限定で「明示的に解放する手段を用意することが推奨されます」 とはあったけど、デストラクタなど使うべきではないとまでは書かれてなかった たしかにちょっと踏み込みすぎたか てか「デストラクター」じゃなくて「ファイナライザー」って呼ぶように変わったのね・・・いつから? そのわりに https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/language-specification/classes#destructors では「デストラクター」のままだったりしてるけど http://mevius.5ch.net/test/read.cgi/tech/1644416019/301
302: デフォルトの名無しさん (ワッチョイ 51d2-3X4l) [sage] 2022/03/22(火) 23:40:08.97 ID:OaCGWLhd0 元々finalizeはCLR側の用語でデストラクタはC#側の用語。 MSのゆとり化が進んで馬鹿すぎて区別できなくなったんだよ。 http://mevius.5ch.net/test/read.cgi/tech/1644416019/302
303: デフォルトの名無しさん (ワッチョイ 112f-kNuw) [sage] 2022/03/22(火) 23:47:20.01 ID:3UvLvdTM0 デストラクタを実装したクラスはガベコレの効率が落ちる(世代があがる)からなるべく使うなって話だったはず http://mevius.5ch.net/test/read.cgi/tech/1644416019/303
304: デフォルトの名無しさん (テテンテンテン MMeb-NT4g) [sage] 2022/03/23(水) 00:14:26.29 ID:fh4EIdzSM >>302 >>303 の書き込みをヒントに検索したら https://ufcpp.net/study/csharp/rm_gc.html?sec=cost-to-finalize#finalize このページにたどり着いて デストラクタ→ファイナライザに呼び名が変わる理由もデストラクタのコストが極大なことも分かった GC.SuppressFinalize()っていままで意味が分からないまま機械的に書いてたけど大事だったのね いろいろ賢くなれた、ありがとう http://mevius.5ch.net/test/read.cgi/tech/1644416019/304
305: デフォルトの名無しさん (ワッチョイ 8b63-whB1) [sage] 2022/03/23(水) 06:24:39.80 ID:XsByKBbP0 ならなくていいから直近50レス以内で俺以外に書き込んでるやつは直ちに全員頭かち割って中央線の始発に飛び込んで死ね http://mevius.5ch.net/test/read.cgi/tech/1644416019/305
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 697 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.022s