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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0fe3-wadS)
垢版 |
2022/02/09(水) 23:13:39.45ID:1A90hyai0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part153
https://mevius.5ch.net/test/read.cgi/tech/1639403601/
■関連スレ
C#, C♯, C#相談室 Part96
https://mevius.5ch.net/test/read.cgi/tech/1639965805/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries/
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries/
https://referencesource.microsoft.com/
https://source.dot.net/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2022/03/13(日) 10:47:50.99ID:vXOJHn5g0
191だけど、ミスった

参考ページを提示しているusingのところはC++のやつに読み替えてね
193デフォルトの名無しさん (ワッチョイ 2e68-pPbi)
垢版 |
2022/03/13(日) 10:49:58.20ID:IGUcP/is0
>>191
ありがとうございます
参考にします
2022/03/13(日) 23:57:03.38ID:Z9Glx4pW0
>>181 >>183
ありがとうございます
アドバイス通り引数を直したんですがメール送られてこず…でした
仰るとおり自分のメールアドレスにログインして別のメールアドレスにメールを送るプログラムなんですが
何処を直したら正常に機能しそうですかね
2022/03/14(月) 00:07:12.67ID:jx7Gq6xC0
180のメールメソッドの内容を
https://ideone.com/9IoPl4
に変えたのですが変化無しでした。1から考え直すしかないでしょうか
2022/03/14(月) 00:35:23.85ID:uIprxjAI0
https://docs.microsoft.com/ja-jp/dotnet/api/system.net.mail.smtpclient.send?view=net-6.0#system-net-mail-smtpclient-send(system-net-mail-mailmessage)

失敗したらなんかのExceptionが投げられるみたいだから
catch(Exception ex){ Console.Error.WriteIine(ex);}
してみろ以上のことが言えん
2022/03/14(月) 00:44:53.46ID:k1s/giD10
IE7ベースのWebbrorser が古いので新たに使うとしたら
Webviw2 と CefSharp どっちがいいですか?
2022/03/14(月) 00:57:27.18ID:XtxfFNUva
好きにしろよ
俺はwebview2一択だと思ってる
2022/03/14(月) 01:33:25.53ID:j1ckIHBu0
CefSharpは起動重いな。
WebVieW2は速いがあまり浸透してないコンポーネントのインストールが必要だわな。
2022/03/14(月) 10:17:48.69ID:/kSWYd/QM
Chromium関連のファイルサイズがでかいからそのへん気になるならWebView2
MSを信用しないならCefSharp
2022/03/14(月) 14:06:43.59ID:fKAVqTeN0
WebView2 以前ちょっと使ったけど、ページ表示前の初期化が毎回遅かったような記憶がある。
記憶違いかもしれないけど。
2022/03/14(月) 14:24:28.43ID:XtxfFNUva
コンストラクタでurl代入できりゃいいのに、その頃はまだ内部での初期化が終わってないからできないな
2022/03/14(月) 14:55:17.24ID:akZZG4oSr
Webは戻る進むがあるからしっかりステート管理しないとしぬ
204デフォルトの名無しさん (ワッチョイ 12bd-eKgF)
垢版 |
2022/03/14(月) 21:53:50.24ID:3nbBdTge0
簡単な図形データをdxfファイルにしてみたいんですけど、どこか参考になるサイトないですか?

幅500o✖長さ1000oの長方形枠内に円とか長方形とかそんな感じのもので、レイヤーとか線種とかとくなく実線のみで表現したいんですけど。
2022/03/14(月) 22:00:22.47ID:Wh2n8FEC0
https://www.codeproject.com/Articles/156522/DXF-Import-NET-Read-and-View-AutoCAD-Format-Files
2022/03/14(月) 23:03:31.17ID:rbCSOV+9a
dxfを読みたいっていうとバイナリだ3dだ色だなんだって色々なパターンあるから大変だけど
dxfを書き出したいってだけなら難しいこと考えずに適当に「dxf ファイル仕様」とかぐぐって調べたらいいよ
207デフォルトの名無しさん (スプッッ Sda2-eKgF)
垢版 |
2022/03/15(火) 06:37:09.86ID:Hxz/HcaZd
ありがとうございます!
2022/03/15(火) 07:49:26.57ID:FHh5bEnc0
いえいえ
2022/03/16(水) 17:05:06.84ID:KL1RQagld
formsでスケーリング変えると部品の位置がズレたりするんだけど、
是正する定番の方法あったら教えてたもれ
2022/03/16(水) 17:51:38.31ID:sDB+P2C+0
>>209
フォームのサイズが変更されたとき?

