[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 01/03 17:51 / Filesize : 300 KB / Number-of Response : 1017
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:名無C mailto:sage [2019/03/07(木) 06:35:41.12 ID:6L3KEJfe0.net]
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■関連スレ
C#, C♯, C#相談室 Part93
mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part141
mevius.5ch.net/test/read.cgi/tech/1544839627/
■コードを貼る場合は↓を使いましょう。
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/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

233 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 00:56:02.91 ID:UeOvQxG40.net]
インスタンスを設定したがわが保持って置かないと死ぬときもあるしそうでないときもある
ループで生成しまくる処理のときはこちらでインスタンスを管理しないと
表示するたびに生成しまくって
前のは消されてない
ライブラリの中でほじってるらしくて
消そうと思っても消えない
って状態になることも多い

234 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 00:57:09.43 ID:N3n7oHyA0.net]
>>231
これあるあるだわ
管理ダルいからスコープ決めてインスタンス作ってるわ

235 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 08:44:21.30 ID:x8OJz+Ud0.net]
>>230
既定のアクセシビリティの差しかないC++の悪口かな?

236 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 09:44:01.09 ID:0L4pmkxC0.net]
構造体て値の全コピーが楽なぐらいで無理に使う必要ない

237 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 10:43:00.62 ID:zi2/La8Bp.net]
GCの起動サイクルがクリティカルに影響したりネイティブとの相互運用等
無理してというより必要な時のみ使うものだからね

238 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 12:09:16.02 ID:85UtCV7c0.net]
サブフォームFORM2を作って右上の×で消した時どうすれば(どこを調べれば)よいですか?

FORM2 form2 = new Form2();

239 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 12:25:16.27 ID:R01axtSvM.net]
>>232
そうやってもライブラリの中の人まで死ぬ保証はないかもしれないしあるかもしれない

240 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 13:21:34.57 ID:x8OJz+Ud0.net]
>>236
質問の意味がよく分からん
閉じたときに何かしたいならFormClosedイベントだけど

241 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 19:45:13.46 ID:N3n7oHyA0.net]
"); //]]>-->
242 名前:1551908141/237" rel="noopener noreferrer" target="_blank" class="reply_link">>>237
さすがに広く使う変数は
パラメータークラス作って使いまわしますよ
[]
[ここ壊れてます]

243 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 22:56:55.47 ID:85UtCV7c0.net]
>>238 意味不明な文章ですみません。聞きたい質問は以下のことです。

サブフォームFORM2を作って右上の×で消した時とサブフォームを消してない時は
どのようなコードを書けば判別できますか?

244 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 23:05:30.38 ID:UeOvQxG40.net]
>>240
ちっともわからん

245 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 23:13:56.69 ID:UeOvQxG40.net]
>>240
Xボタンで消したときと、Xボタン以外の何らかの方法で消したとき?

246 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 23:14:11.83 ID:cVRKM8Bg0.net]
>>240
「右上の×で消した時」はわからないが
フォームがDispose(Close)されているか form2.IsDisposed
フォームが表示されているか form2.Visible
具体的に何が目的かを書いてもらった方が答えやすいと思う

247 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 02:06:32.31 ID:m4qLgJ3pa.net]
>>240
真面目に何言ってるのかさっぱり分からんから、投稿する前に読み手の立場に立って
文章推敲することを覚えた方がいいよ。

これ、プログラミングのスキルより何倍も重要
いやほんと煽りとか抜きに。

Formが閉じられた原因を知りたいなら↓だけど、
それなら普通ググって自己解決してるはずだと思うから違うんだろうね
dobon.net/vb/dotnet/form/unloadmode.html

248 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 02:30:19.50 ID:5XTKYZffM.net]
多分form1からボタンクリックでform2を開いてそのform2が閉じられたことをform1で検知したいってことなんじゃないか?

249 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 02:55:07.02 ID:MT95SofI0.net]
var変数って便利だけど初期化必須だから惜しいなと思うことがある
例えばとりあえず広いスコープで宣言しといて後のfor内とかで使おうとしたときにここはfloatで扱いたいな→結局宣言箇所をfloatに書き直すのか・・・ってなったり
書きながら考えるときの補助として使おうとすることが間違ってると言えばその通りだけどね

