!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
https://mevius.5ch.net/test/read.cgi/tech/1538646998/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
ふらっと C#,C♯,C#(初心者用) Part141
レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん (ワッチョイ 2317-qMUn)
2018/12/15(土) 11:07:07.89ID:0aSEF/I+0821デフォルトの名無しさん (ササクッテロレ Sp7b-13Kq)
2019/02/17(日) 13:00:14.76ID:I+dbukVsp >>818
private voidの部分がおかしいですね
private voidの部分がおかしいですね
822デフォルトの名無しさん (ワッチョイ 077b-Pt61)
2019/02/17(日) 14:31:14.74ID:cAaLtQSp0 >>818
まずこういう質問はpaizaの問題でC#のスレでやられても混乱するからVisualStudioでの話以外はやめてくれ
コード書けるサイトが間違っていないって保証が無い。実際動くコード転載してもエラーって何度も経験しているからな
VisualStudioで書くのならターゲットフレームワークを.Net4.7以上にしてprivate void myfunction()からprivate外してvoid myfunction()で動く
まずこういう質問はpaizaの問題でC#のスレでやられても混乱するからVisualStudioでの話以外はやめてくれ
コード書けるサイトが間違っていないって保証が無い。実際動くコード転載してもエラーって何度も経験しているからな
VisualStudioで書くのならターゲットフレームワークを.Net4.7以上にしてprivate void myfunction()からprivate外してvoid myfunction()で動く
823デフォルトの名無しさん (ワッチョイ 7ff2-5Hf3)
2019/02/17(日) 16:38:09.76ID:Agaj4T0x0 たすけて!これ何が違うの?
どっちも普通に使えるよね?
ちな初心者
@List<T> list = new List<T>();
AList<T> list;
どっちも普通に使えるよね?
ちな初心者
@List<T> list = new List<T>();
AList<T> list;
824デフォルトの名無しさん (ワッチョイ 87e7-Hwlg)
2019/02/17(日) 16:55:04.91ID:2ynU5zYy0 後者は中身が無いからそのままじゃ使えない
825デフォルトの名無しさん (アウアウウー Sa4b-FXSN)
2019/02/17(日) 17:04:55.99ID:KqlDIF5Pa >>823
1はlistという変数の定義と同時にList型のインスタンスで初期化している、普通に使える
2はlistという変数を定義しただけの状態
ローカル変数の場合は後で初期化する必要がある、未初期化のまま使おうとするとコンパイルエラー
クラスや構造体のフィールドの場合は暗黙でnullで初期化される、「普通に使う」ためには後でList型インスタンスを代入してやる必要がある
1はlistという変数の定義と同時にList型のインスタンスで初期化している、普通に使える
2はlistという変数を定義しただけの状態
ローカル変数の場合は後で初期化する必要がある、未初期化のまま使おうとするとコンパイルエラー
クラスや構造体のフィールドの場合は暗黙でnullで初期化される、「普通に使う」ためには後でList型インスタンスを代入してやる必要がある
826デフォルトの名無しさん (ワッチョイ 5f01-3Kdw)
2019/02/17(日) 17:07:18.00ID:naWxhgEk0 >>823
> @List<T> list = new List<T>();
は
List<T> list;
list = new List<T>();
と同じ
> AList<T> list;
はlistの実体が設定されてないからそのままlist.Add(…)とかやると例外が発生する
> @List<T> list = new List<T>();
は
List<T> list;
list = new List<T>();
と同じ
> AList<T> list;
はlistの実体が設定されてないからそのままlist.Add(…)とかやると例外が発生する
827デフォルトの名無しさん (スッップ Sd7f-/Qxi)
2019/02/17(日) 17:07:30.92ID:B/nvmulQd >>822
.NETのバージョンなにか関係あるか?
.NETのバージョンなにか関係あるか?
828デフォルトの名無しさん (ワッチョイ df32-A2tD)
2019/02/17(日) 17:12:13.37ID:tKx1WgvG0829デフォルトの名無しさん (ワッチョイ bfef-l0e6)
2019/02/17(日) 17:26:45.23ID:Cn2cXppc0830デフォルトの名無しさん (ワッチョイ bfef-l0e6)
2019/02/17(日) 17:35:39.94ID:Cn2cXppc0 ちょっとコードを確認したいというときに、使えるツールありますか?
わざわざプロジェクト作るほどではないときですね
python のidleのようなものです
わざわざプロジェクト作るほどではないときですね
python のidleのようなものです
831デフォルトの名無しさん (ワッチョイ 275f-8zyB)
2019/02/17(日) 17:38:44.31ID:Ox4HquXb0 >>830
C#インタラクティブ
C#インタラクティブ
832デフォルトの名無しさん (ワッチョイ a7da-MZ+k)
2019/02/17(日) 17:41:30.40ID:0sFVNd3o0 cscは標準で入っているでしょ
833デフォルトの名無しさん (スッップ Sd7f-/Qxi)
2019/02/17(日) 17:54:52.02ID:B/nvmulQd >>830
LINQPad
LINQPad
834デフォルトの名無しさん (ワッチョイ 5f47-0jsH)
2019/02/17(日) 18:01:37.03ID:/k3HmPSI0 csiだな
835デフォルトの名無しさん (ブーイモ MMcf-lPFl)
2019/02/17(日) 18:03:11.00ID:owh3i+7dM スクリプトみたいに対話型でできる?
836デフォルトの名無しさん (ワッチョイ bfef-l0e6)
2019/02/17(日) 18:18:26.04ID:Cn2cXppc0 ↑ありがとうございました
837デフォルトの名無しさん (ワッチョイ 5f01-3Kdw)
2019/02/17(日) 18:21:23.19ID:naWxhgEk0 >>830
notepad.exe + csc.exe
notepad.exe + csc.exe
838デフォルトの名無しさん (ワッチョイ 7ff2-5Hf3)
2019/02/17(日) 18:28:37.10ID:Agaj4T0x0839デフォルトの名無しさん (ワッチョイ bfef-l0e6)
2019/02/17(日) 18:29:26.69ID:Cn2cXppc0840デフォルトの名無しさん (ワッチョイ bfef-l0e6)
2019/02/17(日) 20:45:16.60ID:Cn2cXppc0 vs codeもちょっとしたコードの確認に使うものなんでしょうか?
841デフォルトの名無しさん (ササクッテロレ Sp7b-13Kq)
2019/02/17(日) 21:29:49.15ID:I+dbukVsp >>840
使うひともいれば使わないひともいますね
使うひともいれば使わないひともいますね
842デフォルトの名無しさん (ワッチョイ 7fda-cT+3)
2019/02/18(月) 01:50:55.38ID:pxm+KTrW0 入力項目が沢山ある画面で、変更を保存せず画面を閉じようとしたときは警告を出したいです。
何も変更せず画面を閉じる場合は警告を出さずに閉じたいです。
この場合の変更チェックは入力項目に紐づく変数1個1個をチェックする以外に、スマートな方法は無いでしょうか?
入力項目に紐づく変数はデータクラスとして用意しているので、画面開く直前にハッシュのようなものを計算し退避しておき、
画面を閉じる直前にハッシュを再計算し比較すれば行けると思うのですが、オブジェクトのハッシュを求めるのは
GetHashCodeでいいのでしょうか?
何も変更せず画面を閉じる場合は警告を出さずに閉じたいです。
この場合の変更チェックは入力項目に紐づく変数1個1個をチェックする以外に、スマートな方法は無いでしょうか?
入力項目に紐づく変数はデータクラスとして用意しているので、画面開く直前にハッシュのようなものを計算し退避しておき、
画面を閉じる直前にハッシュを再計算し比較すれば行けると思うのですが、オブジェクトのハッシュを求めるのは
GetHashCodeでいいのでしょうか?
843デフォルトの名無しさん (ワッチョイ a761-udZ6)
2019/02/18(月) 01:58:21.05ID:0Vx/m/dz0 ないね
上に1dot
下に1dot
って動かされて終了したときは
出したくないんでしょ?
何か妥協点がない限り全部比較するしかないよ
上に1dot
下に1dot
って動かされて終了したときは
出したくないんでしょ?
何か妥協点がない限り全部比較するしかないよ
844デフォルトの名無しさん (ワッチョイ 275f-8zyB)
2019/02/18(月) 02:13:28.99ID:Y8U6L+e90845デフォルトの名無しさん (ワッチョイ 5f47-0jsH)
2019/02/18(月) 02:29:46.98ID:GC8vaMYY0 俺ならデータクラスにINotifyPropertyChangedを実装するかな
846デフォルトの名無しさん (アウアウエー Sa1f-x6Gg)
2019/02/18(月) 02:53:09.62ID:+SQV8UeVa >>842
直接の回答でなくてごめん。
そういうMSにありがちなUIはたぶん
(1) 変更をキャンセル可能であること
(2) OKボタンをクリックした時点で初めて変更が反映されること
が要件になってるからそういう仕様になるんだと思うけど、こんな要件が必用ないなら
画面の入力項目の変更を変更があった時点でその都度対応するオブジェクトの
プロパティーに反映させてしまえば、「変更を保存せず画面を閉じようとしたときは警告を出」す
必用自体がなくなる
まあ一種の手抜きだけど、場合によっては許容される手抜きだと思う
直接の回答でなくてごめん。
そういうMSにありがちなUIはたぶん
(1) 変更をキャンセル可能であること
(2) OKボタンをクリックした時点で初めて変更が反映されること
が要件になってるからそういう仕様になるんだと思うけど、こんな要件が必用ないなら
画面の入力項目の変更を変更があった時点でその都度対応するオブジェクトの
プロパティーに反映させてしまえば、「変更を保存せず画面を閉じようとしたときは警告を出」す
必用自体がなくなる
まあ一種の手抜きだけど、場合によっては許容される手抜きだと思う
847デフォルトの名無しさん (ワッチョイ 7fda-cT+3)
2019/02/18(月) 03:23:01.21ID:pxm+KTrW0848デフォルトの名無しさん (ワッチョイ 5f47-0jsH)
2019/02/18(月) 08:27:54.30ID:GC8vaMYY0 >>847
データクラスのベースクラスをPrism.MvvmのBindableBaseにするとまあまあタイプ量減らせたりするよ
データクラスのベースクラスをPrism.MvvmのBindableBaseにするとまあまあタイプ量減らせたりするよ
849デフォルトの名無しさん (ワッチョイ bfef-l0e6)
2019/02/18(月) 11:29:03.32ID:huM3ZKfN0 https://i.imgur.com/2rpwFqg.jpg
vs codeを使っているのですが、どこから実行できるんでしょうか?
言語はc#で、マイクロソフトのc#のアドオンを入れました
ctr shift pでrunというコマンド?が出てくるので、それをクリックしたのですが、outputには何も出ません
また、ヴィジュアルスタジオの場合はイベントハンドラーがありますが、常に実行させるようなイベントというのはただのC#にあるんでしょうか?
vs codeを使っているのですが、どこから実行できるんでしょうか?
言語はc#で、マイクロソフトのc#のアドオンを入れました
ctr shift pでrunというコマンド?が出てくるので、それをクリックしたのですが、outputには何も出ません
また、ヴィジュアルスタジオの場合はイベントハンドラーがありますが、常に実行させるようなイベントというのはただのC#にあるんでしょうか?
850デフォルトの名無しさん (スッップ Sd7f-/Qxi)
2019/02/18(月) 11:34:39.00ID:FChOt/Xad >>849
チュートリアルくらいやれよ
チュートリアルくらいやれよ
851デフォルトの名無しさん (ブーイモ MMcf-lPFl)
2019/02/18(月) 12:06:26.29ID:RBxZ7FEaM >>849
ターミナルでdotnet runと打ち込んでEnterや
ターミナルでdotnet runと打ち込んでEnterや
852デフォルトの名無しさん (スフッ Sd7f-Phvs)
2019/02/18(月) 12:13:35.54ID:vM1YVHVQd >>842
そう言うの割とダルいから、データをクラスにまとめといて、開いた時点でシリアライズして文字列で持っちゃう。
保存時にシリアライズして文字列一致しなかったら、変更されてると言うことにする。
一個ずつ比較したら改修で漏れるよ。
そう言うの割とダルいから、データをクラスにまとめといて、開いた時点でシリアライズして文字列で持っちゃう。
保存時にシリアライズして文字列一致しなかったら、変更されてると言うことにする。
一個ずつ比較したら改修で漏れるよ。
853デフォルトの名無しさん (ワッチョイ bfef-l0e6)
2019/02/18(月) 12:41:30.31ID:huM3ZKfN0 >>851
ありがとうございます
そうやって実行するんですね
visual studioよりむずいです
ただ、Program.csという自動生成されたファイルが実行されます
同じフォルダに自分で作ったsample.csがあるんですが、こっちを実行させる設定はどこからするんでしょうか?
パスを指定してからdotnet runしてもエラーになるます
ありがとうございます
そうやって実行するんですね
visual studioよりむずいです
ただ、Program.csという自動生成されたファイルが実行されます
同じフォルダに自分で作ったsample.csがあるんですが、こっちを実行させる設定はどこからするんでしょうか?
パスを指定してからdotnet runしてもエラーになるます
854デフォルトの名無しさん (スップ Sdff-/Qxi)
2019/02/18(月) 12:42:32.67ID:OjJXAwBNd >>853
いやだからチュートリアルくらいやれって
いやだからチュートリアルくらいやれって
855デフォルトの名無しさん (ワッチョイ 7fda-lPFl)
2019/02/18(月) 12:59:06.77ID:pxm+KTrW0856デフォルトの名無しさん (アウアウエー Sa1f-x6Gg)
2019/02/18(月) 13:05:27.38ID:99WFuefSa まあ一度変更があった時点で実際には等価でも別物と見なす実装が一番簡単だねたぶん。
実際そういうソフト結構あるよね。
そういう手抜きが気に入らないなら素直にEquals実装するのが結局シンプルじゃないのかな。
フィールドが全部値型の構造体ならデフォルト実装で済むと思ったし
...と思って調べてみたけど、なんかドキュメントによって書いてるこが微妙に違うなw
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/statements-expressions-operators/how-to-define-value-equality-for-a-type
↑には「リフレクションを使用して、型のフィールドとプロパティをすべて調べます。」と書いてあるが
https://docs.microsoft.com/en-us/dotnet/api/system.valuetype.equals?view=netframework-4.7.2
↑には単純にビットイメージの比較と書いてある
となってる。どっちが正しいんだ?w
実際そういうソフト結構あるよね。
そういう手抜きが気に入らないなら素直にEquals実装するのが結局シンプルじゃないのかな。
フィールドが全部値型の構造体ならデフォルト実装で済むと思ったし
...と思って調べてみたけど、なんかドキュメントによって書いてるこが微妙に違うなw
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/statements-expressions-operators/how-to-define-value-equality-for-a-type
↑には「リフレクションを使用して、型のフィールドとプロパティをすべて調べます。」と書いてあるが
https://docs.microsoft.com/en-us/dotnet/api/system.valuetype.equals?view=netframework-4.7.2
↑には単純にビットイメージの比較と書いてある
となってる。どっちが正しいんだ?w
857デフォルトの名無しさん (アウアウウー Sa4b-F6dR)
2019/02/18(月) 18:49:02.00ID:L0NbuPbAa >>856
> https://docs.microsoft.com/en-us/dotnet/api/system.valuetype.equals?view=netframework-4.7.2
のRemarksには、thisとobjの全フィールドが参照型でなければbyte単位の比較、そうでなければリフレクションを使うとある
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2231-overload-operator-equals-on-overriding-valuetype-equals
他に知っているもので↑では、リフレクションを使うとだけある
https://referencesource.microsoft.com/#mscorlib/system/valuetype.cs
少なくとも.NET Framework 4.7.2では、ビット比較だけしていそうなFastEqualsCheckを呼ぶパスが存在する
そのパスを通るか判定しているCanCompareBits関数はexternなので詳細不明
> https://docs.microsoft.com/en-us/dotnet/api/system.valuetype.equals?view=netframework-4.7.2
のRemarksには、thisとobjの全フィールドが参照型でなければbyte単位の比較、そうでなければリフレクションを使うとある
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2231-overload-operator-equals-on-overriding-valuetype-equals
他に知っているもので↑では、リフレクションを使うとだけある
https://referencesource.microsoft.com/#mscorlib/system/valuetype.cs
少なくとも.NET Framework 4.7.2では、ビット比較だけしていそうなFastEqualsCheckを呼ぶパスが存在する
そのパスを通るか判定しているCanCompareBits関数はexternなので詳細不明
858デフォルトの名無しさん (アウアウウー Sa4b-F6dR)
2019/02/18(月) 19:16:27.32ID:L0NbuPbAa859デフォルトの名無しさん (ワッチョイ bfef-l0e6)
2019/02/19(火) 11:05:06.64ID:t+ZZI+Uh0 vs codeのproblemの欄なんですが、間違ったコードを入力しても自動で更新されないようです
デバッグを実行しないとだめなようですが、リアルタイムにエラーを表示してくれる設定はできますか?
以前はできたんですが
デバッグを実行しないとだめなようですが、リアルタイムにエラーを表示してくれる設定はできますか?
以前はできたんですが
860デフォルトの名無しさん (スップ Sd7f-/Qxi)
2019/02/19(火) 12:03:57.65ID:IsM0ebyqd 日本語でよろしく
861デフォルトの名無しさん (オイコラミネオ MMdb-KRFs)
2019/02/19(火) 12:33:41.44ID:efthhon4M そいつは難しいproblemだな
862デフォルトの名無しさん (ワッチョイ 077b-Pt61)
2019/02/19(火) 17:38:20.55ID:JJR46+B00 >>859
vs codeのことは専用スレで聞け、スレ違い
Visual Studio Code / VSCode Part5
https://mevius.5ch.net/test/read.cgi/tech/1541649564/
vs codeのことは専用スレで聞け、スレ違い
Visual Studio Code / VSCode Part5
https://mevius.5ch.net/test/read.cgi/tech/1541649564/
863デフォルトの名無しさん (ワッチョイ bfef-l0e6)
2019/02/19(火) 19:41:44.24ID:t+ZZI+Uh0 なぜmain関数の中に処理を書かないといけないのですか?
そういうルールだからってことですか?
pythonだとどこに書いてもいいと思うんですが
そういうルールだからってことですか?
pythonだとどこに書いてもいいと思うんですが
864デフォルトの名無しさん (ブーイモ MMcb-A2tD)
2019/02/19(火) 19:46:47.41ID:+t+aP4snM そういう設計思想だから
865デフォルトの名無しさん (ワッチョイ bf7d-KRFs)
2019/02/19(火) 19:54:09.61ID:zirjw7Cj0 main以外をエントリポイントにできるけどな
win32apiからの慣習
win32apiからの慣習
866デフォルトの名無しさん (ワッチョイ 5f2f-dPPD)
2019/02/19(火) 21:39:52.76ID:eXSGnhOj0867デフォルトの名無しさん (ワッチョイ 5fad-/Qxi)
2019/02/19(火) 22:33:06.53ID:MriKnXlj0868デフォルトの名無しさん (ワッチョイ 7ff2-yQ/S)
2019/02/20(水) 01:09:59.10ID:WG18KXuW0 助けて!!
Parallel.Forを使ってそれぞれで別の演算アプリを起動して
4スレッドで演算処理してるんだけど
アプリ強制終了してもスレッド(演算アプリ)はずっと処理し続けてるの!お願い止まって!!
親スレッド(UIスレッド)が死んだら子スレッドも死ぬみたいなお作法ありますか?
演算アプリはSystem.Diagnostics.Process使って起動してます
Parallel.Forを使ってそれぞれで別の演算アプリを起動して
4スレッドで演算処理してるんだけど
アプリ強制終了してもスレッド(演算アプリ)はずっと処理し続けてるの!お願い止まって!!
親スレッド(UIスレッド)が死んだら子スレッドも死ぬみたいなお作法ありますか?
演算アプリはSystem.Diagnostics.Process使って起動してます
869デフォルトの名無しさん (ワッチョイ 5f47-0jsH)
2019/02/20(水) 01:46:34.63ID:3QCW37aG0 Process.Kill()でしょ
870デフォルトの名無しさん (スプッッ Sdff-lPFl)
2019/02/20(水) 02:03:55.40ID:/GvzZ744d871デフォルトの名無しさん (オッペケ Sr7b-mTlM)
2019/02/20(水) 07:56:23.82ID:Jfh2EJBjr 電源off
872デフォルトの名無しさん (ワッチョイ a742-yQ/S)
2019/02/20(水) 09:16:30.41ID:JdxivbIi0 >>868
CancellationTokenSourceを使ってみれば?
CancellationTokenSourceを使ってみれば?
873デフォルトの名無しさん (アウアウエー Sa1f-cT+3)
2019/02/20(水) 16:01:28.63ID:qtZmd9yJa form1にsplit container をverticalで貼り付けて左右に2分割してその中にボタンとかコンポーネントいろいろ置いてて、
あとから上にmenu stlipを追加したくなってツールボックスからmenu stripコンポーネントをドラッグ&ドロップすると
splitcontanerのpanel1かpanel2のどっちかにしか貼り付けられないのだけどform1にmenuStripを表示するようにするにはどう操作すればいいのでしょうか
あとから上にmenu stlipを追加したくなってツールボックスからmenu stripコンポーネントをドラッグ&ドロップすると
splitcontanerのpanel1かpanel2のどっちかにしか貼り付けられないのだけどform1にmenuStripを表示するようにするにはどう操作すればいいのでしょうか
874デフォルトの名無しさん (ワッチョイ ff7c-yz29)
2019/02/20(水) 16:10:46.41ID:YXUL7WNb0 一旦張り付けてから
ドキュメントアウトライン表示させてForm直下に移動させる
ドキュメントアウトライン表示させてForm直下に移動させる
875デフォルトの名無しさん (アウアウエー Sa1f-x6Gg)
2019/02/20(水) 16:31:00.95ID:ThCTwK+Ha876デフォルトの名無しさん (アウアウエー Sa1f-cT+3)
2019/02/20(水) 16:42:16.67ID:qtZmd9yJa >>874
ありがとうございます
ありがとうございます
877デフォルトの名無しさん (アウアウエー Sa1f-cT+3)
2019/02/20(水) 16:43:52.95ID:qtZmd9yJa878デフォルトの名無しさん (ワッチョイ 66f2-i3+Z)
2019/02/21(木) 12:23:38.43ID:A65FK9eD0879デフォルトの名無しさん (ワッチョイ b67c-cX2z)
2019/02/21(木) 12:51:17.47ID:Nj5ihKJg0 それでいいのか
アプリ強制終了っていうからタスクマネージャから落とす時のことを想像してた
アプリ強制終了っていうからタスクマネージャから落とす時のことを想像してた
880デフォルトの名無しさん (ワッチョイ 66f2-i3+Z)
2019/02/21(木) 13:02:04.01ID:A65FK9eD0881デフォルトの名無しさん (ワッチョイ b67c-cX2z)
2019/02/21(木) 13:15:26.35ID:Nj5ihKJg0 基本的にはそうじゃないかね
ちょっと凝った風にするならプロセス間通信でハートビート送って応答なけりゃ自死するとかあるけど
ちょっと凝った風にするならプロセス間通信でハートビート送って応答なけりゃ自死するとかあるけど
882デフォルトの名無しさん (ワッチョイ b501-4fA7)
2019/02/21(木) 16:20:57.98ID:+4fiWh+W0 すみません、コルーチンの使い方について教えてください。
例えばRPGなどのゲームで、キャラクターAに話しかけると、数秒待って反応が返ってくるという処理をしたいと思っています。
まず、数秒待つというコルーチンを作り
private IEnumerator waitforsecond(float sec) {
yield return new WaitForSeconds(sec);
}
次にAに話しかけた時の処理を作りました。
public void Sample(){
//50%の確率で無視される
if(Probability.DetectFromPercent(50)){
MainText.text = “Aに話しかけてみた・・・”;
StartCoroutine(waitforsecond(2));
MainText.text = "なんとAから無視された!”;
//50%の確率で殴られる
}else {
MainText.text = “Aに話しかけてみた・・・”;
StartCoroutine(waitforsecond(2));
MainText.text = "なんとAから蹴られた!”;
例えばRPGなどのゲームで、キャラクターAに話しかけると、数秒待って反応が返ってくるという処理をしたいと思っています。
まず、数秒待つというコルーチンを作り
private IEnumerator waitforsecond(float sec) {
yield return new WaitForSeconds(sec);
}
次にAに話しかけた時の処理を作りました。
public void Sample(){
//50%の確率で無視される
if(Probability.DetectFromPercent(50)){
MainText.text = “Aに話しかけてみた・・・”;
StartCoroutine(waitforsecond(2));
MainText.text = "なんとAから無視された!”;
//50%の確率で殴られる
}else {
MainText.text = “Aに話しかけてみた・・・”;
StartCoroutine(waitforsecond(2));
MainText.text = "なんとAから蹴られた!”;
883デフォルトの名無しさん (ワッチョイ b501-4fA7)
2019/02/21(木) 16:24:21.78ID:+4fiWh+W0 これで、話しかけたあと2秒時待機して反応がある、という処理になるかと思ったのですが、うまく行きません。
あと登場キャラクターもA、B、C‥‥とたくさんいるのであれば、話しかけると数秒待って反応するという関数を作ってあげたほうがスッキリするのでしょうが、やり方がイマイチわかりません。
あと登場キャラクターもA、B、C‥‥とたくさんいるのであれば、話しかけると数秒待って反応するという関数を作ってあげたほうがスッキリするのでしょうが、やり方がイマイチわかりません。
884デフォルトの名無しさん (ブーイモ MM0a-LvDS)
2019/02/21(木) 16:42:20.49ID:VKoyYoRjM >>883
非同期や
非同期や
885デフォルトの名無しさん (ワッチョイ b501-4fA7)
2019/02/21(木) 17:11:57.24ID:+4fiWh+W0886デフォルトの名無しさん (アウアウクー MM7d-QeDo)
2019/02/21(木) 19:03:38.92ID:+XWUccMjM Wait前にthis.Refresh()って無意味だっけ
887デフォルトの名無しさん (アウアウエー Sa52-SfL3)
2019/02/21(木) 19:53:42.96ID:5v/pkJgQa >>882
何で待つのにイテレーターを使うのかちょっと意味がわかんないねw
何で待つのにイテレーターを使うのかちょっと意味がわかんないねw
888デフォルトの名無しさん (ワッチョイ 790c-rusg)
2019/02/21(木) 20:08:47.12ID:c4smrZlO0 yieldでコルーチンという一昔前の一発芸がUnityで幅を利かせているから仕方ないのねー
889デフォルトの名無しさん (ワッチョイ 667b-SpKW)
2019/02/21(木) 20:11:16.75ID:969mh7640 俺もあいまいな理解だから偉そうには言えないけど
>>882
ここのサンプルが分かりやすいかも
http://developer.wonderpla.net/entry/blog/engineer/Unity_Co-routine/
>>885
private IEnumerator waitforsecond(float sec) とpublic void Sample()が非同期(違う時間軸での動作)になるので待ち時間になっていない
>>887の言う通り待ち時間には他の物を使わないと
>>882
ここのサンプルが分かりやすいかも
http://developer.wonderpla.net/entry/blog/engineer/Unity_Co-routine/
>>885
private IEnumerator waitforsecond(float sec) とpublic void Sample()が非同期(違う時間軸での動作)になるので待ち時間になっていない
>>887の言う通り待ち時間には他の物を使わないと
890デフォルトの名無しさん (ワッチョイ 6a2f-oRCO)
2019/02/21(木) 20:17:45.84ID:mRRRBv2X0891デフォルトの名無しさん (ワッチョイ b501-4fA7)
2019/02/21(木) 22:25:20.57ID:+4fiWh+W0892デフォルトの名無しさん (アウアウエー Sa52-SfL3)
2019/02/21(木) 23:14:15.44ID:5v/pkJgQa893デフォルトの名無しさん (アウアウエー Sa52-SfL3)
2019/02/21(木) 23:22:50.38ID:5v/pkJgQa >>892
これ書いてて一つ疑問に思ったのが、
MessagingTask = MessagingTask.ContinueWith(t => job.Action());
これを以下のように、
MessagingTask.ContinueWith(t => job.Action());
こう変えると期待した動きにならない。
ContinueWithってキューになってて先に入ってるタスクの完了を待って次を実行すると思ったけど違うのか
これ書いてて一つ疑問に思ったのが、
MessagingTask = MessagingTask.ContinueWith(t => job.Action());
これを以下のように、
MessagingTask.ContinueWith(t => job.Action());
こう変えると期待した動きにならない。
ContinueWithってキューになってて先に入ってるタスクの完了を待って次を実行すると思ったけど違うのか
894デフォルトの名無しさん (ワッチョイ 3de7-fRYm)
2019/02/21(木) 23:42:43.30ID:aABnGI350 >>893
重箱の隅…だが。
Task.Run(() => { })の代わりにTask.CompletedTaskってあるよ。
後、Task.Delay(Pause).Wait()ってThread.Sleep(Pause)で良いんでない。
重箱の隅…だが。
Task.Run(() => { })の代わりにTask.CompletedTaskってあるよ。
後、Task.Delay(Pause).Wait()ってThread.Sleep(Pause)で良いんでない。
895デフォルトの名無しさん (ワッチョイ a95f-cnIv)
2019/02/21(木) 23:44:55.38ID:e6A24yU10 >>893
継続タスクが1つとは限らない。複数あったらパラって実行される。
継続タスクが1つとは限らない。複数あったらパラって実行される。
896デフォルトの名無しさん (アウアウエー Sa52-SfL3)
2019/02/21(木) 23:48:25.54ID:5v/pkJgQa >>894
うん、知ってたけど今使ってるのがVS2015なのよ...
うん、知ってたけど今使ってるのがVS2015なのよ...
897デフォルトの名無しさん (アウアウエー Sa52-SfL3)
2019/02/21(木) 23:49:35.07ID:5v/pkJgQa >>895
やっぱり俺が誤解して理解してたんだなありがと
やっぱり俺が誤解して理解してたんだなありがと
898デフォルトの名無しさん (アウアウエー Sa52-dS/9)
2019/02/23(土) 14:44:05.16ID:3cOSTboLa MenuStripコンポーネントでItemを選択した時にその左にチェックを入れるようにしてるのだけど
選択した時点でメニュー閉じちゃって若干不便なのだけど
ひらいたままにする設定にはできないのでしょうか
選択した時点でメニュー閉じちゃって若干不便なのだけど
ひらいたままにする設定にはできないのでしょうか
899デフォルトの名無しさん (アウアウエー Sa52-SfL3)
2019/02/23(土) 19:07:18.92ID:gzY/wSmba >>898
ルートのアイテムの直下ならClickか何かで親のShowDropDown()を呼べば一応実現できるっぽい。
入れ子になってる場合は、
....
ToolStripMenuItem1.Click += (sender, e) =>
{
RecursiveShowDropDown(((ToolStripMenuItem)sender));
};
....
void RecursiveShowDropDown(ToolStripMenuItem item)
{
if (item == null) return;
var parent = item.OwnerItem as ToolStripMenuItem;
RecursiveShowDropDown(parent);
parent?.ShowDropDown();
}
たぶんこれでいける。
でもエンターキーでクリックした場合の操作性に問題が残るけど
ルートのアイテムの直下ならClickか何かで親のShowDropDown()を呼べば一応実現できるっぽい。
入れ子になってる場合は、
....
ToolStripMenuItem1.Click += (sender, e) =>
{
RecursiveShowDropDown(((ToolStripMenuItem)sender));
};
....
void RecursiveShowDropDown(ToolStripMenuItem item)
{
if (item == null) return;
var parent = item.OwnerItem as ToolStripMenuItem;
RecursiveShowDropDown(parent);
parent?.ShowDropDown();
}
たぶんこれでいける。
でもエンターキーでクリックした場合の操作性に問題が残るけど
900デフォルトの名無しさん (アウアウエー Sa52-SfL3)
2019/02/23(土) 19:24:23.57ID:gzY/wSmba こっちの方がいいか
EventHandler eh = (sender, e) =>
{
Action<ToolStripMenuItem> a = null;
a = item =>
{
if (item == null) return;
var parent = item.OwnerItem as ToolStripMenuItem;
a(parent);
parent?.ShowDropDown();
};
a((ToolStripMenuItem)sender);
};
ToolStripMenuItem1.Click += eh;
EventHandler eh = (sender, e) =>
{
Action<ToolStripMenuItem> a = null;
a = item =>
{
if (item == null) return;
var parent = item.OwnerItem as ToolStripMenuItem;
a(parent);
parent?.ShowDropDown();
};
a((ToolStripMenuItem)sender);
};
ToolStripMenuItem1.Click += eh;
901デフォルトの名無しさん (アウアウエー Sa52-dS/9)
2019/02/24(日) 03:15:52.41ID:pRL7US30a902デフォルトの名無しさん (ワッチョイ ada2-uPuZ)
2019/02/24(日) 11:47:42.69ID:L3+XvQB40 質問です
現在、以下のように一つの非同期処理(時間のかかるディスクの書き込み)
を実行しています。
private async void button1_Click(object sender, EventArgs e)
{
await DoSomethingAsync();
MessageBox.Show("完了");
}
これを実行中にUIを操作して、次の処理の準備ができたら(実行する内容はDoSomethingAsync)
button1を押して予約し、実行中の処理が終わったら引き続き実行させたいです。(並列ではなく)
また、「完了」は登録されたタスクが全て終わったときに出したいです。
どのように書くのが一般的なのでしょうか?
初回実行時にすべての実行すべきタスクがわかっている場合は
そのタスクのリストを作ってWhenAllする みたいなのはググったら出てきたんですが
ContinueWithを使うのかなと思ったのですが、書き方がわかりませんでした
現在、以下のように一つの非同期処理(時間のかかるディスクの書き込み)
を実行しています。
private async void button1_Click(object sender, EventArgs e)
{
await DoSomethingAsync();
MessageBox.Show("完了");
}
これを実行中にUIを操作して、次の処理の準備ができたら(実行する内容はDoSomethingAsync)
button1を押して予約し、実行中の処理が終わったら引き続き実行させたいです。(並列ではなく)
また、「完了」は登録されたタスクが全て終わったときに出したいです。
どのように書くのが一般的なのでしょうか?
初回実行時にすべての実行すべきタスクがわかっている場合は
そのタスクのリストを作ってWhenAllする みたいなのはググったら出てきたんですが
ContinueWithを使うのかなと思ったのですが、書き方がわかりませんでした
903デフォルトの名無しさん (ワッチョイ 662c-/qFZ)
2019/02/24(日) 11:58:25.65ID:u2ta9zSf0 Queue<T>を使えば良いんじゃね
904デフォルトの名無しさん (ドコグロ MM15-bAbS)
2019/02/24(日) 12:36:22.83ID:cR8EPyISM >>902
最後に追加したTaskを覚えておいてContinueWithで繋ぐとかできなくはないけど、
そんな変なハックをするくらいなら素直に別スレッド立てて順番にバックグラウンド実行したほうがいい
Producer-Consumerでググれ
最後に追加したTaskを覚えておいてContinueWithで繋ぐとかできなくはないけど、
そんな変なハックをするくらいなら素直に別スレッド立てて順番にバックグラウンド実行したほうがいい
Producer-Consumerでググれ
905デフォルトの名無しさん (ワッチョイ 9eef-upo5)
2019/02/25(月) 11:09:41.10ID:a5srEHrc0 c#のフォームで、タイルマップエディタのようなものを作りたいのですが、どのような情報を調べたらいいでしょうか
また、そのような目的に適したフォームはありますか?
そもそもC#が適切なのかわからないのですが
また、そのような目的に適したフォームはありますか?
そもそもC#が適切なのかわからないのですが
906デフォルトの名無しさん (ワッチョイ 66f2-rusg)
2019/02/25(月) 11:41:19.60ID:2iFL+VGx0 >>90結局Unityになるんやろなあ
907デフォルトの名無しさん (ワッチョイ 7d01-b+8Y)
2019/02/25(月) 12:13:30.45ID:kHS+5sOB0 VisualStudioでデバッグ実行した時だけプログラムがフリーズしてしまうのですがこういう時はどういった原因が考えられるでしょうか?
WinFormを使用していてフォームが立ち上がったらバックグラウンドで色々するって感じの処理なのでどこかでUIスレッドをブロックしているのかとも思いましたがConfigureAwait(false)の設定し忘れは無さそうでした
VisualStudioを通さずに直接実行した場合は正常に動作しています
WinFormを使用していてフォームが立ち上がったらバックグラウンドで色々するって感じの処理なのでどこかでUIスレッドをブロックしているのかとも思いましたがConfigureAwait(false)の設定し忘れは無さそうでした
VisualStudioを通さずに直接実行した場合は正常に動作しています
908デフォルトの名無しさん (ワッチョイ b67c-cX2z)
2019/02/25(月) 13:05:26.46ID:fW706uYI0 とりあえずフリーズした時に「すべて中断」して
どこでブレイクされるか確認
ついでにスレッド一覧を見てみる
どこでブレイクされるか確認
ついでにスレッド一覧を見てみる
909デフォルトの名無しさん (ササクッテロラ Spbd-b+8Y)
2019/02/25(月) 13:15:34.63ID:O8+i9ARHp910デフォルトの名無しさん (ファミワイ FFc9-kEY9)
2019/02/25(月) 15:41:31.91ID:stIKiSPsF 最前面じゃなくて後ろ面にアクティブウィンドウがポップアップされてるんじゃね
911デフォルトの名無しさん (アウアウエー Sa52-SfL3)
2019/02/25(月) 19:11:52.07ID:ERkCIkZda >>902
単純にボタンをクリックした回数だけ非同期メソッドを実行したいだけなら
これでいいような気が
private bool mBusy = false;
private int mRepeatCount = 0;
private async void button1_Click(object sender, EventArgs e)
{
mRepeatCount += 1;
if (mBusy) return;
mBusy = true;
for (int i = 0; i < mRepeatCount; i++)
await DoSomethingAsync();
mBusy = false; mRepeatCount = 0;
MessageBox.Show("全部終わった");
}
単純にボタンをクリックした回数だけ非同期メソッドを実行したいだけなら
これでいいような気が
private bool mBusy = false;
private int mRepeatCount = 0;
private async void button1_Click(object sender, EventArgs e)
{
mRepeatCount += 1;
if (mBusy) return;
mBusy = true;
for (int i = 0; i < mRepeatCount; i++)
await DoSomethingAsync();
mBusy = false; mRepeatCount = 0;
MessageBox.Show("全部終わった");
}
912デフォルトの名無しさん (スフッ Sd0a-7Wge)
2019/02/25(月) 19:17:48.39ID:61uBElrFd >>907
俺はエディタでヒント表示させただけで落ちるけど。Blendなら使えてる。
俺はエディタでヒント表示させただけで落ちるけど。Blendなら使えてる。
913デフォルトの名無しさん (ワッチョイ 9eef-upo5)
2019/02/26(火) 06:14:33.14ID:hTJo4mxi0 https://i.imgur.com/NCB8nLP.jpg
c#をデバッグするとこのようなエラーが出るのですが、どこを改善すればいいかヒントをください
c#をデバッグするとこのようなエラーが出るのですが、どこを改善すればいいかヒントをください
914デフォルトの名無しさん (ワッチョイ 6aad-5Ibu)
2019/02/26(火) 06:21:28.31ID:byKZhMZS0 >>913
dllのパス
dllのパス
915デフォルトの名無しさん (ワッチョイ 9eef-upo5)
2019/02/26(火) 07:34:07.95ID:hTJo4mxi0 ↑ありがとうございます
.NET Core Launch (console)
というデバッガを使っているので、
"program": "${workspaceFolder}/bin/Debug/<insert-target-framework-here>/<insert-project-name-here>.dll",
という部分を修正するのだと思いますが、どう修正するんでしょうか?
実行したいプログラムを{workspaceFolder}/Program.csと指定してもエラーになります
.NET Core Launch (console)
というデバッガを使っているので、
"program": "${workspaceFolder}/bin/Debug/<insert-target-framework-here>/<insert-project-name-here>.dll",
という部分を修正するのだと思いますが、どう修正するんでしょうか?
実行したいプログラムを{workspaceFolder}/Program.csと指定してもエラーになります
916デフォルトの名無しさん (スッップ Sd0a-5Ibu)
2019/02/26(火) 07:53:17.80ID:U5FDQ2yTd >>915
いやだからcsじゃなくてdllだってば
いやだからcsじゃなくてdllだってば
917デフォルトの名無しさん (スッップ Sd0a-5Ibu)
2019/02/26(火) 07:54:10.15ID:U5FDQ2yTd ログにもちゃんと出てるはず
918デフォルトの名無しさん (ワッチョイ 4a52-ynlc)
2019/02/26(火) 08:00:35.55ID:H+xdnOpD0 >>915
プログラミングするなら英語は必須だから、「何だか分からないこと言ってる!」とか思わずにちゃんと読みな。
プログラミングするなら英語は必須だから、「何だか分からないこと言ってる!」とか思わずにちゃんと読みな。
919デフォルトの名無しさん (ワッチョイ 9eef-upo5)
2019/02/26(火) 08:41:24.11ID:hTJo4mxi0920デフォルトの名無しさん (ドコグロ MM12-/na9)
2019/02/26(火) 08:50:05.00ID:UlQR9ttEM 普通にVisualStudio(Codeじゃないやつ)ダウンロードして知識付けてから挑戦しろよ
邪魔だよ
邪魔だよ
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 立民・岡田氏の質疑「不適切」 維新・藤田氏、台湾有事答弁巡り [蚤の市★]
