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

■ このスレッドは過去ログ倉庫に格納されています
2019/03/07(木) 06:35:41.12ID:6L3KEJfe0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

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

■関連スレ
C#, C♯, C#相談室 Part93
http://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part141
http://mevius.5ch.net/test/read.cgi/tech/1544839627/
■コードを貼る場合は↓を使いましょう。
http://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
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2019/04/06(土) 10:13:25.13ID:12K3yeCTa
>>246
ああ、良くないと思うぞ。
変数が必要になったら想定される範囲でなるべく小さいスコープで宣言して、それで足りなければスコープを見直すか設計そのものを見直すくらいのがいいと思うよ。
2019/04/06(土) 11:19:51.64ID:1moq2C1C0
>>250
ガイジは死ね
2019/04/06(土) 11:27:56.56ID:j7WnBgX90
>>250
意味不明な質問してたらそりゃ放置されるわな
2019/04/06(土) 11:31:41.71ID:ts7XFDpTa
>>250
放置されることが結構あるということは、これまでも質問のしかたが下手だったか、態度が悪かったか、頓珍漢なことをいっていたか、等々、なんらか自分側にも問題があるとは思わなかった?
答えてくれない方が悪い!ではいつまでたっても改善しないし、周りも困らせることになるよ。
2019/04/06(土) 15:23:17.78ID:MT95SofI0
マネージャーがまさに自分の視点でしか話をしないから意味を推察するのにめちゃくちゃ苦労してる
しかもマネージャーだから放置も無視もできないしめんどくせぇ
2019/04/06(土) 15:58:43.28ID:2DuVrQtfM
>>250
逝ってよし
2019/04/06(土) 16:39:47.93ID:MA8UEjRg0
アストラルサイドの話はちょっと
258デフォルトの名無しさん (ワッチョイ 012d-c04X)
垢版 |
2019/04/06(土) 18:24:20.03ID:QWD6tIIM0
>>248
教えてもらって悪いんだけど、一体どういうことなんだぜ?
259デフォルトの名無しさん (ラクペッ MM59-XtN3)
垢版 |
2019/04/06(土) 19:26:12.20ID:nnViyGGtM
実現したいならタスクBが走ってるスレッドを殺すしかないが
その場合ILが半端なところで止まってクリーンアップ処理が正常に走らないからリークする
嫌なら249が言ってるような方法でタスクが自発的に止まるしかない
好きにしたらいい
2019/04/06(土) 20:05:47.05ID:hyh7Xf1q0
>>254 そうじゃなくて、質問して「質問は・・ということなの?」的なレスが返ってきた状況のときに
「そうです。解決方法を教えてください」ってその人にレスしても放置されることが多々あるという経験を書いただけ。
別に質問の大半が放置されたわけではないよ。
あと理系の人が書いた本とかマニュアルは難解でも当方は理解しますし「分かりやすく書けや」とはそれほど思いません。
理解しやすい文章を書けと思う人は経験不足です。
2019/04/06(土) 20:12:41.03ID:gcTy2CwVM
はやくゴミクズから人間になろうな
2019/04/06(土) 20:15:14.96ID:MA8UEjRg0
でも>>236>>240ってわかりにくい云々の前に
頭がおかしいレベルだよね?
流石に今後の人生のために改善したほうが良くね?
2019/04/06(土) 20:28:05.68ID:MT95SofI0
質問の意味を確認される時点でそもそも伝わりにくい文章だと思うけど。
コミュニケーションは相対的なものとはいえ、相手に負担を押し付けるやりとりをしていることに気づいてないのでは。
2019/04/06(土) 20:43:07.38ID:j7WnBgX90
>>260
一緒にしたら失礼。
難解な本は読み手に前提となる知識が足りないから読み難いが、書くべきことはちゃんと書いてある。
あなたのは書くべき情報が欠落していて単に文章として破綻してるだけ。ついでにその後のコミュニケーションも酷過ぎる。
265250 (ワッチョイ c201-j9UZ)
垢版 |
2019/04/06(土) 20:44:56.97ID:hyh7Xf1q0
240見直したけど
「サブフォームFORM2を作って右上の×で消した時」が分かりにくいかな?
※1 form2 = new Form2();
※2 form2.Show();
「サブフォームFORM2を作って※1表示した後※2にFORM2の右上の位置の×をクリックしてFORM2を閉じた時」

