!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
ふらっと C#,C♯,C#(初心者用) Part142
■ このスレッドは過去ログ倉庫に格納されています
1名無C ◆jPpg5.obl6 (ワッチョイ 762c-FuHz)
2019/03/07(木) 06:35:41.12ID:6L3KEJfe0280デフォルトの名無しさん (ワッチョイ 69b0-umYY)
2019/04/07(日) 00:36:33.50ID:yNnH+Rdg0 初歩的な質問で申し訳ないのですが、c#のガベージコレクション機能は循環参照状態にあるインスタンスも破棄してくれるのでしょうか?
暫く調べたのものの「リークするから弱参照を使う」「GCに頼っていい」「javaなど一部言語は破棄する」など多くの話があり混乱しています
より専門的な、ガベージコレクションの内部的な仕組みそれ自体を説明しているサイトは私の知識では理解できませんでした
例えばa→b→c←→dという向きで参照しているインスタンスの組み合わせがあったとして、
aからbの参照を切ってもGCで回収されるのはbだけでcとdの組は残り続けるのでしょうか
暫く調べたのものの「リークするから弱参照を使う」「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の頭に問題は無いの?
>242 Xボタンで消したときと、Xボタン以外の何らかの方法で消したとき?
で選択肢が1個増えて余計ややこしくしてるだけだし
本当に240だけの問題なの?241=242=262の頭に問題は無いの?
282デフォルトの名無しさん (ワッチョイ ed61-yEdN)
2019/04/07(日) 00:40:32.22ID:Lr+Z70d50 じゃあ、もう一回確認な
サブフォームFORM2を作って右上の×で消した時
どうすれば(どこを調べれば)よいですか?
を
A=サブフォームFORM2
B=右上の×で消した
で置き換えたとき
Aを作ってBのとき
どうすればよいですか?
って何言ってるのかさっぱりわからないよね?
これで世の中渡っていけると本気で思っているのか?
サブフォームFORM2を作って右上の×で消した時
どうすれば(どこを調べれば)よいですか?
を
A=サブフォームFORM2
B=右上の×で消した
で置き換えたとき
Aを作ってBのとき
どうすればよいですか?
って何言ってるのかさっぱりわからないよね?
これで世の中渡っていけると本気で思っているのか?
283デフォルトの名無しさん (ワッチョイ ed61-yEdN)
2019/04/07(日) 00:44:13.15ID:Lr+Z70d50284デフォルトの名無しさん (ワッチョイ 7d5f-iE/E)
2019/04/07(日) 00:49:36.20ID:vK2HJm7v0285デフォルトの名無しさん (ワッチョイ ed61-yEdN)
2019/04/07(日) 00:55:57.83ID:Lr+Z70d50286デフォルトの名無しさん (ワッチョイ 6252-gCYp)
2019/04/07(日) 01:00:11.33ID:h90p5IeD0287デフォルトの名無しさん (ワッチョイ 6247-fpxN)
2019/04/07(日) 01:58:10.82ID:73jPe6360 >>280
こっちの話の方が面白そうだよ
こっちの話の方が面白そうだよ
288デフォルトの名無しさん (ワッチョイ e500-iMOx)
2019/04/07(日) 05:53:56.72ID:vRdyA0zq0 >>280
そういう単純なケースならc,dともに回収されるので気にするな
そういう単純なケースならc,dともに回収されるので気にするな
289デフォルトの名無しさん (アウアウウー Sac5-dKzD)
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すべて回収される
GCの方式が参照カウンタ方式というものなら循環参照があると回収されないけど
C#(.NET)は世代別GCという方式だから循環参照があっても未使用なら回収される
> 例えばa→b→c←→dという向きで参照しているインスタンスの組み合わせがあったとして、
> aからbの参照を切ってもGCで回収されるのはbだけでcとdの組は残り続けるのでしょうか
b, c, dが他から参照されていなければ、b, c, dすべて回収される
290デフォルトの名無しさん (ワッチョイ 8201-xk87)
2019/04/07(日) 07:40:40.19ID:AvqFg2320 >>277
う~ん、引っ込みがつかなくなってるのか本当に初心者で何を指摘されてるのか理解できてないのかよくわからんけどここ初心者用だから初心者として仮定して…
Xボタンでフォームを消すと言うのはどちらかと言うと一般的じゃない(普通のフォームならOk/Cancel/閉じるボタン等を配置するよね)ので「右上の×で消す」と書くとなにか特別なことをしようとしてるのかと思われるの
ただ初心者だとXボタンで消すのが当たり前と思ってる人もいるから確認の為に>>242みたいなことを聞いてるわけ
あとそもそもサブフォームの状態を調べると言うのもあまり一般的じゃない
GUIだとイベントで処理するのが普通だから>>238みたいなことを言われる
う~ん、引っ込みがつかなくなってるのか本当に初心者で何を指摘されてるのか理解できてないのかよくわからんけどここ初心者用だから初心者として仮定して…
Xボタンでフォームを消すと言うのはどちらかと言うと一般的じゃない(普通のフォームならOk/Cancel/閉じるボタン等を配置するよね)ので「右上の×で消す」と書くとなにか特別なことをしようとしてるのかと思われるの
ただ初心者だとXボタンで消すのが当たり前と思ってる人もいるから確認の為に>>242みたいなことを聞いてるわけ
あとそもそもサブフォームの状態を調べると言うのもあまり一般的じゃない
GUIだとイベントで処理するのが普通だから>>238みたいなことを言われる
291デフォルトの名無しさん (ワッチョイ 8201-xk87)
2019/04/07(日) 07:58:43.91ID:AvqFg2320292デフォルトの名無しさん (ワッチョイ 69b0-umYY)
2019/04/07(日) 14:00:44.14ID:yNnH+Rdg0293デフォルトの名無しさん (ワッチョイ 617b-xKOO)
2019/04/07(日) 16:38:33.55ID:gLMV6b6F0 Listboxにデータをバインディングするときに、XAMLにBinding記述する方法と、コントロールに名前を付けてコード上からやる方法がありますが、どちらがよいのでしょうか
294デフォルトの名無しさん (ワッチョイ ee2c-jHdF)
2019/04/07(日) 18:07:02.76ID:yVw8pf+H0 好きにすれば良いけど転がってるサンプルコードはほぼXAMLでやってるな
295デフォルトの名無しさん (ワッチョイ 2eda-iMOx)
2019/04/07(日) 18:24:40.28ID:bCl1La9L0 GCがちゃんと動いてオブジェクトが解放されたのかは、デストラクタに
Console.WriteLine("解放されますた!");
と書いておくと安心できる。
メモリリーク発生の可能性も減る。
Console.WriteLine("解放されますた!");
と書いておくと安心できる。
メモリリーク発生の可能性も減る。
296デフォルトの名無しさん (ラクペッ MM59-9Thk)
2019/04/07(日) 18:48:15.95ID:zc2PfqGUM >>295
心の安寧が欲しいなら止めないけど
C#では、パフォーマンスを低下させるため、プログラムの動作に必要がない
ファイナライザを実装すること自体が推奨されないことは、知っておいた方がよい
パフォーマンスが低下するのは、ファイナライザの実装されていると
GC時にファイナライザキューを介してファイナライズが行われるが
このファイナライズを行う際はStop the worldする必要があるためだ
ファイナライザを保険として実装した上で、前述のパフォーマンス低下を避けるには
自分でファイナライザ相当の処理をした上でSuppressFinalizeを呼び出しておく必要がある
この場合、ファイナライザは実行されなくなり、パフォーマンスの低下も起きない
心の安寧が欲しいなら止めないけど
C#では、パフォーマンスを低下させるため、プログラムの動作に必要がない
ファイナライザを実装すること自体が推奨されないことは、知っておいた方がよい
パフォーマンスが低下するのは、ファイナライザの実装されていると
GC時にファイナライザキューを介してファイナライズが行われるが
このファイナライズを行う際はStop the worldする必要があるためだ
ファイナライザを保険として実装した上で、前述のパフォーマンス低下を避けるには
自分でファイナライザ相当の処理をした上でSuppressFinalizeを呼び出しておく必要がある
この場合、ファイナライザは実行されなくなり、パフォーマンスの低下も起きない
297デフォルトの名無しさん (アウアウウー Sac5-dKzD)
2019/04/07(日) 18:49:09.04ID:QS/EO+8da デストラクタにはなるべく頼らないようにしようぜ
デストラクタを記述するにしてもDispose()されたときにGC.SuppressFinalize(this)しようぜ
>>295
出力の有無でメモリリークに気づける可能性はあるが「発生の可能性も減る」について詳しく
デストラクタを記述するにしてもDispose()されたときにGC.SuppressFinalize(this)しようぜ
>>295
出力の有無でメモリリークに気づける可能性はあるが「発生の可能性も減る」について詳しく
298デフォルトの名無しさん (ワッチョイ c201-j9UZ)
2019/04/07(日) 19:36:38.60ID:AJMxYZfA0 既にスレを荒らした状態になってるから、もうこれで最後にするけど
>>290
の上8行「右上の×で消す」という書き込みは初心者が使うフレーズだから
中〜上級者の俺様は深読みして間違えたと解釈したけど
本物の中上級者でも「右上の×で消す」の意味は「右上の×マークをクリック
して窓を消す」以外ありえません。そういうわけであなたは
初心者でも中〜上級者でもない別の何かです。
初心者の書く「右上の×で消す」の文が不満で何で
「Xボタンで消したときと、Xボタン以外の何らかの方法で消したとき?」
何で選択肢が増えるんだよw
プログラムより国語の勉強しないと。
回答側に回りたいなら模範回答できる質問だけにしてください。
>>290
の上8行「右上の×で消す」という書き込みは初心者が使うフレーズだから
中〜上級者の俺様は深読みして間違えたと解釈したけど
本物の中上級者でも「右上の×で消す」の意味は「右上の×マークをクリック
して窓を消す」以外ありえません。そういうわけであなたは
初心者でも中〜上級者でもない別の何かです。
初心者の書く「右上の×で消す」の文が不満で何で
「Xボタンで消したときと、Xボタン以外の何らかの方法で消したとき?」
何で選択肢が増えるんだよw
プログラムより国語の勉強しないと。
回答側に回りたいなら模範回答できる質問だけにしてください。
299デフォルトの名無しさん (ワッチョイ 8201-xk87)
2019/04/07(日) 19:41:49.21ID:AvqFg2320300デフォルトの名無しさん (ワッチョイ c201-j9UZ)
2019/04/07(日) 20:15:40.25ID:AJMxYZfA0 >>299 何でイベントのclosedでは駄目かというと、閉じた瞬間の情報が欲しい訳ではないからです。
窓閉じてしばらくして閉じたかどうか知りたいってことなので。なんでそんなこと知りたいんだよ(怒)
って言われても別にいいだろとしか。c#はイベントで処理するからって考えの人にあれこれ
言う義務は俺には無いよ。
窓閉じてしばらくして閉じたかどうか知りたいってことなので。なんでそんなこと知りたいんだよ(怒)
って言われても別にいいだろとしか。c#はイベントで処理するからって考えの人にあれこれ
言う義務は俺には無いよ。
301デフォルトの名無しさん (アウアウウー Sac5-dKzD)
2019/04/07(日) 20:16:16.95ID:QS/EO+8da >>298
初心者様ってすごいね
ちゃんとした回答が欲しいなら質問をちゃんと書いてね
https://teratail.com/help/question-tips#questionTips3
ここは5chだから多少は違いがあるけど「正しく伝わる質問の仕方」は同じだよ
初心者様ってすごいね
ちゃんとした回答が欲しいなら質問をちゃんと書いてね
https://teratail.com/help/question-tips#questionTips3
ここは5chだから多少は違いがあるけど「正しく伝わる質問の仕方」は同じだよ
302デフォルトの名無しさん (ラクペッ MM59-9Thk)
2019/04/07(日) 20:32:13.15ID:E1covCOyM 昨日今日はどのスレもこんなのばっかりだぜ
金払ってスクールでも通えよって
金払ってスクールでも通えよって
303デフォルトの名無しさん (ワッチョイ 8201-xk87)
2019/04/07(日) 20:37:07.02ID:AvqFg2320304デフォルトの名無しさん (ワッチョイ c201-j9UZ)
2019/04/07(日) 20:56:30.81ID:AJMxYZfA0305デフォルトの名無しさん (ワッチョイ ee63-9Thk)
2019/04/07(日) 21:09:42.81ID:aPMrZc410 ゴミクズにレスつけてる奴も死なねえか
お前のせいで終わらんのやぞ
お前のせいで終わらんのやぞ
306デフォルトの名無しさん (アウアウウー Sac5-dKzD)
2019/04/07(日) 21:39:33.31ID:QS/EO+8da307デフォルトの名無しさん (ワッチョイ ed61-yEdN)
2019/04/07(日) 21:59:51.43ID:FnnSZHMw0308デフォルトの名無しさん (ワッチョイ a101-yJ3O)
2019/04/07(日) 22:30:58.81ID:RA8LBCNw0 オフショア開発してるけどこんな訳わからない質問ばっかで気が狂いそうになるよ
エスパー能力欲しいなぁ
エスパー能力欲しいなぁ
309デフォルトの名無しさん (ワッチョイ 8201-xk87)
2019/04/07(日) 22:31:35.27ID:AvqFg2320310デフォルトの名無しさん (ワッチョイ fe0d-AWsO)
2019/04/07(日) 23:15:27.17ID:fnPZIWU30 この議論はGCに処理してもらおう
311デフォルトの名無しさん (ワッチョイ 6252-gCYp)
2019/04/07(日) 23:52:46.05ID:h90p5IeD0312デフォルトの名無しさん (ワイエディ MM16-hWz0)
2019/04/08(月) 20:04:21.39ID:bxLyJs4eM 引数について質問させてください
ref と out の違いってなんですか?
どういうときに ref を使うのか、out を使うのか、よくわかりません
ref と out の違いってなんですか?
どういうときに ref を使うのか、out を使うのか、よくわかりません
313デフォルトの名無しさん (ワッチョイ ee7b-O+pl)
2019/04/08(月) 20:16:44.97ID:DkSPe/Rf0314デフォルトの名無しさん (アウアウウー Sac5-dKzD)
2019/04/08(月) 20:23:20.59ID:WPZzOuq3a >>312
ref引数は、呼び出し先関数で、引数を使うし設定もする場合に使う
out引数は、呼び出し先関数で、引数を設定するだけの場合に使う
この違いにより、refで渡す引数は初期化しておく必要があるけど、outで渡す引数は未初期化でも構わない
.NET Framework中にある実例としては
int.TryParse()の場合、文字列の数値を引数に設定するだけで、引数の元々の値は使わないから、out引数でいい
難しい例だがInterlocked.CompareExchange()の場合、引数の値を返すし引数に設定する必要もあるため、ref引数が必要
値型と参照型の違いも知っておいたほうがハマりにくいかも
ref引数は、呼び出し先関数で、引数を使うし設定もする場合に使う
out引数は、呼び出し先関数で、引数を設定するだけの場合に使う
この違いにより、refで渡す引数は初期化しておく必要があるけど、outで渡す引数は未初期化でも構わない
.NET Framework中にある実例としては
int.TryParse()の場合、文字列の数値を引数に設定するだけで、引数の元々の値は使わないから、out引数でいい
難しい例だがInterlocked.CompareExchange()の場合、引数の値を返すし引数に設定する必要もあるため、ref引数が必要
値型と参照型の違いも知っておいたほうがハマりにくいかも
>>314
めんどくさいので out は忘れて ref ばかり使っていますが問題ありますでしょうか!?
めんどくさいので out は忘れて ref ばかり使っていますが問題ありますでしょうか!?
316デフォルトの名無しさん (アウアウウー Sac5-dKzD)
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
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
317デフォルトの名無しさん (ワッチョイ fe0d-nwht)
2019/04/09(火) 00:18:34.64ID:/fBSGCK40 コンストラクタでテキストボックスの値でフィールドを初期化しようとしたら怒られた これダメなのか…
318デフォルトの名無しさん (ワッチョイ 6247-fpxN)
2019/04/09(火) 02:13:47.76ID:UAdV14hW0 >>317
なんと言って怒られたの?
なんと言って怒られたの?
319デフォルトの名無しさん (ワッチョイ 4dda-QOAl)
2019/04/09(火) 10:04:22.44ID:iYhZfRkA0 おんどりゃぁふざけた初期化すんじゃねぇ です
320デフォルトの名無しさん (ワッチョイ 0261-iMOx)
2019/04/09(火) 10:26:21.20ID:euLRl0x60 >>317
日本語でおk
日本語でおk
321デフォルトの名無しさん (ドコグロ MM95-yEdN)
2019/04/09(火) 11:37:19.16ID:6ZB9MqDTM コンストラクタでテキストボックスの初期化、俺じゃなきゃ見逃しちゃうね
322デフォルトの名無しさん (アウアウウー Sac5-dKzD)
2019/04/09(火) 11:56:56.57ID:hdDhGrZ5a >>317
デザイナーで置いたテキストボックスのインスタンス構築や、各種プロパティの設定は
実際はInitializeComponent()メソッドの中で行われる
InitializeComponent()よりも前で値を読もうとしてNullReferenceExceptionが出ているのなら
InitializeComponent()の後で値を読めばいい
までエスパーした
デザイナーで置いたテキストボックスのインスタンス構築や、各種プロパティの設定は
実際はInitializeComponent()メソッドの中で行われる
InitializeComponent()よりも前で値を読もうとしてNullReferenceExceptionが出ているのなら
InitializeComponent()の後で値を読めばいい
までエスパーした
323デフォルトの名無しさん (ワッチョイ f1ab-c04X)
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
って標準入力が全部完了されたあとにまとめて文字列渡されるのって何でなの?
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
って標準入力が全部完了されたあとにまとめて文字列渡されるのって何でなの?
324デフォルトの名無しさん (ワッチョイ ee2c-jHdF)
2019/04/09(火) 21:31:50.99ID:2u68c9Dp0 標準出力に改行が出力されてないから
325デフォルトの名無しさん (ワッチョイ f1ab-c04X)
2019/04/09(火) 21:49:55.14ID:0DYeC6pW0 >>324
試しに全部のprintfに改行入れてみたけど、それでもscanfが全部終わるまでOutputDataReceivedイベント発生しないっぽい。
C#側で標準出力を受け取ってstringに追加 ー> exe側は入力待機 ー> C#側からStandardInput.WriteLineで標準入力 ー>exe側は処理続行
みたいな コマンドプロンプトからのの実行と同じような動きをする処理って、C#じゃどうやるんだろう?
試しに全部のprintfに改行入れてみたけど、それでもscanfが全部終わるまでOutputDataReceivedイベント発生しないっぽい。
C#側で標準出力を受け取ってstringに追加 ー> exe側は入力待機 ー> C#側からStandardInput.WriteLineで標準入力 ー>exe側は処理続行
みたいな コマンドプロンプトからのの実行と同じような動きをする処理って、C#じゃどうやるんだろう?
326デフォルトの名無しさん (ワッチョイ ee2c-jHdF)
2019/04/09(火) 23:25:15.43ID:2u68c9Dp0 stdoutがパイプに繋がってるとprintfは改行があろうがバッファし続ける
setbuf(stdout, NULL)しとくか、printf後にfflush(stdout)するか
setbuf(stdout, NULL)しとくか、printf後にfflush(stdout)するか
327デフォルトの名無しさん (ワッチョイ 3d17-iMOx)
2019/04/09(火) 23:39:38.53ID:IIo4qqMm0 C#関係なくね?
328デフォルトの名無しさん (ワッチョイ f1ab-c04X)
2019/04/09(火) 23:59:05.15ID:0DYeC6pW0 >>326
setbufでもfflushでも何故か入力待機状態が終了するまでOutputDataReceivedイベントが発生しなかったからあきらめてテキストファイルにログ出力してそれ読み込むことにするわ
教えてくれてありがとう
setbufでもfflushでも何故か入力待機状態が終了するまでOutputDataReceivedイベントが発生しなかったからあきらめてテキストファイルにログ出力してそれ読み込むことにするわ
教えてくれてありがとう
329デフォルトの名無しさん (ワイエディ MM16-hWz0)
2019/04/10(水) 20:02:38.36ID:YVfMef4MM330デフォルトの名無しさん (ワッチョイ 13e0-clLQ)
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からデータ取得とかしていいのでしょうか?
もっと賢いやり方あります?
こんなクラスがあるとして、
class a{
Dictionary<string, string> hoge;
public string getHoge(key)
{return hoge[key];}
}
hogeにはDBから対象の精々100くらいの全レコード取ってきて格納しておきたい
複数インスタンスが必要にはならないようなデータ
外部からのsetは許可しない
こういう時ってシングルトン使ってnew時にDBからデータ取得とかしていいのでしょうか?
もっと賢いやり方あります?
331デフォルトの名無しさん (アウアウエー Sae3-x1Th)
2019/04/12(金) 23:01:43.16ID:fgu2eH2Ta332デフォルトの名無しさん (ワッチョイ 13ad-OlUL)
2019/04/12(金) 23:09:32.03ID:SGqhATO10 >>331
DIとシングルトンは全く別の概念やぞ…
DIとシングルトンは全く別の概念やぞ…
333デフォルトの名無しさん (アウアウエー Sae3-x1Th)
2019/04/12(金) 23:11:43.52ID:fgu2eH2Ta334デフォルトの名無しさん (オッペケ Sr85-IY8d)
2019/04/12(金) 23:33:00.52ID:HVuVGzQQr staticじゃあかんの?
335デフォルトの名無しさん (ラクペッ MM75-ffMH)
2019/04/12(金) 23:33:46.50ID:FJ5vSxoFM 発想の飛躍やべぇな
336デフォルトの名無しさん (ブーイモ MMcb-G4w+)
2019/04/12(金) 23:40:02.85ID:le1Q6kdLM シングルトン大好き。
状況的に複数インスタンス生まないクラスは必ずと言っていいほどシングルトン。
状況的に複数インスタンス生まないクラスは必ずと言っていいほどシングルトン。
337デフォルトの名無しさん (ブーイモ MMcb-G4w+)
2019/04/12(金) 23:41:28.59ID:le1Q6kdLM class名.staticメソッド、static変数を多用。
338デフォルトの名無しさん (ワッチョイ 13ad-OlUL)
2019/04/12(金) 23:47:39.11ID:SGqhATO10 >>333
お前こそプログラミングしたことないやろ…インスタンスの意味から調べてこい
お前こそプログラミングしたことないやろ…インスタンスの意味から調べてこい
339デフォルトの名無しさん (ワッチョイ 8be3-XGqV)
2019/04/12(金) 23:51:53.21ID:GRWvVKgh0 >>334
get setでなんか仕掛けるでもしない限りはstaticでいいよな
get setでなんか仕掛けるでもしない限りはstaticでいいよな
340デフォルトの名無しさん (ドコグロ MM63-x1Th)
2019/04/13(土) 00:17:16.36ID:DF10sMIkM >>339
ユニットテストでモックしたいときどうすんの?
ユニットテストでモックしたいときどうすんの?
341デフォルトの名無しさん (ワッチョイ d347-9l+s)
2019/04/13(土) 00:45:48.83ID:gAxxWG/M0 シングルトン的なことがしたいときの今時のやり方はDI使うことだな
342デフォルトの名無しさん (アウアウエー Sae3-5b7P)
2019/04/13(土) 01:23:05.24ID:4BHEL+7ta >>330
言語レベルで単一インスタンスの強制を保証する必要が
本当にそんなにしばしばあるのかなとは個人的には思うね。
要は共有方法を明確にしておけば十分じゃないかと。
そもそも共有されるオブジェクトを各々が勝手にnewするのがおかしいわけで。
具体的には、例えばWindows FormならVSが自動生成するProgramクラスの
staticな読み取り専用プロパティとして実装する約束にしておけば済む
言語レベルで単一インスタンスの強制を保証する必要が
本当にそんなにしばしばあるのかなとは個人的には思うね。
要は共有方法を明確にしておけば十分じゃないかと。
そもそも共有されるオブジェクトを各々が勝手にnewするのがおかしいわけで。
具体的には、例えばWindows FormならVSが自動生成するProgramクラスの
staticな読み取り専用プロパティとして実装する約束にしておけば済む
343デフォルトの名無しさん (ワッチョイ 2b0d-Vj1b)
2019/04/13(土) 05:26:30.24ID:f7He4YCD0 俺もそう思う
べき論としてみんな口々に言うけどそこを懸念するとかどんだけ連携がないチームなんだよ
べき論としてみんな口々に言うけどそこを懸念するとかどんだけ連携がないチームなんだよ
344デフォルトの名無しさん (ワッチョイ 7b42-XGqV)
2019/04/13(土) 08:35:33.20ID:vIVj+RyW0 >>341
ただ、DIもシングルトンの一形態という記述は見たことが有る
ただ、DIもシングルトンの一形態という記述は見たことが有る
345デフォルトの名無しさん (ワッチョイ a984-xQPP)
2019/04/13(土) 08:39:55.79ID:Gb+AenIc0 以前に書いたプログラムを元に加筆修正して別のプログラムを作った時
フォルダもソリューションも別名で保存したいのですが
VisualStudioはそういう保存はできないのでしょうか?
今は力業であらかじめ別名フォルダにコピーしたソリューションから作り始め
ソリューション名、プロジェクト名、アセンブリ名、空間名
等を書き換えてからプログラムの修正を始めるのですが
時々何かがおかしくなってバインディングが外れたり
破綻してしまうこともあるので
何か安全に書き換える方法があるのかな?と質問しました
フォルダもソリューションも別名で保存したいのですが
VisualStudioはそういう保存はできないのでしょうか?
今は力業であらかじめ別名フォルダにコピーしたソリューションから作り始め
ソリューション名、プロジェクト名、アセンブリ名、空間名
等を書き換えてからプログラムの修正を始めるのですが
時々何かがおかしくなってバインディングが外れたり
破綻してしまうこともあるので
何か安全に書き換える方法があるのかな?と質問しました
346デフォルトの名無しさん (ドコグロ MM95-x1Th)
2019/04/13(土) 08:52:30.68ID:J/cBqpWVM >>345
いい加減git使おう
いい加減git使おう
347デフォルトの名無しさん (ワッチョイ a984-xQPP)
2019/04/13(土) 09:32:07.36ID:Gb+AenIc0 >>346
うーんちょっと調べただけだけどヤヤこしそう・・・
それにバージョン管理とは違うんだよなー
ワープロを元にデータベースを作ったからフォルダもソリューションも変えて保存したい
って感じなんだけど
うーんちょっと調べただけだけどヤヤこしそう・・・
それにバージョン管理とは違うんだよなー
ワープロを元にデータベースを作ったからフォルダもソリューションも変えて保存したい
って感じなんだけど
348デフォルトの名無しさん (アウアウエー Sae3-cVJ2)
2019/04/13(土) 09:39:52.37ID:vbn0MA6qa レベル下がったなこのスレも
VB.NETとJavaが終わりつつあるから流入してるのか
VB.NETとJavaが終わりつつあるから流入してるのか
349デフォルトの名無しさん (ドコグロ MM95-x1Th)
2019/04/13(土) 09:55:51.57ID:J/cBqpWVM350デフォルトの名無しさん (ワッチョイ 417d-n39u)
2019/04/13(土) 09:59:00.31ID:C2d1A80t0 >>348
レベルの高い時期があったみたいな言い方だな
レベルの高い時期があったみたいな言い方だな
351デフォルトの名無しさん (ワッチョイ 1301-EjgJ)
2019/04/13(土) 10:04:10.28ID:vzJQEXVg0352デフォルトの名無しさん (ワッチョイ 8bb0-xQPP)
2019/04/13(土) 10:41:12.62ID:kUX6ubEA0353デフォルトの名無しさん (ワッチョイ 992d-U5P5)
2019/04/13(土) 10:44:39.80ID:nXQ9b0jN0 7.2で加わった、条件付きのref式って意味がわかんないんだけどさあ
これrefがついていようがいまいが同じように動作しないの???
なんなのこれ
これrefがついていようがいまいが同じように動作しないの???
なんなのこれ
354デフォルトの名無しさん (アウアウエー Sae3-KE1k)
2019/04/13(土) 11:21:31.91ID:umtct5vHa >>353
int a, b, c;
void Reset() { a = 1; b = 2; c = 3; }
Reset();
ref int x = ref a;
x = (true ? b : c); // 普通の条件演算子
x = 4; // xの参照先はaのままなのでaが変わる
Console.WriteLine($"{a} {b} {c}"); // 4 2 3
Reset();
ref int y = ref a;
y = (true ? ref b :ref c); // 条件演算子の2項目と3項目にrefはあるが、条件演算子の前にrefはない→参照でなく値が代入されるだけ(上と同じ)
y = 4; // yの参照先はaのままなのでaが変わる(ここでハマってそう)
Console.WriteLine($"{a} {b} {c}"); // 4 2 3
Reset();
ref int z = ref a;
z = ref (true ? ref b : ref c); // 条件演算子の前にrefがある→zの参照先が変わる
z = 4; // zの参照先がbになったのでbが変わる
Console.WriteLine($"{a} {b} {c}"); // 1 4 3
// https://ufcpp.net/study/csharp/sp_ref.html?p=2#conditional-ref もどうぞ
int a, b, c;
void Reset() { a = 1; b = 2; c = 3; }
Reset();
ref int x = ref a;
x = (true ? b : c); // 普通の条件演算子
x = 4; // xの参照先はaのままなのでaが変わる
Console.WriteLine($"{a} {b} {c}"); // 4 2 3
Reset();
ref int y = ref a;
y = (true ? ref b :ref c); // 条件演算子の2項目と3項目にrefはあるが、条件演算子の前にrefはない→参照でなく値が代入されるだけ(上と同じ)
y = 4; // yの参照先はaのままなのでaが変わる(ここでハマってそう)
Console.WriteLine($"{a} {b} {c}"); // 4 2 3
Reset();
ref int z = ref a;
z = ref (true ? ref b : ref c); // 条件演算子の前にrefがある→zの参照先が変わる
z = 4; // zの参照先がbになったのでbが変わる
Console.WriteLine($"{a} {b} {c}"); // 1 4 3
// https://ufcpp.net/study/csharp/sp_ref.html?p=2#conditional-ref もどうぞ
355デフォルトの名無しさん (ワッチョイ 1187-IujH)
2019/04/13(土) 18:28:52.41ID:a4r2Gpw40 この言語は、見かけはC++の兄弟分のような顔をしたVBだな。
356デフォルトの名無しさん (ワッチョイ 992d-U5P5)
2019/04/13(土) 18:49:30.17ID:nXQ9b0jN0 >>354
ありがとう!やっとわかったぜ!!!
ありがとう!やっとわかったぜ!!!
357デフォルトの名無しさん (アウアウエー Sae3-5b7P)
2019/04/13(土) 22:22:05.47ID:zPnWLOfMa358デフォルトの名無しさん (ワッチョイ 1161-WNda)
2019/04/13(土) 22:30:05.68ID:4tcIFh//0 後から追加された機能ってどれもセンスないよね
359デフォルトの名無しさん (スップ Sd73-OlUL)
2019/04/13(土) 23:41:32.18ID:04eDeW4Td >>358
は?
は?
360デフォルトの名無しさん (ワッチョイ 1161-WNda)
2019/04/13(土) 23:52:54.44ID:4tcIFh//0 >>359
は?じゃねぇよクソ虫
は?じゃねぇよクソ虫
361デフォルトの名無しさん (スップ Sd73-OlUL)
2019/04/14(日) 00:08:30.69ID:01zt8L7jd >>360
ジェネリクスもセンスないのかい?
ジェネリクスもセンスないのかい?
362デフォルトの名無しさん (ワッチョイ b15f-La48)
2019/04/14(日) 00:26:39.46ID:eLdyJ0cI0363デフォルトの名無しさん (ワッチョイ 2b0d-QSJy)
2019/04/14(日) 00:53:29.67ID:DOuVmEEK0 言語の価値って開発環境も含めて評価すべきじゃない?
自分は別に他の言語でもよい処理をついついc#でやっちゃうのはやっぱりIDEの強力なサポートがあってのことだわ
自分は別に他の言語でもよい処理をついついc#でやっちゃうのはやっぱりIDEの強力なサポートがあってのことだわ
364デフォルトの名無しさん (ワッチョイ 992d-U5P5)
2019/04/14(日) 08:42:45.32ID:H5M6zKH30 >>363
これはRuby先輩を呼び寄せるための撒き餌ですか?
これはRuby先輩を呼び寄せるための撒き餌ですか?
365デフォルトの名無しさん (ワッチョイ 1187-IujH)
2019/04/14(日) 08:50:41.27ID:k2b6YaL90 C#は、CとC++の系列のように外見を装っているが、実際にはVBのほうが似てる言語だろう。
CやC++に対しておこがましさを感じる。
CやC++に対しておこがましさを感じる。
366デフォルトの名無しさん (スププ Sd33-9l+s)
2019/04/14(日) 08:55:34.96ID:TOfo8K8Bd >>358
ラムダ式とか使わんの?
ラムダ式とか使わんの?
367デフォルトの名無しさん (ワッチョイ d352-NGx/)
2019/04/14(日) 09:07:27.41ID:UDnauAFh0 >>363
言語の基本文法のみ良し悪しとか、標準ライブラリまで含めての評価とか、議論の対象をどこまでとすらかは文脈によるだろうし、君が開発環境まで含めた話をしたいというならそういう話題をふって話を進めればいいよ。
言語単体での話をしている時に「いやいやIDEが〜」とか言い出すと話が発散するから、議論の対象は明確に区切って意識した方がいい。
言語の基本文法のみ良し悪しとか、標準ライブラリまで含めての評価とか、議論の対象をどこまでとすらかは文脈によるだろうし、君が開発環境まで含めた話をしたいというならそういう話題をふって話を進めればいいよ。
言語単体での話をしている時に「いやいやIDEが〜」とか言い出すと話が発散するから、議論の対象は明確に区切って意識した方がいい。
368デフォルトの名無しさん (ワッチョイ 3117-XGqV)
2019/04/14(日) 09:28:07.93ID:VqeGGHsz0 >>358
.NET 1.1 の世界から出てくるな
.NET 1.1 の世界から出てくるな
369デフォルトの名無しさん (アウアウエー Sae3-cVJ2)
2019/04/14(日) 09:34:22.94ID:LBjjw3Zya 今の時代、言語だけ語っても意味はないよなぁ
使えるオプソのバラエティとか、コンテナとの親和性とかの評価は避けて通れない
使えるオプソのバラエティとか、コンテナとの親和性とかの評価は避けて通れない
370デフォルトの名無しさん (アウアウエー Sae3-KE1k)
2019/04/14(日) 12:23:16.39ID:cHKb6r3Sa >>357
この辺の追加機能はパフォーマンスを求めるための機能だから
速度特化ライブラリの製作者は使うだろうけど、それ以外の開発者は使う機会少ないかも
https://ufcpp.net/study/csharp/cheatsheet/ap_ver7_2/
>>358
https://github.com/dotnet/csharplang/issues
C#の言語仕様はgithub上で公開で議論されている
センスある機能について議論や提案してみたらどうだろう
もちろん何かコメントしたりissueを立てたりする前に、検索して既出じゃないか確認するのを忘れずに
この辺の追加機能はパフォーマンスを求めるための機能だから
速度特化ライブラリの製作者は使うだろうけど、それ以外の開発者は使う機会少ないかも
https://ufcpp.net/study/csharp/cheatsheet/ap_ver7_2/
>>358
https://github.com/dotnet/csharplang/issues
C#の言語仕様はgithub上で公開で議論されている
センスある機能について議論や提案してみたらどうだろう
もちろん何かコメントしたりissueを立てたりする前に、検索して既出じゃないか確認するのを忘れずに
371デフォルトの名無しさん (ワッチョイ 6994-XGqV)
2019/04/15(月) 12:22:07.84ID:3hi8+ot50 先日windows7からwindows10にOSの入れ替えをしたのですが、win7では動いていたPostMessageが動かなくなってしまいました。
(送り手は自作のソフト、受け手は市販のソフトで、Win7でもWin10でも同じものです)
あるアプリケーションに
PostMessage(hWnd, WM_KEYDOWN, VkKeyScan("0"), 0);
のようにして数字を送信していたのですが、これが反応しなくなりました。
ウィンドウハンドルの取得とかは問題がないようです。
これ以外でも
PostMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0);
等すべてのキーが送れません。
対処法がありましたら教えてください。
(送り手は自作のソフト、受け手は市販のソフトで、Win7でもWin10でも同じものです)
あるアプリケーションに
PostMessage(hWnd, WM_KEYDOWN, VkKeyScan("0"), 0);
のようにして数字を送信していたのですが、これが反応しなくなりました。
ウィンドウハンドルの取得とかは問題がないようです。
これ以外でも
PostMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0);
等すべてのキーが送れません。
対処法がありましたら教えてください。
372デフォルトの名無しさん (ワッチョイ 6994-XGqV)
2019/04/15(月) 12:24:05.77ID:3hi8+ot50 正確に言うと(正確かどうかはわかりませんが)、
送り手側でエラーが出るわけではなく、受け手側のテキストボックスを一応選択はしているので、
送り手側としては送っているつもりですが受け手側が反応しなくなっている状態だと思います。
送り手の発信方法を変えればいいのでしょうか?
送り手側でエラーが出るわけではなく、受け手側のテキストボックスを一応選択はしているので、
送り手側としては送っているつもりですが受け手側が反応しなくなっている状態だと思います。
送り手の発信方法を変えればいいのでしょうか?
373デフォルトの名無しさん (ワッチョイ 6994-XGqV)
2019/04/15(月) 13:27:46.92ID:3hi8+ot50 すいません、解決しました。
管理権限の問題でした。
管理権限の問題でした。
374デフォルトの名無しさん (スップ Sd73-rAOx)
2019/04/15(月) 22:16:04.04ID:l4hdcBztd 新しいバージョンたくさんあるけど業務だとどの辺まで使ってるところが多いんだろ
valueタプルとかみんな使えてる?
valueタプルとかみんな使えてる?
375デフォルトの名無しさん (ワッチョイ 8be3-XGqV)
2019/04/15(月) 22:17:38.51ID:p/g7dyR00 >>374
ようやく4.5.2が許されるようになったよ・・・
ようやく4.5.2が許されるようになったよ・・・
376デフォルトの名無しさん (アウアウエー Sae3-x1Th)
2019/04/15(月) 22:37:21.92ID:+hafi/JFa >>374
.NET Core 2.2/C# 7.3使ってるよ
.NET Core 2.2/C# 7.3使ってるよ
377デフォルトの名無しさん (アウアウウー Sa5d-cSql)
2019/04/16(火) 08:08:51.63ID:4W+nw3aAa うちも最近やっと3.5.1縛りが解けて4.5.2になったよ
378デフォルトの名無しさん (スップ Sd73-OlUL)
2019/04/16(火) 08:14:19.68ID:5XyUIsTTd379デフォルトの名無しさん (スップ Sd73-OlUL)
2019/04/16(火) 08:15:38.75ID:5XyUIsTTd てかVisual Studioをちゃんと更新してればC#のバージョン上げるのは全然問題なくね?
380デフォルトの名無しさん (ワッチョイ 417d-n39u)
2019/04/16(火) 08:20:00.65ID:3+f8cxJ/0 最近?が多くて辛い
null条件演算子でも目眩がするのに
null合体演算子なんか使われたら頭いたい
ところでcoalescingてなんて読むんや
null条件演算子でも目眩がするのに
null合体演算子なんか使われたら頭いたい
ところでcoalescingてなんて読むんや
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国側も日本機のレーダーを感知していた」 中国メディアが報道 [♪♪♪★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★7 [七波羅探題★]
- 防衛省、中国を完全論破www 「事前通告があったのは海自であって空自ではない」 高市早苗勝利 [175344491]
- 三洋電機がこの世から消えるなんて思いもしなかった
- できるだけ多く知ってる仏教の宗教おしえて
- 【悲報】JA「全然米が売れなくて倉庫を圧迫してる。助けて!」米卸売り業者「安売りしたら赤字になる…助けて!」 [802034645]
- 小学受験に失敗したら人生終わる?
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★4 [597533159]