250 名前:デフォルトの名無しさん [2019/04/06(土) 03:20:06.81 ID:QWD6tIIM0.net]
非同期処理A内でタスクBを生成した場合について教えてほしいのですが、
Aのスレッドが抜けてしまったり、あるいはAのタスクが終了してしまった場合でもタスクBは生き続けるんですか?
Aの終了とともにBも終了させるようにはできないのでしょうか?

251 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 05:50:01.71 ID:9VymyaU60.net]
出来るけどリークするぜよ



252 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 09:32:18.73 ID:WatgyYvN0.net]
>>247
CreateLinkedTokenSourceで複数タスクにまたがるCancellationTokenSource作ればいいんじゃね

253 名前:240 mailto:sage [2019/04/06(土) 10:07:54.08 ID:hyh7Xf1q0.net]
>>243 form2.IsDisposed で閉じたかどうか判定できました。ありがとうございました。

文章が分かりにくいみたいですが243みたいな超能力者がレスしてくれれば良いのです。
>>245の説明の通りですが「教えてください」って書いても放置されることが結構あるので神レス243のほうがありがたいです。

254 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 10:13:25.13 ID:12K3yeCTa.net]
>>246
ああ、良くないと思うぞ。
変数が必要になったら想定される範囲でなるべく小さいスコープで宣言して、それで足りなければスコープを見直すか設計そのものを見直すくらいのがいいと思うよ。

255 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 11:19:51.64 ID:1moq2C1C0.net]
>>250
ガイジは死ね

256 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 11:27:56.56 ID:j7WnBgX90.net]
>>250
意味不明な質問してたらそりゃ放置されるわな

257 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 11:31:41.71 ID:ts7XFDpTa.net]
>>250
放置されることが結構あるということは、これまでも質問のしかたが下手だったか、態度が悪かったか、頓珍漢なことをいっていたか、等々、なんらか自分側にも問題があるとは思わなかった?
答えてくれない方が悪い!ではいつまでたっても改善しないし、周りも困らせることになるよ。

258 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 15:23:17.78 ID:MT95SofI0.net]
マネージャーがまさに自分の視点でしか話をしないから意味を推察するのにめちゃくちゃ苦労してる
しかもマネージャーだから放置も無視もできないしめんどくせぇ

259 名前:245 mailto:sage [2019/04/06(土) 15:58:43.28 ID:2DuVrQtfM.net]
>>250
逝ってよし

260 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 16:39:47.93 ID:MA8UEjRg0.net]
アストラルサイドの話はちょっと

261 名前:デフォルトの名無しさん [2019/04/06(土) 18:24:20.03 ID:QWD6tIIM0.net]
>>248
教えてもらって悪いんだけど、一体どういうことなんだぜ?



262 名前:デフォルトの名無しさん [2019/04/06(土) 19:26:12.20 ID:nnViyGGtM.net]
実現したいならタスクBが走ってるスレッドを殺すしかないが
その場合ILが半端なところで止まってクリーンアップ処理が正常に走らないからリークする
嫌なら249が言ってるような方法でタスクが自発的に止まるしかない
好きにしたらいい

263 名前:250 mailto:sage [2019/04/06(土) 20:05:47.05 ID:hyh7Xf1q0.net]
>>254 そうじゃなくて、質問して「質問は・・ということなの?」的なレスが返ってきた状況のときに
「そうです。解決方法を教えてください」ってその人にレスしても放置されることが多々あるという経験を書いただけ。
別に質問の大半が放置されたわけではないよ。
あと理系の人が書いた本とかマニュアルは難解でも当方は理解しますし「分かりやすく書けや」とはそれほど思いません。
理解しやすい文章を書けと思う人は経験不足です。

264 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 20:12:41.03 ID:gcTy2CwVM.net]
はやくゴミクズから人間になろうな

265 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 20:15:14.96 ID:MA8UEjRg0.net]
でも>>236>>240ってわかりにくい云々の前に
頭がおかしいレベルだよね?
流石に今後の人生のために改善したほうが良くね?

266 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 20:28:05.68 ID:MT95SofI0.net]
質問の意味を確認される時点でそもそも伝わりにくい文章だと思うけど。
コミュニケーションは相対的なものとはいえ、相手に負担を押し付けるやりとりをしていることに気づいてないのでは。

267 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 20:43:07.38 ID:j7WnBgX90.net]
>>260
一緒にしたら失礼。
難解な本は読み手に前提となる知識が足りないから読み難いが、書くべきことはちゃんと書いてある。
あなたのは書くべき情報が欠落していて単に文章として破綻してるだけ。ついでにその後のコミュニケーションも酷過ぎる。