って書かないと駄目だったのかな?でも回答を教えてくれた人居るし分かってほしいな〜
2019/04/06(土) 20:58:19.18ID:YyWMpA9h0
いや、動作がわからないんじゃなくてお前さんがやりたいことがわからないって話な
2019/04/06(土) 21:01:04.80ID:Gnot3kBPd
小手先に頼らず全部書け
質問に関係なさそうなところも全部書け
関係ないと断言できるだけ知識があるならそもそも質問は生まれない
だから頭からケツまで全部書け
全部書いたつもりでも情報は足りないんだから小学生に伝えるつもりで書け
2019/04/06(土) 21:01:50.77ID:J4U0pcz9a
いわゆるバカの壁だねw
彼はたぶん自分の何が問題なのか本気で分かってない。

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

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

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

他人に理解してほしいというのは自然な欲求だが、相手に労力を求めるのでなく自分が理解される努力をしなよ。
270250 (ワッチョイ c201-j9UZ)
垢版 |
2019/04/06(土) 21:25:08.15ID:hyh7Xf1q0
>>266-269
要するに、やったことが無いから何故俺がそれをやりたいことがわからないんだね。
でも回答を教えてくれた人居るし・・。
2019/04/06(土) 21:26:09.76ID:Hw9bu2CQ0
>>240は「右上の×で消した時」が分かる人には引っ掛け問題になってるな
単に「サブフォームが閉じられたかどうかを判別したい」なら問題なかった

初心者スレだから質問者の文章が分かり難くてもある程度はしようがないし
>>240もその範疇だと思うけど、>>250はあり得ない
叩かれまくってるが自業自得だ
2019/04/06(土) 21:31:28.36ID:7yOX3K990
>>270
何度も書かれているけれどお前の説明が致命的に下手すぎるのが原因
273デフォルトの名無しさん (ワッチョイ 8261-gjr1)
垢版 |
2019/04/06(土) 21:49:22.76ID:l9A0t+NU0
>>260
>質問して「質問は・・ということなの?」
っていうのは、おまいさんの質問文そのままじゃわからないので経験を加味して質問文を解読して少しでも回答できるやつを増やそうとしてくれてるんだよ。
おまいさんの質問文そのままじゃ超絶エスパーがスレに降臨するまで話がすすまないよ。
2019/04/06(土) 21:50:12.97ID:1moq2C1C0
いろいろな人がいろいろな表現で指摘しているけど、
結局のところのお前が程度が他人とコミュニケーション取るレベルに至ってないって指摘だ

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

> でも回答を教えてくれた人居るし・・。
>>243はかなり親切だからいくつかのケースを書いてくれてるけどそれでも
> 具体的に何が目的かを書いてもらった方が答えやすいと思う
って書かれてる意味を考えなよ
2019/04/06(土) 22:47:01.10ID:ZtBD8DJx0
みんな優しいな
2019/04/06(土) 23:04:06.29ID:hyh7Xf1q0
>>275

>242 Xボタンで消したときと、Xボタン以外の何らかの方法で消したとき?
242には触れたくなかったけど、こんなこと240に書いてないし242は馬鹿なんだと思う。
それをおかしいと思わない275もどうかなと思う。close()で閉じてもIsDisposedで判別できるし
何で気にするか分からないな。ていうかウィンドウの右上にXが無いのかな?
2019/04/06(土) 23:14:09.25ID:j7WnBgX90
>>277
日本語が拙いから推測されただけだろ。エスパー求めてるのに何言ってる。
2019/04/07(日) 00:08:13.42ID:fnPZIWU30
ここまでいろんな人が指摘してるのに論点が噛み合わないのは逆に逸材なのでは
なんかモスバーガーの包み紙のスレを思い出した
2019/04/07(日) 00:36:33.50ID:yNnH+Rdg0
初歩的な質問で申し訳ないのですが、c#のガベージコレクション機能は循環参照状態にあるインスタンスも破棄してくれるのでしょうか?
暫く調べたのものの「リークするから弱参照を使う」「GCに頼っていい」「javaなど一部言語は破棄する」など多くの話があり混乱しています
より専門的な、ガベージコレクションの内部的な仕組みそれ自体を説明しているサイトは私の知識では理解できませんでした

例えばa→b→c←→dという向きで参照しているインスタンスの組み合わせがあったとして、
aからbの参照を切ってもGCで回収されるのはbだけでcとdの組は残り続けるのでしょうか
281デフォルトの名無しさん (ワッチョイ c201-j9UZ)
垢版 |
2019/04/07(日) 00:37:08.32ID:AJMxYZfA0
でもさぁ、サブフォームをXボタンで閉じた時と閉じてないときの判別方法を聞いてるのに

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

