[過去ログ]
ふらっと C#,C♯,C#(初心者用) Part154 (1002レス)
ふらっと C#,C♯,C#(初心者用) Part154 http://mevius.5ch.net/test/read.cgi/tech/1644416019/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
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
306: デフォルトの名無しさん (ブーイモ MMeb-n2Eo) [sage] 2022/03/23(水) 06:36:55.59 ID:Br4OtuZoM 長文ゲェジ共空気読めよ (ユーザーが)欠陥言語 確かに間違ってねーな http://mevius.5ch.net/test/read.cgi/tech/1644416019/306
307: デフォルトの名無しさん (ブーイモ MM4d-NnL5) [sage] 2022/03/23(水) 23:47:04.44 ID:blfYR8q/M デストラーデがどうしたって? http://mevius.5ch.net/test/read.cgi/tech/1644416019/307
308: デフォルトの名無しさん (ワッチョイ 1302-dhUW) [sage] 2022/03/24(木) 04:45:47.25 ID:AIr8SSYM0 ゼントラーディがキュンキュン☆ http://mevius.5ch.net/test/read.cgi/tech/1644416019/308
309: デフォルトの名無しさん (ワッチョイ 9e68-VQaK) [sage] 2022/03/27(日) 19:21:45.49 ID:ThH+K+970 float,double型について質問です。基本的に精度のたかいdouble型オンリーで良いと思います。 double型だけじゃなくfloat型が混ざっているソースをみるのですがそれは何故でしょうか? http://mevius.5ch.net/test/read.cgi/tech/1644416019/309
310: デフォルトの名無しさん (ワッチョイ 5e7b-+Ivz) [sage] 2022/03/27(日) 19:25:09.32 ID:p42Vgj/c0 >>309 C#に限った話じゃないがdoubleの方がメモリを多く使って計算速度も遅くなるから http://mevius.5ch.net/test/read.cgi/tech/1644416019/310
311: デフォルトの名無しさん (ワッチョイ 9e68-VQaK) [sage] 2022/03/27(日) 19:30:11.97 ID:ThH+K+970 >>310 ありがとうございます。 リストのときにdoubleじゃなくfloatがよく使われてたのはそれが理由だったんですね。 http://mevius.5ch.net/test/read.cgi/tech/1644416019/311
312: デフォルトの名無しさん (ワッチョイ 5ecf-+Ivz) [sage] 2022/03/27(日) 20:53:18.65 ID:rqiHHq3k0 floatとdoubleの混用なんてそんな傾向が見いだせるほど頻繁に使われているとは思えんが。 たまたま見たそのコードではそういう使い方をしていたに過ぎないんでは。 http://mevius.5ch.net/test/read.cgi/tech/1644416019/312
313: デフォルトの名無しさん (ワッチョイ 3179-yByv) [sage] 2022/03/27(日) 22:06:23.31 ID:XoV4gFeA0 昔のコードをまだ使っててfloatのとこがあるって理由じゃねーかな? http://mevius.5ch.net/test/read.cgi/tech/1644416019/313
314: デフォルトの名無しさん (ワッチョイ b1d2-JyYd) [sage] 2022/03/27(日) 22:32:37.28 ID:K7MWSPEs0 C++では機械学習と3Dレンダリングでの並列化を目的にfloat16_tとかいう概念が生産されたりしてるからfloat自体は過去の遺物ってほどでもない C#だと実行速度を気にするよりも開発を楽にすることを重視することが多いからdoubleオンリーでいいのは確か http://mevius.5ch.net/test/read.cgi/tech/1644416019/314
315: デフォルトの名無しさん (ワッチョイ 6502-QEpm) [sage] 2022/03/27(日) 23:11:31.46 ID:HQutMm3I0 専用命令とかでベクトル演算するなら、floatの方が同時に演算出来る数が多いから単純に速くなる http://mevius.5ch.net/test/read.cgi/tech/1644416019/315
316: デフォルトの名無しさん (ワッチョイ a901-oYu3) [sage] 2022/03/28(月) 01:08:53.91 ID:TOp/Y7AF0 まぁ精度や速度がクリティカルでなければ悩む時間が無駄だしdoubleでいいでしょ http://mevius.5ch.net/test/read.cgi/tech/1644416019/316
317: デフォルトの名無しさん (オッペケ Sr79-qy3V) [sage] 2022/03/28(月) 09:26:10.00 ID:1rap9yocr >>309 主に組み込みのシステムと通信していたりする場合、相手が float のサイズを要求することもある。 >>310 メモリは多く使うが、今どきはハードウェアで double を計算するはずなんで、遅いはダウト。 むしろfloat の方が double への変換の分遅くなるまである。 http://mevius.5ch.net/test/read.cgi/tech/1644416019/317
318: デフォルトの名無しさん (ワッチョイ 92ad-Xzp3) [sage] 2022/03/28(月) 09:29:45.95 ID:MxvDEKd20 いまだにダウトとか言う香具師っているんだな ダウトとか今日日聞かねえわ http://mevius.5ch.net/test/read.cgi/tech/1644416019/318
319: デフォルトの名無しさん (ワッチョイ ad49-+/qe) [sage] 2022/03/28(月) 11:03:16.37 ID:9Kb03WZY0 というかそれぞれの場合過ぎるやろ 「基本doubleでいい」には自分は同意するけど、 別にfloat使ってたからって誤差が問題ないなら何も言わない わざわざ変換を何度もして計算してたら気にするけども、そこまで求められる現場もそう多くないのでは http://mevius.5ch.net/test/read.cgi/tech/1644416019/319
320: デフォルトの名無しさん (ワッチョイ debb-a3iW) [sage] 2022/03/28(月) 11:19:15.17 ID:8MPYL/o90 >>318 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ( ´∀`)< オマエモナー ( ) \_____ | | | (__)_) http://mevius.5ch.net/test/read.cgi/tech/1644416019/320
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 682 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.020s