268 名前:250 [2019/04/06(土) 20:44:56.97 ID:hyh7Xf1q0.net]
240見直したけど
「サブフォームFORM2を作って右上の×で消した時」が分かりにくいかな?
※1 form2 = new Form2();
※2 form2.Show();
「サブフォームFORM2を作って※1表示した後※2にFORM2の右上の位置の×をクリックしてFORM2を閉じた時」

って書かないと駄目だったのかな?でも回答を教えてくれた人居るし分かってほしいな〜

269 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 20:58:19.18 ID:YyWMpA9h0.net]
いや、動作がわからないんじゃなくてお前さんがやりたいことがわからないって話な

270 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 21:01:04.80 ID:Gnot3kBPd.net]
小手先に頼らず全部書け
質問に関係なさそうなところも全部書け
関係ないと断言できるだけ知識があるならそもそも質問は生まれない
だから頭からケツまで全部書け
全部書いたつもりでも情報は足りないんだから小学生に伝えるつもりで書け

271 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 21:01:50.77 ID:J4U0pcz9a.net]
いわゆるバカの壁だねw
彼はたぶん自分の何が問題なのか本気で分かってない。

仕事で取引先とかとメールでやりとりしてる人なら同意すると思うけど、
日本人は案外彼みたいな人が多い。
多いというか、日本人全体を母集団にとるとたぶん90%以上が彼みたいなタイプだw

これは(実は案外昔から指摘されてるんだけど)日本の初等教育に問題があるんだよねw
日本の国語教育は何であんなくだらない文学観賞と子供を嘘つきにする作文に偏重してるのか。

思いっきりスレ違いなのでこの辺で



272 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 21:01:55.77 ID:ZE/404d00.net]
>>260
理系の人が書いている文章は、内容が難解であっても文意は明確で読みやすい。君の文章はそうではない。むしろ逆で、平易なことが上手く伝えられず理解してもらえない。
君が「難解だが上手い文章」を読みやすいということと、他の人が「君の下手な文章」を理解しにくいということはまったく別のことだが、何でそこから他人を経験不足だと断じる結論になるのだろうか?
君の方が、他人とのコミュニケーションについて経験不足なのでは?

他人に理解してほしいというのは自然な欲求だが、相手に労力を求めるのでなく自分が理解される努力をしなよ。

273 名前:250 [2019/04/06(土) 21:25:08.15 ID:hyh7Xf1q0.net]
>>266-269
要するに、やったことが無いから何故俺がそれをやりたいことがわからないんだね。
でも回答を教えてくれた人居るし・・。

274 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 21:26:09.76 ID:Hw9bu2CQ0.net]
>>240は「右上の×で消した時」が分かる人には引っ掛け問題になってるな
単に「サブフォームが閉じられたかどうかを判別したい」なら問題なかった

初心者スレだから質問者の文章が分かり難くてもある程度はしようがないし
>>240もその範疇だと思うけど、>>250はあり得ない
叩かれまくってるが自業自得だ

275 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 21:31:28.36 ID:7yOX3K990.net]
>>270
何度も書かれているけれどお前の説明が致命的に下手すぎるのが原因

276 名前:デフォルトの名無しさん [2019/04/06(土) 21:49:22.76 ID:l9A0t+NU0.net]
>>260
>質問して「質問は・・ということなの?」
っていうのは、おまいさんの質問文そのままじゃわからないので経験を加味して質問文を解読して少しでも回答できるやつを増やそうとしてくれてるんだよ。
おまいさんの質問文そのままじゃ超絶エスパーがスレに降臨するまで話がすすまないよ。

277 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 21:50:12.97 ID:1moq2C1C0.net]
いろいろな人がいろいろな表現で指摘しているけど、
結局のところのお前が程度が他人とコミュニケーション取るレベルに至ってないって指摘だ

早く人間に達しろゴミクズ

278 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 22:35:24.43 ID:YyWMpA9h0.net]
>>270
> 要するに、やったことが無いから何故俺がそれをやりたいことがわからないんだね。
逆、下手に「右上の×で消した時」とか書くからやりたいことがわからないって話
フォームの閉じ方は「右上の×で消す」だけじゃないから知ってる人は特別に「右上の×で消した時」を区別したいのか?とか思うんだよ
>>242-243でも指摘されてるだろ