本当に240だけの問題なの?241=242=262の頭に問題は無いの?
2019/04/07(日) 00:40:32.22ID:Lr+Z70d50
じゃあ、もう一回確認な

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



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

で置き換えたとき

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

って何言ってるのかさっぱりわからないよね?
これで世の中渡っていけると本気で思っているのか?
2019/04/07(日) 00:44:13.15ID:Lr+Z70d50
>>281
じゃあ、質問に答えてね

サブフォームFORM2を作って右上の×で消した時どうすれば(どこを調べれば)よいですか?
2019/04/07(日) 00:49:36.20ID:vK2HJm7v0
>>282
気持ちは分かるが落ち着けw
>>236>>240で意味不明だっと認めて訂正してるぞ。
2019/04/07(日) 00:55:57.83ID:Lr+Z70d50
>>284
そんなの考慮する必要ない
だって彼にもその気はないんだから
2019/04/07(日) 01:00:11.33ID:h90p5IeD0
>>281
いったい何に拘ってるんだ?そこまで自分に非があることを認めたくないのか?
>>241,242で君の説明が理解されなかったのは別に変でもないし頭がおかしいという訳ではないぞ。>>262も攻撃的ではあるが頭がおかしいというのとは違う。

誰も>>241等のレスに無関係に、君の一連のレスに対して、説明が下手であること、態度に問題があること、それについて君がいっこうに理解できていないことを指摘しているだけ。
2019/04/07(日) 01:58:10.82ID:73jPe6360
>>280
こっちの話の方が面白そうだよ
2019/04/07(日) 05:53:56.72ID:vRdyA0zq0
>>280
そういう単純なケースならc,dともに回収されるので気にするな
2019/04/07(日) 06:41:43.95ID:u8jd6Keja
>>280
GCの方式が参照カウンタ方式というものなら循環参照があると回収されないけど
C#(.NET)は世代別GCという方式だから循環参照があっても未使用なら回収される
> 例えばa→b→c←→dという向きで参照しているインスタンスの組み合わせがあったとして、
> aからbの参照を切ってもGCで回収されるのはbだけでcとdの組は残り続けるのでしょうか
b, c, dが他から参照されていなければ、b, c, dすべて回収される
2019/04/07(日) 07:40:40.19ID:AvqFg2320
>>277
う~ん、引っ込みがつかなくなってるのか本当に初心者で何を指摘されてるのか理解できてないのかよくわからんけどここ初心者用だから初心者として仮定して…
Xボタンでフォームを消すと言うのはどちらかと言うと一般的じゃない(普通のフォームならOk/Cancel/閉じるボタン等を配置するよね)ので「右上の×で消す」と書くとなにか特別なことをしようとしてるのかと思われるの
ただ初心者だとXボタンで消すのが当たり前と思ってる人もいるから確認の為に>>242みたいなことを聞いてるわけ
あとそもそもサブフォームの状態を調べると言うのもあまり一般的じゃない
GUIだとイベントで処理するのが普通だから>>238みたいなことを言われる
2019/04/07(日) 07:58:43.91ID:AvqFg2320
>>280
初歩的な質問じゃない気がするがw
まあこのスレとしては「GCに頼っていい」が正解かな
>>289も書いてるけどGC持ってる最近の言語の実装は世代別(と言ってもたいてい2世代だけど)GCになってるのが多く最終的にはマーク&スイープで回収されるのが一般的なので全部回収されると思ってていい
2019/04/07(日) 14:00:44.14ID:yNnH+Rdg0
>>287-289,>>291
ありがとうございます、助かりました
もう少しC#に慣れるまでメモリ管理は忘れます
2019/04/07(日) 16:38:33.55ID:gLMV6b6F0
Listboxにデータをバインディングするときに、XAMLにBinding記述する方法と、コントロールに名前を付けてコード上からやる方法がありますが、どちらがよいのでしょうか
2019/04/07(日) 18:07:02.76ID:yVw8pf+H0
好きにすれば良いけど転がってるサンプルコードはほぼXAMLでやってるな
2019/04/07(日) 18:24:40.28ID:bCl1La9L0
GCがちゃんと動いてオブジェクトが解放されたのかは、デストラクタに
Console.WriteLine("解放されますた!");
と書いておくと安心できる。
メモリリーク発生の可能性も減る。
2019/04/07(日) 18:48:15.95ID:zc2PfqGUM
>>295
心の安寧が欲しいなら止めないけど
C#では、パフォーマンスを低下させるため、プログラムの動作に必要がない
ファイナライザを実装すること自体が推奨されないことは、知っておいた方がよい

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