サイズ変更についてなら「サイズが変更された」ときのイベント内で再計算するか、Panel系クラスを利用して表示するかだと思う

フォームの大きさを小さくしたら下に回り込むようなやつならFlowLayoutPanelで、HTMLでいうテーブルならTableLayoutPanelとか

Panel系にDockをFillにしたりすれば再計算はプログラムがやってくれる
2022/03/16(水) 18:39:08.14ID:3Hj+1jHn0
スケーリング変えた時、だろ
2022/03/16(水) 18:55:49.03ID:IT+0ZBM10
>>209 ですが、
色気を出して最初にSetProcessDPIAware()を呼んでたので、これ呼ぶのをやめたらズレは直りました。
これはフォントがボヤンとするいわゆるDPI仮想化状態ですね。
ただこれだと座標取得関係に難ありだったと記憶してるので、
SetProcessDPIAware()を呼び出しつつ、
form1.AutoScaleMode = AutoScaleMode.Dpi;
にするとコントロールのズレは収まりました。フォントの大きさの再調整は必要ですがこれが良さそうです。
一旦問題を整理してみます。
2022/03/16(水) 19:24:24.87ID:gx2+2oye0
>>212
スケーリングに対応する場合は、フォントはBMPを含まないメイリオやYu Gothic UI等を使うと良いよ
2022/03/16(水) 19:46:22.48ID:qedjxSBq0
グリッドレイアウト

でググると参考になるかもしれん

もちろんGuiがおおっぴらにサポートしているわけではないが
どうしたいかの参考になると思う
2022/03/16(水) 21:22:24.16ID:IT+0ZBM10
コントロールのフォントを自動調節するやつできたんでとりあえず解決しました。
void AutoFitFontControl(Control ctl, string fontname, int maxpoint) {
var g = System.Drawing.Graphics.FromHwnd(ctl.Handle);
var point = maxpoint;
for (;;) {
SizeF sf = g.MeasureString(ctl.Text, new Font(fontname, point));
if (ctl.Width < (int)(sf.Width) || ctl.Height < (int)(sf.Height)) {
point -= 2;
} else {
break;
}
}
ctl.Font = new Font(fontname, point);
}
216デフォルトの名無しさん (ワッチョイ 6936-dw4a)
垢版 |
2022/03/17(木) 09:57:20.56ID:8n4FcalY0
C#勉強中で分からない点があるので質問です
テキストボックスをデータバインドしていてViewModel側はstringでSetPropertyで双方向としていて
テキストボックスでキー入力されてもコード上でstringの値を代入等で変えても画面に表示されている値と内部で保持している値が一致するようにしています

これをstringから独自のクラス、例えば電話番号クラスとかにするとテキストボックスにキー入力しても内部で保持している値に書き換わってしまうのですがこれって何に原因があるのでしょうか?

View側の処理
TelephoneTextBox.DataBindings.Add("Text", viewModel, nameof(ViewModel.Telephone));

ViewModel側の処理
public TelephoneValue Telephone
{
get => _telephone;
set => SetProperty(ref _telephone, value);
}

TelephoneValueは内部にstringを持っていてToString()でstringを返しています
2022/03/17(木) 12:22:14.37ID:Mvnns9V0d
>>216
あなたがどっかで定義したTelephoneValue型はxamlが理解できるものじゃない

TelephoneValueを1引数のstringで構築できるかもしれんがそんなことは知ったこっちゃない
(Converterを自作すればなんとかなるかもしれんが)
2022/03/17(木) 12:37:39.27ID:0cmWCmO7d
おそらくXaml側でBindingエラーが出てる
アプリが落ちるわけじゃないから気付きにくいが

Visual Studio環境なら出力ウインドウとバインディングエラーのウインドウにエラーメッセージが出てるはず
2022/03/17(木) 13:52:54.08ID:i4B2mw3zM
すいません使ってるのはWFPでは無いです
formで書いてます