> でも回答を教えてくれた人居るし・・。
>>243はかなり親切だからいくつかのケースを書いてくれてるけどそれでも
> 具体的に何が目的かを書いてもらった方が答えやすいと思う
って書かれてる意味を考えなよ

279 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 22:47:01.10 ID:ZtBD8DJx0.net]
みんな優しいな

280 名前:デフォルトの名無しさん mailto:250 [2019/04/06(土) 23:04:06.29 ID:hyh7Xf1q0.net]
>>275

>242 Xボタンで消したときと、Xボタン以外の何らかの方法で消したとき?
242には触れたくなかったけど、こんなこと240に書いてないし242は馬鹿なんだと思う。
それをおかしいと思わない275もどうかなと思う。close()で閉じてもIsDisposedで判別できるし
何で気にするか分からないな。ていうかウィンドウの右上にXが無いのかな?

281 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 23:14:09.25 ID:j7WnBgX90.net]
>>277
日本語が拙いから推測されただけだろ。エスパー求めてるのに何言ってる。



282 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 00:08:13.42 ID:fnPZIWU30.net]
ここまでいろんな人が指摘してるのに論点が噛み合わないのは逆に逸材なのでは
なんかモスバーガーの包み紙のスレを思い出した

283 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 00:36:33.50 ID:yNnH+Rdg0.net]
初歩的な質問で申し訳ないのですが、c#のガベージコレクション機能は循環参照状態にあるインスタンスも破棄してくれるのでしょうか?
暫く調べたのものの「リークするから弱参照を使う」「GCに頼っていい」「javaなど一部言語は破棄する」など多くの話があり混乱しています
より専門的な、ガベージコレクションの内部的な仕組みそれ自体を説明しているサイトは私の知識では理解できませんでした

例えばa→b→c←→dという向きで参照しているインスタンスの組み合わせがあったとして、
aからbの参照を切ってもGCで回収されるのはbだけでcとdの組は残り続けるのでしょうか

284 名前:デフォルトの名無しさん [2019/04/07(日) 00:37:08.32 ID:AJMxYZfA0.net]
でもさぁ、サブフォームをXボタンで閉じた時と閉じてないときの判別方法を聞いてるのに

>242 Xボタンで消したときと、Xボタン以外の何らかの方法で消したとき?
で選択肢が1個増えて余計ややこしくしてるだけだし

本当に240だけの問題なの?241=242=262の頭に問題は無いの?

285 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 00:40:32.22 ID:Lr+Z70d50.net]
じゃあ、もう一回確認な

サブフォームFORM2を作って右上の×で消した時
どうすれば(どこを調べれば)よいですか?



A=サブフォームFORM2
B=右上の×で消した

で置き換えたとき

Aを作ってBのとき
どうすればよいですか?

って何言ってるのかさっぱりわからないよね?
これで世の中渡っていけると本気で思っているのか?

286 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 00:44:13.15 ID:Lr+Z70d50.net]
>>281
じゃあ、質問に答えてね

サブフォームFORM2を作って右上の×で消した時どうすれば(どこを調べれば)よいですか?

287 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 00:49:36.20 ID:vK2HJm7v0.net]
>>282
気持ちは分かるが落ち着けw
>>236>>240で意味不明だっと認めて訂正してるぞ。

288 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 00:55:57.83 ID:Lr+Z70d50.net]
>>284
そんなの考慮する必要ない
だって彼にもその気はないんだから

289 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 01:00:11.33 ID:h90p5IeD0.net]
>>281
いったい何に拘ってるんだ?そこまで自分に非があることを認めたくないのか?
>>241,242で君の説明が理解されなかったのは別に変でもないし頭がおかしいという訳ではないぞ。>>262も攻撃的ではあるが頭がおかしいというのとは違う。

誰も>>241等のレスに無関係に、君の一連のレスに対して、説明が下手であること、態度に問題があること、それについて君がいっこうに理解できていないことを指摘しているだけ。

290 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 01:58:10.82 ID:73jPe6360.net]
>>280
こっちの話の方が面白そうだよ

291 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 05:53:56.72 ID:vRdyA0zq0.net]
>>280
そういう単純なケースならc,dともに回収されるので気にするな