ファイナライザを保険として実装した上で、前述のパフォーマンス低下を避けるには
自分でファイナライザ相当の処理をした上でSuppressFinalizeを呼び出しておく必要がある
この場合、ファイナライザは実行されなくなり、パフォーマンスの低下も起きない
2019/04/07(日) 18:49:09.04ID:QS/EO+8da
デストラクタにはなるべく頼らないようにしようぜ
デストラクタを記述するにしてもDispose()されたときにGC.SuppressFinalize(this)しようぜ

>>295
出力の有無でメモリリークに気づける可能性はあるが「発生の可能性も減る」について詳しく
2019/04/07(日) 19:36:38.60ID:AJMxYZfA0
既にスレを荒らした状態になってるから、もうこれで最後にするけど

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

初心者の書く「右上の×で消す」の文が不満で何で
「Xボタンで消したときと、Xボタン以外の何らかの方法で消したとき?」
何で選択肢が増えるんだよw
プログラムより国語の勉強しないと。
回答側に回りたいなら模範回答できる質問だけにしてください。
2019/04/07(日) 19:41:49.21ID:AvqFg2320
>>298
> 「右上の×で消す」の意味は「右上の×マークをクリックして窓を消す」以外ありえません。
どうしたらこんな頓珍漢なレスができるんだよ…
誰もその意味がおかしいとか言ってるわけじゃないぞw
2019/04/07(日) 20:15:40.25ID:AJMxYZfA0
>>299 何でイベントのclosedでは駄目かというと、閉じた瞬間の情報が欲しい訳ではないからです。
窓閉じてしばらくして閉じたかどうか知りたいってことなので。なんでそんなこと知りたいんだよ(怒)
って言われても別にいいだろとしか。c#はイベントで処理するからって考えの人にあれこれ
言う義務は俺には無いよ。
2019/04/07(日) 20:16:16.95ID:QS/EO+8da
>>298
初心者様ってすごいね
ちゃんとした回答が欲しいなら質問をちゃんと書いてね
https://teratail.com/help/question-tips#questionTips3
ここは5chだから多少は違いがあるけど「正しく伝わる質問の仕方」は同じだよ
2019/04/07(日) 20:32:13.15ID:E1covCOyM
昨日今日はどのスレもこんなのばっかりだぜ
金払ってスクールでも通えよって
2019/04/07(日) 20:37:07.02ID:AvqFg2320
>>300
別に閉じてるかどうかを知りたいことがないわけじゃなくて珍しいって話な
たいていの場合はなにか設計がおかしい可能性が高い
まあ俺に影響あるわけじゃないから好きにすればいいと思うけどw
2019/04/07(日) 20:56:30.81ID:AJMxYZfA0
>>301
回答は貰ったんだよ。

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

C#はイベントだけで処理すると考える学生がイベントのclosedで解決すると思ったら
解決しないから発狂してキチガイとか日本語が変とか難癖つけたんだろ。
2019/04/07(日) 21:09:42.81ID:aPMrZc410
ゴミクズにレスつけてる奴も死なねえか
お前のせいで終わらんのやぞ
2019/04/07(日) 21:39:33.31ID:QS/EO+8da
>>304
質問内容に >>300 中の「閉じた瞬間の情報が欲しい訳ではないからです。窓閉じてしばらくして閉じたかどうか知りたい」
という内容も書かれていたら、最初から正しいIsDisposedの回答だけが得られたかもしれないね
「学生」を罵り言葉として使っているということは社会人かな?
その態度を貫けるくらいには沢山エスパーが居る会社なのかな、凄い環境だなあ
2019/04/07(日) 21:59:51.43ID:FnnSZHMw0
>>298
え?じゃあ聞くけど

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

FORM2 form2 = new Form2();
2019/04/07(日) 22:30:58.81ID:RA8LBCNw0
オフショア開発してるけどこんな訳わからない質問ばっかで気が狂いそうになるよ
エスパー能力欲しいなぁ
2019/04/07(日) 22:31:35.27ID:AvqFg2320
>>306
まあ引っ込みつかなくなってるんだろうね
学生云々は不問にするとしても
> C#はイベント「だけ」で処理すると考える
とか誰も書いてないことを言い出してるしw
2019/04/07(日) 23:15:27.17ID:fnPZIWU30
この議論はGCに処理してもらおう
2019/04/07(日) 23:52:46.05ID:h90p5IeD0
>>310
なるほど。この無価値な議論の中身を気にして参照してるのはもはや当人同士の循環参照のみだから、>>289に書かれている通り世代別GCで回収されるわけですな。
2019/04/08(月) 20:04:21.39ID:bxLyJs4eM
引数について質問させてください