ただ>>217が言ってるようにそうなる理由はset時に型を理解できない為と思います、テキストボックスからの文字列は文字列であり独自の型に入れられないから上記のような挙動に見える
エラーは出てなかった様に思いますが帰ったら確かめます

これって独自の型を定義してその型でバインドした物と双方向する事はそもそも出来ないんでしょうか?
intにしろDateTimeとか文字列への型変換が出来るので出来そうに思えるのですが
2022/03/17(木) 14:00:10.89ID:AolyjzvfM
文字列から変換できなきゃ意味ない
telephone = "でんわ"
2022/03/17(木) 14:39:30.41ID:rF5KH7cwa
こんなにすれば内部で保持してるのとuiとで双方向できるし
内部→ui、ui→内部、どっちかだけ片方bindもできる

class telephone
{
int a,b=0;
public string tel
{
set{ var d = value.split('-');a=int.parse(d[0]);b=int.parse(d[1]);
get{ return $"{a}-{b}";
}
2022/03/17(木) 14:46:48.12ID:LzLa9LO7d
System.ComponentModel.TypeConverter?
2022/03/17(木) 16:15:30.46ID:euNpZQ+M0
そのTelephoneValueクラスがstring型のTextValueプロパティを持ってるとして、
.DataBindings.Add("Text", vm, "Telephone.TextValue")
とすればいける
2022/03/17(木) 20:21:34.94ID:8n4FcalY0
>>220-223
色々ヒントありがとうございます。後程色々試してみて報告できそうな結果ならしたいと思います
また分からなかったら聞くかもです
最初、代入演算子かstringformat以降をごにょごにょする?か最悪テキストボックス側をいじる、いやUIはさすがにいじりたくない
とかですが"Telephone.TextValue"な書き方もできるんですね目から鱗です
TypeConverterは調べてみます

最終的にやりたいのはテキストボックスのマスクの動的判定
例えば06と打てば06-、続けて6を打てば06-6、4なら064-みたく表示(実装済み)
かつデータベースに書き込むのはハイフンなしにして書き込み、読み込む時はハイフン付けてテキストボックスに表示(生のstringでは検証済み)
これを整合性合わせてしたいが生のstringを使いたくなかったのが理由
まぁテキストボックスいじる方がよっぽど気持ちが悪いのですが

取り合えず上記アドバイス試してみますありがとうございます
2022/03/17(木) 23:08:34.91ID:RdQIwXxN0
市外局番ルールってどっかに計算式あるの?
まあ同じ市外局番でも省略すると繋がらないとかふざけた地域も多いしトンキンオオサカだけでもいいか
2022/03/17(木) 23:26:45.22ID:8n4FcalY0
私は総務省にこんなんある事知って上記の話はそれらしく実装した
https://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/number_shitei.html
厳密にやろうとするとクソ面倒なのであくまでそれっぽくしただけだけど一応区切り位置とかのルールは存在する
227デフォルトの名無しさん (ワッチョイ c666-lWiN)
垢版 |
2022/03/18(金) 10:15:35.13ID:exJrGo4o0
Socket.IO (SocketIoClientDotNet) を利用し、下記コードでメッセージの購読は出来たのですが

this.socket = IO.Socket("http://localhost";);
this.socket.On("new-message", (jo) =>
{
this.RecvNewMessage(jo as JObject);
});

購読を終了する方法が解りませんでした。
どのようにすれば終了できるでしょうか?よろしくお願いします。
2022/03/18(金) 10:42:52.74ID:GLaoxLmQ0
OnしたんならOffすればいいんじゃね 知らんけど
229デフォルトの名無しさん (ワッチョイ ed2f-K4Xb)
垢版 |
2022/03/18(金) 15:59:31.12ID:Fy/f5KFA0
コメントアウトはVSCodeのようにCtrl+/でやりたいんだけど
設定で変更できるよね?
なぜ最初からそうなっていないの?
Ctrl+k,cは面倒極まりない。
2022/03/18(金) 16:13:03.84ID:NghzuPCe0
頬杖つきながらマウスで選択してツールバーでポチっとするだけだから。
20年遅れてるUNIX開発環境に合わせろと言われも困ります。
2022/03/18(金) 16:17:37.38ID:/Q6fnTiGa
ツールバーのボタン標準で表示されてるんだな。初めて知った
だがむしろデフォルトをkc、kuで統一しろよ
2022/03/18(金) 16:23:47.13ID:cx5y3qmg0
ロジのマウスすぐチャタるから俺もPC操作はできる限りキーボードで行いたい派
2022/03/18(金) 16:32:30.07ID:r5cg+x+od
プログラム開発でクソAIMやると切れそうになるからマウス使いたくない
2022/03/18(金) 16:46:59.98ID:Ukh28wt40
ショートカット変えれるんだから変えろよ
2022/03/18(金) 16:48:40.02ID:/Q6fnTiGa
>>232
捨てろよ。もしくは頻繁に接点復活スプレー
2022/03/18(金) 16:50:42.39ID:NghzuPCe0
UNIXなんてのは太古の昔から市場の片隅で生きてきた絶滅危惧種だったのに
使ってるアホどもは世界の中心だと思ってるから厄介。
2022/03/18(金) 16:51:47.06ID:NghzuPCe0
マウスイベント監視してチャタリング無効化するだけ。
2022/03/18(金) 16:59:58.79ID:/Q6fnTiGa
チャタリング判断が時間要素と多少の移動値しかないから、ソフト的な対策はできない(操作性悪いのは変わらない)んだよ
俺の対策の腕が悪いからかもしれないけどな・・・
2022/03/18(金) 17:05:47.26ID:NghzuPCe0
スキルないならダイソーでマウス買ってきな。
2022/03/18(金) 21:36:09.99ID:qCqrql870
タイポしやすいのでむしろなるべくキーボード使わないようにしてる派
インテリセンスとコピペを駆使しまくってる
2022/03/18(金) 23:35:46.48ID:J38pP+oz0
↑チャタリングの意味判ってない人
2022/03/18(金) 23:37:54.94ID:J38pP+oz0
発見伝!て続けようとしたら書き込んじゃった
ただの感じ悪い人だなしまんてっく
2022/03/19(土) 00:23:07.37ID:QWNhEVj80
何言ってんだこのバカ
2022/03/19(土) 01:33:54.85ID:M/uS9iCI0
最初から最後まで意味が分からなくて草
2022/03/19(土) 02:23:05.14ID:VxWFG4OV0
バーコードよりハゲのほうがマシ。
まで読んだ。
2022/03/19(土) 02:31:34.95ID:oVqI+gO+0
時代はQRコードやで
2022/03/19(土) 12:51:17.68ID:UXt2lmR80
まだらハゲ
マーブルハゲ
2022/03/19(土) 14:08:52.76ID:advrh/I10
USBメモリを安全に取り外すのはC#で書けたんですが、
その後USBメモリを抜き差しせずに再認識させる方法はあるでしょうか
2022/03/19(土) 14:12:14.78ID:XXD5kKqhr
なんでそんなことまでやってるの
2022/03/19(土) 14:29:31.78ID:advrh/I10
>>249
リモート先のマシンでメディアを抜き差しする処理とかをよく発生するので…
現地作業者に連絡する手間を省きたいってのが大きいです
2022/03/19(土) 15:09:08.63ID:DtRySdf10
取り外しやったら物理的に外さないとだめじゃなかったっけ?
ドライバの無効→有効じゃだめなん?
2022/03/19(土) 15:29:43.49ID:oVqI+gO+0
vectorにあるunhotplugとeasterっていうのを呼ぶツール作ればいけるのでは
2022/03/19(土) 20:19:19.80ID:VZmL8CeM0
おせっかいというか余計なアレやけど、
USBを擬似的に抜き差しさせるプログラム作って新たな障害の素を作るより、
USBを使わない、ネットワークストレージに置き換えるとかの方法で、
根本的な状況を改善するほうがいいんじゃないかな。。
2022/03/19(土) 20:33:21.04ID:D/0X5tNm0
USBに何か挿されたよシグナルをOSに送ればいいんじゃね
2022/03/20(日) 00:37:40.27ID:J9wgpmKzM
自分ところの放置鯖は休止復帰後にUSBの再認識をバッチでやってた
時々USB死んでマウスが動かなくなるから
やり方は忘れた
2022/03/20(日) 01:21:44.08ID:RMYANpbIa
usbメモリ直はムリだと思うからdevconいじくりまわしてワンチャンかな
2022/03/20(日) 22:42:36.53ID:0372vEy10
wmiからPnPEntity使った方がまだやりやすそう
2022/03/21(月) 06:21:02.19ID:B3XvFTTu0
そもそも何故USBを抜き差しした事にしたいのかわからん
2022/03/21(月) 08:11:52.79ID:idY8N9Dd0
スマートコンセントにアダプター式のUSBハブ繋いで電源ON/OFFすればいいんじゃねw
2022/03/22(火) 00:17:50.57ID:gjcW4Tfu0
まあハードで細工前提なら間にマイコンなりでVCCをスイッチすればできますけどね
ソフトでできないかという話なので
devconでdisable→enableは期待した動作にはならなかったので他の方法を考えて見ます
2022/03/22(火) 00:39:31.18ID:k34A21mc0
目的を達成出来れば何でもいいって話だと思ったんで、違うならスルーしてくれ
262デフォルトの名無しさん (ワッチョイ f154-B0ie)
垢版 |
2022/03/22(火) 03:13:27.47ID:dk64x/8s0
Disposeパターンの学習中なのですが、マネージリソースとアンマネージリソースの見分け方が分からないのですが、
よい解説サイトを教えて頂けないでしょうか。
2022/03/22(火) 03:27:22.28ID:Fi74risNa
難しく考えることない。この程度の見分け方で十分だろ

class A : IDispose ←宣言を見たときにIDispose派生ならアンマネージド

A a = 〜
a. ←「.」を打ち込んだ時にDisposeが表示されたらアンマネージド

using (var a = new 〜) ←usingで囲んでエラー出たらマネージド
2022/03/22(火) 07:12:28.40ID:p81GCeRAM
Disposeの中身が

MessageBox("error",MB_ICONERROR);

のみでアンマネージド?
2022/03/22(火) 08:11:26.68ID:Fi74risNa
Disposeの中身が空でもアンマネージなんだよ。細かいこと気にするな
2022/03/22(火) 08:33:08.50ID:kAgwAO/L0
いちいち継承元全部辿ってIDisposableあるか確認して手動で開放しないとリークしまーすとかいう欠陥言語
2022/03/22(火) 08:35:18.57ID:OaCGWLhd0
win32リソースかどうかなんか用途ですぐわかるだろ…
2022/03/22(火) 08:39:28.18ID:kAgwAO/L0
書いてから気づいた>>263の方法で確認すりゃまだ楽か
だがしかし、実装を強制できないからdisposeしてなくても気づけないってのがな
2022/03/22(火) 08:41:02.24ID:kAgwAO/L0
>>267
そんなの場合による
2022/03/22(火) 08:51:45.38ID:OaCGWLhd0
キミのように脳に欠陥があるなら仕方がない。使い終わったら常にdispose()呼ぶだけの話。
2022/03/22(火) 09:03:08.94ID:kAgwAO/L0
>>270
2022/03/22(火) 09:22:16.11ID:OaCGWLhd0
( ´_ゝ`)プッ
2022/03/22(火) 10:11:19.03ID:kAgwAO/L0
使い終わったら常にdispose()呼ぶだけ!キリッ
話の本質わかってなくて草生える
2022/03/22(火) 10:34:09.76ID:G7lfoYcY0
Disposeでマネージ/アンマネージってことは
protected virtual Dispose(bool disposing)
のdisposingの真偽で何を解放すべきかってことだよね

.NETのオブジェクトとして存在しているモノがマネージリソース
大体は自分がメンバに持ってるIDisposableなオブジェクトを意味する
これらはdisposing==trueのときだけDisposeすればいい

アンマネージリソースはWindowsのAPIとかで直接確保したデバイスコンテキストとかメモリ
大抵はIntPtr型で保持している
こういうのはそれぞれのリソースの解放方法に従った方法で直接解放する
これらはdisposingに関わらず常に解放する
2022/03/22(火) 10:35:59.07ID:OaCGWLhd0
> いちいち継承元全部辿ってIDisposableあるか確認して手動で開放しないとリークしまーすとかいう欠陥言語
分かってるよ。話の本質は、馬鹿がヘジが開発した言語にマウンティングした、ということだろう。
だがその試みは失敗した。それだけ。

なんならwin32リソースについて言語はどう管理すべきいくらでもキミの意見を語っていいんだぜ?
だがキミからは何も出てこない。知ったか初心者だからだ。
2022/03/22(火) 11:53:43.00ID:myN/pITuM
そうカッカすんなよおっさん見苦しいぞ
2022/03/22(火) 12:15:11.68ID:kAgwAO/L0
>>275
顔真っ赤で草
2022/03/22(火) 12:31:50.91ID:OaCGWLhd0
初歩的なリソース管理程度で発狂して言語貶してるド初心者に
馬鹿にされてキレるわけないだろう。馬鹿かこいつ、としか思わん。
2022/03/22(火) 15:52:49.70ID:XhX0v2Lu0
その調子で血管切って死なねーかな
2022/03/22(火) 17:16:17.21ID:pk95uqSaM
あああああああああああああああああああああああああああああああ!!!!!!!!!!!(ブリブリブリブリュリュリュリュリュリュ!!!!!!ブツチチブブブチチチチブリリイリブブブブゥゥゥゥッッッ!!!!!!!)
2022/03/22(火) 19:17:57.13ID:kPYOUkgu0
そもそもc#のデストラクタが産廃だからあてにしてる動作だろ
2022/03/22(火) 19:49:04.13ID:1zUmccnld
GC(マークアンドスイープ)+FinalizeとDisposeの相性が悪いだけだろ
C#に限った話じゃない
2022/03/22(火) 20:58:45.96ID:hNvbiY4S0
exe終了したら何もかも解放されるんでしょ?
2022/03/22(火) 21:05:08.48ID:HvRJN3MAa
基本的には終了で開放だけど、すべてが開放されるとは限らない
よくあるのがexe内部でexcel使ったら、exe終了してもexcelのプロセス残ったままみたいなやつ
2022/03/22(火) 21:09:25.23ID:kAgwAO/L0
ようやく>>282みたいなまともな回答出てきて嬉しい
スコープ外れたタイミングでデストラクタ呼び出し保証しなかった理由ってどこかに解説とかないのかな?
C#の現状のデストラクタとかガチゴミじゃん
2022/03/22(火) 21:19:04.18ID:Ky9cYioTM
またいつもの質問者そっちのけでの罵倒合戦かよ・・・・・

アンマネージドリソースは文字通りC#の管理下にない(un-managedな)リソース
具体的にはunsafeで確保した配列・ポインタやWin32APIを呼び出して確保したIntPtrなど
Disposeのタイミングで適切な手法で(それこそWin32APIを呼ぶなどして)リソース解放しないとメモリリークする

マネージドリソースはC#の管理下にあるリソース全般
FileStreamやDbConnection、Bitmapオブジェクトなどもこれ
そういうオブジェクトをクラス内のメンバ変数で持ってるなら、Disposeメソッド内で
それらのメンバ変数のDispose()を呼ぶことでリソース解放するお約束になってる


>>263の説明はデタラメもいいとこだしそもそも「IDispose」ってなんだよ
>>263のデタラメに気付かずC#を欠陥言語呼ばわりするために乗っかった>>266の言ってることも同じくデタラメなんだけど
こいつは罵倒マウンティングすること自体が目的でわざとデタラメに乗ってるのかそれとも素で理解してないのかは分からん
2022/03/22(火) 21:23:17.10ID:0A7XAa2y0
C++/CLIならデストラクタが使えるから問題ないんだよな。捨てたのはもったいない。
2022/03/22(火) 21:31:04.74ID:kAgwAO/L0
それな
GCとかの仕組み上どうしても無理でしたってんなら納得逝くんだけどその辺知りたい
2022/03/22(火) 21:39:13.30ID:6LsnJNlYd
>>285
スコープ外れたってどうやって判断するの?
2022/03/22(火) 21:39:56.93ID:3weeWjHs0
というかここら辺はサンプルというか、実際使ってるコードみないとピンとこんよな
これは意味あるIdisposable、こっちは意味ないとかで
2022/03/22(火) 21:41:21.16ID:1zUmccnld
>>287
ref class C{
~C(){} // Destructor
!C(){} // Finalizer
};
のコンパイル結果が
// C# DLL
class C:IDisposable{
Dispose(); //Destructor???
~C();//Finalizer
}
であることをご存知でない?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況