292 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 06:41:43.95 ID:u8jd6Keja.net]
>>280
GCの方式が参照カウンタ方式というものなら循環参照があると回収されないけど
C#(.NET)は世代別GCという方式だから循環参照があっても未使用なら回収される
> 例えばa→b→c←→dという向きで参照しているインスタンスの組み合わせがあったとして、
> aからbの参照を切ってもGCで回収されるのはbだけでcとdの組は残り続けるのでしょうか
b, c, dが他から参照されていなければ、b, c, dすべて回収される

293 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 07:40:40.19 ID:AvqFg2320.net]
>>277
う~ん、引っ込みがつかなくなってるのか本当に初心者で何を指摘されてるのか理解できてないのかよくわからんけどここ初心者用だから初心者として仮定して…
Xボタンでフォームを消すと言うのはどちらかと言うと一般的じゃない(普通のフォームならOk/Cancel/閉じるボタン等を配置するよね)ので「右上の×で消す」と書くとなにか特別なことをしようとしてるのかと思われるの
ただ初心者だとXボタンで消すのが当たり前と思ってる人もいるから確認の為に>>242みたいなことを聞いてるわけ
あとそもそもサブフォームの状態を調べると言うのもあまり一般的じゃない
GUIだとイベントで処理するのが普通だから>>238みたいなことを言われる

294 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 07:58:43.91 ID:AvqFg2320.net]
>>280
初歩的な質問じゃない気がするがw
まあこのスレとしては「GCに頼っていい」が正解かな
>>289も書いてるけどGC持ってる最近の言語の実装は世代別(と言ってもたいてい2世代だけど)GCになってるのが多く最終的にはマーク&スイープで回収されるのが一般的なので全部回収されると思ってていい

295 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 14:00:44.14 ID:yNnH+Rdg0.net]
>>287-289,>>291
ありがとうございます、助かりました
もう少しC#に慣れるまでメモリ管理は忘れます

296 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 16:38:33.55 ID:gLMV6b6F0.net]
Listboxにデータをバインディングするときに、XAMLにBinding記述する方法と、コントロールに名前を付けてコード上からやる方法がありますが、どちらがよいのでしょうか

297 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 18:07:02.76 ID:yVw8pf+H0.net]
好きにすれば良いけど転がってるサンプルコードはほぼXAMLでやってるな

298 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 18:24:40.28 ID:bCl1La9L0.net]
GCがちゃんと動いてオブジェクトが解放されたのかは、デストラクタに
Console.WriteLine("解放されますた!");
と書いておくと安心できる。
メモリリーク発生の可能性も減る。

299 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 18:48:15.95 ID:zc2PfqGUM.net]
>>295
心の安寧が欲しいなら止めないけど
C#では、パフォーマンスを低下させるため、プログラムの動作に必要がない
ファイナライザを実装すること自体が推奨されないことは、知っておいた方がよい

パフォーマンスが低下するのは、ファイナライザの実装されていると
GC時にファイナライザキューを介してファイナライズが行われるが
このファイナライズを行う際はStop the worldする必要があるためだ

ファイナライザを保険として実装した上で、前述のパフォーマンス低下を避けるには
自分でファイナライザ相当の処理をした上でSuppressFinalizeを呼び出しておく必要がある
この場合、ファイナライザは実行されなくなり、パフォーマンスの低下も起きない

300 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 18:49:09.04 ID:QS/EO+8da.net]
デストラクタにはなるべく頼らないようにしようぜ
デストラクタを記述するにしてもDispose()されたときにGC.SuppressFinalize(this)しようぜ

>>295
出力の有無でメモリリークに気づける可能性はあるが「発生の可能性も減る」について詳しく

301 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 19:36:38.60 ID:AJMxYZfA0.net]
既にスレを荒らした状態になってるから、もうこれで最後にするけど

>>290
の上8行「右上の×で消す」という書き込みは初心者が使うフレーズだから
中〜上級者の俺様は深読みして間違えたと解釈したけど
本物の中上級者でも「右上の×で消す」の意味は「右上の×マークをクリック
して窓を消す」以外ありえません。そういうわけであなたは
初心者でも中〜上級者でもない別の何かです。

初心者の書く「右上の×で消す」の文が不満で何で
「Xボタンで消したときと、Xボタン以外の何らかの方法で消したとき?」
何で選択肢が増えるんだよw
プログラムより国語の勉強しないと。
回答側に回りたいなら模範回答できる質問だけにしてください。