ref と out の違いってなんですか?
どういうときに ref を使うのか、out を使うのか、よくわかりません
2019/04/08(月) 20:16:44.97ID:DkSPe/Rf0
>>312
https://www.atmarkit.co.jp/ait/articles/1804/25/news021.html
2019/04/08(月) 20:23:20.59ID:WPZzOuq3a
>>312
ref引数は、呼び出し先関数で、引数を使うし設定もする場合に使う
out引数は、呼び出し先関数で、引数を設定するだけの場合に使う
この違いにより、refで渡す引数は初期化しておく必要があるけど、outで渡す引数は未初期化でも構わない

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

値型と参照型の違いも知っておいたほうがハマりにくいかも
2019/04/08(月) 21:00:25.38ID:PMJ1/1Ak0
>>314
めんどくさいので out は忘れて ref ばかり使っていますが問題ありますでしょうか!?
2019/04/08(月) 22:47:42.86ID:WPZzOuq3a
>>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
2019/04/09(火) 00:18:34.64ID:/fBSGCK40
コンストラクタでテキストボックスの値でフィールドを初期化しようとしたら怒られた これダメなのか…
2019/04/09(火) 02:13:47.76ID:UAdV14hW0
>>317
なんと言って怒られたの?
2019/04/09(火) 10:04:22.44ID:iYhZfRkA0
おんどりゃぁふざけた初期化すんじゃねぇ です
2019/04/09(火) 10:26:21.20ID:euLRl0x60
>>317
日本語でおk
2019/04/09(火) 11:37:19.16ID:6ZB9MqDTM
コンストラクタでテキストボックスの初期化、俺じゃなきゃ見逃しちゃうね
2019/04/09(火) 11:56:56.57ID:hdDhGrZ5a
>>317
デザイナーで置いたテキストボックスのインスタンス構築や、各種プロパティの設定は
実際はInitializeComponent()メソッドの中で行われる
InitializeComponent()よりも前で値を読もうとしてNullReferenceExceptionが出ているのなら
InitializeComponent()の後で値を読めばいい
までエスパーした
2019/04/09(火) 21:10:24.64ID:0DYeC6pW0
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
って標準入力が全部完了されたあとにまとめて文字列渡されるのって何でなの?
2019/04/09(火) 21:31:50.99ID:2u68c9Dp0
標準出力に改行が出力されてないから
2019/04/09(火) 21:49:55.14ID:0DYeC6pW0
>>324
試しに全部のprintfに改行入れてみたけど、それでもscanfが全部終わるまでOutputDataReceivedイベント発生しないっぽい。
C#側で標準出力を受け取ってstringに追加 ー> exe側は入力待機 ー> C#側からStandardInput.WriteLineで標準入力 ー>exe側は処理続行
みたいな コマンドプロンプトからのの実行と同じような動きをする処理って、C#じゃどうやるんだろう?
2019/04/09(火) 23:25:15.43ID:2u68c9Dp0
stdoutがパイプに繋がってるとprintfは改行があろうがバッファし続ける
setbuf(stdout, NULL)しとくか、printf後にfflush(stdout)するか
2019/04/09(火) 23:39:38.53ID:IIo4qqMm0
C#関係なくね?
2019/04/09(火) 23:59:05.15ID:0DYeC6pW0
>>326
setbufでもfflushでも何故か入力待機状態が終了するまでOutputDataReceivedイベントが発生しなかったからあきらめてテキストファイルにログ出力してそれ読み込むことにするわ
教えてくれてありがとう
2019/04/10(水) 20:02:38.36ID:YVfMef4MM
>>313-316
だいぶ返信が遅れてしまいました
まとめてですみませんが、親切に教えていただきありがとうございました
2019/04/12(金) 22:52:29.27ID:luZS+mvc0
C#関係ないんだけどシングルトンの使い場所がわかりませぬ

こんなクラスがあるとして、
class a{
 Dictionary<string, string> hoge;

 public string getHoge(key)
{return hoge[key];}
}
hogeにはDBから対象の精々100くらいの全レコード取ってきて格納しておきたい
複数インスタンスが必要にはならないようなデータ
外部からのsetは許可しない