302 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 19:41:49.21 ID:AvqFg2320.net]
>>298
> 「右上の×で消す」の意味は「右上の×マークをクリックして窓を消す」以外ありえません。
どうしたらこんな頓珍漢なレスができるんだよ…
誰もその意味がおかしいとか言ってるわけじゃないぞw

303 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 20:15:40.25 ID:AJMxYZfA0.net]
>>299 何でイベントのclosedでは駄目かというと、閉じた瞬間の情報が欲しい訳ではないからです。
窓閉じてしばらくして閉じたかどうか知りたいってことなので。なんでそんなこと知りたいんだよ(怒)
って言われても別にいいだろとしか。c#はイベントで処理するからって考えの人にあれこれ
言う義務は俺には無いよ。

304 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 20:16:16.95 ID:QS/EO+8da.net]
>>298
初心者様ってすごいね
ちゃんとした回答が欲しいなら質問をちゃんと書いてね
https://teratail.com/help/question-tips#questionTips3
ここは5chだから多少は違いがあるけど「正しく伝わる質問の仕方」は同じだよ

305 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 20:32:13.15 ID:E1covCOyM.net]
昨日今日はどのスレもこんなのばっかりだぜ
金払ってスクールでも通えよって

306 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 20:37:07.02 ID:AvqFg2320.net]
>>300
別に閉じてるかどうかを知りたいことがないわけじゃなくて珍しいって話な
たいていの場合はなにか設計がおかしい可能性が高い
まあ俺に影響あるわけじゃないから好きにすればいいと思うけどw

307 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 20:56:30.81 ID:AJMxYZfA0.net]
>>301
回答は貰ったんだよ。

質問はその後訂正してる。他の上級者は理解して神回答を頂きました。
>>281-285見たら誰が問題か分かる。284に変なレスしてる奴。

C#はイベントだけで処理すると考える学生がイベントのclosedで解決すると思ったら
解決しないから発狂してキチガイとか日本語が変とか難癖つけたんだろ。

308 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 21:09:42.81 ID:aPMrZc410.net]
ゴミクズにレスつけてる奴も死なねえか
お前のせいで終わらんのやぞ

309 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 21:39:33.31 ID:QS/EO+8da.net]
>>304
質問内容に >>300 中の「閉じた瞬間の情報が欲しい訳ではないからです。窓閉じてしばらくして閉じたかどうか知りたい」
という内容も書かれていたら、最初から正しいIsDisposedの回答だけが得られたかもしれないね
「学生」を罵り言葉として使っているということは社会人かな?
その態度を貫けるくらいには沢山エスパーが居る会社なのかな、凄い環境だなあ

310 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 21:59:51.43 ID:FnnSZHMw0.net]
>>298
え?じゃあ聞くけど

サブフォームFORM2を作って右上の×で消した時どうすれば(どこを調べれば)よいですか?

FORM2 form2 = new Form2();

311 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 22:30:58.81 ID:RA8LBCNw0.net]
オフショア開発してるけどこんな訳わからない質問ばっかで気が狂いそうになるよ
エスパー能力欲しいなぁ



312 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 22:31:35.27 ID:AvqFg2320.net]
>>306
まあ引っ込みつかなくなってるんだろうね
学生云々は不問にするとしても
> C#はイベント「だけ」で処理すると考える
とか誰も書いてないことを言い出してるしw

313 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 23:15:27.17 ID:fnPZIWU30.net]
この議論はGCに処理してもらおう

314 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 23:52:46.05 ID:h90p5IeD0.net]
>>310
なるほど。この無価値な議論の中身を気にして参照してるのはもはや当人同士の循環参照のみだから、>>289に書かれている通り世代別GCで回収されるわけですな。

315 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 20:04:21.39 ID:bxLyJs4eM.net]
引数について質問させてください

ref と out の違いってなんですか?
どういうときに ref を使うのか、out を使うのか、よくわかりません

316 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 20:16:44.97 ID:DkSPe/Rf0.net]
>>312
https://www.atmarkit.co.jp/ait/articles/1804/25/news021.html

317 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 20:23:20.59 ID:WPZzOuq3a.net]
>>312
ref引数は、呼び出し先関数で、引数を使うし設定もする場合に使う
out引数は、呼び出し先関数で、引数を設定するだけの場合に使う
この違いにより、refで渡す引数は初期化しておく必要があるけど、outで渡す引数は未初期化でも構わない