こういう時ってシングルトン使ってnew時にDBからデータ取得とかしていいのでしょうか?
もっと賢いやり方あります?
2019/04/12(金) 23:01:43.16ID:fgu2eH2Ta
>>330
シングルトンはテストを困難にするアンチパターンだから忘れていい
単一のインスタンスが欲しい場合はDIを使う
2019/04/12(金) 23:09:32.03ID:SGqhATO10
>>331
DIとシングルトンは全く別の概念やぞ…
2019/04/12(金) 23:11:43.52ID:fgu2eH2Ta
>>332
DI使ったことないの?
単一のインスタンスを共有するのは大抵のDIコンテナでサポートされている一般的な機能だよ
334デフォルトの名無しさん (オッペケ Sr85-IY8d)
垢版 |
2019/04/12(金) 23:33:00.52ID:HVuVGzQQr
staticじゃあかんの?
2019/04/12(金) 23:33:46.50ID:FJ5vSxoFM
発想の飛躍やべぇな
2019/04/12(金) 23:40:02.85ID:le1Q6kdLM
シングルトン大好き。
状況的に複数インスタンス生まないクラスは必ずと言っていいほどシングルトン。
2019/04/12(金) 23:41:28.59ID:le1Q6kdLM
class名.staticメソッド、static変数を多用。
2019/04/12(金) 23:47:39.11ID:SGqhATO10
>>333
お前こそプログラミングしたことないやろ…インスタンスの意味から調べてこい
2019/04/12(金) 23:51:53.21ID:GRWvVKgh0
>>334
get setでなんか仕掛けるでもしない限りはstaticでいいよな
2019/04/13(土) 00:17:16.36ID:DF10sMIkM
>>339
ユニットテストでモックしたいときどうすんの?
2019/04/13(土) 00:45:48.83ID:gAxxWG/M0
シングルトン的なことがしたいときの今時のやり方はDI使うことだな
2019/04/13(土) 01:23:05.24ID:4BHEL+7ta
>>330
言語レベルで単一インスタンスの強制を保証する必要が
本当にそんなにしばしばあるのかなとは個人的には思うね。

要は共有方法を明確にしておけば十分じゃないかと。
そもそも共有されるオブジェクトを各々が勝手にnewするのがおかしいわけで。

具体的には、例えばWindows FormならVSが自動生成するProgramクラスの
staticな読み取り専用プロパティとして実装する約束にしておけば済む
2019/04/13(土) 05:26:30.24ID:f7He4YCD0
俺もそう思う
べき論としてみんな口々に言うけどそこを懸念するとかどんだけ連携がないチームなんだよ
2019/04/13(土) 08:35:33.20ID:vIVj+RyW0
>>341
ただ、DIもシングルトンの一形態という記述は見たことが有る
345デフォルトの名無しさん (ワッチョイ a984-xQPP)
垢版 |
2019/04/13(土) 08:39:55.79ID:Gb+AenIc0
以前に書いたプログラムを元に加筆修正して別のプログラムを作った時
フォルダもソリューションも別名で保存したいのですが
VisualStudioはそういう保存はできないのでしょうか?
今は力業であらかじめ別名フォルダにコピーしたソリューションから作り始め
ソリューション名、プロジェクト名、アセンブリ名、空間名
等を書き換えてからプログラムの修正を始めるのですが
時々何かがおかしくなってバインディングが外れたり
破綻してしまうこともあるので
何か安全に書き換える方法があるのかな?と質問しました
2019/04/13(土) 08:52:30.68ID:J/cBqpWVM
>>345
いい加減git使おう
347デフォルトの名無しさん (ワッチョイ a984-xQPP)
垢版 |
2019/04/13(土) 09:32:07.36ID:Gb+AenIc0
>>346
うーんちょっと調べただけだけどヤヤこしそう・・・
それにバージョン管理とは違うんだよなー
ワープロを元にデータベースを作ったからフォルダもソリューションも変えて保存したい
って感じなんだけど
2019/04/13(土) 09:39:52.37ID:vbn0MA6qa
レベル下がったなこのスレも
VB.NETとJavaが終わりつつあるから流入してるのか
2019/04/13(土) 09:55:51.57ID:J/cBqpWVM
>>347
慣れたら自然にそんなアホなことをしようとは思わなくなるから気にしなくていい
俺も初心者の頃はそうだったから気持ちはよくわかる
2019/04/13(土) 09:59:00.31ID:C2d1A80t0
>>348
レベルの高い時期があったみたいな言い方だな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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