.NET Framework中にある実例としては
int.TryParse()の場合、文字列の数値を引数に設定するだけで、引数の元々の値は使わないから、out引数でいい
難しい例だがInterlocked.CompareExchange()の場合、引数の値を返すし引数に設定する必要もあるため、ref引数が必要

値型と参照型の違いも知っておいたほうがハマりにくいかも

318 名前: mailto:sage [2019/04/08(月) 21:00:25.38 ID:PMJ1/1Ak0.net]
>>314
めんどくさいので out は忘れて ref ばかり使っていますが問題ありますでしょうか!?

319 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 22:47:42.86 ID:WPZzOuq3a.net]
>>315
refでも問題らしい問題は無いだろうけれど
refでなくoutで済む場面ならoutを使ったほうが楽できる
未初期化変数でも渡せるし、C# 7からはout引数の場所で変数宣言が出来るようになった
https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-7#out-variables

ただout引数やref引数を取る関数はasyncやiteratorメソッドに出来ないから
最近の風潮だと、out引数を経由して多値を返すよりも、戻り値の型をValueTupleにして直接多値を返す方が良さそう
https://ufcpp.net/study/csharp/datatype/tuples/?p=3#out-params

320 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:18:34.64 ID:/fBSGCK40.net]
コンストラクタでテキストボックスの値でフィールドを初期化しようとしたら怒られた これダメなのか…

321 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 02:13:47.76 ID:UAdV14hW0.net]
>>317
なんと言って怒られたの?



322 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 10:04:22.44 ID:iYhZfRkA0.net]
おんどりゃぁふざけた初期化すんじゃねぇ です

323 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 10:26:21.20 ID:euLRl0x60.net]
>>317
日本語でおk

324 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 11:37:19.16 ID:6ZB9MqDTM.net]
コンストラクタでテキストボックスの初期化、俺じゃなきゃ見逃しちゃうね

325 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 11:56:56.57 ID:hdDhGrZ5a.net]
>>317
デザイナーで置いたテキストボックスのインスタンス構築や、各種プロパティの設定は
実際はInitializeComponent()メソッドの中で行われる
InitializeComponent()よりも前で値を読もうとしてNullReferenceExceptionが出ているのなら
InitializeComponent()の後で値を読めばいい
までエスパーした

326 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 21:10:24.64 ID:0DYeC ]
[ここ壊れてます]

327 名前:6pW0.net mailto: C#でProcess使ったコンソールの標準入出力処理書いてるんだけど
printf("値を入力1:");
scanf("%d",&i);
printf("値を入力2:");
scanf("%d",&j);
printf("%d %d", i, j);
みたいな処理のプログラムを動かしたとき、コマンドプロンプトだと
値を入力1:3
値を入力2:4
3, 4
ってなってるのに対して、OutputDataReceivedだと
値を入力1:値を入力2:3, 4
って標準入力が全部完了されたあとにまとめて文字列渡されるのって何でなの?
[]
[ここ壊れてます]

328 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 21:31:50.99 ID:2u68c9Dp0.net]
標準出力に改行が出力されてないから

329 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 21:49:55.14 ID:0DYeC6pW0.net]
>>324
試しに全部のprintfに改行入れてみたけど、それでもscanfが全部終わるまでOutputDataReceivedイベント発生しないっぽい。
C#側で標準出力を受け取ってstringに追加 ー> exe側は入力待機 ー> C#側からStandardInput.WriteLineで標準入力 ー>exe側は処理続行
みたいな コマンドプロンプトからのの実行と同じような動きをする処理って、C#じゃどうやるんだろう?

330 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 23:25:15.43 ID:2u68c9Dp0.net]
stdoutがパイプに繋がってるとprintfは改行があろうがバッファし続ける
setbuf(stdout, NULL)しとくか、printf後にfflush(stdout)するか

331 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 23:39:38.53 ID:IIo4qqMm0.net]
C#関係なくね?



332 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 23:59:05.15 ID:0DYeC6pW0.net]
>>326
setbufでもfflushでも何故か入力待機状態が終了するまでOutputDataReceivedイベントが発生しなかったからあきらめてテキストファイルにログ出力してそれ読み込むことにするわ
教えてくれてありがとう

333 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 20:02:38.36 ID:YVfMef4MM.net]
>>313-316
だいぶ返信が遅れてしまいました
まとめてですみませんが、親切に教えていただきありがとうございました






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<300KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef