「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part137
https://mevius.5ch.net/test/read.cgi/tech/1523004019/
■コードを貼る場合は↓を使いましょう。
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#(初心者用) Part138
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ 369a-msj4)
2018/06/05(火) 19:32:42.28ID:70UTtyrn02デフォルトの名無しさん (ワッチョイ 21e3-5Q+M)
2018/06/05(火) 20:49:49.24ID:M4A1qqma0 (*゚∀゚)b
3デフォルトの名無しさん (ワントンキン MM8a-67BG)
2018/06/06(水) 00:37:35.76ID:YMH0q3TJM デコーダーがイベント監視してる時点でなんかおかしいって気が付かなきゃダメだよ
クラスの責務は1つなのだからデコーダーはデコードすることに集中しなきゃならん
なのでイベントの購読、デコーダーへのデータ供給は別のクラスの仕事というわけだ
どうしてもデコーダーにイベントソースを掴ませたいならより抽象化されたストリームを渡すべきだろうね
クラスの責務は1つなのだからデコーダーはデコードすることに集中しなきゃならん
なのでイベントの購読、デコーダーへのデータ供給は別のクラスの仕事というわけだ
どうしてもデコーダーにイベントソースを掴ませたいならより抽象化されたストリームを渡すべきだろうね
4デフォルトの名無しさん (アウアウエー Sa22-UB1l)
2018/06/06(水) 00:54:44.11ID:89Zk6fQTa 前スレ>>999
酷い言い掛かりだなw
この人、自分の議論が
(1) FrameDecoderは使い捨てされるオブジェクトである(CommunicationPortより寿命が短い)
(2) FrameDecoderを使う側(メインクラス?)はプログラムと同じ寿命
っていう自分勝手な前提に立ってることに気付いてるのかな。
そんな勝手な前提を置いたらどんなイチャモンでも言えるよw
既に書いたが、結局抽象的に言えるのは
----
使い捨てのオブジェクトが自分より長寿のオブジェクトのイベントに
メソッドを紐づけする場合は、イベント購読解除を忘れるとリークする
----
これ以上でも以下でもない。
だから俺の書いたコードhttps://mevius.5ch.net/test/read.cgi/tech/1523004019/985
に対して、「FrameDecoderがプログラムと同じ寿命じゃない、使い捨てされるオブジェクトなら
いらなくなったタイミングでイベント購読解除するようにしないとリークするよ」と質問者にアドバイスするのなら
意味があると思う
イベント発行側を引数でもらったらイカンとか、そんな訳わかんない
俺様ルールを他人にごり押ししてどうすんの。
酷い言い掛かりだなw
この人、自分の議論が
(1) FrameDecoderは使い捨てされるオブジェクトである(CommunicationPortより寿命が短い)
(2) FrameDecoderを使う側(メインクラス?)はプログラムと同じ寿命
っていう自分勝手な前提に立ってることに気付いてるのかな。
そんな勝手な前提を置いたらどんなイチャモンでも言えるよw
既に書いたが、結局抽象的に言えるのは
----
使い捨てのオブジェクトが自分より長寿のオブジェクトのイベントに
メソッドを紐づけする場合は、イベント購読解除を忘れるとリークする
----
これ以上でも以下でもない。
だから俺の書いたコードhttps://mevius.5ch.net/test/read.cgi/tech/1523004019/985
に対して、「FrameDecoderがプログラムと同じ寿命じゃない、使い捨てされるオブジェクトなら
いらなくなったタイミングでイベント購読解除するようにしないとリークするよ」と質問者にアドバイスするのなら
意味があると思う
イベント発行側を引数でもらったらイカンとか、そんな訳わかんない
俺様ルールを他人にごり押ししてどうすんの。
5デフォルトの名無しさん (アウアウエー Sa22-UB1l)
2018/06/06(水) 00:57:45.23ID:89Zk6fQTa それとさあ、、これも繰り返しになるけど、
だから俺は質問者の参考になるかもしれんコードの骨組みのサンプルを書いてるだけであって、
そんな細かい別の話をしてるんじゃないってばw
何でもっと建設的になれないかな
だから俺は質問者の参考になるかもしれんコードの骨組みのサンプルを書いてるだけであって、
そんな細かい別の話をしてるんじゃないってばw
何でもっと建設的になれないかな
6デフォルトの名無しさん (ワッチョイ d681-gTal)
2018/06/06(水) 01:15:02.96ID:e5dRgfnV0 死なないと分かんねーのかな
7デフォルトの名無しさん (ブーイモ MMf1-CKCa)
2018/06/06(水) 01:18:11.35ID:qa98W75KM >>4
分かってないなあ
FrameDecoderの寿命はFrameDecoder自身が決めることではなくてそれを使う側が決めることでしょ
引数をはじめとして、自分の管理外にあるものに対して自分自身を登録することは、その了解を破ってるという点で好まれない
OSSのソースとか読んだことないかもしれないけど、実際滅多にないよ?
FormやTimerのようにGCRoot持って自分自身で寿命を制御してる例外も無くはないが、
それはフォームはXボタン、タイマなら一定時間経過、というように自分自身の性質が寿命を決めているからそれが自然なんだよ
分かってないなあ
FrameDecoderの寿命はFrameDecoder自身が決めることではなくてそれを使う側が決めることでしょ
引数をはじめとして、自分の管理外にあるものに対して自分自身を登録することは、その了解を破ってるという点で好まれない
OSSのソースとか読んだことないかもしれないけど、実際滅多にないよ?
FormやTimerのようにGCRoot持って自分自身で寿命を制御してる例外も無くはないが、
それはフォームはXボタン、タイマなら一定時間経過、というように自分自身の性質が寿命を決めているからそれが自然なんだよ
8デフォルトの名無しさん (アウアウウー Sa09-CKCa)
2018/06/06(水) 01:18:13.86ID:XybM8xsda >>4
分かってないなあ
FrameDecoderの寿命はFrameDecoder自身が決めることではなくてそれを使う側が決めることでしょ
引数をはじめとして、自分の管理外にあるものに対して自分自身を登録することは、その了解を破ってるという点で好まれない
OSSのソースとか読んだことないかもしれないけど、実際滅多にないよ?
FormやTimerのようにGCRoot持って自分自身で寿命を制御してる例外も無くはないが、
それはフォームはXボタン、タイマなら一定時間経過、というように自分自身の性質が寿命を決めているからそれが自然なんだよ
分かってないなあ
FrameDecoderの寿命はFrameDecoder自身が決めることではなくてそれを使う側が決めることでしょ
引数をはじめとして、自分の管理外にあるものに対して自分自身を登録することは、その了解を破ってるという点で好まれない
OSSのソースとか読んだことないかもしれないけど、実際滅多にないよ?
FormやTimerのようにGCRoot持って自分自身で寿命を制御してる例外も無くはないが、
それはフォームはXボタン、タイマなら一定時間経過、というように自分自身の性質が寿命を決めているからそれが自然なんだよ
9デフォルトの名無しさん (アウアウエー Sa22-UB1l)
2018/06/06(水) 01:28:03.10ID:kKiXaErEa >>7
分かってないのは君
だから、君は勝手に「FrameDecoderを使う側の寿命はCommunicationPortと同じが
それより長い」という前提に立っている。
何度も言うが、そんな勝手な前提を置いたら何でも言える。
じゃあFrameDecoderを使うオブジェクトの寿命がCommunicationPortより短い場合はどうするのか。
分かってないのは君
だから、君は勝手に「FrameDecoderを使う側の寿命はCommunicationPortと同じが
それより長い」という前提に立っている。
何度も言うが、そんな勝手な前提を置いたら何でも言える。
じゃあFrameDecoderを使うオブジェクトの寿命がCommunicationPortより短い場合はどうするのか。
10デフォルトの名無しさん (アウアウウー Sa09-CKCa)
2018/06/06(水) 01:36:08.83ID:XybM8xsda >>9
なるほど、そんな初歩的なところを勘違いしてたのか
イベントを使うにしろ何にしろ、CommunicationPortから引数の受け渡しによってデータを受け取る以上、
当然、CommunicationPortからFrameDecoderへは参照を辿って到達可能でなければならないよ
問題にしてるのはその参照を登録したり解除したりする責任の話ね
なるほど、そんな初歩的なところを勘違いしてたのか
イベントを使うにしろ何にしろ、CommunicationPortから引数の受け渡しによってデータを受け取る以上、
当然、CommunicationPortからFrameDecoderへは参照を辿って到達可能でなければならないよ
問題にしてるのはその参照を登録したり解除したりする責任の話ね
11デフォルトの名無しさん (ワッチョイ fa9d-/lNa)
2018/06/06(水) 01:39:09.20ID:CmtfArYj0 つか、シリアル通信クラスって標準のがあった気がするけど
それが合わないとしても、それを模倣して作れって言うのが普通じゃないのか
それが合わないとしても、それを模倣して作れって言うのが普通じゃないのか
12前スレ976 (ワッチョイ 4e99-fUxx)
2018/06/06(水) 06:26:27.44ID:z0q6WK6V0 すいません
回答ありがとうございました
何か揉める原因になってすいません
ttps://dobon.net/vb/dotnet/vb2cs/event.html#section3のデータを返す方法がやりたいことになるのかなと思って調べてました。
回答ありがとうございました
何か揉める原因になってすいません
ttps://dobon.net/vb/dotnet/vb2cs/event.html#section3のデータを返す方法がやりたいことになるのかなと思って調べてました。
13デフォルトの名無しさん (ワッチョイ d681-gTal)
2018/06/06(水) 09:37:08.80ID:e5dRgfnV0 彼らは病気だから気にしなくていい
いつものことさ
いつものことさ
14デフォルトの名無しさん (アウアウエー Sa22-UB1l)
2018/06/06(水) 11:55:26.62ID:/mNmPD5La >>10
何を言ってるのかさっぱり分からない
だれか分かる人がいたら解説してw
「CommunicationPortからFrameDecoderへは参照を辿って到達可能でなければならない」
必要なんかどこにあんのw
しかし、こういう「俺様ルール」を正当化するために
勝手な前提条件を設定してかつその自覚がない人ってのは困っちゃうね
何を言ってるのかさっぱり分からない
だれか分かる人がいたら解説してw
「CommunicationPortからFrameDecoderへは参照を辿って到達可能でなければならない」
必要なんかどこにあんのw
しかし、こういう「俺様ルール」を正当化するために
勝手な前提条件を設定してかつその自覚がない人ってのは困っちゃうね
15デフォルトの名無しさん (アウアウエー Sa22-UB1l)
2018/06/06(水) 12:02:03.87ID:/mNmPD5La >>12
別にもめてるわけじゃw
プログラミングは技術の一種なんだから質問スレであっても
議論に発展することがあるのは当たり前で、それを異常なことのように
感じる人間の方が病気で、そういう人間こそ無視していいと思う
以前「マウンティング」って言葉が好きな御仁がおったけど、
ようするに彼はそんなくだらないことでマウントを取りたい自分を
表出することで何かを語るに落ちてることにも気が付かない素朴なお方だw
別にもめてるわけじゃw
プログラミングは技術の一種なんだから質問スレであっても
議論に発展することがあるのは当たり前で、それを異常なことのように
感じる人間の方が病気で、そういう人間こそ無視していいと思う
以前「マウンティング」って言葉が好きな御仁がおったけど、
ようするに彼はそんなくだらないことでマウントを取りたい自分を
表出することで何かを語るに落ちてることにも気が付かない素朴なお方だw
16デフォルトの名無しさん (ワッチョイ fa11-W/zB)
2018/06/06(水) 12:28:24.14ID:v+YVHC4y0 >>1読め
17デフォルトの名無しさん (ワッチョイ fae0-kPLI)
2018/06/06(水) 20:12:00.38ID:Xjc53mAM0 どうでもいい質問ですがvisual studioの初期設定で
C#が中括弧だけで1行使うのはなにか理由があるんでしょうか?
C++他の言語だと最初の中括弧の前では改行しないスタイルの方が多いと思うんですが
C#が中括弧だけで1行使うのはなにか理由があるんでしょうか?
C++他の言語だと最初の中括弧の前では改行しないスタイルの方が多いと思うんですが
18デフォルトの名無しさん (ラクッペ MM35-gTal)
2018/06/06(水) 20:17:07.10ID:yVrgGFaDM ない
19デフォルトの名無しさん (アウアウウー Sa09-C2Ni)
2018/06/06(水) 20:34:10.39ID:LL2q+46Ta20デフォルトの名無しさん (ワッチョイ d681-R6Ha)
2018/06/06(水) 21:13:23.87ID:5ce/nrvV0 >>17
波動拳みたいでいいだろ?
波動拳みたいでいいだろ?
21デフォルトの名無しさん (ワッチョイ fae0-kPLI)
2018/06/06(水) 21:13:34.77ID:Xjc53mAM0 >>19
どうも、よく分かりました
どうも、よく分かりました
22デフォルトの名無しさん (ワントンキン MM8a-67BG)
2018/06/06(水) 23:05:03.78ID:N8yiaTQzM パイソンスタイルが至高
波カッコとか要らん
波カッコとか要らん
23デフォルトの名無しさん (ワッチョイ 5db3-7ot6)
2018/06/06(水) 23:07:52.15ID:+PcIhiGy0 俺はブロックが解り易くて良いと思うけどな
縦に長くなるのが嫌だって人がいるのも理解しない事はないが
縦に長くなるのが嫌だって人がいるのも理解しない事はないが
24デフォルトの名無しさん (アウアウウー Sa09-CKCa)
2018/06/06(水) 23:15:12.78ID:c8dAN/Mma >>17
C++は { だけで一行使うスタイルの方が一般的だと思うぞ
C#はもともとC++開発者の取り込みを狙って作られた言語なので、ソースのスタイルも含め、意図的に全体的な雰囲気をC++に似せている
C++は { だけで一行使うスタイルの方が一般的だと思うぞ
C#はもともとC++開発者の取り込みを狙って作られた言語なので、ソースのスタイルも含め、意図的に全体的な雰囲気をC++に似せている
25デフォルトの名無しさん (ワッチョイ eb81-lRLg)
2018/06/07(木) 00:32:23.12ID:8RMVvRLY0 >>22
C#はコード畳めるんだぜ?
C#はコード畳めるんだぜ?
26デフォルトの名無しさん (ワッチョイ 81b3-9mJg)
2018/06/07(木) 00:35:34.59ID:gtRPAC9i0 言いたい事は解るけど、それは言語仕様でなくIDEの機能では……
27デフォルトの名無しさん (ワッチョイ e9e3-oEJ7)
2018/06/07(木) 07:22:06.46ID:7v9jTo8H0 あのコード畳める機能って極悪だよな。
もうそろそろ終わりだなぁと思ったら畳まれているコードが数百行隠れてましたとか泣いたよ。
もうそろそろ終わりだなぁと思ったら畳まれているコードが数百行隠れてましたとか泣いたよ。
28デフォルトの名無しさん (ワッチョイ 1311-V68u)
2018/06/07(木) 08:14:21.51ID:w0rLP4AV0 畳まれてるコードがあって泣くってどういう状態だよ・・・
29デフォルトの名無しさん (スッップ Sd33-fSec)
2018/06/07(木) 08:49:08.48ID:acA4rAind どうせ20000行のメソッドとかなんだろ
30デフォルトの名無しさん (ワンミングク MM53-LJEe)
2018/06/07(木) 08:54:33.87ID:dtJbFkp5M クラスの作成について教えてください。
内部でstring程度の情報しか持たない場合でも、Disposeは実装しなければならないですか?実際、何もやる事ないですが。
内部でstring程度の情報しか持たない場合でも、Disposeは実装しなければならないですか?実際、何もやる事ないですが。
31デフォルトの名無しさん (ワッチョイ eb81-XZeD)
2018/06/07(木) 08:59:41.46ID:jTBAfznK0 しなければならないと言った人に聞いてくださいよ
一般的に、決定権がある人が必要ないと判断すればしません
一般的に、決定権がある人が必要ないと判断すればしません
32デフォルトの名無しさん (ワンミングク MM53-LJEe)
2018/06/07(木) 09:15:25.73ID:dtJbFkp5M すみません、聞き方が悪かったです。
しなければならないと言われた訳ではないのですが、作法としてどうなのかな?と心配になって質問しました。
自分だけで使うならどうでもいいのですが、他人にも公開するものなので、恥ずかしくないものを作りたくて。
しなければならないと言われた訳ではないのですが、作法としてどうなのかな?と心配になって質問しました。
自分だけで使うならどうでもいいのですが、他人にも公開するものなので、恥ずかしくないものを作りたくて。
33デフォルトの名無しさん (ワッチョイ 1306-EqDK)
2018/06/07(木) 09:41:25.22ID:NVuYCS+k0 作法というかIDisposableは主にアンマネージリソース解放の用途だよ
OS機能を直接扱うとか、メンバーが使用してるとか。インスタンス解放ではない
むしろ実装の仕方に作法があるのでMicrosoft DocsなりMSDNなりを
OS機能を直接扱うとか、メンバーが使用してるとか。インスタンス解放ではない
むしろ実装の仕方に作法があるのでMicrosoft DocsなりMSDNなりを
34デフォルトの名無しさん (アウアウウー Sad5-BJSQ)
2018/06/07(木) 15:35:52.79ID:Fu48jME1a35デフォルトの名無しさん (ワンミングク MM53-LJEe)
2018/06/07(木) 16:30:11.85ID:dtJbFkp5M36デフォルトの名無しさん (ブーイモ MMeb-lRLg)
2018/06/07(木) 19:28:36.25ID:6Ugs28PiM >>27
行数表示してないのかよw
行数表示してないのかよw
37デフォルトの名無しさん (ワッチョイ 897f-LHz9)
2018/06/07(木) 19:55:09.68ID:GcMnTqlg0 コントロールが表示されないのですがなぜでしょう
Microsoft.Toolkit.Win32.UI.Controls.WinForms.WebView wv = new Microsoft.Toolkit.Win32.UI.Controls.WinForms.WebView();
wv.Dock = DockStyle.Fill;
this.Controls.Add(wv);
wv.Navigate("http://www.yahoo.co.jp/");
Microsoft.Toolkit.Win32.UI.Controls.WinForms.WebView wv = new Microsoft.Toolkit.Win32.UI.Controls.WinForms.WebView();
wv.Dock = DockStyle.Fill;
this.Controls.Add(wv);
wv.Navigate("http://www.yahoo.co.jp/");
38デフォルトの名無しさん (アウアウカー Sa2d-yORj)
2018/06/07(木) 21:20:31.87ID:aqK3UKBIa >>35
アンマネージなシステムリソースを確実に解放するときに使うよ
アンマネージなシステムリソースを確実に解放するときに使うよ
39デフォルトの名無しさん (ワッチョイ 09c3-Ihiv)
2018/06/07(木) 21:25:32.22ID:HziEaPXa0 どういう考え方をすればできるようになるんだよ!教えろお前ら!!ホラホラホラホラ!!!!
40デフォルトの名無しさん (ワッチョイ eb81-lRLg)
2018/06/07(木) 21:27:36.16ID:8RMVvRLY0 プロセスゾンビを確実にkillするにはどうすればよい?
41デフォルトの名無しさん (ワッチョイ b1b5-pwhw)
2018/06/07(木) 21:43:03.21ID:muNvrUxm0 シャットダウン
42デフォルトの名無しさん (バットンキン MM53-9WTg)
2018/06/08(金) 12:54:30.79ID:ZXhSx/U8M kill -9 プロセス番号
43デフォルトの名無しさん (ワッチョイ a98a-Duqg)
2018/06/08(金) 12:54:58.48ID:sQqhvtlW0 init 0
44デフォルトの名無しさん (オイコラミネオ MMb5-GLBR)
2018/06/08(金) 13:08:29.19ID:CYBBWkiVM >>17
私は { は単独にしない派ですね。
理由は、少しでも多く画面内にソースを表示して見通しやすくするためと、昔からの Basicの名残で、ifなら thenに相当する { は行末。endifの } は単独という位置づけですね。
今はideの進化で { } のペアの書き忘れがほとんどないというのもあるかな。
私は { は単独にしない派ですね。
理由は、少しでも多く画面内にソースを表示して見通しやすくするためと、昔からの Basicの名残で、ifなら thenに相当する { は行末。endifの } は単独という位置づけですね。
今はideの進化で { } のペアの書き忘れがほとんどないというのもあるかな。
45デフォルトの名無しさん (ワッチョイ 137f-6+Fv)
2018/06/08(金) 14:44:00.50ID:6WR6CtyO0 >>37
試してないけど、対応OSで実行してないとか?
試してないけど、対応OSで実行してないとか?
46デフォルトの名無しさん (スップ Sd73-fSec)
2018/06/08(金) 15:03:45.94ID:QSVDv9Gwd >>44
その言語の流儀に素直に従った方がいいんじゃないかと
その言語の流儀に素直に従った方がいいんじゃないかと
47デフォルトの名無しさん (ワッチョイ 1311-V68u)
2018/06/08(金) 16:55:43.13ID:3Fn0oPLQ0 流儀に従うなら、どっちでもいい、では?
48デフォルトの名無しさん (ワッチョイ d360-X4KX)
2018/06/08(金) 17:50:11.32ID:wbtEeseM0 int c = 5;
for(c = 1; c < 61; c++)
{
//処理
}
Console.WriteLine(c.ToString());
これで一番最後でCが62になるのですが
C<61の判定後でも++のインクリメントは行われているってことでいいのですか?
for(c = 1; c < 61; c++)
{
//処理
}
Console.WriteLine(c.ToString());
これで一番最後でCが62になるのですが
C<61の判定後でも++のインクリメントは行われているってことでいいのですか?
49デフォルトの名無しさん (ワッチョイ eb9a-DGJA)
2018/06/08(金) 17:59:23.80ID:3yCOErp0050デフォルトの名無しさん (アウアウエー Sa23-SCrG)
2018/06/08(金) 18:02:38.49ID:SrLrQXUUa51デフォルトの名無しさん (アウアウエー Sa23-SCrG)
2018/06/08(金) 18:11:11.09ID:SrLrQXUUa つーか、この程度の検証もせずに他人に質問を投げる神経が分からんマジで
52デフォルトの名無しさん (スップ Sd73-fSec)
2018/06/08(金) 18:35:49.98ID:QSVDv9Gwd >>47
パブリックなAPIかそうでないかによって違う
パブリックなAPIかそうでないかによって違う
53デフォルトの名無しさん (ワッチョイ 897f-4qwh)
2018/06/08(金) 19:21:59.01ID:TU3718TC0 >>45
OSのバージョンは問題なさそうなんですよね。
OSのバージョンは問題なさそうなんですよね。
54デフォルトの名無しさん (ワッチョイ 1311-V68u)
2018/06/09(土) 10:20:18.22ID:iRP9QLJz055デフォルトの名無しさん (ワッチョイ 13b3-3s1o)
2018/06/09(土) 11:11:10.00ID:3S5Pjg6F0 構造化制御文はインデントされた行を1行と1行、例えば if (a == b) { と } で挟むのが、
パッと見たとき一体に見えて分かりやすい。{ を単独行にすると、{ と } で挟まれた
無名ブロックがあって、その上に構造的に無関係な1行のif文があるように見えてしまう。
もう少しじっくり見れば、行末の ; の有無で下のブロックとの関係を判別できるが、
その一瞬の認知の遅れに違和感を覚え、もっとはっきり言えばキモいコードだと思う。
同じ理由で、条件が真のときの文が1つの場合の
if (a == b)
c = d;
e = f;
のようなスタイルもキモいし、Pythonの
if a = b:
c = d
e = f
g = h
はもっとキモくて、まさに蛇蝎のように嫌いだ。
関数・メソッド定義と制御文の見分けという観点からも、前者は
int func(int arg)
{
後者は
if (cond) {
で始めて、( の前のスペースの有無と { の前の改行の有無のどちらでも前者と後者で
違いをつけた方が、すんなりと見分けられて良い。
パッと見たとき一体に見えて分かりやすい。{ を単独行にすると、{ と } で挟まれた
無名ブロックがあって、その上に構造的に無関係な1行のif文があるように見えてしまう。
もう少しじっくり見れば、行末の ; の有無で下のブロックとの関係を判別できるが、
その一瞬の認知の遅れに違和感を覚え、もっとはっきり言えばキモいコードだと思う。
同じ理由で、条件が真のときの文が1つの場合の
if (a == b)
c = d;
e = f;
のようなスタイルもキモいし、Pythonの
if a = b:
c = d
e = f
g = h
はもっとキモくて、まさに蛇蝎のように嫌いだ。
関数・メソッド定義と制御文の見分けという観点からも、前者は
int func(int arg)
{
後者は
if (cond) {
で始めて、( の前のスペースの有無と { の前の改行の有無のどちらでも前者と後者で
違いをつけた方が、すんなりと見分けられて良い。
>>55
if (cond) {
}
と書くのだったら、関数の場合も
int func(int arg) {
}
とするのが統一がとれていいんじゃない?なぜ関数と if 文とで書き分けるのか、その理由がわからない
if (cond) {
}
と書くのだったら、関数の場合も
int func(int arg) {
}
とするのが統一がとれていいんじゃない?なぜ関数と if 文とで書き分けるのか、その理由がわからない
57デフォルトの名無しさん (ワッチョイ 81b3-9mJg)
2018/06/09(土) 11:40:22.30ID:kOHnqaQt0 その自己主張要る?
58デフォルトの名無しさん (ワッチョイ 81b3-9mJg)
2018/06/09(土) 11:41:04.90ID:kOHnqaQt059デフォルトの名無しさん (ワッチョイ ebc9-LHz9)
2018/06/09(土) 11:42:25.58ID:4y2IVpvw0 メソッドとif文に差付けなくてもインデント違う時点で判別付くんじゃないのか
と思ったが、ローカル関数出てきたんだっけか
と思ったが、ローカル関数出てきたんだっけか
60デフォルトの名無しさん (ワントンキン MM53-7qxP)
2018/06/09(土) 12:02:32.41ID:54mp5fzVM if (cond) statement;
if (cond) call();
if (notcond) return;
statement;
statement;
statement;
{}がなくても見やすいね
if (cond) call();
if (notcond) return;
statement;
statement;
statement;
{}がなくても見やすいね
61デフォルトの名無しさん (ワッチョイ 13b3-3s1o)
2018/06/09(土) 12:03:48.88ID:3S5Pjg6F062デフォルトの名無しさん (ワッチョイ 13b3-3s1o)
2018/06/09(土) 12:05:40.33ID:3S5Pjg6F0 >>60
1行if文は否定しないし、自分自身も割とよく使うよ。
1行if文は否定しないし、自分自身も割とよく使うよ。
>>61
pascal に習う必要はないと思いますが…なぜ pascal を持ち出してきたのでしょうか?
私は関数と if/for/while を別にする必要性はないと思っています
{
}
とかスペースの無駄にみえてしまいます
pascal に習う必要はないと思いますが…なぜ pascal を持ち出してきたのでしょうか?
私は関数と if/for/while を別にする必要性はないと思っています
{
}
とかスペースの無駄にみえてしまいます
64デフォルトの名無しさん (ワントンキン MM53-7qxP)
2018/06/09(土) 12:23:56.94ID:54mp5fzVM 構造がクリーンなコードを心がければ自然と{}を使わないコードになる
まあ俺から言わせてもらうと{}は綺麗なコードが浮かばない時に仕方なく使う苦肉の策ってところだね
まあ俺から言わせてもらうと{}は綺麗なコードが浮かばない時に仕方なく使う苦肉の策ってところだね
65デフォルトの名無しさん (ワッチョイ 13b3-3s1o)
2018/06/09(土) 12:43:14.79ID:3S5Pjg6F0 >>63
Pascalの悪い所、例えば条件を ( ) で囲まないので条件が目立たないのは真似する
必要はないが、良い所は参考にすべきだろう。C#は開発主導者がTurbo Pascalの
作者だったこともあり、Pascalからもいくらかの影響を受けていて、赤の他人ではない。
関数と制御文は機能が違うし、関数の方がより大きなブロックだから、書き分けた方が
すんなり読める。自然言語で小さな区切りには , を、大きな区切りには ; を使って
書き分けるのに似ている。あるいは章や節の見出しのスタイルに視覚的な差を
つけるようなもの。
Pascalの悪い所、例えば条件を ( ) で囲まないので条件が目立たないのは真似する
必要はないが、良い所は参考にすべきだろう。C#は開発主導者がTurbo Pascalの
作者だったこともあり、Pascalからもいくらかの影響を受けていて、赤の他人ではない。
関数と制御文は機能が違うし、関数の方がより大きなブロックだから、書き分けた方が
すんなり読める。自然言語で小さな区切りには , を、大きな区切りには ; を使って
書き分けるのに似ている。あるいは章や節の見出しのスタイルに視覚的な差を
つけるようなもの。
67デフォルトの名無しさん (ワッチョイ 13d2-fSec)
2018/06/09(土) 13:02:16.97ID:ufdIEzvk068デフォルトの名無しさん (ワッチョイ b1b5-pwhw)
2018/06/09(土) 13:06:52.76ID:oQlrsJoz0 改行コードが構文に影響を与えない言語仕様なんだから、好きにすればいいんだよ。
69デフォルトの名無しさん (ワッチョイ 0b33-T1fc)
2018/06/09(土) 13:12:22.07ID:Tjb3C0On0 pascal流はマジキモイな
func() {
}
if () {
}
else {
}
が一番利に適ってる
func() {
}
if () {
}
else {
}
が一番利に適ってる
70デフォルトの名無しさん (ブーイモ MM33-EqDK)
2018/06/09(土) 13:27:36.34ID:VOfp/P7BM これ以上続けても宗教の違いみたいな話で
なにも建設的なハナシにはならないからここらで終わりにしておけば?
なにも建設的なハナシにはならないからここらで終わりにしておけば?
71デフォルトの名無しさん (ワッチョイ ebc9-LHz9)
2018/06/09(土) 13:29:19.91ID:4y2IVpvw0 いくら議論したところで、お仕事なら我が社のコーディング規約で終わっちゃう話だしな
72デフォルトの名無しさん (オッペケ Srdd-HQUw)
2018/06/09(土) 14:24:17.49ID:fpkuA4ugr どうでもいいしキモい
73デフォルトの名無しさん (アウアウエー Sa23-SCrG)
2018/06/09(土) 14:27:26.20ID:DBY1R4Jva この手の嗜好がただの慣れと思い込みにすぎないっていい歳こいて気付かない人は
プログラマとしてかなり筋が悪いと思うw
たぶん知能もあんまり高くないw
2週間も違う書式で作業してたらすっかりそっちが「普通」になるw
人間なんてそんなもの。
これフォントにも言えるね
プログラマとしてかなり筋が悪いと思うw
たぶん知能もあんまり高くないw
2週間も違う書式で作業してたらすっかりそっちが「普通」になるw
人間なんてそんなもの。
これフォントにも言えるね
>>70
泥仕合にならないかぎり、意義があると思っています、これから泥仕合になるのかもしれませんが…
泥仕合にならないかぎり、意義があると思っています、これから泥仕合になるのかもしれませんが…
75デフォルトの名無しさん (ワッチョイ 13b3-Chll)
2018/06/09(土) 14:28:44.98ID:d5fCz/GJ0 エディタとコーディングスタイルの話はしないのが紳士のたしなみ
76デフォルトの名無しさん (ワントンキン MM53-7qxP)
2018/06/09(土) 14:39:18.62ID:54mp5fzVM77デフォルトの名無しさん (ワッチョイ 137f-6+Fv)
2018/06/09(土) 15:20:12.02ID:JwKFPqLV078デフォルトの名無しさん (ワッチョイ eb81-XZeD)
2018/06/09(土) 15:35:33.03ID:a58WBe6r0 >>75
よい習慣をお持ちですね。素晴らしい
よい習慣をお持ちですね。素晴らしい
79デフォルトの名無しさん (ワッチョイ 1981-DGJA)
2018/06/11(月) 12:25:35.64ID:6xD/x26k0 VisualStudio2017 でコンソールアプリケーションを作っています。
System.Windows.Forms.Clipboardクラスを使いたいのですが
ビルドの設定をReleaseにしているとエラーはでないのに
Debugにすると FormsがSystem.Windowsに存在しないといわれてしまいます。
(アセンブリ参照はしています)
どなたか原因分かる方いないでしょうか。
https://i.imgur.com/sgkx4HK.png
https://i.imgur.com/Tr2VkYB.png
System.Windows.Forms.Clipboardクラスを使いたいのですが
ビルドの設定をReleaseにしているとエラーはでないのに
Debugにすると FormsがSystem.Windowsに存在しないといわれてしまいます。
(アセンブリ参照はしています)
どなたか原因分かる方いないでしょうか。
https://i.imgur.com/sgkx4HK.png
https://i.imgur.com/Tr2VkYB.png
80デフォルトの名無しさん (スッップ Sd33-fSec)
2018/06/11(月) 12:35:57.40ID:bN46fGFrd >>79
csprojファイル晒して
csprojファイル晒して
8179 (ワッチョイ 1981-DGJA)
2018/06/11(月) 13:13:19.40ID:6xD/x26k082デフォルトの名無しさん (ワッチョイ eb96-LHz9)
2018/06/11(月) 21:03:57.62ID:TLX2q1MD0 フォームアプリで画面の真ん中に線を引きたいと思って単純に
(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height)/2
のところに線を挽けばいいと思ったんですが、モニタのピクセルの半分のところに線を引くと
フォームの上の -□× のあるバーの下から0ピクセルになるから20ピクセルほどが下にずれてしまいます。
フォームの中央に線を引く方法ってないでしょうか?
(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height)/2
のところに線を挽けばいいと思ったんですが、モニタのピクセルの半分のところに線を引くと
フォームの上の -□× のあるバーの下から0ピクセルになるから20ピクセルほどが下にずれてしまいます。
フォームの中央に線を引く方法ってないでしょうか?
83デフォルトの名無しさん (ササクッテロラ Spdd-pwhw)
2018/06/11(月) 21:10:24.16ID:hXpDig4+p 枠無しフォームでやれ。
84デフォルトの名無しさん (ワッチョイ eb9a-DGJA)
2018/06/11(月) 21:11:16.03ID:R9cSput30 >>82
フォームの中央なのか画面の中央なのかまずはっきりしてくれ
スクリーン座標←→クライアント座標の変換を行うには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/377screentoclient/screentoclient.html
フォームの中央なのか画面の中央なのかまずはっきりしてくれ
スクリーン座標←→クライアント座標の変換を行うには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/377screentoclient/screentoclient.html
85デフォルトの名無しさん (ワッチョイ 8917-LHz9)
2018/06/11(月) 21:12:11.98ID:aKalcs2L0 フォームの中央なのかディスプレイの中央なのかどっちだよ
86デフォルトの名無しさん (ワッチョイ eb96-LHz9)
2018/06/11(月) 21:44:14.69ID:TLX2q1MD0 自分でもどっちでいいかわからなくなったw
最初単純にフォーム最大化してるんだから、モニタの真ん中が真ん中だろと思ったら、
windowsって下にタスクバーあるわ、モニタの下に非表示領域20ピクセルほど隠れてるわ、フォームにフォームバーあるわで、
モニタの真ん中が真ん中に見えない。
たぶん無意識化でフォームの真ん中が人は真ん中と認識しているので気持ち悪い。
ということでフォームの真ん中にしました。
最初単純にフォーム最大化してるんだから、モニタの真ん中が真ん中だろと思ったら、
windowsって下にタスクバーあるわ、モニタの下に非表示領域20ピクセルほど隠れてるわ、フォームにフォームバーあるわで、
モニタの真ん中が真ん中に見えない。
たぶん無意識化でフォームの真ん中が人は真ん中と認識しているので気持ち悪い。
ということでフォームの真ん中にしました。
87デフォルトの名無しさん (ワッチョイ 13d2-fSec)
2018/06/11(月) 22:15:41.36ID:kexbIBuK0 >>86
タスクバーの位置なんて自由に変えられるんだけど
タスクバーの位置なんて自由に変えられるんだけど
88デフォルトの名無しさん (アウアウエー Sa23-SCrG)
2018/06/11(月) 22:24:08.10ID:xa0hP702a >モニタの下に非表示領域20ピクセルほど隠れてるわ
そんなものはないと思うけど...
今時CRT使っててオーバースキャン表示でもやってるなら別かもしれんけどw
そんなものはないと思うけど...
今時CRT使っててオーバースキャン表示でもやってるなら別かもしれんけどw
89デフォルトの名無しさん (ワッチョイ 0b33-T1fc)
2018/06/11(月) 22:37:51.73ID:VLKc0T550 フォームバーってタイトルバーのことかな
非クライアント領域もあるぞ
非クライアント領域もあるぞ
90前スレ976 (ブーイモ MMeb-tDoJ)
2018/06/12(火) 07:25:05.60ID:qsxFIdydM どうにかイベントを発生させることができました。ここから5バイトの受信データを分解して処理を分岐したいんですが、どのような手法、便利な関数がありますでしょうか。
オペコード1バイト+データ4バイトという形式です。データは4バイトで表現する数値だったり、1ビットごとのフラグだったりします。
昔ながらのswich~caseで分岐って使うんでしょうか
オペコードが増えたり、データの予約ビットが変わると変更が大変そうです
オペコード1バイト+データ4バイトという形式です。データは4バイトで表現する数値だったり、1ビットごとのフラグだったりします。
昔ながらのswich~caseで分岐って使うんでしょうか
オペコードが増えたり、データの予約ビットが変わると変更が大変そうです
91デフォルトの名無しさん (アウアウウー Sad5-BJSQ)
2018/06/12(火) 08:46:58.51ID:awfOgDQGa switchでいいよ
たかがイベント一個作るのに何日もかかるようなレベルで今どんな凝った設計しようが、結局後で全部やり直しになる
今は余計な手間をかけないこと、シンプルに保つこと、それだけ考えてりゃいい
たかがイベント一個作るのに何日もかかるようなレベルで今どんな凝った設計しようが、結局後で全部やり直しになる
今は余計な手間をかけないこと、シンプルに保つこと、それだけ考えてりゃいい
92デフォルトの名無しさん (ワッチョイ a98a-Duqg)
2018/06/12(火) 08:51:11.88ID:l+dIOx6V0 デバイスドライバーみたいに処理をチェーンさせるってのもあり
93デフォルトの名無しさん (ブーイモ MM05-BJSQ)
2018/06/12(火) 09:12:16.14ID:HMj9ZmCFM スクリプト言語のインタプリタなんかでも巨大switchが普通だぞ
断言するが、先を見通せない状況でヘタにコマンドパターンとか入れても、後で横断的な変更が多発して
すべてのコマンドクラスに手を入れて回るアホみたいな作業に追われることになるだけ
断言するが、先を見通せない状況でヘタにコマンドパターンとか入れても、後で横断的な変更が多発して
すべてのコマンドクラスに手を入れて回るアホみたいな作業に追われることになるだけ
94デフォルトの名無しさん (ワッチョイ 1311-V68u)
2018/06/12(火) 10:49:11.67ID:Blmm4zE90 コード増加はともかく予約を変更すんな・・・
95デフォルトの名無しさん (アウアウエー Sa23-SCrG)
2018/06/12(火) 11:04:17.10ID:O2DKnY7ra >>90
どっちにしろ「便利な関数なんかないでしょうw
ちっとも汎用的じゃない処理をエレガントに書く方法なんか用意されてるはずがないw
泥臭い物は泥臭く書くしかないかと
オペコードがそれ以上分解できない前提で
(1) オペコードをenumにキャストしてswith、でも
(2) ジャンプテーブル(デリゲートの配列)を使う、でもお好みで
もし仮に受信するデータが常にこちらから要求したデータである、
つまり、どういうデータが送信されてくることをこちら側が期待しているか事前に分かっている場合は
別の方法論もあると思う
その場合はこちらがリクエストを出す段階で、期待する種類のデータだけを読解できるオブジェクトを
生成してタイムアウト付きで待機させればいい
どっちにしろ「便利な関数なんかないでしょうw
ちっとも汎用的じゃない処理をエレガントに書く方法なんか用意されてるはずがないw
泥臭い物は泥臭く書くしかないかと
オペコードがそれ以上分解できない前提で
(1) オペコードをenumにキャストしてswith、でも
(2) ジャンプテーブル(デリゲートの配列)を使う、でもお好みで
もし仮に受信するデータが常にこちらから要求したデータである、
つまり、どういうデータが送信されてくることをこちら側が期待しているか事前に分かっている場合は
別の方法論もあると思う
その場合はこちらがリクエストを出す段階で、期待する種類のデータだけを読解できるオブジェクトを
生成してタイムアウト付きで待機させればいい
96デフォルトの名無しさん (ワントンキン MM53-7qxP)
2018/06/12(火) 12:12:37.91ID:yJ6G/fgzM97デフォルトの名無しさん (ササクッテロ Spdd-rXIk)
2018/06/12(火) 14:41:16.06ID:dH3jUIiRp それより、データの先頭を識別できるフォーマットにしたか?
98デフォルトの名無しさん (ワッチョイ 53c3-jpFx)
2018/06/12(火) 15:40:05.30ID:wFgJsw9E0 固定長なら先頭コード種類分のデリゲートを割り付けるってのもあるが、こればっかしは好みだな。
99前スレ976 (ブーイモ MMeb-tDoJ)
2018/06/12(火) 20:18:08.93ID:qsxFIdydM ありがとうございます。
ベタベタに書いてみます。
1バイトが1ビットごとのフラグになっている場合はビットマスクで一つずつ抽出するのが一般的でしょうか?
ベタベタに書いてみます。
1バイトが1ビットごとのフラグになっている場合はビットマスクで一つずつ抽出するのが一般的でしょうか?
100デフォルトの名無しさん (ワッチョイ 9361-6Jh4)
2018/06/13(水) 22:29:58.82ID:T96Fk9Se0 SQLについて質問ですが
INSERT INTO T_USER (
ID, PASSWORD
) VALUES (
@ID, @PASSWORD
);
のINSERT分を
INSERT INTO T_USER (
ID = @ID,
PASSWORD = @PASSWORD
);
のように書く場合はどのようにしたらよいでしょうか。
INSERT INTO T_USER (
ID, PASSWORD
) VALUES (
@ID, @PASSWORD
);
のINSERT分を
INSERT INTO T_USER (
ID = @ID,
PASSWORD = @PASSWORD
);
のように書く場合はどのようにしたらよいでしょうか。
101デフォルトの名無しさん (ワッチョイ 8917-LHz9)
2018/06/13(水) 22:33:15.48ID:8SXHgjst0 スレチ
102デフォルトの名無しさん (ワッチョイ e9e3-HWv4)
2018/06/13(水) 22:40:13.78ID:dwe0uTDh0 そういうメソッド作ったらいいじゃん
setInsert(new dictionary略);
みたいなの
setInsert(new dictionary略);
みたいなの
103デフォルトの名無しさん (ワッチョイ c68a-3+MO)
2018/06/14(木) 08:40:57.01ID:tUkyOm+Z0 クラスの構造体(ただint型のデータが複数個しかない)をXMLに変換したいのだが
XMLSerializer以外に何かないかな?
XMLSerializerは以前にバグを起こしたことがあって使いたくないんだ
XMLSerializer以外に何かないかな?
XMLSerializerは以前にバグを起こしたことがあって使いたくないんだ
104デフォルトの名無しさん (ワッチョイ c211-jgxh)
2018/06/14(木) 09:14:05.32ID:o3acK5Uh0 >>100
UPDATEじゃないんだから・・・
UPDATEじゃないんだから・・・
105デフォルトの名無しさん (ラクッペ MM61-h/p3)
2018/06/14(木) 09:54:39.43ID:A8NrLUZ4M クラスの構造体…?
106デフォルトの名無しさん (ワッチョイ 42a4-/RsH)
2018/06/14(木) 11:31:35.89ID:/+f4Bre90 >>103
全手動
全手動
107デフォルトの名無しさん (ワッチョイ 2260-BQKd)
2018/06/14(木) 12:02:09.33ID:cv0ACSdK0 最終的に配列を書きだしたいのですが
それまでに色んなクラスのインスタンスからその配列の読み書きがされるのですが
どういうふうにクラスを作ればいいですか?
その配列はグローバルでstaticで宣言するか、インスタンス作るごとに参照を引き渡すのですか?
それまでに色んなクラスのインスタンスからその配列の読み書きがされるのですが
どういうふうにクラスを作ればいいですか?
その配列はグローバルでstaticで宣言するか、インスタンス作るごとに参照を引き渡すのですか?
108デフォルトの名無しさん (ブーイモ MMb6-OAOp)
2018/06/14(木) 13:20:39.46ID:NMzxKZ+IM >>107
日本語でおk
日本語でおk
109デフォルトの名無しさん (ブーイモ MM62-l11B)
2018/06/14(木) 14:19:07.38ID:KBTpBKAkM110デフォルトの名無しさん (ササクッテロ Spf1-8opj)
2018/06/14(木) 15:31:16.28ID:fa4YRdZnp アクセス関数を作ってインスタンス取得用に一つスタティック関数を用意するだけ。
アクセス関数介さないと、排他処理とかいちいち入れるの面倒だぞ。
アクセス関数介さないと、排他処理とかいちいち入れるの面倒だぞ。
111デフォルトの名無しさん (スプッッ Sd61-3+MO)
2018/06/14(木) 17:22:37.66ID:Omv9hEYDd 初歩的な質問なんだけど
プロパティ?(get;set;)ついてるやつと、ついていないやつの差がわからないから教えてほしい
プロパティつけててもprivateはアクセスできないみたいだから
結局、両方ともpublicになって何が違うん?ってなってる
プロパティ?(get;set;)ついてるやつと、ついていないやつの差がわからないから教えてほしい
プロパティつけててもprivateはアクセスできないみたいだから
結局、両方ともpublicになって何が違うん?ってなってる
112デフォルトの名無しさん (ワッチョイ 2e9a-gvEZ)
2018/06/14(木) 17:40:33.14ID:T0JMmz9y0 >>111
プロパティにするとメソッドを組み込めたりgetとsetでアクセスレベル変えられたり
あと取りあえずこの辺とか
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/properties
特定のソースで何が変わるの?って言う話なら書いた人に聞かないと分からない
プロパティにするとメソッドを組み込めたりgetとsetでアクセスレベル変えられたり
あと取りあえずこの辺とか
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/properties
特定のソースで何が変わるの?って言う話なら書いた人に聞かないと分からない
113デフォルトの名無しさん (アウアウウー Saa5-m0US)
2018/06/14(木) 17:41:27.02ID:im2Z0uooa クラスのメンバーでプロパティじゃない変数はフィールドと言う
フィールド (C# プログラミング ガイド)
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/fields
プロパティ (C# プログラミング ガイド)
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/properties
フィールドは代入も参照も同じ制限になる
プロパティは別々に設定できる
しかもgetだけ setだけというのも可能
フィールド (メンバ変数) とプロパティはここが違う
https://code.msdn.microsoft.com/windowsdesktop/5-5f828cde
フィールド (C# プログラミング ガイド)
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/fields
プロパティ (C# プログラミング ガイド)
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/properties
フィールドは代入も参照も同じ制限になる
プロパティは別々に設定できる
しかもgetだけ setだけというのも可能
フィールド (メンバ変数) とプロパティはここが違う
https://code.msdn.microsoft.com/windowsdesktop/5-5f828cde
114デフォルトの名無しさん (ワッチョイ d2eb-hrcC)
2018/06/14(木) 18:59:14.79ID:UejGuppF0 クラスのプロパティに「型」を変数みたいにおけますか?
外部から「型」をセットして、クラスの中でその型を使って new して実体を作って利用したいのです。
外部から「型」をセットして、クラスの中でその型を使って new して実体を作って利用したいのです。
115デフォルトの名無しさん (ワッチョイ d2eb-hrcC)
2018/06/14(木) 19:03:10.93ID:UejGuppF0 気持ちをコードで表すと
public class Test
{
public <T> PersonClass;
public void Unko()
{
var p = new PersonClass();
p.unko();
}
}
ってな感じです。
※PersonClass にメソッド unko() がある前提
public class Test
{
public <T> PersonClass;
public void Unko()
{
var p = new PersonClass();
p.unko();
}
}
ってな感じです。
※PersonClass にメソッド unko() がある前提
116デフォルトの名無しさん (スップ Sdc2-bwM/)
2018/06/14(木) 19:09:01.39ID:Cyktia16d117デフォルトの名無しさん (ワッチョイ 0699-pByW)
2018/06/14(木) 19:15:40.41ID:5YiZsxt70118デフォルトの名無しさん (アウアウエー Sa4a-jhA2)
2018/06/14(木) 19:19:58.23ID:w+8RUA83a119デフォルトの名無しさん (ワッチョイ 41da-4dYe)
2018/06/14(木) 19:26:49.09ID:dsNhKni40 >>99
enumにFlagsAttributeを付ける
[Flags]
enum Hoge : byte
{
Bit0 = 1 << 0,
Bit1 = 1 << 1,
Bit2 = 1 << 2,
Bit3 = 1 << 3,
Bit4 = 1 << 4,
Bit5 = 1 << 5,
Bit6 = 1 << 6,
Bit7 = 1 << 7,
}
var hoge = Hoge.Bit1 | Hoge.Bit4;
if ( hoge.HasFlag( Hoge.Bit3 ) )
{
enumにFlagsAttributeを付ける
[Flags]
enum Hoge : byte
{
Bit0 = 1 << 0,
Bit1 = 1 << 1,
Bit2 = 1 << 2,
Bit3 = 1 << 3,
Bit4 = 1 << 4,
Bit5 = 1 << 5,
Bit6 = 1 << 6,
Bit7 = 1 << 7,
}
var hoge = Hoge.Bit1 | Hoge.Bit4;
if ( hoge.HasFlag( Hoge.Bit3 ) )
{
120デフォルトの名無しさん (アウアウウー Saa5-l11B)
2018/06/14(木) 23:44:33.25ID:rYhQU2t8a >>119
そんな見てて痒くなる書き方しなくても今のC#は2進数リテラル使えるぞ
そんな見てて痒くなる書き方しなくても今のC#は2進数リテラル使えるぞ
121デフォルトの名無しさん (ワッチョイ 31b5-8opj)
2018/06/14(木) 23:56:40.66ID:9S9/LeJo0 1
2
4
8
16
32
64
128
でいいよ。
2
4
8
16
32
64
128
でいいよ。
122デフォルトの名無しさん (アウアウエー Sa4a-jhA2)
2018/06/15(金) 00:31:01.58ID:UuMD2cf2a >>119みたいなのならHexで書くのが一番だろうねw
少なくとも俺ならそうする
少なくとも俺ならそうする
123デフォルトの名無しさん (ブーイモ MM62-l11B)
2018/06/15(金) 01:23:47.16ID:hh/0fz+KM 10進よりマシだが一番ではない
2進があるならどう考えても2進が一番
2進があるならどう考えても2進が一番
124デフォルトの名無しさん (アウアウエー Sa4a-jhA2)
2018/06/15(金) 01:34:20.89ID:UuMD2cf2a 書いてみりゃ分かるよw
単に一つのビットだけ立っている値を列挙するなら2進リテラルは冗長過ぎる。
そもそも何のためにHexなんかあると思ってるの
2進リテラルっていうのは、例えば組み込みで7セグのパターンのテーブルを定義する時とか、
bit5-bit7みたいにニブル単位じゃないビット範囲のビットマスクを定義する時とかに使う
単に一つのビットだけ立っている値を列挙するなら2進リテラルは冗長過ぎる。
そもそも何のためにHexなんかあると思ってるの
2進リテラルっていうのは、例えば組み込みで7セグのパターンのテーブルを定義する時とか、
bit5-bit7みたいにニブル単位じゃないビット範囲のビットマスクを定義する時とかに使う
125デフォルトの名無しさん (ブーイモ MM62-l11B)
2018/06/15(金) 02:40:57.81ID:3RK99arqM 君にとってはCが頭に染み付いてるからそうかもしれないけど、
現に>>119にとっては分かりにくいからわざわざこんな書き方をしてるんだろう
今時のプログラマはC経験ない人も多いんだから実情に合わせることも必要
そういう連中を見下すのもいいけど老害呼ばわりされないように気をつけてね
現に>>119にとっては分かりにくいからわざわざこんな書き方をしてるんだろう
今時のプログラマはC経験ない人も多いんだから実情に合わせることも必要
そういう連中を見下すのもいいけど老害呼ばわりされないように気をつけてね
126デフォルトの名無しさん (アウアウエー Sa4a-jhA2)
2018/06/15(金) 03:02:28.24ID:UuMD2cf2a127デフォルトの名無しさん (アウアウエー Sa4a-jhA2)
2018/06/15(金) 03:07:31.98ID:UuMD2cf2a どーでもいいけど、こういう自分を客観視できない単細胞な奴がネトウヨとかなるんだろうね
128デフォルトの名無しさん (ワッチョイ ddc3-ttgq)
2018/06/15(金) 03:33:39.61ID:/sL5C1h/0 ネトウヨってつまりどういう定義なんですか
マンコ吸わせてくださいs
マンコ吸わせてくださいs
129デフォルトの名無しさん (ワッチョイ 2e81-h/p3)
2018/06/15(金) 06:19:02.91ID:9gOvrFZ50 5分かけて最後に煽っていくというだけで
自分が嫌ってるゴミと大差なくなっているというね
自分が嫌ってるゴミと大差なくなっているというね
130デフォルトの名無しさん (ドコグロ MM29-1Yxh)
2018/06/15(金) 07:16:26.72ID:Cd+XXhnVM 今どきビット演算なんてしてるやつはゴミ
131デフォルトの名無しさん (ドコグロ MM29-1Yxh)
2018/06/15(金) 07:16:57.07ID:Cd+XXhnVM これまで歩んだ人生がゴミ
132前スレ976 (ブーイモ MM62-C226)
2018/06/15(金) 07:27:20.01ID:A2l2tHW6M >>119
ありがとうございます
bitarrayってのがあるらしいんですけど、これって共用体とかに一括で代入できないんですかね
3バイトデータの内の下位1バイトは1bitごとのフラグなのでbitarrayで分解できそうなんですが
ありがとうございます
bitarrayってのがあるらしいんですけど、これって共用体とかに一括で代入できないんですかね
3バイトデータの内の下位1バイトは1bitごとのフラグなのでbitarrayで分解できそうなんですが
133デフォルトの名無しさん (ワッチョイ c211-jgxh)
2018/06/15(金) 09:16:33.32ID:rymWY0Tx0 そういえばちょっと疑問なんだけど、enum定義する時に>>119みたいにbyteとか指定するのは何か意味があるの?
指定したところでbyte型の変数に代入しようとしたらキャストしなきゃいけないし、やる意味がわからないんだけど
指定したところでbyte型の変数に代入しようとしたらキャストしなきゃいけないし、やる意味がわからないんだけど
134デフォルトの名無しさん (ワッチョイ 31b5-8opj)
2018/06/15(金) 09:22:49.39ID:BTgSia3a0 >>133
え?キャスト?
え?キャスト?
135デフォルトの名無しさん (ワッチョイ c211-jgxh)
2018/06/15(金) 09:45:21.99ID:rymWY0Tx0 >>134
え?
え?
136デフォルトの名無しさん (ワッチョイ 31b5-8opj)
2018/06/15(金) 10:04:23.68ID:BTgSia3a0 ああ、enumで作った型なんだからenum型になってるだろ。
受ける変数も同じ型じゃないとダメなのは当たり前。
受ける変数も同じ型じゃないとダメなのは当たり前。
137デフォルトの名無しさん (ワッチョイ e227-hwPK)
2018/06/15(金) 11:52:41.04ID:jCp8kGwY0 >>133
シリアライズとかネイティブとの相互運用目的
シリアライズとかネイティブとの相互運用目的
138デフォルトの名無しさん (ササクッテロ Spf1-8opj)
2018/06/15(金) 11:58:42.21ID:6Dx/uRsOp 動的にenumで作った型のsizeof求めりゃいいんだが、静的に解決しなきゃならない時は指定するしか無いって話だよな?
139デフォルトの名無しさん (ワッチョイ d2eb-hrcC)
2018/06/15(金) 12:03:59.97ID:AMC7cROI0 >>116-117
コンパイル時点で型が定まらない(実行時に型が決まる)ものを new する手段という風ですよね?
使えそうです。ありがとうございました。
あとは、外部から「型」を受け取って new するまでの間、保管しておきたいのですが
型を変数(プロパティ)に格納するにはどうしたらいいんでしょ
コンパイル時点で型が定まらない(実行時に型が決まる)ものを new する手段という風ですよね?
使えそうです。ありがとうございました。
あとは、外部から「型」を受け取って new するまでの間、保管しておきたいのですが
型を変数(プロパティ)に格納するにはどうしたらいいんでしょ
140デフォルトの名無しさん (スフッ Sd62-pByW)
2018/06/15(金) 12:20:55.24ID:NFN3YtCpd >>139
117はジェネリクスなのでコンパイル時には一応定まってるハズ。
型を変数に入れたいならインスタンス.GetType()か、typeof(型)で、Type型の値が取れるけど…
本当にやりたい事と、実装の方法(型を受け取ってインスタンスを作ってそのメソッドを呼ぶ)がズレてないか心配。
117はジェネリクスなのでコンパイル時には一応定まってるハズ。
型を変数に入れたいならインスタンス.GetType()か、typeof(型)で、Type型の値が取れるけど…
本当にやりたい事と、実装の方法(型を受け取ってインスタンスを作ってそのメソッドを呼ぶ)がズレてないか心配。
141デフォルトの名無しさん (ワッチョイ c211-jgxh)
2018/06/15(金) 12:25:49.54ID:rymWY0Tx0 >>137-138
なるほど、さんくす
なるほど、さんくす
142デフォルトの名無しさん (ワッチョイ d2eb-hrcC)
2018/06/15(金) 12:48:48.68ID:AMC7cROI0 >>140
ありがとうございます。
「型」を格納する変数の型は System.Type なんですね!!
やりたいことが出来ました!!
System.Type t = typeof(××フォーム); ← ここのところを公開して外部からセット
var f = (System.Windows.Forms.Form)System.Activator.CreateInstance(t);
f.ShowDialog();
ありがとうございます。
「型」を格納する変数の型は System.Type なんですね!!
やりたいことが出来ました!!
System.Type t = typeof(××フォーム); ← ここのところを公開して外部からセット
var f = (System.Windows.Forms.Form)System.Activator.CreateInstance(t);
f.ShowDialog();
143デフォルトの名無しさん (アウアウエー Sa4a-jhA2)
2018/06/15(金) 12:57:15.01ID:PdS4cleJa >>142
それさあ、キャストしてる時点で何の意味があるんだと思わなきゃw
それさあ、キャストしてる時点で何の意味があるんだと思わなきゃw
144デフォルトの名無しさん (ブーイモ MM6d-l11B)
2018/06/15(金) 13:10:18.30ID:VuRl2MkoM >>143
Showなどのフォーム共通の操作をしたいんだろう
基底クラスにキャストする分には意味はある
設計として正しいかどうかは別問題であり今の情報だけでは何とも言えないが、
君は自分の個人的な好みを一般常識であるかのように主張して相手の事情を理解しようとせず人を一方的に批判する傾向があるようだね
Showなどのフォーム共通の操作をしたいんだろう
基底クラスにキャストする分には意味はある
設計として正しいかどうかは別問題であり今の情報だけでは何とも言えないが、
君は自分の個人的な好みを一般常識であるかのように主張して相手の事情を理解しようとせず人を一方的に批判する傾向があるようだね
145デフォルトの名無しさん (ワッチョイ d2eb-hrcC)
2018/06/15(金) 13:16:34.24ID:AMC7cROI0 本当は自作インターフェースを持った「なにか」から派生するクラスなのですが
そこまで書くと行数が凄いことになるので、Form を例にさせてもらいました。
そこまで書くと行数が凄いことになるので、Form を例にさせてもらいました。
146デフォルトの名無しさん (ワッチョイ c2d2-bwM/)
2018/06/15(金) 13:30:43.12ID:/HLz/tc50 >>145
本当は何がしたいの?
本当は何がしたいの?
147デフォルトの名無しさん (アウアウエー Sa4a-jhA2)
2018/06/15(金) 13:36:49.24ID:PdS4cleJa148デフォルトの名無しさん (ワッチョイ d2eb-hrcC)
2018/06/15(金) 14:16:21.09ID:AMC7cROI0 >>146
基底クラスから派生したクラスを動的に生成します。
142 みたいな方法が出来ることを知らなかったので
switch 〜 case でクラスの種類だけ new() やってたところをキレイにします。
基底クラスから派生したクラスを動的に生成します。
142 みたいな方法が出来ることを知らなかったので
switch 〜 case でクラスの種類だけ new() やってたところをキレイにします。
149デフォルトの名無しさん (スフッ Sd62-pByW)
2018/06/15(金) 15:03:37.25ID:NFN3YtCpd >>145
それは自作インターフェイスに「『自作インターフェイスをもった何かのインスタンス』を返す関数」を定義しておいて、
何かの方で「その関数」を実装して、
呼び出す側では普通に「その関数」を使えば良いのではなかろうか。
抽象クラスと静的関数の方がキレイかな。
「その関数」のリストが作りたいなら、そこでやっとリフレクションで取ったらいいし。
いきなりCreateInstanceは宜しくないというか危ないし、後々、各小クラスでコンストラクタがどうしようもない状況に陥ると思うよ。
それは自作インターフェイスに「『自作インターフェイスをもった何かのインスタンス』を返す関数」を定義しておいて、
何かの方で「その関数」を実装して、
呼び出す側では普通に「その関数」を使えば良いのではなかろうか。
抽象クラスと静的関数の方がキレイかな。
「その関数」のリストが作りたいなら、そこでやっとリフレクションで取ったらいいし。
いきなりCreateInstanceは宜しくないというか危ないし、後々、各小クラスでコンストラクタがどうしようもない状況に陥ると思うよ。
150デフォルトの名無しさん (ワッチョイ c29d-zq67)
2018/06/16(土) 00:47:26.32ID:i9Db63x30 Dynamicは黒歴史ですか
151デフォルトの名無しさん (ワッチョイ 9d17-Bw3Y)
2018/06/16(土) 08:04:12.32ID:axPFqDQY0 いいえ
152デフォルトの名無しさん (スップ Sdc2-bwM/)
2018/06/16(土) 08:10:11.50ID:YoGVHqI7d うんにゃ
153デフォルトの名無しさん (ブーイモ MM6d-l11B)
2018/06/16(土) 08:34:15.67ID:eKBdC14eM むしろ.NETのメインストリームがWebに移ってからはdynamic使われまくってる
JSONデータをたくさん扱ってるといちいち型付けてられない場面が多い
JSONデータをたくさん扱ってるといちいち型付けてられない場面が多い
154デフォルトの名無しさん (ワッチョイ 892b-z7gc)
2018/06/16(土) 09:57:30.72ID:fkqp7HMy0 自作のインタプリタ作った時に
Dynamic使った記憶がある
意図は・・忘れたww
Dynamic使った記憶がある
意図は・・忘れたww
155デフォルトの名無しさん (スップ Sdc2-bwM/)
2018/06/16(土) 10:02:21.77ID:v/kjTt9Bd >>153
jsonからクラスへの変換なんてVisualStudio使えば一瞬じゃない?
jsonからクラスへの変換なんてVisualStudio使えば一瞬じゃない?
156デフォルトの名無しさん (ドコグロ MM62-1Yxh)
2018/06/16(土) 10:04:46.66ID:ayiE9VmyM 大規模プロジェクトなら連想配列禁止は納得できる
157デフォルトの名無しさん (ワッチョイ c251-G00F)
2018/06/16(土) 12:20:07.70ID:omCaDuHT0 教えてください。
戻り値が async Task のメソッドで await を使わないと↓のような警告が出ます。
> CS1998 この非同期メソッドには 'await' 演算子がないため、同期的に実行されます。
> 'await' 演算子を使用して非ブロッキング API 呼び出しを待機するか、'await Task.Run(...)' を
> 使用してバックグラウンドのスレッドに対して CPU 主体の処理を実行することを検討してください。
独立したメソッドなら、await が必要ないなら async Task をやめて void にすればいいのですが、
仮想呼び出しなどの関係で戻り値を変更したくない場合の解決策に悩んでいます。
とりあえず、
[1] 警告を抑制する
[2] async だけ外して Task.CompletedTask を返す
という二つの解決策を思いついたのですが、どちらも到底正しい方法とは思えません。
いいアイディアがあれば教えてもらえると嬉しいです。
戻り値が async Task のメソッドで await を使わないと↓のような警告が出ます。
> CS1998 この非同期メソッドには 'await' 演算子がないため、同期的に実行されます。
> 'await' 演算子を使用して非ブロッキング API 呼び出しを待機するか、'await Task.Run(...)' を
> 使用してバックグラウンドのスレッドに対して CPU 主体の処理を実行することを検討してください。
独立したメソッドなら、await が必要ないなら async Task をやめて void にすればいいのですが、
仮想呼び出しなどの関係で戻り値を変更したくない場合の解決策に悩んでいます。
とりあえず、
[1] 警告を抑制する
[2] async だけ外して Task.CompletedTask を返す
という二つの解決策を思いついたのですが、どちらも到底正しい方法とは思えません。
いいアイディアがあれば教えてもらえると嬉しいです。
158デフォルトの名無しさん (アウアウウー Saa5-l11B)
2018/06/16(土) 12:52:10.42ID:Ws4rvThPa >>157
2が正しい
2が正しい
159デフォルトの名無しさん (ワッチョイ 31b5-8opj)
2018/06/16(土) 12:56:37.78ID:dmQidkOU0 同期的に結果が分かるものを非同期にして結果が欲しいとか、コールバックでも仕込んで別処理で結果得ないと正しい結果なんて分からないだろうに。
160デフォルトの名無しさん (ワッチョイ c251-G00F)
2018/06/16(土) 13:16:07.05ID:omCaDuHT0161デフォルトの名無しさん (ワッチョイ 0699-pByW)
2018/06/16(土) 13:59:46.72ID:VCIrJNT80 await Task.Run(()=>やりたいこと)
で済ますのはどうなんだろ。
で済ますのはどうなんだろ。
162デフォルトの名無しさん (アウアウウー Saa5-l11B)
2018/06/16(土) 14:16:04.53ID:Ws4rvThPa >>161
無駄にスレッド消費するしマルチスレッドによる不要なトラブルを持ち込む可能性もある最低最悪の方法
awaitを外したくないなら await Task.CompletedTask の方がクリーン
無駄にスレッド消費するしマルチスレッドによる不要なトラブルを持ち込む可能性もある最低最悪の方法
awaitを外したくないなら await Task.CompletedTask の方がクリーン
163デフォルトの名無しさん (ワッチョイ c251-G00F)
2018/06/16(土) 14:42:27.67ID:omCaDuHT0 >>161
レスありがとうございます。せっかくなのですが、私もその方法はあまり良くないと思います。
ご存知でしたら失礼を許していただきたいのですが、以下の2つの効果は同じではないのです。
async Task X() => Thread.Sleep(1000);
async Task Y() => await Task.Run(() => Thread.Sleep(1000));
>>162
確かに await Task.CompletedTask をどこかに挟むだけなら
変な副作用もなさそうですね。
ただ、警告を抑制するためだけに意味のないコードを加えるのは正しくないように思います。
私がそんなコードを見たら、await Task.Yield() のような効果を期待しているのかなと
誤解してしまいそうです。
(もちろん、 await Task.CompletedTask を勧めてくださっているわけではなく、
「await を外したくないなら」という無理のある前提に合わせて話してくださっていることは
理解しています)
レスありがとうございます。せっかくなのですが、私もその方法はあまり良くないと思います。
ご存知でしたら失礼を許していただきたいのですが、以下の2つの効果は同じではないのです。
async Task X() => Thread.Sleep(1000);
async Task Y() => await Task.Run(() => Thread.Sleep(1000));
>>162
確かに await Task.CompletedTask をどこかに挟むだけなら
変な副作用もなさそうですね。
ただ、警告を抑制するためだけに意味のないコードを加えるのは正しくないように思います。
私がそんなコードを見たら、await Task.Yield() のような効果を期待しているのかなと
誤解してしまいそうです。
(もちろん、 await Task.CompletedTask を勧めてくださっているわけではなく、
「await を外したくないなら」という無理のある前提に合わせて話してくださっていることは
理解しています)
164デフォルトの名無しさん (ワッチョイ 2ec9-Bw3Y)
2018/06/16(土) 14:59:09.83ID:ext5YZxs0 これあえて警告出しっぱなしじゃ駄目なのかね
IDEがasyncメソッドをawait無しで実行しているから警告しているだけであって、意図的に同期実行するのならコメントとかで明示しておけば良いような気もするけど
IDEがasyncメソッドをawait無しで実行しているから警告しているだけであって、意図的に同期実行するのならコメントとかで明示しておけば良いような気もするけど
165デフォルトの名無しさん (ワッチョイ c251-G00F)
2018/06/16(土) 15:23:38.22ID:omCaDuHT0 >>164
レスありがとうございます。
たかが警告を消すために実際のコードを書き換える必要があるのかという考えは
実にごもっともだと思います。
ただその場合、警告を抑制するだけでも意図は十分に伝わると思うのですが、
やはり警告はそのままにしてコメントなどで説明を行うべきなのでしょうか。
レスありがとうございます。
たかが警告を消すために実際のコードを書き換える必要があるのかという考えは
実にごもっともだと思います。
ただその場合、警告を抑制するだけでも意図は十分に伝わると思うのですが、
やはり警告はそのままにしてコメントなどで説明を行うべきなのでしょうか。
166デフォルトの名無しさん (アウアウエー Sa4a-jhA2)
2018/06/16(土) 15:24:59.98ID:gQX30pFpa #pragma warningディレクティブ使って警告を抑止するのが一番素直のような気がする。
知らんけど
っていうか、asyncなしで問題ない前提なら最初から何も悩む必要ないと思うんだけど...
知らんけど
っていうか、asyncなしで問題ない前提なら最初から何も悩む必要ないと思うんだけど...
167デフォルトの名無しさん (ワッチョイ c251-G00F)
2018/06/16(土) 15:35:00.89ID:omCaDuHT0 >>166
レスありがとうございます。やはり警告の抑制も選択肢になりますよね。
警告を抑制することに対する考え方は人それぞれということもあると思いますので、
その都度状況に応じた対処法を考えるのが一番でしょうか。
> っていうか、asyncなしで問題ない前提なら最初から何も悩む必要ないと思うんだけど...
申し訳ありません。これについてよく意味が理解できませんでした。
詳しくご説明していただけないでしょうか。
レスありがとうございます。やはり警告の抑制も選択肢になりますよね。
警告を抑制することに対する考え方は人それぞれということもあると思いますので、
その都度状況に応じた対処法を考えるのが一番でしょうか。
> っていうか、asyncなしで問題ない前提なら最初から何も悩む必要ないと思うんだけど...
申し訳ありません。これについてよく意味が理解できませんでした。
詳しくご説明していただけないでしょうか。
168デフォルトの名無しさん (アウアウエー Sa4a-jhA2)
2018/06/16(土) 15:46:13.12ID:gQX30pFpa >>167
ごめん後者アホなこと言いましたw
よく考えてみたら、asyncが付くかどうかはただのメソッドの中の実装によって決まる話であって、
ベースクラスやインターフェイスによってそれが強制されることはないよねw
普段深く考えずに使ってることがばれちゃったw
ごめん後者アホなこと言いましたw
よく考えてみたら、asyncが付くかどうかはただのメソッドの中の実装によって決まる話であって、
ベースクラスやインターフェイスによってそれが強制されることはないよねw
普段深く考えずに使ってることがばれちゃったw
169デフォルトの名無しさん (ワッチョイ 31b5-8opj)
2018/06/16(土) 16:13:25.34ID:dmQidkOU0 なぜ同期させているのかが根本的に分かって無いから、警告を解く事だけに注意が向いてるんだな。
同期が必要ならコードどころか構造を変えるくらいしないてならないだろうに。
同期が必要ならコードどころか構造を変えるくらいしないてならないだろうに。
170デフォルトの名無しさん (ワッチョイ 4206-Bw3Y)
2018/06/16(土) 17:10:20.97ID:b9GFXH4k0 状況把握しきれていないが
async()=>{}という形でラムダにasyncつけることで解決できるケースもあるんじゃね?
async()=>{}という形でラムダにasyncつけることで解決できるケースもあるんじゃね?
171デフォルトの名無しさん (ワッチョイ c251-G00F)
2018/06/16(土) 17:13:04.67ID:omCaDuHT0 >>167
ご説明ありがとうございます。 >>166 で仰っていた意味が理解できました。
async/await は糖衣構文なので確かにベースクラスなどで使用が強制されることはありませんが、
深く考えずに使えるところが糖衣構文のいいところですし、
async を使うメソッドに XxxAsync という名前をつけることが推奨されていることからも、
事実上 async/await を使うかどうかはベースクラスに依存していると言っていいと思います。
これを踏まえて、改めて >>166 にお返事したいと思います。
> っていうか、asyncなしで問題ない前提なら最初から何も悩む必要ないと思うんだけど...
文法上は async なしでも問題ありませんが、コードの一貫性を考えると async を意図した
メソッドのオーバーライドで async なしは問題だと思います。
それにもかかわらず、たまたま実装上 await を全く使わなかっただけで
async の使用をとがめるような警告が表示されてしまうので悩んでいるのです。
>>169
レスありがとうございます。他の方のご意見も聞かせていただいて、
やはりこの警告は不適切で、警告を解くことだけに注意を向ければいいように感じてきています。
それに対して異論を唱えてくださっているようなのですが、勉強不足で仰っていることが
よく理解できていないので、申し訳ないのですが詳しく説明していただけないでしょうか。
ご説明ありがとうございます。 >>166 で仰っていた意味が理解できました。
async/await は糖衣構文なので確かにベースクラスなどで使用が強制されることはありませんが、
深く考えずに使えるところが糖衣構文のいいところですし、
async を使うメソッドに XxxAsync という名前をつけることが推奨されていることからも、
事実上 async/await を使うかどうかはベースクラスに依存していると言っていいと思います。
これを踏まえて、改めて >>166 にお返事したいと思います。
> っていうか、asyncなしで問題ない前提なら最初から何も悩む必要ないと思うんだけど...
文法上は async なしでも問題ありませんが、コードの一貫性を考えると async を意図した
メソッドのオーバーライドで async なしは問題だと思います。
それにもかかわらず、たまたま実装上 await を全く使わなかっただけで
async の使用をとがめるような警告が表示されてしまうので悩んでいるのです。
>>169
レスありがとうございます。他の方のご意見も聞かせていただいて、
やはりこの警告は不適切で、警告を解くことだけに注意を向ければいいように感じてきています。
それに対して異論を唱えてくださっているようなのですが、勉強不足で仰っていることが
よく理解できていないので、申し訳ないのですが詳しく説明していただけないでしょうか。
172デフォルトの名無しさん (ワッチョイ c251-G00F)
2018/06/16(土) 17:18:42.84ID:omCaDuHT0 >>170
レスどうもありがとうございます。
このような返しばかりで情けないのですが、理解力が足りず仰っていることがよくわかりませんでした。
申し訳ありませんが詳しいご説明をお願いできないでしょうか。
レスどうもありがとうございます。
このような返しばかりで情けないのですが、理解力が足りず仰っていることがよくわかりませんでした。
申し訳ありませんが詳しいご説明をお願いできないでしょうか。
173デフォルトの名無しさん (ササクッテロ Spf1-8opj)
2018/06/16(土) 18:03:54.76ID:AoXX/TDlp 先ず、同期と非同期で何が違うのか、
同期は目的の処理を完了して戻って来る事が大前提で作られている。
非同期は目的の処理を行う指示だけをして戻って来る。
だから戻り値も自ずと意味が違って来るのが普通。
同期の戻り値は実行結果、非同期の戻り値は指示出来たかどうかで結果はまだ分からない。
そこを根本的に間違えているから、問題なんだよ。
同期は目的の処理を完了して戻って来る事が大前提で作られている。
非同期は目的の処理を行う指示だけをして戻って来る。
だから戻り値も自ずと意味が違って来るのが普通。
同期の戻り値は実行結果、非同期の戻り値は指示出来たかどうかで結果はまだ分からない。
そこを根本的に間違えているから、問題なんだよ。
174デフォルトの名無しさん (ブーイモ MM6d-l11B)
2018/06/16(土) 18:08:04.04ID:40YgBCHOM >>173
基底クラスやインターフェイスに合わせるためであったり、
後でDB使った実装に変更する予定で今はハードコードしておくみたいなときには普通にあるケースだよ
後で非同期に変えるのは影響が大きいからね
基底クラスやインターフェイスに合わせるためであったり、
後でDB使った実装に変更する予定で今はハードコードしておくみたいなときには普通にあるケースだよ
後で非同期に変えるのは影響が大きいからね
175デフォルトの名無しさん (ワッチョイ c251-G00F)
2018/06/16(土) 21:30:40.09ID:omCaDuHT0 >>173
レスどうもありがとうございます。
同期処理と非同期処理の違いは、一般論としてはおっしゃるとおりだと思うのですが、
それが >>174 でご指摘いただいているような目的を達成する上で障害になっていて、
そのような問題を解消するために async/await 構文が作られたのではないでしょうか。
だとすると、同期処理と非同期処理の違いを理由に await なしの async を
否定することは本末転倒のように感じてしまうのですがいかがでしょうか。
>>174
ご説明どうもありがとうございます。
具体例を含めてとてもわかりやすく感じたのでこのレスの前半で引用させていただきました。
私にはこれだけ要領よく説明することはできそうにないので助かりました。
レスどうもありがとうございます。
同期処理と非同期処理の違いは、一般論としてはおっしゃるとおりだと思うのですが、
それが >>174 でご指摘いただいているような目的を達成する上で障害になっていて、
そのような問題を解消するために async/await 構文が作られたのではないでしょうか。
だとすると、同期処理と非同期処理の違いを理由に await なしの async を
否定することは本末転倒のように感じてしまうのですがいかがでしょうか。
>>174
ご説明どうもありがとうございます。
具体例を含めてとてもわかりやすく感じたのでこのレスの前半で引用させていただきました。
私にはこれだけ要領よく説明することはできそうにないので助かりました。
176デフォルトの名無しさん (ワッチョイ 31b5-8opj)
2018/06/16(土) 21:44:52.43ID:dmQidkOU0 まあ、メイン処理止めていいなら待てばいいじゃない。
止めたく無いならポーリングやコールバックで終わったの知ればいいじゃない。
コーディングでワーニング出るから構造を弄るって手法そのものが間違いって言ってるの。
止めたく無いならポーリングやコールバックで終わったの知ればいいじゃない。
コーディングでワーニング出るから構造を弄るって手法そのものが間違いって言ってるの。
177デフォルトの名無しさん (ワッチョイ c251-G00F)
2018/06/16(土) 22:10:42.86ID:omCaDuHT0 >>176
メイン処理を止めたくないならポーリングやコールバックを明示的に記述する以外に
選択肢がないというように読めてしまったのですが、この部分に間違いはないでしょうか。
もしそうなら async/await 構文についてあまりお詳しくないようにお見受けしますので、
よろしければ一度お触りになってみてください。
非同期処理の大変さをご存知であればこそ、便利さを実感できるのではないかと思います。
(ちなみに、今の問題は非同期処理を行うことも可能なメソッドをオーバーライドする際に
非同期処理を全く使わないと警告が出てしまうということですので、
何かに妥協してメイン処理を止めるというわけではありません)
メイン処理を止めたくないならポーリングやコールバックを明示的に記述する以外に
選択肢がないというように読めてしまったのですが、この部分に間違いはないでしょうか。
もしそうなら async/await 構文についてあまりお詳しくないようにお見受けしますので、
よろしければ一度お触りになってみてください。
非同期処理の大変さをご存知であればこそ、便利さを実感できるのではないかと思います。
(ちなみに、今の問題は非同期処理を行うことも可能なメソッドをオーバーライドする際に
非同期処理を全く使わないと警告が出てしまうということですので、
何かに妥協してメイン処理を止めるというわけではありません)
178デフォルトの名無しさん (ワッチョイ c29d-zq67)
2018/06/17(日) 00:16:30.35ID:hCSOxZ9X0 そもそもasync修飾子そのものには、たんにawaitする目印としての意味しかないわけで
awaitしないメソッドをasyncにするのが根本的におかしいとしか思えんのだが
awaitしないメソッドをasyncにするのが根本的におかしいとしか思えんのだが
179デフォルトの名無しさん (ワッチョイ 2ee8-xBpi)
2018/06/17(日) 04:27:25.92ID:f8Zp6PCK0 wpfのフォームってhtmlとcssが合わさったようなもん?
180デフォルトの名無しさん (ワッチョイ c251-G00F)
2018/06/17(日) 05:09:52.71ID:w8cOZ/cU0 >>178
async Task Hoge() { }
↑は警告は出るもののコンパイルできますが
Task Fuga() { }
↑はコンパイルすらできないので、async がたんに awaitするための目印というのは語弊があるのではないでしょうか。
async Task Hoge() { }
↑は警告は出るもののコンパイルできますが
Task Fuga() { }
↑はコンパイルすらできないので、async がたんに awaitするための目印というのは語弊があるのではないでしょうか。
181デフォルトの名無しさん (ワッチョイ edd3-Bw3Y)
2018/06/17(日) 10:24:51.50ID:g+98DwlT0 > async を使うメソッドに XxxAsync という名前をつけることが推奨されていることからも、
> 事実上 async/await を使うかどうかはベースクラスに依存していると言っていいと思います。
TAPはTaskを返す関数の実装にasync/awaitを強要せんし使う側も関知せんじゃろ
AsyncサフィックスなんてそれこそEAPの頃からの慣例でしかない
awaitを使わず何故か付いてるasyncよりTask.CompletedTaskを返すコードの方がよほど明確だと思うがね
> 事実上 async/await を使うかどうかはベースクラスに依存していると言っていいと思います。
TAPはTaskを返す関数の実装にasync/awaitを強要せんし使う側も関知せんじゃろ
AsyncサフィックスなんてそれこそEAPの頃からの慣例でしかない
awaitを使わず何故か付いてるasyncよりTask.CompletedTaskを返すコードの方がよほど明確だと思うがね
182デフォルトの名無しさん (ワントンキン MMe1-qG2Q)
2018/06/17(日) 11:46:32.45ID:IxLGC6rAM >>180
ただの目印と理解していいよ
asyncって目印を見つけたらメソッド内だけ文法をちょっと変えますねっていう取り決めなの
目印もなしに勝手に文法を変えられたら仕事にならん
だから目印が必要なの
目印を付けただけでエラーになると言うけど
目印を付けたら文法が変わるのだから同じコードでエラーが出たってなにもおかしくないだろう?
ただの目印と理解していいよ
asyncって目印を見つけたらメソッド内だけ文法をちょっと変えますねっていう取り決めなの
目印もなしに勝手に文法を変えられたら仕事にならん
だから目印が必要なの
目印を付けただけでエラーになると言うけど
目印を付けたら文法が変わるのだから同じコードでエラーが出たってなにもおかしくないだろう?
183デフォルトの名無しさん (ワッチョイ c251-G00F)
2018/06/17(日) 12:14:10.68ID:w8cOZ/cU0 >>181
レスどうもありがとうございます。
async Task SayHello3() { await SayHello(); await SayHello(); await SayHello(); }
async Task SayHello2() { await SayHello(); await SayHello(); }
async Task SayHello1() { await SayHello(); }
は問題ないのに
async Task SayHello0() { }
ではなく
Task SayHello0() { return Task.CompletedTask; }
と書かなければならないことに不自然さを感じていたのですが、
2つ目の SayHello0() を単独で見れば、おっしゃる通り何をしているかは明確ですし、
async に固執するのもあまり良くなさそうですね。
async はそのままにして警告を抑制する方法を提案してくださる方もいらっしゃいますし
私としてもそちらの選択肢を完全に切り捨てるまでの確信は持てていないのですが、
Task.CompletedTask を返す方法も決して悪いものではないと分かりとても勉強になりました。
>>182
確かにそのとおりですね。失礼いたしました。
ただ問題なのは、「目印を付けただけでエラーになる」のではなく、
「目印を付けないとエラーになるのに目印を付けても警告が残る」という点でして、
せっかくの目印の機能を気持ちよく使うことができず、どうしたものかと考えております。
レスどうもありがとうございます。
async Task SayHello3() { await SayHello(); await SayHello(); await SayHello(); }
async Task SayHello2() { await SayHello(); await SayHello(); }
async Task SayHello1() { await SayHello(); }
は問題ないのに
async Task SayHello0() { }
ではなく
Task SayHello0() { return Task.CompletedTask; }
と書かなければならないことに不自然さを感じていたのですが、
2つ目の SayHello0() を単独で見れば、おっしゃる通り何をしているかは明確ですし、
async に固執するのもあまり良くなさそうですね。
async はそのままにして警告を抑制する方法を提案してくださる方もいらっしゃいますし
私としてもそちらの選択肢を完全に切り捨てるまでの確信は持てていないのですが、
Task.CompletedTask を返す方法も決して悪いものではないと分かりとても勉強になりました。
>>182
確かにそのとおりですね。失礼いたしました。
ただ問題なのは、「目印を付けただけでエラーになる」のではなく、
「目印を付けないとエラーになるのに目印を付けても警告が残る」という点でして、
せっかくの目印の機能を気持ちよく使うことができず、どうしたものかと考えております。
184デフォルトの名無しさん (アウアウエー Sa4a-jhA2)
2018/06/17(日) 12:46:14.26ID:JpLAIDLea 結局質問者の疑問はこういうこと?
(1) サブクラスで非同期メソッドとして実装される可能性があるメソッドの名前は
Asyncでサフィックスすべきか?
(2) (1)がYesの場合、そのメソッドが非同期で実装されなくても(awaitを含まなくても)
asyncで修飾すべきか?
正解はYes-No?
理由は、非同期メソッドは使う側がそれを非同期メソッドだと理解している必要があるのに対し、
非同期メソッドじゃないものを非同期メソッドと誤認しても弊害はないから
もちろん不要な混乱を避けるために、「このメソッドは多態の都合上Asyncでサフィックスされてるけど
非同期メソッドじゃないよ」みたいなコメントは必要か?
(1) サブクラスで非同期メソッドとして実装される可能性があるメソッドの名前は
Asyncでサフィックスすべきか?
(2) (1)がYesの場合、そのメソッドが非同期で実装されなくても(awaitを含まなくても)
asyncで修飾すべきか?
正解はYes-No?
理由は、非同期メソッドは使う側がそれを非同期メソッドだと理解している必要があるのに対し、
非同期メソッドじゃないものを非同期メソッドと誤認しても弊害はないから
もちろん不要な混乱を避けるために、「このメソッドは多態の都合上Asyncでサフィックスされてるけど
非同期メソッドじゃないよ」みたいなコメントは必要か?
185デフォルトの名無しさん (ワッチョイ c251-G00F)
2018/06/17(日) 13:22:22.85ID:w8cOZ/cU0 >>184
整理していただきどうもありがとうございます。
(1) については実は疑問であるという認識をもっていたわけではなく、
ご指摘をいただくまで当然そうするべき事柄であると考えておりました。
(2) がまさに疑問点でして、(1) が Yes/No のどちらであっても
答えが得られると嬉しいと思っています。
> 非同期メソッドは使う側がそれを非同期メソッドだと理解している必要があるのに対し、
> 非同期メソッドじゃないものを非同期メソッドと誤認しても弊害はない
おっしゃる通りだと思います。(もちろん細かなオーバーヘッドが問題にならない場合の話ですが)
> 「このメソッドは多態の都合上Asyncでサフィックスされてるけど
> 非同期メソッドじゃないよ」みたいなコメントは必要か?
インターフェース等を介さずにメソッドを呼び出す可能性がある場合は
そのようなコメントがあると親切だと思いますが、
私としては、必ずしも必要ではないように思います。
整理していただきどうもありがとうございます。
(1) については実は疑問であるという認識をもっていたわけではなく、
ご指摘をいただくまで当然そうするべき事柄であると考えておりました。
(2) がまさに疑問点でして、(1) が Yes/No のどちらであっても
答えが得られると嬉しいと思っています。
> 非同期メソッドは使う側がそれを非同期メソッドだと理解している必要があるのに対し、
> 非同期メソッドじゃないものを非同期メソッドと誤認しても弊害はない
おっしゃる通りだと思います。(もちろん細かなオーバーヘッドが問題にならない場合の話ですが)
> 「このメソッドは多態の都合上Asyncでサフィックスされてるけど
> 非同期メソッドじゃないよ」みたいなコメントは必要か?
インターフェース等を介さずにメソッドを呼び出す可能性がある場合は
そのようなコメントがあると親切だと思いますが、
私としては、必ずしも必要ではないように思います。
186デフォルトの名無しさん (ワントンキン MMe1-qG2Q)
2018/06/17(日) 14:33:41.38ID:IxLGC6rAM >>183
気持ち良い悪いみたいな感覚の話にすると結論が出なくなる
・コードに統一感があったほうが気持ちがいい(俺はこの感覚がよくわからんが)
・使ってないものを使いますと宣言するのは気持ちが悪い
どっちも言い分としては間違いではないしどちらがより正しいかとも言えない
それは見た人によるとしか言えない
君が美しいと思って書いた統一感のあるコードは、俺からすれば必要のない無駄な記述の多い汚いコードに見えるかもしれない
それはさておき
asyncメソッドはTaskインスタンスの生成とスレッドの生成に繋がる可能性がある
インスタンスの生成はともかくスレッドを無駄に消費するってことはOS全体に負荷をかけることにも繋がりかねないので意味がないなら避けるべきだ
しかし文法上の間違いではないのでエラーと断言することもできない
間をとって警告を出すってのが妥当な落とし所じゃないかな
気持ち良い悪いみたいな感覚の話にすると結論が出なくなる
・コードに統一感があったほうが気持ちがいい(俺はこの感覚がよくわからんが)
・使ってないものを使いますと宣言するのは気持ちが悪い
どっちも言い分としては間違いではないしどちらがより正しいかとも言えない
それは見た人によるとしか言えない
君が美しいと思って書いた統一感のあるコードは、俺からすれば必要のない無駄な記述の多い汚いコードに見えるかもしれない
それはさておき
asyncメソッドはTaskインスタンスの生成とスレッドの生成に繋がる可能性がある
インスタンスの生成はともかくスレッドを無駄に消費するってことはOS全体に負荷をかけることにも繋がりかねないので意味がないなら避けるべきだ
しかし文法上の間違いではないのでエラーと断言することもできない
間をとって警告を出すってのが妥当な落とし所じゃないかな
187デフォルトの名無しさん (アウアウウー Saa5-m0US)
2018/06/17(日) 21:01:18.97ID:6Wp8R37qa ・スレッド生成
勉強してから言えよって思う
勉強してから言えよって思う
188デフォルトの名無しさん (ラクッペ MM61-h/p3)
2018/06/17(日) 21:08:29.24ID:rRGqqoATM あーこれゴミクズにありがちな燃えるコメントの仕方だわ
言い争いが始まるので、賢明な諸兄は3日ほどスレを閉じておくのがよろしい
言い争いが始まるので、賢明な諸兄は3日ほどスレを閉じておくのがよろしい
189デフォルトの名無しさん (ワッチョイ ddc3-ttgq)
2018/06/17(日) 21:15:10.69ID:Z+AbfkC70 静的メソッドの中で動的メソッドって呼び出せないってあるけど、自分のクラスのインスタンスのメソッドは呼び出せるの?教えて雑魚
190デフォルトの名無しさん (アウアウウー Saa5-m0US)
2018/06/17(日) 21:27:50.40ID:6Wp8R37qa > async Task SayHello3() { await SayHello(); await SayHello(); await SayHello(); }
> async Task SayHello2() { await SayHello(); await SayHello(); }
> async Task SayHello1() { await SayHello(); }
と書くより引数nで実行回数を渡してforループで制御したらいい
n=0でasync awaitのペアがあるにかかわらず一度も実行されないawaitのついたメソッドができる
勿論警告もでないし誰かの言う一貫性のある美しいコードじゃないか
> async Task SayHello2() { await SayHello(); await SayHello(); }
> async Task SayHello1() { await SayHello(); }
と書くより引数nで実行回数を渡してforループで制御したらいい
n=0でasync awaitのペアがあるにかかわらず一度も実行されないawaitのついたメソッドができる
勿論警告もでないし誰かの言う一貫性のある美しいコードじゃないか
191デフォルトの名無しさん (アウアウウー Saa5-m0US)
2018/06/17(日) 21:32:42.49ID:6Wp8R37qa わかってると思うけどawaitがついたメソッドに突入した時点で
内部が自動的に別のスレッドで実行されるわけじゃない
中に入っても最終的にタスクにたどり着かないと別スレッドはスタートしない
System.Threading.Thread.CurrentThread.ManagedThreadIdでスレッドIDがでるから確認したらいい
内部が自動的に別のスレッドで実行されるわけじゃない
中に入っても最終的にタスクにたどり着かないと別スレッドはスタートしない
System.Threading.Thread.CurrentThread.ManagedThreadIdでスレッドIDがでるから確認したらいい
192デフォルトの名無しさん (アウアウカー Sa69-qcd4)
2018/06/17(日) 21:38:25.64ID:7lB5BPvGa >>191
await後に書いた処理って元のスレッドに同期されると思ってたけど、awaitで実行されたスレッドのまま進むよね?
Formアプリであれ?invokeしなくていいの?って思った記憶ある。思い違いだったらすまぬ
await後に書いた処理って元のスレッドに同期されると思ってたけど、awaitで実行されたスレッドのまま進むよね?
Formアプリであれ?invokeしなくていいの?って思った記憶ある。思い違いだったらすまぬ
193デフォルトの名無しさん (ワッチョイ e227-Ly5g)
2018/06/17(日) 21:42:03.70ID:62NxCwPo0 非同期自体が複雑だし、(当時は)新しい構文ってことで、混乱を少しでも減らすために警告にしてるだけっぽいね
抑止しちゃっていいと思うよ
抑止しちゃっていいと思うよ
194デフォルトの名無しさん (ワッチョイ edd3-Bw3Y)
2018/06/17(日) 22:13:20.40ID:g+98DwlT0 >>193
Formが作成された所謂UIスレッドでは同期されるが、コンソールアプリ等では同期されない
もうちょい突っ込むと、await文が実行されるスレッドにSynchronizationContextへの仕込みがあるかどうかで違ってくる
await後に実行されるスレッドはSynchronizationContext.Postの実装により決定される
Winformsは最初のフォーム作成時にWindowsFormsSynchronizationContextを現在のスレッドに設定し
WindowsFormsSynchronizationContext.Postはメッセージループを仲介してUIスレッドでawaitの続きを実行する
具体的な実装はReference SourceやmonoのWindowsFormsSynchronizationContextを読むのが良い
Formが作成された所謂UIスレッドでは同期されるが、コンソールアプリ等では同期されない
もうちょい突っ込むと、await文が実行されるスレッドにSynchronizationContextへの仕込みがあるかどうかで違ってくる
await後に実行されるスレッドはSynchronizationContext.Postの実装により決定される
Winformsは最初のフォーム作成時にWindowsFormsSynchronizationContextを現在のスレッドに設定し
WindowsFormsSynchronizationContext.Postはメッセージループを仲介してUIスレッドでawaitの続きを実行する
具体的な実装はReference SourceやmonoのWindowsFormsSynchronizationContextを読むのが良い
195194 (ワッチョイ edd3-Bw3Y)
2018/06/17(日) 22:18:16.07ID:g+98DwlT0 安価まちげーた>>192
なんかテキトーに書いたら分かりにくいな・・・
要はWinforms(WPFも同様)のスレッドでawaitするとその後の文は裏で勝手にControl.Invokeされてると思えばええねん
なんかテキトーに書いたら分かりにくいな・・・
要はWinforms(WPFも同様)のスレッドでawaitするとその後の文は裏で勝手にControl.Invokeされてると思えばええねん
196デフォルトの名無しさん (ワッチョイ c29d-zq67)
2018/06/18(月) 03:16:27.74ID:tq92Vuqu0 >>180
>Task Fuga() { } はコンパイルすらできない
それは戻り値のチェックで、int Fuga...でもコンパイルできないだろ
Taskもasync/awaitも関係ない話
むしろ、async Task Hoge() { } がタスク戻さないのにコンパイル通ることのほうが問題じゃね
つかほんとにこれ警告だけで通って正常に動くの?
そのときHoge()で何が帰ってきてるんだ?
>Task Fuga() { } はコンパイルすらできない
それは戻り値のチェックで、int Fuga...でもコンパイルできないだろ
Taskもasync/awaitも関係ない話
むしろ、async Task Hoge() { } がタスク戻さないのにコンパイル通ることのほうが問題じゃね
つかほんとにこれ警告だけで通って正常に動くの?
そのときHoge()で何が帰ってきてるんだ?
197デフォルトの名無しさん (ワッチョイ c29d-zq67)
2018/06/18(月) 03:36:27.38ID:tq92Vuqu0 まあその例で統一したやり方でやりたいなら
async Task SayHello0() { await Task.CompletedTask; }
で良いんじゃないのか
async Task SayHello0() { await Task.CompletedTask; }
で良いんじゃないのか
198デフォルトの名無しさん (ワントンキン MMe1-qG2Q)
2018/06/18(月) 07:05:52.53ID:5zfP7m4zM >>196
最適化してCompletedTaskでも返すのかなとも思ったけど
IL見ると他と同じようにコード生成して実行してんね
このオーバーヘッドが必要な処理なら警告を無視してasync使えばいいと思う
最適化してCompletedTaskでも返すのかなとも思ったけど
IL見ると他と同じようにコード生成して実行してんね
このオーバーヘッドが必要な処理なら警告を無視してasync使えばいいと思う
199デフォルトの名無しさん (アウアウエー Sa4a-jhA2)
2018/06/18(月) 10:59:47.44ID:ubyRHWyfa どう考えても質問者の方がよく分かってるのに
何も分かってない奴に限って上から目線で偉そうに何か言ってるのは滑稽過ぎるねw
気付いてないのは本人だけ(とすら気づいてない)のも何とも笑いを誘う
何も分かってない奴に限って上から目線で偉そうに何か言ってるのは滑稽過ぎるねw
気付いてないのは本人だけ(とすら気づいてない)のも何とも笑いを誘う
200デフォルトの名無しさん (ワッチョイ e2c3-LKVd)
2018/06/18(月) 11:33:39.78ID:jfMWOsL40 質問者のドメイン知識の話だろ。
質問者以外に、このスレどんなエスパーいるのか?
質問者以外に、このスレどんなエスパーいるのか?
201デフォルトの名無しさん (アウアウウー Saa5-Bw3Y)
2018/06/18(月) 12:52:58.18ID:omBcANz0a 実際にawaitされることで呼び出し側が想定されることが実現されるなら
たとえ何もしない無駄なスレッドを使用したとしてもそれが一番いい
最適化されて何もしないとなればUIスレッドなどの副作用を期待していた呼び出し側が困る
実際はそういうことはおこらないので問題ない
上に書いてあったawait Task.CompletedTask;が一番いい答えだと思う
たとえ何もしない無駄なスレッドを使用したとしてもそれが一番いい
最適化されて何もしないとなればUIスレッドなどの副作用を期待していた呼び出し側が困る
実際はそういうことはおこらないので問題ない
上に書いてあったawait Task.CompletedTask;が一番いい答えだと思う
202デフォルトの名無しさん (ワッチョイ ddc3-JWO0)
2018/06/18(月) 17:06:03.17ID:wetnizJS0 プログラミングってさあ、基本を使い倒すほうがいいの?
203デフォルトの名無しさん (ワッチョイ c251-G00F)
2018/06/18(月) 18:38:53.61ID:rGsHjxJX0 皆さんレスどうもありがとうございます。
>>186
スレッド生成はともかく、無駄をなくすという観点は重要ですね。
>>198 に書いていただいてあることも踏まえると、
> しかし文法上の間違いではないのでエラーと断言することもできない
> 間をとって警告を出すってのが妥当な落とし所じゃないかな
というご意見は実に的を射たものであるように感じました。
>>190
> forループで制御したらいい
同じメソッドを繰り返し呼ぶ例は不適切でしたね。失礼いたしました。
ただ、for ループ版に n = 0 を渡しても何の問題もないのに
async Task SayHello0() { } では警告が出るというのも
やはり腑に落ちない感じがします。
>> 191
> 中に入っても最終的にタスクにたどり着かないと別スレッドはスタートしない
やはりそこが重要なポイントですよね。
だからこそ、最終的にタスクにたどり着かない選択肢がある方が
自然だと思うのですがいかがでしょうか。
>>193
> 非同期自体が複雑だし、(当時は)新しい構文ってことで、混乱を少しでも減らすために警告にしてるだけっぽいね
> 抑止しちゃっていいと思うよ
言われてみると、構文に不慣れな方向けの警告であるという考えは
とても納得ができました。
あとは、「自分は構文を十分に理解しているから警告を抑制しても構わないのだ」
という主張をいかにして人様に受け入れて貰うかが課題でしょうか(汗
>>186
スレッド生成はともかく、無駄をなくすという観点は重要ですね。
>>198 に書いていただいてあることも踏まえると、
> しかし文法上の間違いではないのでエラーと断言することもできない
> 間をとって警告を出すってのが妥当な落とし所じゃないかな
というご意見は実に的を射たものであるように感じました。
>>190
> forループで制御したらいい
同じメソッドを繰り返し呼ぶ例は不適切でしたね。失礼いたしました。
ただ、for ループ版に n = 0 を渡しても何の問題もないのに
async Task SayHello0() { } では警告が出るというのも
やはり腑に落ちない感じがします。
>> 191
> 中に入っても最終的にタスクにたどり着かないと別スレッドはスタートしない
やはりそこが重要なポイントですよね。
だからこそ、最終的にタスクにたどり着かない選択肢がある方が
自然だと思うのですがいかがでしょうか。
>>193
> 非同期自体が複雑だし、(当時は)新しい構文ってことで、混乱を少しでも減らすために警告にしてるだけっぽいね
> 抑止しちゃっていいと思うよ
言われてみると、構文に不慣れな方向けの警告であるという考えは
とても納得ができました。
あとは、「自分は構文を十分に理解しているから警告を抑制しても構わないのだ」
という主張をいかにして人様に受け入れて貰うかが課題でしょうか(汗
204デフォルトの名無しさん (ワッチョイ c251-G00F)
2018/06/18(月) 18:39:23.10ID:rGsHjxJX0 >>196
> むしろ、async Task Hoge() { } がタスク戻さないのにコンパイル通ることのほうが問題じゃね
> つかほんとにこれ警告だけで通って正常に動くの?
> そのときHoge()で何が帰ってきてるんだ?
確かに一見すると不思議ですよね。
このあたりの詳しい話は TaskAwaiter で検索するとお知りいただけると思います。
>>197 >>201
> await Task.CompletedTask
>>162 に書いていただいていることを仰っているのだと思いますが、
>>162 は >>161 の方法の不味さを説明するために await Task.CompletedTask を
引き合いに出されただけで、実際にこの方法を推奨されているわけではないと思います。
私自身も、async Task Hoge() { } と Task Hoge() => Task.CompletedTask; は
それぞれメリットがあるのに対して sync Task Hoge() => await Task.CompletedTask; は
すべての面で上 2 つに劣っていると考えておりますが、いかがでしょうか。
>>198
> 最適化してCompletedTaskでも返すのかなとも思ったけど
> IL見ると他と同じようにコード生成して実行してんね
大変ためになる情報をどうもありがとうございます。
私も確認してみましたが、async Task Hoge() { } と
Task Hoge() => Task.CompletedTask; との間にこれだけ IL のコードに差があると
前者を使うのは躊躇してしまいますね。そもそも私は
> このオーバーヘッドが必要な処理
になる状況が分からず、CompletedTask を返すように最適化が行われるべきだと思うのですが、
「await なしの async」と「CompletedTask 返し」との間の違いに気づいていらっしゃるようであれば
ぜひお教えいただけないでしょうか。
> むしろ、async Task Hoge() { } がタスク戻さないのにコンパイル通ることのほうが問題じゃね
> つかほんとにこれ警告だけで通って正常に動くの?
> そのときHoge()で何が帰ってきてるんだ?
確かに一見すると不思議ですよね。
このあたりの詳しい話は TaskAwaiter で検索するとお知りいただけると思います。
>>197 >>201
> await Task.CompletedTask
>>162 に書いていただいていることを仰っているのだと思いますが、
>>162 は >>161 の方法の不味さを説明するために await Task.CompletedTask を
引き合いに出されただけで、実際にこの方法を推奨されているわけではないと思います。
私自身も、async Task Hoge() { } と Task Hoge() => Task.CompletedTask; は
それぞれメリットがあるのに対して sync Task Hoge() => await Task.CompletedTask; は
すべての面で上 2 つに劣っていると考えておりますが、いかがでしょうか。
>>198
> 最適化してCompletedTaskでも返すのかなとも思ったけど
> IL見ると他と同じようにコード生成して実行してんね
大変ためになる情報をどうもありがとうございます。
私も確認してみましたが、async Task Hoge() { } と
Task Hoge() => Task.CompletedTask; との間にこれだけ IL のコードに差があると
前者を使うのは躊躇してしまいますね。そもそも私は
> このオーバーヘッドが必要な処理
になる状況が分からず、CompletedTask を返すように最適化が行われるべきだと思うのですが、
「await なしの async」と「CompletedTask 返し」との間の違いに気づいていらっしゃるようであれば
ぜひお教えいただけないでしょうか。
205デフォルトの名無しさん (ワッチョイ 067f-s84n)
2018/06/18(月) 18:46:20.98ID:XI+GT1Uo0206デフォルトの名無しさん (ブーイモ MMb6-l11B)
2018/06/18(月) 20:44:23.89ID:/4T5LZMPM >>202が一を聞いて十を知る頭の良い人間なら先に一通り言語をマスターした方が効率的
そうでないなら最初から高度な機能を覚えてもそれが何の役に立つのか理解できないから、まずは基本だけで身をもって苦労したほうがいい
そうでないなら最初から高度な機能を覚えてもそれが何の役に立つのか理解できないから、まずは基本だけで身をもって苦労したほうがいい
207デフォルトの名無しさん (ワッチョイ c29d-zq67)
2018/06/19(火) 05:31:43.83ID:R/zbDFZs0 >>204
そもそもawait なしの asyncが必要な理由も場面も思い浮かばんが
自分一人でやってるなら好きにすればいいんじゃね
最適化うんぬんを言うなら、Taskを返すどころかそんな呼び出しそのものが不要じゃね
そもそもawait なしの asyncが必要な理由も場面も思い浮かばんが
自分一人でやってるなら好きにすればいいんじゃね
最適化うんぬんを言うなら、Taskを返すどころかそんな呼び出しそのものが不要じゃね
208デフォルトの名無しさん (ドコグロ MM0a-1Yxh)
2018/06/19(火) 08:14:05.91ID:qYFKlpQqM そもそものそもそもasyncやawaitで気軽にスレッドを立ててるような処理はだいたいバグってる
スレッドを立てるってそれ自体の処理より
立てても大丈夫なぐらいの前準備のが遥かに手間がかかる
気軽に立ててあるとこはまず間違いなくバグってるので安心していい
スレッドを立てるってそれ自体の処理より
立てても大丈夫なぐらいの前準備のが遥かに手間がかかる
気軽に立ててあるとこはまず間違いなくバグってるので安心していい
209デフォルトの名無しさん (アウアウウー Saa5-l11B)
2018/06/19(火) 08:47:25.71ID:XF2Gjt0sa asyncとスレッドって直接関係ないだろ
スレッドは非同期処理を実装する手段の一つに過ぎない
最近のazureなんか「上司にメール送って添付URLのページにある承認ボタンが押されるまで待つ」みたいな非同期処理ですらawaitできるんだぞw
スレッドは非同期処理を実装する手段の一つに過ぎない
最近のazureなんか「上司にメール送って添付URLのページにある承認ボタンが押されるまで待つ」みたいな非同期処理ですらawaitできるんだぞw
210デフォルトの名無しさん (アウアウエー Sa4a-jhA2)
2018/06/19(火) 10:49:26.69ID:2YKCyXH1a 誰に向かって説教してるつもりなのかねw
馬鹿過ぎる
馬鹿過ぎる
211デフォルトの名無しさん (JP 0H49-B+cT)
2018/06/19(火) 17:36:20.33ID:ygjnsczhH google検索で
@it async await
これ読んでわかった気になった。
シンプルな実装では使えたけど、応用でつまずく。最近プログラム組んでないので頭固い……
@it async await
これ読んでわかった気になった。
シンプルな実装では使えたけど、応用でつまずく。最近プログラム組んでないので頭固い……
212デフォルトの名無しさん (ワッチョイ ad8a-pk7F)
2018/06/19(火) 17:40:54.18ID:B+3+LOal0 固ければジューサーに入れてみる?
213デフォルトの名無しさん (ドコグロ MM0a-SMjQ)
2018/06/19(火) 18:44:23.63ID:eWtmWHlOM 普通のジューサーでは>>211の固い頭は砕けません
そこでショップジャ〇ンのマジックブレッドデラックスを使えば楽チンに下ごしらえができます
そこでショップジャ〇ンのマジックブレッドデラックスを使えば楽チンに下ごしらえができます
214デフォルトの名無しさん (ワッチョイ 319b-sRUJ)
2018/06/19(火) 19:56:40.35ID:0sn0Q0vo0 C♯を勉強するのにおすすめのサイトありますか?
何かを作りなが勉強したいなと思ってるんですが。
何かを作りなが勉強したいなと思ってるんですが。
215デフォルトの名無しさん (ワッチョイ 2e9a-gvEZ)
2018/06/19(火) 20:10:42.40ID:kAXRFxrM0 >>214
https://dobon.net/vb/dotnet/index.html
http://www.atmarkit.co.jp/fdotnet/csharp_abc/index/
http://ufcpp.net/
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/
ここで勉強するというかやりたいことを「C#」に続けてググるとだいたいこのあたりがヒットする
https://dobon.net/vb/dotnet/index.html
http://www.atmarkit.co.jp/fdotnet/csharp_abc/index/
http://ufcpp.net/
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/
ここで勉強するというかやりたいことを「C#」に続けてググるとだいたいこのあたりがヒットする
216デフォルトの名無しさん (オイコラミネオ MM49-B+cT)
2018/06/19(火) 20:12:26.56ID:ygjnsczhM >>213
そこで、トゥルースリーパーとパチもんハズキルーペ買った。
パチもんの方はメガネにLEDライトが付いてたからつい。薄暗いとこであれはめちゃ便利(稀にしか使わないけど…orz)。(100金の老眼鏡でいいと思う。しょせん凸レンズの一種だから。)
トゥルースリーパーは半年くらいたってまだ箱の中orz
そこで、トゥルースリーパーとパチもんハズキルーペ買った。
パチもんの方はメガネにLEDライトが付いてたからつい。薄暗いとこであれはめちゃ便利(稀にしか使わないけど…orz)。(100金の老眼鏡でいいと思う。しょせん凸レンズの一種だから。)
トゥルースリーパーは半年くらいたってまだ箱の中orz
217デフォルトの名無しさん (オッペケ Srf1-uwF/)
2018/06/19(火) 21:01:02.40ID:RAxnAMrUr c#のコーティング方法で検索すること多いけど、なぜかLINQで解説しているサイトがほとんどない
日本語サイトも海外サイトも
なんで?
日本語サイトも海外サイトも
なんで?
218デフォルトの名無しさん (ブーイモ MM85-l11B)
2018/06/19(火) 21:02:44.86ID:LBhs/jk2M >>217
実践的なアプリ開発で使われる機能だから、コピペTips系サイトのサンプルコードで必要になることはほとんど無い
実践的なアプリ開発で使われる機能だから、コピペTips系サイトのサンプルコードで必要になることはほとんど無い
219デフォルトの名無しさん (ワッチョイ 2e81-7EFb)
2018/06/19(火) 21:53:01.39ID:EPHYIqEL0 素人に使われると価値が下がるからね
素人は年収300万で死ぬまでくだらないコードを書いていればいいんだよ
素人は年収300万で死ぬまでくだらないコードを書いていればいいんだよ
220デフォルトの名無しさん (ワッチョイ c2d2-bwM/)
2018/06/19(火) 22:04:52.94ID:kI3CAS1L0 >>217
ほとんどないわけねーよwww
ほとんどないわけねーよwww
221デフォルトの名無しさん (ブーイモ MMb6-m0US)
2018/06/19(火) 22:16:45.72ID:EE12WGu0M >>217
LINQは手段であって目的じゃないからじゃないかなああああ
LINQは手段であって目的じゃないからじゃないかなああああ
222デフォルトの名無しさん (ワッチョイ 428a-5g47)
2018/06/20(水) 09:42:33.52ID:+y79X+880 FileSystemWatcherのChangedイベントの発生条件は、監視しているディレクトリ内のファイルまたはディレクトリのサイズ、システム属性、最後の書き込み時刻、最後のアクセス時刻、またはセキュリティ アクセス許可の変更のようですが、
このうちのどれが変更されたか種痘するにはどうすればよいでしょうか?
このうちのどれが変更されたか種痘するにはどうすればよいでしょうか?
223デフォルトの名無しさん (オッペケ Srf1-uwF/)
2018/06/20(水) 11:51:07.40ID:ZYBHUW1Qr224デフォルトの名無しさん (アウアウエー Sa4a-jhA2)
2018/06/20(水) 12:05:31.86ID:7vWN9rvKa >>222
使ったことないけど、イベントハンドラで受け取れる引数(FileSystemEventArgs)
で普通に分かるんじゃなくって?
https://msdn.microsoft.com/ja-jp/library/system.io.filesystemeventargs.aspx
使ったことないけど、イベントハンドラで受け取れる引数(FileSystemEventArgs)
で普通に分かるんじゃなくって?
https://msdn.microsoft.com/ja-jp/library/system.io.filesystemeventargs.aspx
225デフォルトの名無しさん (アウアウウー Saa5-Bw3Y)
2018/06/20(水) 12:06:45.48ID:5eL+NvGEa226デフォルトの名無しさん (アウアウエー Sa4a-jhA2)
2018/06/20(水) 12:14:29.61ID:7vWN9rvKa >>225
いやいや、ちゃんと提示したリンクよく先見ました?
いやいや、ちゃんと提示したリンクよく先見ました?
227デフォルトの名無しさん (アウアウエー Sa4a-jhA2)
2018/06/20(水) 12:16:40.94ID:7vWN9rvKa228デフォルトの名無しさん (アウアウエー Sa4a-jhA2)
2018/06/20(水) 12:22:49.35ID:7vWN9rvKa ちょっとググって見た感じ、結構面倒だけど、
知りたい変更の数だけ適切にNotifyFilterプロパティを設定したFileSystemWatcherを作れば
一応可能な感じはするね
知りたい変更の数だけ適切にNotifyFilterプロパティを設定したFileSystemWatcherを作れば
一応可能な感じはするね
229デフォルトの名無しさん (スップ Sdc2-bwM/)
2018/06/20(水) 12:29:31.18ID:4Nq0pqOcd >>223
みんな使ってるよ
みんな使ってるよ
230デフォルトの名無しさん (ブーイモ MM62-P/8h)
2018/06/20(水) 22:31:23.62ID:hTxlP2+IM ググり方を知らない典型
231デフォルトの名無しさん (ワッチョイ 1f9b-5Tpg)
2018/06/21(木) 21:35:06.03ID:hmU1hN6P0 エクセルbook1を開かずにsheet2の2列目に入ってる項目をコンボボックスに入れたいのですが、どうやるんですか?
232デフォルトの名無しさん (ササクッテロ Spf3-VhnM)
2018/06/21(木) 21:41:20.00ID:vdaQuC2wp 中身を見ずに言い当てる手品のやり方なんか知らねーよ。
233デフォルトの名無しさん (ワンミングク MMdf-aHC/)
2018/06/21(木) 21:43:13.77ID:pTjgD9kkM 地獄に落ちろ
234デフォルトの名無しさん (ワッチョイ ffc9-GwbS)
2018/06/21(木) 21:51:22.49ID:lTKRVfWU0 Excel.exe使わずにって意味ならいくらでもあるだろ
235デフォルトの名無しさん (ワッチョイ ff81-2vzp)
2018/06/21(木) 22:32:53.55ID:7/J4zdhU0 御託はいいから答えろゴミクズ
236デフォルトの名無しさん (ワッチョイ 9fe3-Yk5b)
2018/06/21(木) 23:11:39.87ID:HAta7DXc0 xlsxならclosedxmlつかえば
237デフォルトの名無しさん (ワッチョイ 1fb3-DXx3)
2018/06/22(金) 00:26:01.32ID:/gqu33js0 ファイル開かずにならもちろん無理。
見えないだけなら可視しなければいいだけやん。
見えないだけなら可視しなければいいだけやん。
238デフォルトの名無しさん (アウアウエー Sa7f-3IMT)
2018/06/22(金) 00:49:53.36ID:OqpGVa7ea 日本人のエクセルスキーは異常
海外にも神エクセルってあるんだろうか
海外にも神エクセルってあるんだろうか
239デフォルトの名無しさん (ワッチョイ 7fd2-fhdp)
2018/06/22(金) 01:45:41.77ID:fZhhlNhQ0 >>231
コンボボックスとは?
コンボボックスとは?
240デフォルトの名無しさん (ワッチョイ 9fc3-zkXu)
2018/06/22(金) 03:12:37.07ID:XVd2TvDg0 どんなものを作ればいいのかわからない
何をつくればいいんだ
教えてお前↓
何をつくればいいんだ
教えてお前↓
241デフォルトの名無しさん (ワッチョイ 9f83-DJU/)
2018/06/22(金) 03:21:00.63ID:6eBOmsiI0 JavaMachine
242デフォルトの名無しさん (スプッッ Sd9f-5Tpg)
2018/06/22(金) 06:50:27.01ID:PzKWFNpyd 会社が未だにxpが数台あって、数多くあるエクセルを開いて処理して閉じる開いて処理して閉じるってやると重いけどなんか早くなる方法ってある?
database?SQL?
VB6でそうやってエクセルファイルを扱って処理してるんだけど
database?SQL?
VB6でそうやってエクセルファイルを扱って処理してるんだけど
243デフォルトの名無しさん (ワッチョイ 9f83-DJU/)
2018/06/22(金) 06:57:20.38ID:6eBOmsiI0 5万円のPCを買ってくる
244デフォルトの名無しさん (アウアウウー Sae3-STG2)
2018/06/22(金) 07:07:33.30ID:Fs6DCFa0a245デフォルトの名無しさん (ワッチョイ 9f83-DJU/)
2018/06/22(金) 07:09:51.33ID:6eBOmsiI0 私は猿なのでVSの枠がはっきりしないフラットデザインが馴染めません。
246デフォルトの名無しさん (ブーイモ MM43-STG2)
2018/06/22(金) 07:20:32.82ID:Y47lTZ4XM 日本猿も江戸時代はプレーンテキストだったのに、どこで間違えたんだろうな
247デフォルトの名無しさん (バットンキン MMdf-AYoQ)
2018/06/22(金) 09:37:09.99ID:bJJwlRlwM >>231
開かないとわかりません
開かないとわかりません
248デフォルトの名無しさん (オイコラミネオ MM8f-DXx3)
2018/06/22(金) 09:59:49.98ID:atRhX3PgM249デフォルトの名無しさん (ラクッペ MM33-2vzp)
2018/06/22(金) 10:09:55.10ID:lIRytxFLM そもそも細々としたアイコンやメニューを大量に配置するのに適したUIではないわ
Azureコンソールとか見てても思うけど、マイクロソフトにUXデザイナーがいないってのは恐らく本当
Azureコンソールとか見てても思うけど、マイクロソフトにUXデザイナーがいないってのは恐らく本当
250デフォルトの名無しさん (ブーイモ MM43-STG2)
2018/06/22(金) 10:13:34.27ID:etP9oQEYM VSCodeのUIは使いやすいけどな
本家VSもボタン全部無くしてコマンドにするべきだわ
本家VSもボタン全部無くしてコマンドにするべきだわ
251デフォルトの名無しさん (ワンミングク MMdf-cOHa)
2018/06/22(金) 10:18:33.53ID:KB00qr+FM web service(asmx)について教えてください。
利用する複数のアプリで使い回したいものをstatic変数に保持したいのですが、寿命が尽きるタイミングは分からないでしょうか?
具体的にはデータベースのconnectionでして、セッションをケチるために1つだけを使い回そうと考えています。寿命が尽きる時にdisposeしたいのですが、できない場合問題でしょうか?
利用する複数のアプリで使い回したいものをstatic変数に保持したいのですが、寿命が尽きるタイミングは分からないでしょうか?
具体的にはデータベースのconnectionでして、セッションをケチるために1つだけを使い回そうと考えています。寿命が尽きる時にdisposeしたいのですが、できない場合問題でしょうか?
252デフォルトの名無しさん (オッペケ Srf3-x3o9)
2018/06/22(金) 10:26:12.51ID:xMgX8Fdkr C#の設計思想とか、どういう設計でコード書いたらいいかみたいなのがわかりやすい書籍ってある?
253デフォルトの名無しさん (ワッチョイ 7f11-8g2T)
2018/06/22(金) 10:51:01.98ID:32SF4tM80254デフォルトの名無しさん (ササクッテロ Spf3-6PMX)
2018/06/22(金) 12:00:58.68ID:fAckkxP+p255デフォルトの名無しさん (アウアウウー Sae3-GwbS)
2018/06/22(金) 12:11:16.45ID:mIOgjjA8a フラットデザインは最近はやりのユニバーサルデザインとは真逆
256デフォルトの名無しさん (オッペケ Srf3-x3o9)
2018/06/22(金) 12:11:51.14ID:U+1NZIRBr257デフォルトの名無しさん (ワントンキン MMdf-h3K6)
2018/06/22(金) 12:19:03.29ID:D0ZAUiXgM 第2版が出てたんだな
ステマか
ステマか
258デフォルトの名無しさん (ブーイモ MM43-uoyT)
2018/06/22(金) 14:40:02.21ID:+QjyPCKBM ダイレクトやろ
259デフォルトの名無しさん (ワッチョイ 7f11-8g2T)
2018/06/22(金) 17:59:11.25ID:32SF4tM80 むしろサードパーティマーケティング
260デフォルトの名無しさん (バットンキン MM33-+a6w)
2018/06/22(金) 18:01:56.90ID:v3P4scZFM 今年独り社内SEとして入社しC#を選んだ者ですが、コンストラクタをオーバーロードして引数が有るものと無いものを作りました
よくよく考えると引数が無いコンストラクタのインスタンスを作って引数有りを前提にしたメソッドをコールすると最悪例外を出してしまうのですが、これは設計不良として検討し直しでしょうか?よくある事として許容されるでしょうか?
よくよく考えると引数が無いコンストラクタのインスタンスを作って引数有りを前提にしたメソッドをコールすると最悪例外を出してしまうのですが、これは設計不良として検討し直しでしょうか?よくある事として許容されるでしょうか?
261デフォルトの名無しさん (ワッチョイ ff9a-qn6i)
2018/06/22(金) 18:07:20.69ID:j0bZxxMK0262260 (バットンキン MM33-+a6w)
2018/06/22(金) 18:21:23.38ID:v3P4scZFM やっぱり設計の問題ですよね
フィールドに初期値入れれば例外は起きないと思いますが、引数必須のインスタンスを作られたら無意味なメソッドが完成するというのは設計者失格ですよね
フィールドに初期値入れれば例外は起きないと思いますが、引数必須のインスタンスを作られたら無意味なメソッドが完成するというのは設計者失格ですよね
263デフォルトの名無しさん (ワッチョイ ff9a-qn6i)
2018/06/22(金) 18:35:58.53ID:j0bZxxMK0 >無意味なメソッドが完成する
メソッド書き直すとかないんだ・・・
普通は条件が違えば呼ばれないようにするとかメソッド内部で分岐させるとかいろいろあると思うんだが
メソッド書き直すとかないんだ・・・
普通は条件が違えば呼ばれないようにするとかメソッド内部で分岐させるとかいろいろあると思うんだが
264デフォルトの名無しさん (ワッチョイ 7f9d-hF4h)
2018/06/22(金) 19:36:18.31ID:fkpP2SFC0265デフォルトの名無しさん (アウアウエー Sa7f-3IMT)
2018/06/22(金) 19:43:22.50ID:RGVBxohIa >>260
設計不良は大げさ過ぎw
普通に考えて
(1) 引数ありのメソッドは廃止。代わりにそのデータはプロパティでセットできるようにする。
(2) 引数なしのコンストラクタが呼ばれた時はプロパティの値は規定値が設定されるようにする
こんだけでしょう
設計不良は大げさ過ぎw
普通に考えて
(1) 引数ありのメソッドは廃止。代わりにそのデータはプロパティでセットできるようにする。
(2) 引数なしのコンストラクタが呼ばれた時はプロパティの値は規定値が設定されるようにする
こんだけでしょう
266デフォルトの名無しさん (ワンミングク MMdf-cOHa)
2018/06/22(金) 19:58:18.66ID:KB00qr+FM >>264
データベース管理者から、なるべく接続を増やすなと言われてます。複数のPCから複数のアプリでアクセスするので、窓口を一本化するイメージです。
なのでプーリングはアプリ分の接続が残るので逆効果。
キャッシュを使うとは具体的にはどうするのですか?ググるヒントをもう少しください。
データベース管理者から、なるべく接続を増やすなと言われてます。複数のPCから複数のアプリでアクセスするので、窓口を一本化するイメージです。
なのでプーリングはアプリ分の接続が残るので逆効果。
キャッシュを使うとは具体的にはどうするのですか?ググるヒントをもう少しください。
267デフォルトの名無しさん (ワッチョイ 7f9d-hF4h)
2018/06/22(金) 20:38:24.35ID:fkpP2SFC0268デフォルトの名無しさん (オイコラミネオ MM8f-DXx3)
2018/06/22(金) 20:58:02.81ID:atRhX3PgM269デフォルトの名無しさん (ワッチョイ ffc9-GwbS)
2018/06/22(金) 22:05:33.33ID:rFBnrjcr0 >>266
接続ユーザー分排他でもするのかよw
接続ユーザー分排他でもするのかよw
270デフォルトの名無しさん (ワッチョイ ffed-DJU/)
2018/06/22(金) 23:04:03.86ID:TC2xExz/0 4msのインターバルタイマを実現するのにおすすめの方法を教えてください
271デフォルトの名無しさん (ワッチョイ 9f83-DJU/)
2018/06/22(金) 23:08:50.34ID:6eBOmsiI0 リアルタイムOSをインストールする
272デフォルトの名無しさん (ワッチョイ ff33-mTVk)
2018/06/23(土) 00:01:03.09ID:9nwowUkH0 USBシリアル付きマイコンから適当にパルスを送ってもらう
数百円ぐらい
数百円ぐらい
273デフォルトの名無しさん (ワッチョイ 1f06-cOHa)
2018/06/23(土) 00:04:23.96ID:4A65QZOx0 >>267
クライアントPCからデータベースに接続します。webサービスで排他処理します。
サーバーの負担を増やしたくないとの事で、とにかく同時期にセッションを増やさないという方針は決定してます。
なので排他処理はどこかでやる事になるのですが、どこかのPCで動くアプリよりやり取りも含めて楽かなと思ったのですが。
クライアントPCからデータベースに接続します。webサービスで排他処理します。
サーバーの負担を増やしたくないとの事で、とにかく同時期にセッションを増やさないという方針は決定してます。
なので排他処理はどこかでやる事になるのですが、どこかのPCで動くアプリよりやり取りも含めて楽かなと思ったのですが。
274デフォルトの名無しさん (ワッチョイ ffed-DJU/)
2018/06/23(土) 00:07:55.71ID:OXSP1qkx0275デフォルトの名無しさん (アウアウウー Sae3-STG2)
2018/06/23(土) 00:27:06.35ID:YVqCYnTIa >>273
データアクセスのためのAPI作れば
データアクセスのためのAPI作れば
276デフォルトの名無しさん (ワッチョイ ffed-DJU/)
2018/06/23(土) 01:52:54.43ID:OXSP1qkx0277デフォルトの名無しさん (ワッチョイ 7f9d-hF4h)
2018/06/23(土) 02:29:38.11ID:RCtrcOsy0278デフォルトの名無しさん (ワンミングク MMdf-h3K6)
2018/06/23(土) 06:55:53.26ID:DOoRmJ6HM >>273
webサービスの中で普通にコネクションを開いて使い終わったらすぐにDisposeすればいいよ
ライブラリがいい感じにコネクション数を調整してくれる
どうしてもマニュアルでコネクションの数を制御したいならDB要求をループで処理し続けるスレッドを走らせて、他のスレッドとはキューで連携させる
webサービスの中で普通にコネクションを開いて使い終わったらすぐにDisposeすればいいよ
ライブラリがいい感じにコネクション数を調整してくれる
どうしてもマニュアルでコネクションの数を制御したいならDB要求をループで処理し続けるスレッドを走らせて、他のスレッドとはキューで連携させる
279デフォルトの名無しさん (ラクッペ MM33-2vzp)
2018/06/23(土) 07:53:25.35ID:5eZj9LlZM web側でmax connection pool sizeを設定するだけの話に見えるが
そういう設定が無いからどうしたらいいかって話なの?
そういう設定が無いからどうしたらいいかって話なの?
280デフォルトの名無しさん (ワッチョイ 1f75-E6HK)
2018/06/23(土) 09:10:53.59ID:kilEB0fc0 tes
281デフォルトの名無しさん (ワッチョイ 1f75-E6HK)
2018/06/23(土) 11:25:15.28ID:kilEB0fc0 test
282デフォルトの名無しさん (ワッチョイ 1f75-E6HK)
2018/06/23(土) 11:28:34.91ID:kilEB0fc0 fwくぇ
283デフォルトの名無しさん (ワッチョイ 1f75-E6HK)
2018/06/23(土) 11:42:17.32ID:kilEB0fc0 fwq
284デフォルトの名無しさん (ワッチョイ 1f75-E6HK)
2018/06/23(土) 11:44:04.15ID:kilEB0fc0 fwqef
285デフォルトの名無しさん (ワッチョイ ff81-2vzp)
2018/06/23(土) 12:01:17.59ID:AshQdjwf0 よそでやれ
286デフォルトの名無しさん (アウアウカー Sa93-PGhQ)
2018/06/23(土) 12:23:56.69ID:RL7TWjJda >>262
引数なしのコンストラクタをprivateに
引数なしのコンストラクタをprivateに
287デフォルトの名無しさん (ワッチョイ 7f9d-hF4h)
2018/06/23(土) 17:51:20.90ID:RCtrcOsy0 >>286
それだと(外部から)引数必須なインスタンスしか作れなくなる
それが設計通りならそれでいいけど
引数必須なインスタンスと引数なしのインスタンスが同一クラスである必要あるのか疑問だ
引数なしのクラスを継承して引数ありのクラス作れば良い気がするぞ
それだと(外部から)引数必須なインスタンスしか作れなくなる
それが設計通りならそれでいいけど
引数必須なインスタンスと引数なしのインスタンスが同一クラスである必要あるのか疑問だ
引数なしのクラスを継承して引数ありのクラス作れば良い気がするぞ
288デフォルトの名無しさん (ワッチョイ 7fe3-ASSz)
2018/06/23(土) 18:04:38.51ID:61tHQZae0 引数一個で騒々しいソースコードですね
289デフォルトの名無しさん (ワッチョイ 7f9d-fJsd)
2018/06/23(土) 22:33:46.94ID:RCtrcOsy0 動けば良いってなら好きにすればいいさ
設計論として考えるとどうしても大仰になるのはしかたない
設計論として考えるとどうしても大仰になるのはしかたない
290デフォルトの名無しさん (ワッチョイ ff81-2vzp)
2018/06/23(土) 22:44:50.08ID:AshQdjwf0 クレデンシャルを持ってる場合だけ一部の関数が使えるとか
別に珍しい設計じゃないと思うけどね
別に珍しい設計じゃないと思うけどね
291デフォルトの名無しさん (ワッチョイ 7fe3-ASSz)
2018/06/24(日) 00:05:43.76ID:LwX9ZOYW0292デフォルトの名無しさん (アウアウエー Sa7f-3IMT)
2018/06/24(日) 00:10:47.78ID:tHXuj/n7a ああ、なんか質問を読み違えてたけど、
要は現実の使われ方として、特定のプロパティがまったく必要とされないケースがあるってことね。
単純に考えると>>287がシンプルで分かりやすいように思うけど
ケースバイケースではあるが、一つのプロパティを追加しただけのサブクラスってのも
存在意義がはっきりしないというか、名前付けに困るようなクラスになりがちのようにも思う
コンストラクタで明示的に指定されない場合はプロパティの値が規定値としておくのが
無難なケースの方が多いと思うけどね
要は現実の使われ方として、特定のプロパティがまったく必要とされないケースがあるってことね。
単純に考えると>>287がシンプルで分かりやすいように思うけど
ケースバイケースではあるが、一つのプロパティを追加しただけのサブクラスってのも
存在意義がはっきりしないというか、名前付けに困るようなクラスになりがちのようにも思う
コンストラクタで明示的に指定されない場合はプロパティの値が規定値としておくのが
無難なケースの方が多いと思うけどね
293デフォルトの名無しさん (ワッチョイ 7f9d-fJsd)
2018/06/24(日) 01:25:17.80ID:GW8ybopf0294デフォルトの名無しさん (ワッチョイ 1f56-DJU/)
2018/06/24(日) 23:01:38.61ID:euoTg7OM0 webBrowser1.documentText=hoge;
で生成したHTML中にページ内リンクがあります。
(<span id="xxx"></span>)
クリック操作をせずにこのアンカーにジャンプすることはできるのでしょうか?
で生成したHTML中にページ内リンクがあります。
(<span id="xxx"></span>)
クリック操作をせずにこのアンカーにジャンプすることはできるのでしょうか?
295デフォルトの名無しさん (ワッチョイ ff33-mTVk)
2018/06/24(日) 23:35:19.41ID:+Dnac0xs0 webBrowser1.Document.GetElementById("xxx").InvokeMember("Click");
296デフォルトの名無しさん (ワッチョイ 1f56-DJU/)
2018/06/24(日) 23:43:26.59ID:euoTg7OM0 エラーは出ないのですが、ジャンプはしてくれませんでした。
単なるアンカーなので、直接それをクリックしても意味はなくて、
<a href="#xxx">XXX</a>をクリックするようにしないとジャンプしないのではないでしょうか?
(なお、ページ内に↑を用意していないので、これをクリックすることはできません)
単なるアンカーなので、直接それをクリックしても意味はなくて、
<a href="#xxx">XXX</a>をクリックするようにしないとジャンプしないのではないでしょうか?
(なお、ページ内に↑を用意していないので、これをクリックすることはできません)
297デフォルトの名無しさん (ワキゲー MM7f-4N5G)
2018/06/25(月) 10:34:01.89ID:CeO6DCCqM GetElementById(...).ScrollIntoView(...)
298デフォルトの名無しさん (ワッチョイ 1f56-DJU/)
2018/06/25(月) 11:16:30.33ID:sIr2ygWz0299デフォルトの名無しさん (ワッチョイ 7f8a-lC4z)
2018/06/25(月) 16:58:03.78ID:L8J9ADJ70 ListVIewでクリックされたアイテムのインデックスを取得するにはどうしたらいいでしょうか?
例えば、以下の画像だと、"ListSubItem 3"がクリックされた時に、1,2 (1は列,2は行)といった値を取得したいです。
http://www.planetsourcecode.com/Upload_PSC/ScreenShots/PIC20042291953273057.jpg
例えば、以下の画像だと、"ListSubItem 3"がクリックされた時に、1,2 (1は列,2は行)といった値を取得したいです。
http://www.planetsourcecode.com/Upload_PSC/ScreenShots/PIC20042291953273057.jpg
300260 (バッミングク MM53-+a6w)
2018/06/25(月) 17:57:14.07ID:TcWThoAPM 引数有り無しのコンストラクタで相談した者ですが色々とご意見ありがとうございます
先輩無しの独り開発なので参考になります
何が正しいかはプロジェクトの性質に左右されそうなので突き詰めませんが、驚き最小の法則的に見ると、無意味なメソッドをコール出来るとかどんな気持ちでしょうか?
私は後々混乱しそうなので避けたいのですが、さほど驚かれないならこのまま実装しようかとも
先輩無しの独り開発なので参考になります
何が正しいかはプロジェクトの性質に左右されそうなので突き詰めませんが、驚き最小の法則的に見ると、無意味なメソッドをコール出来るとかどんな気持ちでしょうか?
私は後々混乱しそうなので避けたいのですが、さほど驚かれないならこのまま実装しようかとも
301デフォルトの名無しさん (ワッチョイ ff80-wB0u)
2018/06/25(月) 21:33:53.83ID:1sQ+cvRC0 >>299 HitTest
302デフォルトの名無しさん (ワッチョイ ff7f-E6HK)
2018/06/25(月) 21:56:47.71ID:lw6peYFv0 暇つぶしにunityでプチゲームを作ろうとしているのですが
以下のような処理をしています。
https://dotnetfiddle.net/p6v66Z
スキルが増えるごとにSkillFactoryとTypeToParameterに分岐が増えていってしまって
なんだかなあという感じなのですが、もうちょっとマシな方法はないでしょうか。
SkillParamが諸悪の根源のような気もしていますがほかにうまい方法がおもいつかず。。
以下のような処理をしています。
https://dotnetfiddle.net/p6v66Z
スキルが増えるごとにSkillFactoryとTypeToParameterに分岐が増えていってしまって
なんだかなあという感じなのですが、もうちょっとマシな方法はないでしょうか。
SkillParamが諸悪の根源のような気もしていますがほかにうまい方法がおもいつかず。。
303デフォルトの名無しさん (スプッッ Sd7f-E6HK)
2018/06/25(月) 22:01:12.17ID:XS6tlG59d githubでC#で書かれたソースコードを見るとVisual Studioで作成したファイルが見当たらないんですが、
Visual Studioを使わないほうがいいんでしょうか?
Visual Studioを使わないほうがいいんでしょうか?
304デフォルトの名無しさん (ワッチョイ 1f9b-5Tpg)
2018/06/25(月) 22:10:35.49ID:XRDiWZAB0 ワークシート1のb2から空になる最終行までフォーム1のコンボボックスに入れにはどうしたらいいですか?
305デフォルトの名無しさん (ワッチョイ 7fd2-fhdp)
2018/06/25(月) 22:15:12.37ID:Bspx7Xiu0 >>303
VisualStudioで作成したファイルって具体的には何のこと?
VisualStudioで作成したファイルって具体的には何のこと?
306デフォルトの名無しさん (ワッチョイ ffe8-GwbS)
2018/06/25(月) 22:30:53.83ID:QLHuH/320 ListでKey値が一致する要素を探して
内容を更新するにはどうすればいいの
ループで検索するしかない?
内容を更新するにはどうすればいいの
ループで検索するしかない?
307デフォルトの名無しさん (ワッチョイ ffc9-GwbS)
2018/06/25(月) 22:41:13.84ID:DXP13toJ0 >>306
DictionaryならともかくListでKey値って何よ
DictionaryならともかくListでKey値って何よ
308デフォルトの名無しさん (ワッチョイ ffe8-GwbS)
2018/06/25(月) 22:49:08.14ID:QLHuH/320 >>307
2次元にしてキー項目を自分で作ったのよIndex用に
2次元にしてキー項目を自分で作ったのよIndex用に
309デフォルトの名無しさん (ワッチョイ 9f1e-RA3y)
2018/06/25(月) 23:11:47.70ID:cq0DHw7f0 KeyedCollectionクラス
310デフォルトの名無しさん (ワッチョイ 7f11-8g2T)
2018/06/26(火) 09:16:48.94ID:UPxy/vlK0 なぜDictionaryにしなかったのか
311デフォルトの名無しさん (ワッチョイ 9f8a-aHC/)
2018/06/26(火) 09:21:11.66ID:A+/Pd/Nq0 君は何故全力を尽くしても駄目なのか
312デフォルトの名無しさん (ワッチョイ ff76-XQuB)
2018/06/26(火) 09:58:06.77ID:1CiOys6I0 object型のメンバ?の値を文字列型に代入したいのですが
どのように書けば良いでしょうか?
static void Main(string[] args)
{
var obj = new { a = "a", b = "b" };
Hoge(obj);
}
static void Hoge(object obj)
{
string fuga = obj.b.ToString(); //この書き方で怒られてしまいました
}
object型は基本のようなので、根本的な所を理解していないのかも知れませんが
よろしくお願いします。
どのように書けば良いでしょうか?
static void Main(string[] args)
{
var obj = new { a = "a", b = "b" };
Hoge(obj);
}
static void Hoge(object obj)
{
string fuga = obj.b.ToString(); //この書き方で怒られてしまいました
}
object型は基本のようなので、根本的な所を理解していないのかも知れませんが
よろしくお願いします。
314デフォルトの名無しさん (ワントンキン MMdf-h3K6)
2018/06/26(火) 12:16:48.98ID:U/nLOHiUM >>312
objectをdynamicに変えるといいよ
objectをdynamicに変えるといいよ
315デフォルトの名無しさん (アウアウカー Sa93-PGhQ)
2018/06/26(火) 12:22:10.81ID:yFHnMB/La >>312
つdynamic
つdynamic
316デフォルトの名無しさん (ワントンキン MMdf-cOHa)
2018/06/26(火) 13:31:04.74ID:oxIIJc6mM 便乗質問していいですか?
> var obj = new { a = "a", b = "b" };
これってクラスとして扱われるんですか?
> var obj = new { a = "a", b = "b" };
これってクラスとして扱われるんですか?
317デフォルトの名無しさん (ラクッペ MM33-2vzp)
2018/06/26(火) 13:38:08.33ID:ZA95aSE/M 扱われるよ
318デフォルトの名無しさん (ワッチョイ 7f61-E6HK)
2018/06/26(火) 14:41:15.83ID:yB7+BiTZ0 インスタンスメソッドとstaticメソッドの使い分けがいまいちわからないので教えてください
public class Hoge {
private string Name { get; } = "piyo";
public Hoge(string name) {
Name = name;
}
}
上記のようなクラスがあり、これをvar hoge = new Hoge("foo"); とインスタンス化したとして、
public bool IsPiyo(){
return Name == "piyo";
}
上記のようなインスタンスメソッドを書いて、hoge.IsPiyo()とするのと、
public static bool IsPiyo(Hoge hoge){
return hoge.Name == "piyo";
}
上記のようなstaticメソッドを書いて、Hoge.IsPiyo(hoge)とするのでは、どう違い、どちらにするべきでしょうか?
なんとなく、staticの方が入力と出力がはっきりしてるのでわかりやすいのかなと思うのですが、オブジェクト指向ではないですよね
public class Hoge {
private string Name { get; } = "piyo";
public Hoge(string name) {
Name = name;
}
}
上記のようなクラスがあり、これをvar hoge = new Hoge("foo"); とインスタンス化したとして、
public bool IsPiyo(){
return Name == "piyo";
}
上記のようなインスタンスメソッドを書いて、hoge.IsPiyo()とするのと、
public static bool IsPiyo(Hoge hoge){
return hoge.Name == "piyo";
}
上記のようなstaticメソッドを書いて、Hoge.IsPiyo(hoge)とするのでは、どう違い、どちらにするべきでしょうか?
なんとなく、staticの方が入力と出力がはっきりしてるのでわかりやすいのかなと思うのですが、オブジェクト指向ではないですよね
319デフォルトの名無しさん (ワッチョイ 7fc3-KTKp)
2018/06/26(火) 14:59:10.81ID:FPh9h90J0 インスタンスが必要かどうか。
stringクラスのCompareメソッドとCompareToメソッドが良い例。
前者はパラメータがnullでも通るが、後者はインスタンスが無いとダメ。
stringクラスのCompareメソッドとCompareToメソッドが良い例。
前者はパラメータがnullでも通るが、後者はインスタンスが無いとダメ。
320デフォルトの名無しさん (アウアウウー Sae3-GwbS)
2018/06/26(火) 15:53:58.50ID:B40aLJ4va インスタンスメンバーを参照してないならstaticにしてる
でも必ずすべきとは思わない
仮に日本語にして考えてみる
人間クラスに "はピヨです()"メソッドをそれぞれ実装すると
if(人間.はピヨです(彼)) {〜}
と
if(彼.はピヨです()) {〜};
これを見るとstatic はおかしいと思うがstaticにすることが多い
でも必ずすべきとは思わない
仮に日本語にして考えてみる
人間クラスに "はピヨです()"メソッドをそれぞれ実装すると
if(人間.はピヨです(彼)) {〜}
と
if(彼.はピヨです()) {〜};
これを見るとstatic はおかしいと思うがstaticにすることが多い
321デフォルトの名無しさん (アウアウウー Sae3-GwbS)
2018/06/26(火) 16:01:01.51ID:B40aLJ4va 誤解を招くような書き方だけど上のHogeなら間違いなくインスタンスメソッドにする
322デフォルトの名無しさん (アウアウカー Sa93-XuiQ)
2018/06/26(火) 19:39:44.60ID:2rJMn7sUa あー、ちょっとわかってきたかもです
主語というか、意味的に、表現したい意図に近い方を選ぶ感じですかね
とりあえず今回の例で言うと、インスタンスメソッドにすることにします
主語というか、意味的に、表現したい意図に近い方を選ぶ感じですかね
とりあえず今回の例で言うと、インスタンスメソッドにすることにします
323デフォルトの名無しさん (ワッチョイ 7f51-4N5G)
2018/06/26(火) 22:41:11.75ID:oc0D76610 RuntimeHelpers.PrepareMethod(RuntimeMethodHandle)の挙動が理解できない・・・
このコードでm2にPrepareMethodを使うことは不可能ですか?
==
using System.Runtime.CompilerServices;
class B<T> { public void M() { } }
class C1 : B<int> { }
class C2 : B<string> { }
class Program
{
static void Main(string[] args)
{
var m1 = typeof(C1).GetMethod("M").MethodHandle;
var m2 = typeof(C2).GetMethod("M").MethodHandle;
RuntimeHelpers.PrepareMethod(m1); // 問題なし
RuntimeHelpers.PrepareMethod(m2); // System.ArgumentException: '指定されたジェネリックのインスタンス化は無効です。'
}
}
==
このコードでm2にPrepareMethodを使うことは不可能ですか?
==
using System.Runtime.CompilerServices;
class B<T> { public void M() { } }
class C1 : B<int> { }
class C2 : B<string> { }
class Program
{
static void Main(string[] args)
{
var m1 = typeof(C1).GetMethod("M").MethodHandle;
var m2 = typeof(C2).GetMethod("M").MethodHandle;
RuntimeHelpers.PrepareMethod(m1); // 問題なし
RuntimeHelpers.PrepareMethod(m2); // System.ArgumentException: '指定されたジェネリックのインスタンス化は無効です。'
}
}
==
324デフォルトの名無しさん (ワッチョイ 9fe3-ASSz)
2018/06/26(火) 22:44:20.11ID:QRnSOnuU0325デフォルトの名無しさん (スプッッ Sd1f-5Tpg)
2018/06/27(水) 06:43:38.75ID:ZicgrVNId Cでエクセルを扱っていろいろするときはやっぱcsvにしておいた方がいいのかね?
326デフォルトの名無しさん (ワッチョイ 7f11-8g2T)
2018/06/27(水) 09:40:20.28ID:UGstrjJ10 >>316
匿名型、で調べてみるといい
匿名型、で調べてみるといい
327デフォルトの名無しさん (ワッチョイ 7fea-WDJb)
2018/06/27(水) 13:28:49.32ID:kZGjx8UI0328デフォルトの名無しさん (ササクッテロ Spf3-VhnM)
2018/06/27(水) 15:48:14.07ID:VkL9wLVWp 下手にxls使うと勝手に型変換してくれるからめちゃくちゃになるんだよな。
329デフォルトの名無しさん (ワンミングク MMdf-cOHa)
2018/06/27(水) 19:05:45.76ID:Eyd8ciC/M 複数のアプリで1つのserial portを使いたくて、dllで受けて受信データによって別々のイベントを発生させ、複数のアプリに受信させようと考えました。
dll内のSerialPortをstaticで持てば共有できるかと思ったのですが、staticで宣言しても呼び出し元が別プロセスだと共有されないようですね。
何かいい手はないでしょうか。
dll内のSerialPortをstaticで持てば共有できるかと思ったのですが、staticで宣言しても呼び出し元が別プロセスだと共有されないようですね。
何かいい手はないでしょうか。
330デフォルトの名無しさん (ワッチョイ ff33-mTVk)
2018/06/27(水) 19:33:53.09ID:cLV89PFx0 シリアルポートと通信するサーバを作って
必要な数だけクライアントを待ち受けるのが楽なんじゃないの
プロセス間通信はソケットやパイプとか適当なものを使う
必要な数だけクライアントを待ち受けるのが楽なんじゃないの
プロセス間通信はソケットやパイプとか適当なものを使う
331デフォルトの名無しさん (ワッチョイ 1fb3-GwbS)
2018/06/27(水) 20:12:38.21ID:4yQE+Bm50332デフォルトの名無しさん (ササクッテロ Spf3-VhnM)
2018/06/27(水) 22:11:07.14ID:VkL9wLVWp 複数のアプリにどうやって通信データを振り分けるかの方が興味あるわ。
333デフォルトの名無しさん (ワッチョイ 9f8a-aHC/)
2018/06/27(水) 22:41:58.18ID:ezuUhY+H0 つ MSMQ
334デフォルトの名無しさん (ワッチョイ 7f9d-fJsd)
2018/06/27(水) 23:21:02.53ID:KXFiZVY30 そもそもWindowsのシリアルポートって複数のアプリで共有(同時オープン)できるのか?
335デフォルトの名無しさん (アウアウカー Sa93-xWgw)
2018/06/27(水) 23:25:13.59ID:YJH26+lwa シリアルポートはなんかが掴んでたらだめだよね
336デフォルトの名無しさん (アウアウエー Sa7f-3IMT)
2018/06/27(水) 23:39:03.37ID:kv/Gz/3da だから質問してるんでしょw
質問者は他のアプリが占有中でも無理矢理割り込む方法を聞いてるわけじゃなく、
自作アプリの複数のプロセスで共有する方法を聞いてる
質問者は他のアプリが占有中でも無理矢理割り込む方法を聞いてるわけじゃなく、
自作アプリの複数のプロセスで共有する方法を聞いてる
337デフォルトの名無しさん (ワッチョイ ff81-2vzp)
2018/06/27(水) 23:42:52.29ID:lEu9Ds2F0 ない
338デフォルトの名無しさん (ワッチョイ 7f9d-fJsd)
2018/06/27(水) 23:50:05.06ID:KXFiZVY30339デフォルトの名無しさん (アウアウエー Sa7f-3IMT)
2018/06/27(水) 23:57:16.85ID:kv/Gz/3da 馬鹿にも程があるな...
340デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
2018/06/28(木) 00:02:45.40ID:o5j8xzNra 言ってるんだが
いつも思うけど、こういう口調って馬鹿の間で流行ってるのかねw
いつも思うけど、こういう口調って馬鹿の間で流行ってるのかねw
341デフォルトの名無しさん (ワントンキン MM52-29j6)
2018/06/28(木) 00:39:46.48ID:M7FH9WysM シリアルポートに限らずdllのstatic変数が共有できないのですが、共有したい需要ってないのでしょうか?共有したい場合はどうするのがよいのでしょうか?
342デフォルトの名無しさん (ワッチョイ ade3-F2uz)
2018/06/28(木) 01:01:35.03ID:wDYBzoR70343デフォルトの名無しさん (ワッチョイ 7e33-AF1h)
2018/06/28(木) 01:12:05.63ID:5aYb43f30 dllのstatic云々はおいといてメモリマップトファイルならC#でも使えたかな
C++ならデータセグメントを共有メモリにできる
どちらにしろプロセス間の排他制御が必要
C++ならデータセグメントを共有メモリにできる
どちらにしろプロセス間の排他制御が必要
344デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
2018/06/28(木) 01:31:16.24ID:o5j8xzNra >>342
宛先なんかなく、単に全部のアプリに同じデータがブロドキャストされれば
十分って場合もあるでしょ
例えばシリアル経由で計測器か何かのデータが送られてくるとして、
(1) 画面表示だけするアプリ
(2) エクセルにログを保存するアプリ
(3) 計測データを使って何か他の機器を制御するアプリ
何かの都合でこんな風に複数のアプリに分けて作る必要があるのかもしれない
宛先なんかなく、単に全部のアプリに同じデータがブロドキャストされれば
十分って場合もあるでしょ
例えばシリアル経由で計測器か何かのデータが送られてくるとして、
(1) 画面表示だけするアプリ
(2) エクセルにログを保存するアプリ
(3) 計測データを使って何か他の機器を制御するアプリ
何かの都合でこんな風に複数のアプリに分けて作る必要があるのかもしれない
345デフォルトの名無しさん (ワッチョイ 6e81-M9kt)
2018/06/28(木) 01:38:37.90ID:KZQYx/g/0 C#でのSelenium操作についても質問していいですか?
346デフォルトの名無しさん (ワッチョイ 8251-hbKR)
2018/06/28(木) 05:25:02.37ID:mpKH796a0 >>331
レスどうもです!下のようにして上手くいきました
こうなってくるとm1に対する方法はたまたま問題が起きないだけで
m2やm3の方法のほうが望ましいように思えてきましたがそういう認識であってますか?
==
using System.Runtime.CompilerServices;
class B<T> { public void M() { } }
class C1 : B<int> { }
class C2 : B<string> { }
class C3 : B<int> { }
class Program
{
static void Main(string[] args)
{
var m1 = typeof(C1).GetMethod("M").MethodHandle;
var m2 = typeof(C2).GetMethod("M").MethodHandle;
var m3 = typeof(C3).GetMethod("M").MethodHandle;
RuntimeHelpers.PrepareMethod(m1); // 問題なし
RuntimeHelpers.PrepareMethod(m2, new[] { typeof(string).TypeHandle }); // 問題なし
RuntimeHelpers.PrepareMethod(m3, new[] { typeof(int).TypeHandle }); // 問題なし
}
}
==
レスどうもです!下のようにして上手くいきました
こうなってくるとm1に対する方法はたまたま問題が起きないだけで
m2やm3の方法のほうが望ましいように思えてきましたがそういう認識であってますか?
==
using System.Runtime.CompilerServices;
class B<T> { public void M() { } }
class C1 : B<int> { }
class C2 : B<string> { }
class C3 : B<int> { }
class Program
{
static void Main(string[] args)
{
var m1 = typeof(C1).GetMethod("M").MethodHandle;
var m2 = typeof(C2).GetMethod("M").MethodHandle;
var m3 = typeof(C3).GetMethod("M").MethodHandle;
RuntimeHelpers.PrepareMethod(m1); // 問題なし
RuntimeHelpers.PrepareMethod(m2, new[] { typeof(string).TypeHandle }); // 問題なし
RuntimeHelpers.PrepareMethod(m3, new[] { typeof(int).TypeHandle }); // 問題なし
}
}
==
347331 (ワッチョイ 79b3-yQv9)
2018/06/28(木) 07:24:39.78ID:TtGcC5rD0348デフォルトの名無しさん (ワッチョイ c175-sWPm)
2018/06/28(木) 07:34:23.33ID:wMDqdzUG0 >>341
よく解らんけどdllってアプリごとにメモリに個別に展開されて初期化されるからソースコード上で同じ変数名にアクセスしても実態は違うので共有できないのは当たり前なきがする
よく解らんけどdllってアプリごとにメモリに個別に展開されて初期化されるからソースコード上で同じ変数名にアクセスしても実態は違うので共有できないのは当たり前なきがする
349デフォルトの名無しさん (ワントンキン MM52-29j6)
2018/06/28(木) 08:01:29.47ID:M7FH9WysM Cとかって共有されなかったっけ?よく覚えてないけど。
350デフォルトの名無しさん (アウアウウー Sa85-/RMY)
2018/06/28(木) 08:16:48.89ID:h/Ekqdxpa されるわけないだろ
何のためにプロセスがあると思ってるんだ
何のためにプロセスがあると思ってるんだ
351デフォルトの名無しさん (ワッチョイ 6e81-8q1V)
2018/06/28(木) 09:27:13.22ID:9GisGdyJ0 ないって言ってんのにな
死ぬまで悪あがきしてればいいよ
死ぬまで悪あがきしてればいいよ
352デフォルトの名無しさん (ワッチョイ a2c3-5/xb)
2018/06/28(木) 10:06:45.02ID:uTPw2MsS0 何がしたいのか知らんけど、Win2k時代にシリアル通信のロガー作ったことある。あんときは、DLLをフックしてCreateFile,ReadFile,WriteFileのデータをトレースしたが、ハッキリ言ってやめたほうが良い。
353デフォルトの名無しさん (ササクッテロ Sp51-r5YT)
2018/06/28(木) 11:08:48.44ID:mI3gmfcxp ロガーだけならどこぞの口でforkすりゃいいだけだろ。
通信内容を振り分ける仕組みだと思ってたから無理って話してんだよな。
通信内容を振り分ける仕組みだと思ってたから無理って話してんだよな。
354デフォルトの名無しさん (ワッチョイ a2c3-5/xb)
2018/06/28(木) 11:17:35.66ID:uTPw2MsS0 親がシリアル掴んで、名前付きパイプで子に振り分けるかなぁ。
355デフォルトの名無しさん (ドコグロ MM22-9w61)
2018/06/28(木) 12:52:45.79ID:q5PWc0B3M >>332, >>342, >>353
受信データによって
って書いてるから何らかのプロトコル決めてて、アドレスとかポート番号とかの振分け用の情報あるんだろ
LANケーブルは1本でも複数のプロセスで共有してるのと同じ
ここまで書けばよほど頭の悪い奴でなければわかると思うが>>329が言うようなことは実現可能
http://nobikko-nobinobi.hatenablog.com/entry/2017/09/13/234555
ただC#だけでできるかどうかは知らん
受信データによって
って書いてるから何らかのプロトコル決めてて、アドレスとかポート番号とかの振分け用の情報あるんだろ
LANケーブルは1本でも複数のプロセスで共有してるのと同じ
ここまで書けばよほど頭の悪い奴でなければわかると思うが>>329が言うようなことは実現可能
http://nobikko-nobinobi.hatenablog.com/entry/2017/09/13/234555
ただC#だけでできるかどうかは知らん
356デフォルトの名無しさん (ドコグロ MM22-9w61)
2018/06/28(木) 12:53:45.63ID:q5PWc0B3M >>349-351
無知自慢乙
無知自慢乙
357デフォルトの名無しさん (ワッチョイ c175-sWPm)
2018/06/28(木) 13:12:07.43ID:wMDqdzUG0 同じDLLのstatic変数がそれを使ってることなるプロセス間で同じメモリの場所を参照するかってことじゃないの?
358デフォルトの名無しさん (アウアウウー Sa85-yQv9)
2018/06/28(木) 13:48:50.61ID:f040o02ua >>356
残念だけどそれはプロセス間の共有メモリの話であってシリアルポート共有じゃないよ
シリアルポートは排他でしか開けないので他の人が書いてるようにシリアルポートをサービスで開いておくしかない
それがどのような形をとるかはいろいろある
残念だけどそれはプロセス間の共有メモリの話であってシリアルポート共有じゃないよ
シリアルポートは排他でしか開けないので他の人が書いてるようにシリアルポートをサービスで開いておくしかない
それがどのような形をとるかはいろいろある
359デフォルトの名無しさん (オイコラミネオ MM16-Kqr9)
2018/06/28(木) 15:13:33.45ID:5RaMOuHjM 通信量など条件にもよるけど、
シリアル受信プログラムは、データの種類によって接頭語+日時名のファイルを作る。
各アプリはファイル監視して自分用のを実行する。
とかユルイ連携にするのも手かと。同時開発しやすいしテストやトラブル対処も楽。
シリアル受信プログラムは、データの種類によって接頭語+日時名のファイルを作る。
各アプリはファイル監視して自分用のを実行する。
とかユルイ連携にするのも手かと。同時開発しやすいしテストやトラブル対処も楽。
360デフォルトの名無しさん (ワッチョイ fe9f-TN0y)
2018/06/28(木) 15:19:28.79ID:poFZ3+du0 ASP.NET CoreにはJavaの@Transactionalのような仕組みはないのですか?
DispatchProxyを使ってトランザクション管理を自前実装してますがより一般的な手段があるなら乗り換えたいです
DispatchProxyを使ってトランザクション管理を自前実装してますがより一般的な手段があるなら乗り換えたいです
361デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
2018/06/28(木) 15:21:33.85ID:pHy9VzUja 今時232C使ってるようなデバイスでそんな振り分けが必要なデータなんか送ってくる可能性は低いと思いうけどねw
I2Cとか485をエミューレートしてるとかなら知らんけど
そんなデバイス聞いたことないけどさ
アプリ作るのも、ブロードキャストして要らないデータはアプリ側で捨てる方が簡単で
保守性も高いでしょう
I2Cとか485をエミューレートしてるとかなら知らんけど
そんなデバイス聞いたことないけどさ
アプリ作るのも、ブロードキャストして要らないデータはアプリ側で捨てる方が簡単で
保守性も高いでしょう
362デフォルトの名無しさん (ワッチョイ a2c3-5/xb)
2018/06/28(木) 16:53:51.04ID:uTPw2MsS0 どーせ、RS485/LAN変換器とか絡んでるんじゃね
363デフォルトの名無しさん (ササクッテロ Sp51-r5YT)
2018/06/28(木) 17:08:19.49ID:mI3gmfcxp 普通のシリアル通信にコンフリクト回避のネゴエーショ等の機能は存在しないんだが、どうするつもりなんだろうな。
RS422規格の通信にするにしても、ドライバーが対応してないと難しいよな。ハードフロー制御なドライバーにして後はハードに頑張ってもらうのかな?
RS422規格の通信にするにしても、ドライバーが対応してないと難しいよな。ハードフロー制御なドライバーにして後はハードに頑張ってもらうのかな?
364デフォルトの名無しさん (ササクッテロ Sp51-r5YT)
2018/06/28(木) 17:10:29.45ID:mI3gmfcxp あ、先に書かれてたか。
365デフォルトの名無しさん (ワッチョイ 8211-97rh)
2018/06/28(木) 17:49:10.63ID:Hec9+XaU0 LANはシリアル通信ではないのだが・・・
366デフォルトの名無しさん (ドコグロ MM22-9w61)
2018/06/28(木) 18:13:18.29ID:q5PWc0B3M367デフォルトの名無しさん (ドコグロ MM22-9w61)
2018/06/28(木) 18:17:20.09ID:q5PWc0B3M368デフォルトの名無しさん (ワッチョイ 39bb-yLSg)
2018/06/28(木) 18:25:00.98ID:hgy03eod0 また必死なのが沸いてるなァ
369デフォルトの名無しさん (ワッチョイ 8251-hbKR)
2018/06/28(木) 19:07:13.57ID:mpKH796a0 >>347
ありがとうございます
いろいろ試してみたところ、書いてもらった通りメソッドを宣言したオブジェクトのジェネリック型引数が
全部値型ならPrepareMethodの第2引数は要らないみたいです
でも値型と参照型が混在する場合は参照型のハンドルだけ渡せばいいというわけではなくて
値型のものも含めて渡す必要があるみたいなので、
やっぱり基本的にメソッドを宣言したオブジェクトがジェネリック型引数を持つなら
第2引数は必要と考えたほうが安全な気がします
ありがとうございます
いろいろ試してみたところ、書いてもらった通りメソッドを宣言したオブジェクトのジェネリック型引数が
全部値型ならPrepareMethodの第2引数は要らないみたいです
でも値型と参照型が混在する場合は参照型のハンドルだけ渡せばいいというわけではなくて
値型のものも含めて渡す必要があるみたいなので、
やっぱり基本的にメソッドを宣言したオブジェクトがジェネリック型引数を持つなら
第2引数は必要と考えたほうが安全な気がします
370デフォルトの名無しさん (ワッチョイ 467f-bA7/)
2018/06/28(木) 19:15:51.58ID:UR04nmTq0 君たちマニアックすぎよ!
初心者用だぞ!
初心者用だぞ!
371デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
2018/06/28(木) 19:19:04.65ID:u+1Q3Zjpa372デフォルトの名無しさん (ドコグロ MM22-9w61)
2018/06/28(木) 19:24:04.13ID:q5PWc0B3M373デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
2018/06/28(木) 19:29:53.64ID:u+1Q3Zjpa >>372
これやるのも2chの馬鹿の特徴だよね
これ見るといつも思うが、こういう馬鹿には自分自身を見る自意識がないのかね。
お前自身がやってることは何なんだw
それ以前に必死だったら何なのかね。意味が分からん
まるで「お前ウンコした!!!」って騒いでる中学生だけど、ガチでそのあたりで精神年齢止まってる可哀想なお方なんだろうけどね
これやるのも2chの馬鹿の特徴だよね
これ見るといつも思うが、こういう馬鹿には自分自身を見る自意識がないのかね。
お前自身がやってることは何なんだw
それ以前に必死だったら何なのかね。意味が分からん
まるで「お前ウンコした!!!」って騒いでる中学生だけど、ガチでそのあたりで精神年齢止まってる可哀想なお方なんだろうけどね
374デフォルトの名無しさん (ワッチョイ fd17-yQv9)
2018/06/28(木) 19:35:28.68ID:OkcoTao20375デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
2018/06/28(木) 19:36:30.54ID:u+1Q3Zjpa 232C使うようなデバイスでアドレスだのポート番号だの、振り分けが必要なケースなんかレアだろう、
(質問者もそんなこと言ってない)ってのはごく普通の感想だと思うけど、異論があるならできれば
具体例上げて反論すればいい。
マウントがどうとか中学生じみたことしか言えない馬鹿は黙ってろって
いい歳こいて恥知らずかよ
(質問者もそんなこと言ってない)ってのはごく普通の感想だと思うけど、異論があるならできれば
具体例上げて反論すればいい。
マウントがどうとか中学生じみたことしか言えない馬鹿は黙ってろって
いい歳こいて恥知らずかよ
376デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
2018/06/28(木) 19:37:46.81ID:u+1Q3Zjpa377デフォルトの名無しさん (ワッチョイ fd17-yQv9)
2018/06/28(木) 19:41:07.48ID:OkcoTao20 >C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
読めないのは誰なのか
読めないのは誰なのか
378デフォルトの名無しさん (ワッチョイ 02b3-9w61)
2018/06/28(木) 19:44:26.95ID:5xE/3ALJ0 slip も知らない奴にほざかれてもな
あと産業用ならRS-485はまだまだ現役
https://www.fujiele.co.jp/semiconductor/step/engineering/20171219-1/
あと産業用ならRS-485はまだまだ現役
https://www.fujiele.co.jp/semiconductor/step/engineering/20171219-1/
379デフォルトの名無しさん (ワッチョイ ade3-F2uz)
2018/06/28(木) 19:46:09.46ID:wDYBzoR70 結局、物理的な線は一本なんだろ?
なんで他アプリ全員に配るんだ?
なんで他アプリ全員に配るんだ?
380デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
2018/06/28(木) 20:21:27.00ID:u+1Q3Zjpa381デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
2018/06/28(木) 20:25:36.86ID:u+1Q3Zjpa382デフォルトの名無しさん (ワッチョイ 6e81-8q1V)
2018/06/28(木) 20:38:08.78ID:9GisGdyJ0 「自分自身」と「馬鹿」って来たら例外を握り潰す君だから
そいつこのスレに12年いるぜ
そいつこのスレに12年いるぜ
383デフォルトの名無しさん (ワッチョイ 6e81-8q1V)
2018/06/28(木) 20:40:32.24ID:9GisGdyJ0 年いくつだろ
Hagexを刺した統失くらいはあるのかなw
Hagexを刺した統失くらいはあるのかなw
384デフォルトの名無しさん (ワッチョイ 6e81-8q1V)
2018/06/28(木) 20:44:45.44ID:9GisGdyJ0 あとは「口調」「中学生」「精神年齢」は定番ワード
385デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
2018/06/28(木) 20:47:01.29ID:u+1Q3Zjpa386デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
2018/06/28(木) 20:53:26.04ID:u+1Q3Zjpa そもそも匿名掲示板で誰かを「特定」して付きまとってやろう、って動機が理解不能だけど、
普通の人間だったらそんな動機を持つ俺って異常なんじゃないかと悩むと思うんだけど...
いや悩まなくても、多少知恵がある人間なら、それって(2chにはよくいる)負けを認めるだけの
精神的強さを持たない弱者の「精神勝利法」なんじゃないか、とか思うと思うんだけど
普通の人間だったらそんな動機を持つ俺って異常なんじゃないかと悩むと思うんだけど...
いや悩まなくても、多少知恵がある人間なら、それって(2chにはよくいる)負けを認めるだけの
精神的強さを持たない弱者の「精神勝利法」なんじゃないか、とか思うと思うんだけど
387デフォルトの名無しさん (ワッチョイ c175-sWPm)
2018/06/28(木) 21:27:08.49ID:wMDqdzUG0 必死だな。
388312 (ワッチョイ 4676-Fd17)
2018/06/28(木) 22:49:06.80ID:RNZwZaAN0 遅レスですがobjectをdynamicに変えて値を取る事が出来ました
こんな便利な型があるんですね
ありがとうございました
こんな便利な型があるんですね
ありがとうございました
389デフォルトの名無しさん (ワッチョイ 6e81-8q1V)
2018/06/29(金) 07:02:58.46ID:41EVR+sW0 動機ねえ、スレが荒れそうだからかな
俺に反応して貰って、俺が反応を無視すれば、とりあえず収まるんだよ
そう、いつものことだ
俺に反応して貰って、俺が反応を無視すれば、とりあえず収まるんだよ
そう、いつものことだ
390デフォルトの名無しさん (ワッチョイ 4d83-VCRa)
2018/06/29(金) 07:26:58.04ID:mdiAhzMH0 >>375
232cは物理層の規格や。今だってモデムやTNC繋げる人もいるさ。
232cは物理層の規格や。今だってモデムやTNC繋げる人もいるさ。
391デフォルトの名無しさん (ワッチョイ 692b-r95U)
2018/06/29(金) 08:53:11.26ID:HPFHtU9c0 >>329
答え出てると思うけど
プロセスは3つにする
1つのプロセスはシリアル通信のサービスを提供
他の2つはクライアントとしてシリアル通信の要求をだす
要求はQueueで排他する等で安全策取る
プロセス間通信は適当に(ipc使えば簡単かな)
答え出てると思うけど
プロセスは3つにする
1つのプロセスはシリアル通信のサービスを提供
他の2つはクライアントとしてシリアル通信の要求をだす
要求はQueueで排他する等で安全策取る
プロセス間通信は適当に(ipc使えば簡単かな)
392デフォルトの名無しさん (ワッチョイ 692b-r95U)
2018/06/29(金) 08:55:21.96ID:HPFHtU9c0393デフォルトの名無しさん (オッペケ Sr51-DPcL)
2018/06/29(金) 09:17:28.48ID:VFzCkUQ4r おお、コンプリティッドタスク!!!
使ってみよう
ありがとうございました
使ってみよう
ありがとうございました
394デフォルトの名無しさん (ブーイモ MMf6-VCRa)
2018/06/29(金) 10:32:36.67ID:eG0vtZS/M ipcは死んだ技術なのかと思ってたけどつかってる人いるんだね
デバッグ環境ではうまくいくけど実環境でこけることが多いから最近は使ってなかった
デバッグ環境ではうまくいくけど実環境でこけることが多いから最近は使ってなかった
395デフォルトの名無しさん (ワッチョイ c175-sWPm)
2018/06/29(金) 10:33:59.19ID:1XSLHtbi0 electronでもつかうことね
396デフォルトの名無しさん (ワッチョイ 3dc3-i/bw)
2018/06/29(金) 12:38:26.74ID:8d6UIl5Q0 配列内の文字列がtargetStrに含まれてるかどうかを調べるコードなのですが
いまどき風な書き方ってありますか?
var words = new string[] { "ああ", "いい" };
foreach (var word in words)
{
if (targetStr.IndexOf(word) != -1)
{
// hit
}
}
いまどき風な書き方ってありますか?
var words = new string[] { "ああ", "いい" };
foreach (var word in words)
{
if (targetStr.IndexOf(word) != -1)
{
// hit
}
}
397デフォルトの名無しさん (スプッッ Sd82-qVJz)
2018/06/29(金) 12:45:50.64ID:iCnCbkLdd >>396
Contains
Contains
398デフォルトの名無しさん (ワッチョイ ade3-yQv9)
2018/06/29(金) 13:54:50.63ID:6eaCpSu00399デフォルトの名無しさん (ワッチョイ ade3-yQv9)
2018/06/29(金) 13:59:23.95ID:6eaCpSu00 あ、すまん。おらの見ないでよかと。>>397見てなかったorz
400デフォルトの名無しさん (ワッチョイ 8211-97rh)
2018/06/29(金) 16:12:15.55ID:tWLgdBQo0 まぁ、words.Any(word => targetStr.Contains(word)) ですっきり書こう、が今時?なんかなぁ?
401デフォルトの名無しさん (ワッチョイ 8671-OWdA)
2018/06/29(金) 16:54:35.36ID:Z9lwbPEL0402デフォルトの名無しさん (ワッチョイ 8251-hbKR)
2018/06/29(金) 17:33:42.32ID:+TbsbPax0 >>400-401
https://qiita.com/Temarin/items/4ac0de4f395dcecf5eec
このページでは
.Where( string.IsNullOrWhiteSpace );
よりも
.Where( x => string.IsNullOrWhiteSpace( x ) );
を推奨してるけどいまいちよく分からないから詳しい議論を聞いてみたい
https://qiita.com/Temarin/items/4ac0de4f395dcecf5eec
このページでは
.Where( string.IsNullOrWhiteSpace );
よりも
.Where( x => string.IsNullOrWhiteSpace( x ) );
を推奨してるけどいまいちよく分からないから詳しい議論を聞いてみたい
403デフォルトの名無しさん (ブーイモ MM4d-/RMY)
2018/06/29(金) 17:56:22.21ID:n04C+v3iM >>402
お前は何回Where呼ぶつもりやねんと
Whereの引数に渡すデリゲートのnewがネックになるほどタイトなループでWhere呼ぶなら、明らかにその設計自体が問題
どうでもいい机上の空論だから全く気にする必要はない
通常は、そんなことよりもラムダが間に一枚入ることによるメソッド呼び出しのオーバーヘッド増加のほうが問題になる
お前は何回Where呼ぶつもりやねんと
Whereの引数に渡すデリゲートのnewがネックになるほどタイトなループでWhere呼ぶなら、明らかにその設計自体が問題
どうでもいい机上の空論だから全く気にする必要はない
通常は、そんなことよりもラムダが間に一枚入ることによるメソッド呼び出しのオーバーヘッド増加のほうが問題になる
404デフォルトの名無しさん (スププ Sd22-5JI3)
2018/06/29(金) 18:01:54.20ID:NMkrO0hpd 仮引数を省略してるというより渡してるものが違うだろ。
たとえフレームワークの関数でも、関数自体は俺も渡したくはないな。
xとか付けるやつは意識してないだろうが、引数名も有意義だし。
そもそもこれぐらいならインライン展開されるだろうし。
たとえフレームワークの関数でも、関数自体は俺も渡したくはないな。
xとか付けるやつは意識してないだろうが、引数名も有意義だし。
そもそもこれぐらいならインライン展開されるだろうし。
405デフォルトの名無しさん (ワッチョイ 8671-OWdA)
2018/06/29(金) 18:06:39.91ID:Z9lwbPEL0 関数を第一級オブジェクトとして取り回したくないならLinqなんぞ使わず素直にループした方がいいよ
406デフォルトの名無しさん (ワントンキン MM52-6KnM)
2018/06/29(金) 18:31:03.18ID:fLw6tHLKM 最近はクエリスタイルも悪くないかなって思えてきた
単純に記号が減って読みやすいし
ループで書いたらネストするようなクエリを書きやすい
Effective C#でもサンプルコードにクエリ形式を使ってるね
単純に記号が減って読みやすいし
ループで書いたらネストするようなクエリを書きやすい
Effective C#でもサンプルコードにクエリ形式を使ってるね
407デフォルトの名無しさん (ブーイモ MM4d-/RMY)
2018/06/29(金) 19:20:37.69ID:ldv2G5QsM408デフォルトの名無しさん (スププ Sd22-5JI3)
2018/06/29(金) 19:30:19.44ID:NMkrO0hpd 一級オブジェクトとして関数渡してんじゃん?ラムダでも。Funcがdelegateなのが気に食わんのかな。
ダサいってのは主観的な気がする。
ダサいってのは主観的な気がする。
409デフォルトの名無しさん (ワッチョイ 8671-OWdA)
2018/06/29(金) 19:40:00.41ID:Z9lwbPEL0 あれ、主張がわからんくなってきた
関数を引数にするのはいいけど、その場合必ずラムダで無名関数作ってから渡したいって話なのか
関数を引数にするのはいいけど、その場合必ずラムダで無名関数作ってから渡したいって話なのか
410デフォルトの名無しさん (アウアウウー Sa85-/RMY)
2018/06/29(金) 19:42:32.14ID:HOtQS3nQa411396 (ワッチョイ 3dc3-i/bw)
2018/06/29(金) 20:03:36.51ID:8d6UIl5Q0 皆様ありがとうございます!
高度過ぎて理解できてませんがContainsとLINQ any調べてやってみますm(_ _)m
高度過ぎて理解できてませんがContainsとLINQ any調べてやってみますm(_ _)m
412デフォルトの名無しさん (ワッチョイ fd17-yQv9)
2018/06/29(金) 20:08:45.96ID:MGdViK9A0413デフォルトの名無しさん (ワッチョイ 79b3-6hvl)
2018/06/29(金) 20:19:05.54ID:4EyMIKKY0 宗教というか、純粋関数型言語とマルチパラダイム言語で記法を比べられてもな
414デフォルトの名無しさん (ワッチョイ 8671-OWdA)
2018/06/29(金) 20:32:19.73ID:Z9lwbPEL0 >>410
ポイントフリースタイルにこだわりすぎるのはHaskell界隈でも嫌われてるから
あんま変な誤解を植え付けんでくれ
仮引数があった方がわかりやすいならつければいい
ただ今回のContainsに関してはそれでわかりやすくなる要素が見当たらないので何とも
まぁどっちでも普通に読めるから、どっちでもいいよもう
ポイントフリースタイルにこだわりすぎるのはHaskell界隈でも嫌われてるから
あんま変な誤解を植え付けんでくれ
仮引数があった方がわかりやすいならつければいい
ただ今回のContainsに関してはそれでわかりやすくなる要素が見当たらないので何とも
まぁどっちでも普通に読めるから、どっちでもいいよもう
415デフォルトの名無しさん (アウアウウー Sa85-VCRa)
2018/06/30(土) 13:03:37.19ID:stDx+Xo5a デリゲートとラムダ式は別物
メソッドにラムダ式を渡してると思って実際は変換されたデリゲートを渡してる場合もある
メソッドのシグネチャーを見てラムダ式をわたしてるのかデリゲートを渡してるのか意識すべき
メソッドにラムダ式を渡してると思って実際は変換されたデリゲートを渡してる場合もある
メソッドのシグネチャーを見てラムダ式をわたしてるのかデリゲートを渡してるのか意識すべき
416デフォルトの名無しさん (ワッチョイ 8251-hbKR)
2018/06/30(土) 13:20:07.97ID:wYh1ox1V0417デフォルトの名無しさん (アウアウウー Sa85-VCRa)
2018/06/30(土) 13:26:42.98ID:stDx+Xo5a418デフォルトの名無しさん (ブーイモ MMf6-/RMY)
2018/06/30(土) 13:47:21.51ID:+7yWvOiaM419デフォルトの名無しさん (ワッチョイ 11b5-r5YT)
2018/06/30(土) 13:51:28.53ID:1b356axK0 ラムダ式を渡してるって、その日本語自体がおかしい事に気づくべき。
420デフォルトの名無しさん (ワッチョイ 8251-hbKR)
2018/06/30(土) 13:52:29.78ID:wYh1ox1V0 >>417
勉強になります
>>415 の真意は↓の中で4行目だけはコンパイルできないから気をつけましょうということですか?
Func<string, bool> a = s => string.IsNullOrEmpty(s);
Func<string, bool> b = string.IsNullOrEmpty;
Expression<Func<string, bool>> c = s => string.IsNullOrEmpty(s);
Expression<Func<string, bool>> d = string.IsNullOrEmpty;
このあたりのことがとてもあやふやなので解釈が間違っていたらぜひ教えてほしいです
勉強になります
>>415 の真意は↓の中で4行目だけはコンパイルできないから気をつけましょうということですか?
Func<string, bool> a = s => string.IsNullOrEmpty(s);
Func<string, bool> b = string.IsNullOrEmpty;
Expression<Func<string, bool>> c = s => string.IsNullOrEmpty(s);
Expression<Func<string, bool>> d = string.IsNullOrEmpty;
このあたりのことがとてもあやふやなので解釈が間違っていたらぜひ教えてほしいです
421デフォルトの名無しさん (ワッチョイ 82e3-F2uz)
2018/06/30(土) 15:08:20.00ID:d8PLC79S0 そんなのいいから早く完成させろよ
422デフォルトの名無しさん (ワッチョイ 829d-HrKv)
2018/06/30(土) 15:12:03.88ID:/Bfo044u0 ところで
words.Any(targetStr.Contains) とか
Func<string, bool> b = string.IsNullOrEmpty; とか
これいつからできるようになってたの?
ラムダ式導入時からできてた?
words.Any(targetStr.Contains) とか
Func<string, bool> b = string.IsNullOrEmpty; とか
これいつからできるようになってたの?
ラムダ式導入時からできてた?
423デフォルトの名無しさん (ブーイモ MMf6-/RMY)
2018/06/30(土) 15:18:18.92ID:+7yWvOiaM >>422
C#2.0からだからラムダより前
今では誰も使ってない匿名メソッドと一緒に入った
匿名メソッドもラムダもメソッドなので、メソッドからデリゲートへの暗黙変換がないと
匿名メソッドもラムダもデリゲートをいちいち明示的にnewしないといけなくなる
C#2.0からだからラムダより前
今では誰も使ってない匿名メソッドと一緒に入った
匿名メソッドもラムダもメソッドなので、メソッドからデリゲートへの暗黙変換がないと
匿名メソッドもラムダもデリゲートをいちいち明示的にnewしないといけなくなる
424デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
2018/06/30(土) 15:23:28.91ID:EEKpc4BGa >>422
ラムダ式は関係ないよw
C#2.0からデリゲートのインスタンスを明示的にnewしなくてもよくなった
http://ufcpp.net/study/csharp/sp_delegate.html#definition
words.Any(targetStr.Contains) ;
は
words.Any(new Func<string, bool(targetStr.Contains));
の省略記法
ラムダ式は関係ないよw
C#2.0からデリゲートのインスタンスを明示的にnewしなくてもよくなった
http://ufcpp.net/study/csharp/sp_delegate.html#definition
words.Any(targetStr.Contains) ;
は
words.Any(new Func<string, bool(targetStr.Contains));
の省略記法
425デフォルトの名無しさん (ワッチョイ 113f-5/xb)
2018/06/30(土) 17:23:22.11ID:VzcFRgA/0 オマエラ、
今夜ぐらいは仕事の事を忘れて肉でも食いにいけよ
今夜ぐらいは仕事の事を忘れて肉でも食いにいけよ
426デフォルトの名無しさん (ワッチョイ 8211-97rh)
2018/07/02(月) 09:33:02.24ID:6nQmCY/K0 あぁそうか、そういえばそのままなデリゲートだったね
すっかり忘れてたww
すっかり忘れてたww
427デフォルトの名無しさん (ワッチョイ c6f9-2Cyy)
2018/07/02(月) 21:21:17.36ID:btMzwCPv0 直撮りで申し訳ないんですが
youとenemy のHP表示→それぞれ1〜9の値を引くの処理をどちらかのhpが0になるまで続けるように組んだつもりなんですが、whileより上の部分と下の部分しか反映されませんでした
どうしたら上手く処理出来るでしょうか
https://i.imgur.com/HbKFSfr.jpg
youとenemy のHP表示→それぞれ1〜9の値を引くの処理をどちらかのhpが0になるまで続けるように組んだつもりなんですが、whileより上の部分と下の部分しか反映されませんでした
どうしたら上手く処理出来るでしょうか
https://i.imgur.com/HbKFSfr.jpg
428デフォルトの名無しさん (ワッチョイ 0d8a-LTG6)
2018/07/02(月) 21:25:37.50ID:Y9X1m4Hz0 >>427
>= 0
>= 0
429デフォルトの名無しさん (ワッチョイ c6f9-2Cyy)
2018/07/02(月) 21:30:15.05ID:btMzwCPv0 >>428
なるほど、確かにこれじゃあ条件が「hpが0以下の時」になっちゃってますね 助かりましたありがとうございます!
なるほど、確かにこれじゃあ条件が「hpが0以下の時」になっちゃってますね 助かりましたありがとうございます!
430デフォルトの名無しさん (ワッチョイ 22d5-k7OW)
2018/07/02(月) 21:36:19.75ID:aT7of7CF0 わろた
431デフォルトの名無しさん (ワッチョイ 22d5-k7OW)
2018/07/02(月) 21:36:50.28ID:aT7of7CF0 微笑ましさで、ね。
432デフォルトの名無しさん (ワッチョイ 6e9a-JFU2)
2018/07/02(月) 21:40:16.96ID:gdUYHRxe0433デフォルトの名無しさん (ワッチョイ c6f9-2Cyy)
2018/07/02(月) 21:43:42.29ID:btMzwCPv0434デフォルトの名無しさん (ブーイモ MM22-M9kt)
2018/07/03(火) 19:38:57.82ID:uKdaL+TvM スクレイピングで、xpathや属性から要素を特定取得できると思いますが、逆に属性を取得することって、できるのでしょうか?
@class=取りたい属性←この値です
@class=取りたい属性←この値です
435デフォルトの名無しさん (ワッチョイ 467f-bA7/)
2018/07/03(火) 19:53:05.05ID:obHlRFH50 パーサーなに使ってるか知らんけど
xpath指定で値とれるなら属性指定すればとれるでしょう
xpath指定で値とれるなら属性指定すればとれるでしょう
436デフォルトの名無しさん (ワッチョイ 6e81-8q1V)
2018/07/03(火) 19:56:50.40ID:BhHhKgjH0 ロケーションステップの末端に
/@取りたい属性
をつければ取れるだろう
あまりこのスレとは関係ないけど
/@取りたい属性
をつければ取れるだろう
あまりこのスレとは関係ないけど
438デフォルトの名無しさん (ワッチョイ 6e81-8q1V)
2018/07/03(火) 20:40:16.29ID:BhHhKgjH0 だからぁ
/@class
だっつうの
/@class
だっつうの
439デフォルトの名無しさん (ワッチョイ 6e81-8q1V)
2018/07/03(火) 20:43:41.32ID:BhHhKgjH0 見直すと436の説明が悪かった
440デフォルトの名無しさん (ブーイモ MM4d-VCRa)
2018/07/03(火) 21:57:38.45ID:c8nUoQXQM 属性 "名"がほしいのか
属性 "値"が欲しいのかがわからないよな
属性 "値"が欲しいのかがわからないよな
441デフォルトの名無しさん (ワッチョイ 459e-lVus)
2018/07/04(水) 00:07:29.57ID:OxUMeZjO0 要素の属性を全部取得する
https://hokaccha.hatenablog.com/entry/20130819/1376895914
要素の属性を全部取得したいんだけど、 jQuery ではできないっぽい。
DOMの element.attributes を使えばいける
https://hokaccha.hatenablog.com/entry/20130819/1376895914
要素の属性を全部取得したいんだけど、 jQuery ではできないっぽい。
DOMの element.attributes を使えばいける
442デフォルトの名無しさん (ワッチョイ 6e81-M9kt)
2018/07/04(水) 01:32:51.59ID:QIUWNU3h0 >>440
属性の値がほしいんですね、名前はtagNameでとれるので
属性の値がほしいんですね、名前はtagNameでとれるので
443デフォルトの名無しさん (ワッチョイ 6e81-M9kt)
2018/07/04(水) 01:43:11.66ID:QIUWNU3h0 id="→sample←"
webページ上の値じゃなくて、→←で囲ったsampleという結果がほしいんです。
webページ上の値じゃなくて、→←で囲ったsampleという結果がほしいんです。
444デフォルトの名無しさん (ワッチョイ 467f-bA7/)
2018/07/04(水) 04:05:11.91ID:/r54tfMO0 >>345 と >>434は同じ人か?
seleniumの話なら
webDriver.Url = @"https://www.seleniumhq.org/";
IWebElement element = webDriver.FindElement(By.Id("promo"));
element.FindElement(By.XPath("a")).GetAttribute("id");
seleniumの話なら
webDriver.Url = @"https://www.seleniumhq.org/";
IWebElement element = webDriver.FindElement(By.Id("promo"));
element.FindElement(By.XPath("a")).GetAttribute("id");
445デフォルトの名無しさん (ワッチョイ 6e81-M9kt)
2018/07/04(水) 05:51:54.18ID:QIUWNU3h0 >>444
ありがとうございます。試してみます。
ありがとうございます。試してみます。
446デフォルトの名無しさん (スップ Sd82-FzJk)
2018/07/04(水) 07:03:48.24ID:nlc5wO39d C♯勉強したんだけどネットに参考になるサイトないですか?
VBAはこれで勉強してネットで使いながらそこそこは出来るようにはなりました。何かを作りながら取り敢えず基礎的仕組みを理解出来ればと思ってます。
https://for-guests.com/excel-vba-6006/
VBAはこれで勉強してネットで使いながらそこそこは出来るようにはなりました。何かを作りながら取り敢えず基礎的仕組みを理解出来ればと思ってます。
https://for-guests.com/excel-vba-6006/
447デフォルトの名無しさん (ワッチョイ 4581-YyB7)
2018/07/04(水) 07:55:26.39ID:zwHbS25H0448デフォルトの名無しさん (ワッチョイ 8211-97rh)
2018/07/04(水) 08:50:06.90ID:oGtdQ8QA0 いやいや未確認飛行だろう
449デフォルトの名無しさん (ブーイモ MM22-M9kt)
2018/07/04(水) 09:30:12.33ID:rFQM1K2RM450デフォルトの名無しさん (ワッチョイ 0deb-HrKv)
2018/07/04(水) 15:02:10.32ID:x3V5psFC0 PC上からC#で制御できる汎用IO製品って安いのないんかな?
Raspberry PiについてるGPIOみたいなのが欲しいんだけど
Raspberry PiについてるGPIOみたいなのが欲しいんだけど
451デフォルトの名無しさん (ワッチョイ 0d8a-LTG6)
2018/07/04(水) 15:06:52.68ID:ZJ2LKM3Q0 デバドラの認証コストだけでも結構なお金がかかるからなぁ
452デフォルトの名無しさん (アウアウカー Sac9-Wwee)
2018/07/04(水) 15:11:38.24ID:BdK+b5Vga Arduinoがいいよ
453デフォルトの名無しさん (ワッチョイ 027f-7be3)
2018/07/04(水) 16:48:56.19ID:n4h9hTEh0454デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
2018/07/04(水) 17:14:18.28ID:Ub7D34vBa >>450
あんまり安くもないがこんなのとか
http://akizukidenshi.com/catalog/g/gK-01977/
このICの本来の用途はGPIOじゃないが、GPIOとしても使えたはず。
でも8本 + αしかないし使い方に癖があった気がする。
あんまり安くもないがこんなのとか
http://akizukidenshi.com/catalog/g/gK-01977/
このICの本来の用途はGPIOじゃないが、GPIOとしても使えたはず。
でも8本 + αしかないし使い方に癖があった気がする。
455デフォルトの名無しさん (ササクッテロ Sp51-r5YT)
2018/07/04(水) 19:26:55.57ID:x1yYTdeNp むしろラズパイやらArduinoとシリアル通信させてそちらのgpioに何か繋ぐ方が、安心安全いざショートしちゃったとかのアクシデントの時にも安く済むよ。
456デフォルトの名無しさん (アウアウウー Sa85-VCRa)
2018/07/04(水) 19:51:54.95ID:F41Mlataa457デフォルトの名無しさん (ワッチョイ 7e33-AF1h)
2018/07/04(水) 20:05:13.89ID:acN7B5+I0458デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
2018/07/04(水) 20:23:47.96ID:Ub7D34vBa >>456
だから
>このICの本来の用途はGPIOじゃないが、GPIOとしても使えたはず。
って前置きしてるでしょ。
確認してみたけど、ちょっと変則的だけど一応使えるよやっぱり
パラレルの方(FT245)のICもGPIOとして使えるが(こっちも本来はそういう用途じゃない。ちなみにこっちは使用経験あり)
こっちの方がちょっとだけ高価でGPIOとして使えるピン数も少ない
http://akizukidenshi.com/catalog/g/gK-01799/
だから
>このICの本来の用途はGPIOじゃないが、GPIOとしても使えたはず。
って前置きしてるでしょ。
確認してみたけど、ちょっと変則的だけど一応使えるよやっぱり
パラレルの方(FT245)のICもGPIOとして使えるが(こっちも本来はそういう用途じゃない。ちなみにこっちは使用経験あり)
こっちの方がちょっとだけ高価でGPIOとして使えるピン数も少ない
http://akizukidenshi.com/catalog/g/gK-01799/
459デフォルトの名無しさん (ワッチョイ 5e7f-YyB7)
2018/07/04(水) 21:43:30.53ID:rQfJfUyF0 >>454
取説見るとデジタルI/Oは5本みたいだが。
取説見るとデジタルI/Oは5本みたいだが。
460デフォルトの名無しさん (ワッチョイ 45fa-2e90)
2018/07/04(水) 21:46:57.76ID:gFgZc5FG0 AWK
461デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
2018/07/04(水) 22:01:51.27ID:Ub7D34vBa >>459
スレ違いだけど、このドキュメントのP3に書いてある特殊機能があるんよ
http://www.ftdichip.com/Support/Documents/AppNotes/AN_232R-01_Bit_Bang_Mode_Available_For_FT232R_and_Ft245R.pdf
最低8本は使える
残りのプラスアルファーがどういう風に使えるかは、たぶんドライバーのAPI
アプリケーションノートに書いてあると思うが、さすがに面倒だから読んでない
スレ違いだけど、このドキュメントのP3に書いてある特殊機能があるんよ
http://www.ftdichip.com/Support/Documents/AppNotes/AN_232R-01_Bit_Bang_Mode_Available_For_FT232R_and_Ft245R.pdf
最低8本は使える
残りのプラスアルファーがどういう風に使えるかは、たぶんドライバーのAPI
アプリケーションノートに書いてあると思うが、さすがに面倒だから読んでない
462デフォルトの名無しさん (ワッチョイ 7e33-AF1h)
2018/07/04(水) 23:48:29.40ID:acN7B5+I0 FTDIのはドライバ必須だし
HIDとかで繋がるやつ揃えた方が楽だよ
HIDとかで繋がるやつ揃えた方が楽だよ
463デフォルトの名無しさん (ワッチョイ 7e33-AF1h)
2018/07/04(水) 23:51:36.78ID:acN7B5+I0 HIDというか標準クラスね
例えばArduino Leonardo相当であれば何にでも化けられる
例えばArduino Leonardo相当であれば何にでも化けられる
464デフォルトの名無しさん (ササクッテロ Sp3b-AA7a)
2018/07/05(木) 09:53:48.98ID:4AVSF7Vxp HIDって、出力ディバイスにも使えたっけ?
465デフォルトの名無しさん (アウアウウー Sa0b-sule)
2018/07/05(木) 11:12:32.85ID:zf6L08GCa digisparkというのを使ってたけどHIDデバイスに見えて入出力OK
昔は300円以下で送料無料で中国から買えたんだけど値上がりしちゃった
昔は300円以下で送料無料で中国から買えたんだけど値上がりしちゃった
466デフォルトの名無しさん (ワッチョイ 87b3-WyNa)
2018/07/05(木) 15:50:31.35ID:P71/Py9I0 C♯でMySQLを操作したいのですが楽に扱えるライブラリはありますか?
EntityFrameworkを使いたいのですがイマイチ接続できないので
一応昔にSQL書いて操作するパターンも作ったことありますが出来ればせっかくなのでやり取り楽な風にできればと思ってます
EntityFrameworkを使いたいのですがイマイチ接続できないので
一応昔にSQL書いて操作するパターンも作ったことありますが出来ればせっかくなのでやり取り楽な風にできればと思ってます
467デフォルトの名無しさん (ワッチョイ 678a-K9rx)
2018/07/05(木) 16:03:16.41ID:I27lRIcu0 LinqConnect
468デフォルトの名無しさん (ブーイモ MM7f-SJYg)
2018/07/05(木) 18:53:29.35ID:/h700nZmM Dapper
469デフォルトの名無しさん (ワッチョイ 87b3-WyNa)
2018/07/05(木) 20:00:51.78ID:P71/Py9I0 ありがとうございます
Dapperの存在忘れてましたこちら使い方少し調べてみます
LinqConnectも調べましたが環境整えるところからなので余裕ができたらこちらも調べてみます
Dapperの存在忘れてましたこちら使い方少し調べてみます
LinqConnectも調べましたが環境整えるところからなので余裕ができたらこちらも調べてみます
470デフォルトの名無しさん (ワッチョイ ff33-c6cw)
2018/07/05(木) 20:12:43.80ID:LKNZKA8z0 >>464
昔からあるUSB-IOもHIDだよ
昔からあるUSB-IOもHIDだよ
471デフォルトの名無しさん (ワッチョイ 5f51-bAjg)
2018/07/06(金) 14:19:45.98ID:v98PP3uI0 教えてください
Power1とPower2はxのn乗を求める関数だそうなのですが
なぜPower2がxのn乗になるのかさっぱり分かりません
しかもPower2の方がPower1よりも効率がいいらしいです
よろしくお願いします
double Power1(double x, uint n)
{
double power = 1;
while (n > 0)
{
power = power * x;
n = n - 1;
}
return power;
}
double Power2(double x, uint n)
{
double power = 1;
while (n > 0)
{
if (n % 2 == 1) power = power * x;
x = x * x;
n = n / 2;
}
return power;
}
Power1とPower2はxのn乗を求める関数だそうなのですが
なぜPower2がxのn乗になるのかさっぱり分かりません
しかもPower2の方がPower1よりも効率がいいらしいです
よろしくお願いします
double Power1(double x, uint n)
{
double power = 1;
while (n > 0)
{
power = power * x;
n = n - 1;
}
return power;
}
double Power2(double x, uint n)
{
double power = 1;
while (n > 0)
{
if (n % 2 == 1) power = power * x;
x = x * x;
n = n / 2;
}
return power;
}
472デフォルトの名無しさん (ワッチョイ 5fea-g8qq)
2018/07/06(金) 14:26:00.38ID:CcG3LQ040 double power = 1.0;
の方が効率がいいぞ
の方が効率がいいぞ
473デフォルトの名無しさん (アウアウエー Sa1f-z1ya)
2018/07/06(金) 15:02:32.12ID:W35a98bMa474デフォルトの名無しさん (アウアウウー Sa0b-SJYg)
2018/07/06(金) 15:02:47.67ID:M3cpa2kAa475474 (アウアウウー Sa0b-SJYg)
2018/07/06(金) 15:03:33.89ID:M3cpa2kAa すまん訂正
割り切れないとき、はこれにxを掛けてくれ
割り切れないとき、はこれにxを掛けてくれ
476デフォルトの名無しさん (アウアウエー Sa1f-z1ya)
2018/07/06(金) 15:04:04.87ID:W35a98bMa477デフォルトの名無しさん (ワッチョイ 5f51-bAjg)
2018/07/06(金) 15:31:31.99ID:v98PP3uI0 >>472
ありがとうございます
定数だけの四則演算やキャストはコンパイルの時点で行われるから
効率に影響は無いと習ったのですがこの場合は違うのですね
キャストがコンパイル時と実行時のどちらで行われるかを判断する
簡単な方法があれば教えてほしいです
>>473 >>476
ありがとうございます
指数法則が関係あるのですね
これをヒントにもう一度考えてみます
>>474-475
ありがとうございます
教えてもらったことをヒントに再帰を使ってxのn乗を作ってみたのですが
この関数はあってますか?
でも、やっぱりなぜPower2がxのn乗になるのかよく分かりませんでした
double Power3(double x, uint n)
{
if (n == 0) return 1;
else if (n % 2 == 0) return Power3(x, n / 2) * Power3(x, n / 2);
else return Power3(x, (n - 1) / 2) * Power3(x, (n - 1) / 2) * x;
}
ありがとうございます
定数だけの四則演算やキャストはコンパイルの時点で行われるから
効率に影響は無いと習ったのですがこの場合は違うのですね
キャストがコンパイル時と実行時のどちらで行われるかを判断する
簡単な方法があれば教えてほしいです
>>473 >>476
ありがとうございます
指数法則が関係あるのですね
これをヒントにもう一度考えてみます
>>474-475
ありがとうございます
教えてもらったことをヒントに再帰を使ってxのn乗を作ってみたのですが
この関数はあってますか?
でも、やっぱりなぜPower2がxのn乗になるのかよく分かりませんでした
double Power3(double x, uint n)
{
if (n == 0) return 1;
else if (n % 2 == 0) return Power3(x, n / 2) * Power3(x, n / 2);
else return Power3(x, (n - 1) / 2) * Power3(x, (n - 1) / 2) * x;
}
478デフォルトの名無しさん (アウアウエー Sa1f-z1ya)
2018/07/06(金) 15:54:12.85ID:W35a98bMa >>477
こうじゃない?
いい加減に書いたから間違ってたらごめん
double Power(double x, uint n)
{
if (x == 0) return 0;
if (n == 0) return 1;
if (n == 1) return x;
return n % 2 == 0 ? Power(x * x, n / 2) : Power(x * x, n / 2) * x;
}
要するに、
x^(a + 1) = x^a * x
x^(2 * a) = (x * x)^a
こうじゃない?
いい加減に書いたから間違ってたらごめん
double Power(double x, uint n)
{
if (x == 0) return 0;
if (n == 0) return 1;
if (n == 1) return x;
return n % 2 == 0 ? Power(x * x, n / 2) : Power(x * x, n / 2) * x;
}
要するに、
x^(a + 1) = x^a * x
x^(2 * a) = (x * x)^a
479デフォルトの名無しさん (ワッチョイ 5f51-bAjg)
2018/07/06(金) 16:10:07.44ID:v98PP3uI0480デフォルトの名無しさん (アウアウエー Sa1f-z1ya)
2018/07/06(金) 16:12:36.64ID:W35a98bMa あー直接関係ないけど、0の0乗って1でいいんだな
481デフォルトの名無しさん (ワッチョイ 5f51-bAjg)
2018/07/06(金) 17:25:12.79ID:v98PP3uI0482デフォルトの名無しさん (アウアウカー Sa1b-1NyI)
2018/07/06(金) 17:29:05.92ID:Utskd+YBa 0乗が1以外になる考え方なんてあるんだ
単位元の1に何も掛けないんだから常に1だと思ってた
単位元の1に何も掛けないんだから常に1だと思ってた
483デフォルトの名無しさん (ワッチョイ c75d-NXt0)
2018/07/06(金) 22:25:57.54ID:cMQzyLwk0 高速冪乗法でググれって感じだ
484デフォルトの名無しさん (ワッチョイ 5f5d-bAjg)
2018/07/07(土) 00:10:19.78ID:PwTdVeWu0 >>471の件ではどうもありがとうございました
もう一つ質問させてください
以下のPopulation1とPopulation2は同じ結果になるそうです
Population1は>>471のPower2によく似てるので
これは指数計算の変形だと思うのですが、
Population2でも同じ結果になるのが理解できません
何度もすみませんがよろしくお願いします
uint Population1(uint n)
{
uint population = 0;
while (n > 0)
{
if (n % 2 == 1) population = population + 1;
n = n / 2;
}
return population;
}
uint Population2(uint n)
{
uint population = 0;
while (n > 0)
{
population = population + 1;
n = n & n - 1;
}
return population;
}
もう一つ質問させてください
以下のPopulation1とPopulation2は同じ結果になるそうです
Population1は>>471のPower2によく似てるので
これは指数計算の変形だと思うのですが、
Population2でも同じ結果になるのが理解できません
何度もすみませんがよろしくお願いします
uint Population1(uint n)
{
uint population = 0;
while (n > 0)
{
if (n % 2 == 1) population = population + 1;
n = n / 2;
}
return population;
}
uint Population2(uint n)
{
uint population = 0;
while (n > 0)
{
population = population + 1;
n = n & n - 1;
}
return population;
}
485デフォルトの名無しさん (ワッチョイ 5f5d-bAjg)
2018/07/07(土) 00:10:35.11ID:PwTdVeWu0486デフォルトの名無しさん (アウアウエー Sa1f-z1ya)
2018/07/07(土) 00:33:06.38ID:cboIXbsqa >>484
面白いねw
要は1が立ってるビットの数を数えてるわけだと思うけど、
Population2の方は
>n = n & n - 1;
これやると1が立ってる最下位ビットが消えるんだなw
名前は知らないごめんね
面白いねw
要は1が立ってるビットの数を数えてるわけだと思うけど、
Population2の方は
>n = n & n - 1;
これやると1が立ってる最下位ビットが消えるんだなw
名前は知らないごめんね
487デフォルトの名無しさん (ワッチョイ 5f5d-bAjg)
2018/07/07(土) 00:57:48.65ID:PwTdVeWu0 >>486
ありがとうございます
ビット演算については分かってるつもりだったのに全然でした・・・
ヒントを貰って下のようなプログラムを試してみたら
確かに最下位ビットが順に消えていって感動です
uint n = 4649;
while (n > 0)
{
Console.WriteLine(Convert.ToString(n, 2));
n = n & n - 1;
}
【実行結果】
1001000101001
1001000101000
1001000100000
1001000000000
1000000000000
でも結局n = n & n - 1;で最下位ビットが消える理由が
理解できていないのでもう少し考えてきます
ありがとうございます
ビット演算については分かってるつもりだったのに全然でした・・・
ヒントを貰って下のようなプログラムを試してみたら
確かに最下位ビットが順に消えていって感動です
uint n = 4649;
while (n > 0)
{
Console.WriteLine(Convert.ToString(n, 2));
n = n & n - 1;
}
【実行結果】
1001000101001
1001000101000
1001000100000
1001000000000
1000000000000
でも結局n = n & n - 1;で最下位ビットが消える理由が
理解できていないのでもう少し考えてきます
488デフォルトの名無しさん (アウアウエー Sa1f-z1ya)
2018/07/07(土) 01:08:23.64ID:cboIXbsqa >>487
デクリメントした時、
(1) ボローが発生しなくなる桁(つまり、最下位の1の桁)はデクリメントの前は1、後は0
(2) その下位の桁はデクリメントの前は0、後は1
(3) 上位の桁の値は変わらない
なんだから、前後の値の論理積は必ず最下位の1まで0になる
デクリメントした時、
(1) ボローが発生しなくなる桁(つまり、最下位の1の桁)はデクリメントの前は1、後は0
(2) その下位の桁はデクリメントの前は0、後は1
(3) 上位の桁の値は変わらない
なんだから、前後の値の論理積は必ず最下位の1まで0になる
489デフォルトの名無しさん (ワッチョイ 5f5d-bAjg)
2018/07/07(土) 01:35:58.15ID:PwTdVeWu0 >>488
とてもわかり易い説明ありがとうございます!お陰様で理解できました
実はこの説明を読むまでn & n - 1は(n & n) - 1という意味だと思ってて、
それならn - 1と同じじゃないのかと思いながらも
トンチンカンなことを言ってしまうのが怖くて黙ってたのですが、
こんなことなら変なプライドは捨ててさっさと疑問をぶつければよかったです
この問題を考えていて、少しビット演算に慣れてきた気がします
使い道があるかどうかは分かりませんが、
n = n & ~(n - 1);だと逆に最下位ビット以外を消すことができるんですね
とにかく、どうもありがとうございました
とてもわかり易い説明ありがとうございます!お陰様で理解できました
実はこの説明を読むまでn & n - 1は(n & n) - 1という意味だと思ってて、
それならn - 1と同じじゃないのかと思いながらも
トンチンカンなことを言ってしまうのが怖くて黙ってたのですが、
こんなことなら変なプライドは捨ててさっさと疑問をぶつければよかったです
この問題を考えていて、少しビット演算に慣れてきた気がします
使い道があるかどうかは分かりませんが、
n = n & ~(n - 1);だと逆に最下位ビット以外を消すことができるんですね
とにかく、どうもありがとうございました
490デフォルトの名無しさん (ワッチョイ 5f5d-bAjg)
2018/07/07(土) 01:57:17.51ID:PwTdVeWu0 今更ですがPopulationってビットの人口ってことだったんですね・・・
Wikipediaにもページがバッチリありました
https://en.wikipedia.org/wiki/Population_count
Wikipediaにもページがバッチリありました
https://en.wikipedia.org/wiki/Population_count
491デフォルトの名無しさん (ワッチョイ 072b-TUTg)
2018/07/07(土) 07:04:40.39ID:jG1Ln0tj0 すいません
Pawar はx^nですか
Pawar はx^nですか
492デフォルトの名無しさん (ワッチョイ e7d2-gqST)
2018/07/07(土) 18:20:25.33ID:xch9dzoq0 C#で予め用意されているクラス(Mathなど)のソースコードを見ることは可能ですか?
勉強がてら、どんな風に書かれているのか見てみたいのですが・・・
勉強がてら、どんな風に書かれているのか見てみたいのですが・・・
493デフォルトの名無しさん (ブーイモ MMcf-SJYg)
2018/07/07(土) 18:25:45.35ID:30ihGmDyM494デフォルトの名無しさん (アウアウウー Sa0b-sule)
2018/07/07(土) 18:28:37.54ID:cyf+ZGJha そっち?
495デフォルトの名無しさん (アウアウウー Sa0b-SJYg)
2018/07/07(土) 18:35:29.39ID:nZLHvKy0a さすがに今更 Reference Sources は時代遅れだろ
Coreの方がコンパクトに纏まっててわかりやすいし、コピペしても捕まらないし
Coreの方がコンパクトに纏まっててわかりやすいし、コピペしても捕まらないし
496デフォルトの名無しさん (ワッチョイ 5f60-KMj/)
2018/07/07(土) 21:12:55.79ID:gKVOSzfp0 他人の書いたライブラリとか使おうと思っても仕様書もどう読めばいいかあまりわからなくて
いつも他人様の書いたコード見てやっとなんとなく使い方理解できてるんですが
サラサラかける人はどういう見かたしてるんですか?サンプル見てメソッド見ればもうわかるのですか?
いつも他人様の書いたコード見てやっとなんとなく使い方理解できてるんですが
サラサラかける人はどういう見かたしてるんですか?サンプル見てメソッド見ればもうわかるのですか?
497デフォルトの名無しさん (ワッチョイ 479a-CtBN)
2018/07/07(土) 21:24:10.82ID:Sa3mysoT0 >>496
ソースのメソッド見て中身理解するのは仕様書読むよりも難しくないか
メジャーなライブラリなら例を書いているサンプルがネット上にいっぱいあるし
そうでなくてもある程度自分で試しながら理解したらいいと思うが
ソースのメソッド見て中身理解するのは仕様書読むよりも難しくないか
メジャーなライブラリなら例を書いているサンプルがネット上にいっぱいあるし
そうでなくてもある程度自分で試しながら理解したらいいと思うが
498デフォルトの名無しさん (ブーイモ MMcf-SJYg)
2018/07/07(土) 21:27:00.32ID:30ihGmDyM >>496
サンプル見ればだいたい分かるよ
お前も新しいフリーソフトとかWebサービスとか使うときマニュアル見なくてもだいたい分かるだろ?
それでお前の母ちゃんや友人に何で分かるのか聞かれて何て答える?
それと同じことで、経験を積むとパターンやライブラリの作者の考えが読めるようになってくる
サンプル見ればだいたい分かるよ
お前も新しいフリーソフトとかWebサービスとか使うときマニュアル見なくてもだいたい分かるだろ?
それでお前の母ちゃんや友人に何で分かるのか聞かれて何て答える?
それと同じことで、経験を積むとパターンやライブラリの作者の考えが読めるようになってくる
499デフォルトの名無しさん (ワンミングク MM3f-JP/P)
2018/07/07(土) 22:41:26.27ID:E0dVopgVM 簡単だよ
こういう処理がしたいならメソッドにこういう文字列が含まれてるはずだよな
インテリセンスカチャカチャほらみろ有ったぞ
次は引数をドキュメントコメントで調べて入力
コンパイルエラー消えたよしこれでオッケー
ビルドして起動したら…はい動いたおわり
だいたいこんな感じ
今はライブラリも開発環境も優秀すぎて楽だよほんと
こういう処理がしたいならメソッドにこういう文字列が含まれてるはずだよな
インテリセンスカチャカチャほらみろ有ったぞ
次は引数をドキュメントコメントで調べて入力
コンパイルエラー消えたよしこれでオッケー
ビルドして起動したら…はい動いたおわり
だいたいこんな感じ
今はライブラリも開発環境も優秀すぎて楽だよほんと
500デフォルトの名無しさん (ワッチョイ e79f-lO5G)
2018/07/07(土) 22:50:08.17ID:paMTBjoR0 右クリックして定義見ればよくね?
501デフォルトの名無しさん (ワッチョイ 7fc9-UVFs)
2018/07/07(土) 23:30:31.81ID:iY8uTCL40 LINQ使った最近のデザパタ紹介しているサイトや書籍ってある?
どこもなんか古いコードで
どこもなんか古いコードで
502デフォルトの名無しさん (ワッチョイ 67e3-GRiN)
2018/07/07(土) 23:40:48.02ID:Xo0ZcSzF0 >>501
誰も使ってネーからって気づけw
誰も使ってネーからって気づけw
503デフォルトの名無しさん (ワッチョイ 7f81-YWjz)
2018/07/08(日) 00:27:29.44ID:7kODHcAp0 >>501
linqの古いコードって、例えばどんなん?ラムダ使ってない奴のことかな?
linqの古いコードって、例えばどんなん?ラムダ使ってない奴のことかな?
504デフォルトの名無しさん (ワッチョイ 5fd2-ONL2)
2018/07/08(日) 00:45:39.18ID:ijnRC5hf0 >>503
日本語
日本語
505デフォルトの名無しさん (ワッチョイ 7f81-xhgQ)
2018/07/08(日) 02:13:34.73ID:8SSmHvWN0 性懲りもなくよう相手にするなあこのクサレ脳みそども
506デフォルトの名無しさん (アウアウウー Sa0b-sule)
2018/07/08(日) 11:15:40.05ID:YcDPlOAza 他のスレでデザパタと略す奴は例外なくクソって言う風潮があるから
その略称は使わないほうがいいw
その略称は使わないほうがいいw
507デフォルトの名無しさん (オイコラミネオ MM4f-FpIe)
2018/07/09(月) 15:36:56.63ID:Uwu2BFrsM LinqというかDBアクセス系のパターンの事ならリポジトリパターンやイベントソーシング・CQRSあたりかな
MSの黒本 C#実践開発手法 はどうだろう
あとRxも押さえとけば
MSの黒本 C#実践開発手法 はどうだろう
あとRxも押さえとけば
508デフォルトの名無しさん (ワッチョイ 7fed-sule)
2018/07/09(月) 23:28:49.95ID:8W0J0prF0 名前付きパイプでプロセス間通信するとき、できるだけ遅延を小さくするためにすべきこと、したほうがいいことがありますか?
509デフォルトの名無しさん (ワッチョイ 5f8a-a75z)
2018/07/10(火) 03:23:37.00ID:LdlDw2V90 ポータブルなASP.NET実行環境はありますか?
勝手にソフトインストール出来ない環境で使いたい為、Tomcatのように、設定ファイルで設定してexe起動するだけのタイプを探しています。
勝手にソフトインストール出来ない環境で使いたい為、Tomcatのように、設定ファイルで設定してexe起動するだけのタイプを探しています。
510デフォルトの名無しさん (アウアウウー Sa0b-SJYg)
2018/07/10(火) 03:44:47.11ID:wzF2q8B9a511デフォルトの名無しさん (スプッッ Sdff-jgrZ)
2018/07/10(火) 07:07:05.03ID:1Wfv3KWad formが3つがあってそれぞれ仮にa,b,cとして、a,b,cの中にコンボボックスがいくつかあってaのコンボボックスの一つにエクセルをdbで読み取って?コンボボックスに値を入れました。
以降もコンボボックスに入れてくんですけど、違いがブック名とシート名でコードをまとめたい時はどこにどのように書けばいいですか?
今はform aのloadに一つ書いてます。
以降もコンボボックスに入れてくんですけど、違いがブック名とシート名でコードをまとめたい時はどこにどのように書けばいいですか?
今はform aのloadに一つ書いてます。
512デフォルトの名無しさん (アウアウウー Sa0b-1qXk)
2018/07/10(火) 08:43:35.96ID:wzF2q8B9a class Configurations { 各コンボボックスに入れるべき値をそれぞれプロパティとして定義 }
interface IConfigurationsSource { Configurations GetConfigurations(); }
class ExcelConfigurationsSource : IConfigurationsSource {
private readonly string book;
private readonly string sheet;
public ConfigurationsSource(string book, string sheet) { this.book = book; this.sheet = sheet; }
public Configurations GetConfigurations() { return Excelシートから読み取ってConfigurationsに詰めて返す(book, sheet); }
}
こういうのを作って使い回す
interface IConfigurationsSource { Configurations GetConfigurations(); }
class ExcelConfigurationsSource : IConfigurationsSource {
private readonly string book;
private readonly string sheet;
public ConfigurationsSource(string book, string sheet) { this.book = book; this.sheet = sheet; }
public Configurations GetConfigurations() { return Excelシートから読み取ってConfigurationsに詰めて返す(book, sheet); }
}
こういうのを作って使い回す
513デフォルトの名無しさん (ワッチョイ 4775-xyRp)
2018/07/10(火) 10:08:29.34ID:DQNNzOip0 クラスを継承して機能を共通化するのとインターフェースで共通化するのと何が違いますか?
514デフォルトの名無しさん (オイコラミネオ MM4f-FpIe)
2018/07/10(火) 10:27:34.35ID:u496riIwM いろいろなレベルでの回答があるが
インターフェースはMIX可能
継承の濫用は保守困難になりがち
インターフェース意識した方が設計的にスマートな事が多い
c#8で事情は大きく変わるが
インターフェースはMIX可能
継承の濫用は保守困難になりがち
インターフェース意識した方が設計的にスマートな事が多い
c#8で事情は大きく変わるが
515デフォルトの名無しさん (ササクッテロル Sp3b-AA7a)
2018/07/10(火) 13:38:42.06ID:vEF725PNp クラス継承は切り離せないが、インターフェースなら切り離せる。
516デフォルトの名無しさん (ワッチョイ e7d2-gqST)
2018/07/10(火) 15:17:35.18ID:ptn/0Y0d0517デフォルトの名無しさん (ワッチョイ 7fe8-UVFs)
2018/07/10(火) 15:18:53.33ID:6gd4tcDd0 え、8ってどうなるん・・・
518デフォルトの名無しさん (ワッチョイ 87bb-xhgQ)
2018/07/10(火) 15:59:38.63ID:lFSMnKMw0 そらもうアレよ
519デフォルトの名無しさん (スップ Sd7f-w8Cw)
2018/07/10(火) 17:43:22.36ID:pIJZecgId おジャ魔女どれみc#
520デフォルトの名無しさん (スプッッ Sdff-jgrZ)
2018/07/10(火) 19:00:19.81ID:1Wfv3KWad521デフォルトの名無しさん (ワッチョイ 5f5d-bAjg)
2018/07/10(火) 19:04:58.17ID:WX+x+qIF0 >>514
> c#8で事情は大きく変わるが
C#8ではnull非許容が標準になるという噂は聞いたことがあるのですが、
この話は検索してみてもなんのことを仰っているのか分かりませんでした
とても興味があるので、ぜひ詳しく教えていただけないでしょうか
> c#8で事情は大きく変わるが
C#8ではnull非許容が標準になるという噂は聞いたことがあるのですが、
この話は検索してみてもなんのことを仰っているのか分かりませんでした
とても興味があるので、ぜひ詳しく教えていただけないでしょうか
522デフォルトの名無しさん (ワッチョイ 5f7f-CJRd)
2018/07/10(火) 21:19:40.32ID:vJrIcc2p0523デフォルトの名無しさん (ワッチョイ 5f5d-bAjg)
2018/07/10(火) 21:45:00.39ID:WX+x+qIF0 >>522
レスありがとうございます!
ただこれだけを聞くとC#8でインターフェースの価値が更に上がるように思うのですが、
>>514さんはインターフェースの価値を説かれた上で
「c#8で事情は大きく変わる」と仰っていているので、他の機能に拡充が図られるなどで
インターフェースの価値が相対的に下がると仰っしゃりたいように感じました
実際にはそういうわけではないのでしょうか?
いずれにしても、インターフェースのデフォルト実装は便利そうで楽しみです
あと、それほどいろいろと手を入れるなら、
IList<T>が共変なIReadOnlyList<out T>と反変なIWriteOnlyList<in T>を
継承するようにするとか、そういう変更もあると嬉しいな〜と素人ながら思ってみたりw
レスありがとうございます!
ただこれだけを聞くとC#8でインターフェースの価値が更に上がるように思うのですが、
>>514さんはインターフェースの価値を説かれた上で
「c#8で事情は大きく変わる」と仰っていているので、他の機能に拡充が図られるなどで
インターフェースの価値が相対的に下がると仰っしゃりたいように感じました
実際にはそういうわけではないのでしょうか?
いずれにしても、インターフェースのデフォルト実装は便利そうで楽しみです
あと、それほどいろいろと手を入れるなら、
IList<T>が共変なIReadOnlyList<out T>と反変なIWriteOnlyList<in T>を
継承するようにするとか、そういう変更もあると嬉しいな〜と素人ながら思ってみたりw
524デフォルトの名無しさん (ワッチョイ c730-xyRp)
2018/07/10(火) 22:52:33.99ID:uwEab9SB0 めっちゃ詳しいw
525デフォルトの名無しさん (ワッチョイ 5f7f-CJRd)
2018/07/10(火) 23:47:58.27ID:vJrIcc2p0526デフォルトの名無しさん (アウアウウー Sa0b-SJYg)
2018/07/11(水) 00:12:23.28ID:08+HRZoYa >>525
既にList<>はIReadOnlyList<>を実装してるんだから今更だろ。
IList<>がIReadOnlyList<>を継承できない理由は、インターフェイスメンバの明示的実装を壊すから
IList<>に宣言されてたメンバのうちIReadOnlyList<>と被るものを全部削除したとしたら、IList<>のメンバを明示的実装している既存のクラスが全滅する
既にList<>はIReadOnlyList<>を実装してるんだから今更だろ。
IList<>がIReadOnlyList<>を継承できない理由は、インターフェイスメンバの明示的実装を壊すから
IList<>に宣言されてたメンバのうちIReadOnlyList<>と被るものを全部削除したとしたら、IList<>のメンバを明示的実装している既存のクラスが全滅する
527デフォルトの名無しさん (ワッチョイ bf93-FpIe)
2018/07/11(水) 00:40:08.40ID:OI/RESej0 誤解を与えてすまん
c#8でインターフェースのデフォルト実装がサポートされるので価値は高まるという認識でok
null不許容も含めて大きく変わるねえ
c#8でインターフェースのデフォルト実装がサポートされるので価値は高まるという認識でok
null不許容も含めて大きく変わるねえ
528デフォルトの名無しさん (ワッチョイ bf93-FpIe)
2018/07/11(水) 00:50:36.62ID:OI/RESej0 null非許容を乱暴に説明すると
参照型の変数にnullが入らないのがデフォになる。よって多くのシナリオでnull落ちになるケースが激減する。基本的にプログラミングが楽になる。
変数にnull許可する場合には明示的に宣言が必要になる。
既存のソースに対しては破壊的変更になるからコンパイルオプションとかになるんじゃないかな。
参照型の変数にnullが入らないのがデフォになる。よって多くのシナリオでnull落ちになるケースが激減する。基本的にプログラミングが楽になる。
変数にnull許可する場合には明示的に宣言が必要になる。
既存のソースに対しては破壊的変更になるからコンパイルオプションとかになるんじゃないかな。
529デフォルトの名無しさん (ワントンキン MM3f-JP/P)
2018/07/11(水) 01:02:22.00ID:veaNU89qM OOP的にも綺麗でテーブルが正規化されてればnull非許容は受け入れられるかもね
業務システムではあまり役に立たなそうだ
業務システムではあまり役に立たなそうだ
530デフォルトの名無しさん (アウアウエー Sa1f-z1ya)
2018/07/11(水) 01:04:51.55ID:zbj7oPBja >よって多くのシナリオでnull落ちになるケースが激減する。基本的にプログラミングが楽になる。
岩永氏の例の記事にもそう書いてあるが、何度考えてもこれは逆だと思うなw
いわゆる「例外を握りつぶす」筋悪コードと同じ弊害をもたらすだけだろう
岩永氏の例の記事にもそう書いてあるが、何度考えてもこれは逆だと思うなw
いわゆる「例外を握りつぶす」筋悪コードと同じ弊害をもたらすだけだろう
531デフォルトの名無しさん (ワントンキン MM3f-JP/P)
2018/07/11(水) 01:08:15.17ID:veaNU89qM 凄まじい列数でほとんどがnullのテーブル
あれをなんとかしないとアプリケーションからnullを排除することは難しい
インフラの問題だからホスト言語のちょっとした改善でどうにかなるものじゃない
あれをなんとかしないとアプリケーションからnullを排除することは難しい
インフラの問題だからホスト言語のちょっとした改善でどうにかなるものじゃない
532デフォルトの名無しさん (ワッチョイ bf93-FpIe)
2018/07/11(水) 01:22:37.10ID:OI/RESej0 最近の言語がそういう流れだからだろうね
DB絡みに外部結合やORM、既存ライブラリやサービスがある以上、null考慮は回避できないだろうから使い分けになるだろうね
nullまみれのテーブルも いまだにみかけるし
新規コードでサクサク組んでいくには便利やと思う
DB絡みに外部結合やORM、既存ライブラリやサービスがある以上、null考慮は回避できないだろうから使い分けになるだろうね
nullまみれのテーブルも いまだにみかけるし
新規コードでサクサク組んでいくには便利やと思う
533デフォルトの名無しさん (ワッチョイ 5f5d-bAjg)
2018/07/11(水) 01:24:04.27ID:mrqtDgK70 >>525
レスありがとうございます
確かに、ReadOnlyという言葉がIReadOnlyList<>を継承するものにかかっていると考えると
IList<>がIReadOnlyList<>を継承するのは妙な感じですね
ただ現実として、>>526でも指摘していただいているようにList<>はIReadOnlyList<>を
実装していますので、ReadOnlyという言葉はあくまでIReadOnlyList<>自身にかかっていると
とらえてしまってもいいのかなと考えています
その現状の言葉遣いが間違っているのだから直すべきだというご主張なら、
実現可能性は私には難しくて分かりませんが、とても興味深いご意見だと思います
>>526
レスありがとうございます
書いていただいた文章を読むと、インターフェースは継承元のインターフェースと
同じ名前のメソッドを持てない、もしくはインターフェースの明示的実装に悪影響があると
考えていらっしゃるように見受けられたのですが、この部分がよく理解できなかったので
申し訳ないのですが詳しくご説明していただけるとありがたいです
>>527-528
レスありがとうございます
私の方こそ、変な深読みをしてしまい失礼しました
私は初学者なので機能の増強は単純に楽しみなのですが、
既存のソースを多くお持ちの方にとっては大幅な変更はいいことばかりでもないのですね
>>528-531
興味深いお話をどうもありがとうございます
自分からnull非許容の話を出しておいて恥ずかしいのですが、
実はこれが具体的にどういうものなのかほとんど理解できていないのです
var a = new string[1]; は許されるのか?とか、許されるならそれは
var a = new string[1] { string.Empty }; と同じ意味なのか?とか、
もしそれが正しいなら、クラス毎に Empty 的なものを用意しないといけないのか?とか
疑問は膨らむばかりです
レスありがとうございます
確かに、ReadOnlyという言葉がIReadOnlyList<>を継承するものにかかっていると考えると
IList<>がIReadOnlyList<>を継承するのは妙な感じですね
ただ現実として、>>526でも指摘していただいているようにList<>はIReadOnlyList<>を
実装していますので、ReadOnlyという言葉はあくまでIReadOnlyList<>自身にかかっていると
とらえてしまってもいいのかなと考えています
その現状の言葉遣いが間違っているのだから直すべきだというご主張なら、
実現可能性は私には難しくて分かりませんが、とても興味深いご意見だと思います
>>526
レスありがとうございます
書いていただいた文章を読むと、インターフェースは継承元のインターフェースと
同じ名前のメソッドを持てない、もしくはインターフェースの明示的実装に悪影響があると
考えていらっしゃるように見受けられたのですが、この部分がよく理解できなかったので
申し訳ないのですが詳しくご説明していただけるとありがたいです
>>527-528
レスありがとうございます
私の方こそ、変な深読みをしてしまい失礼しました
私は初学者なので機能の増強は単純に楽しみなのですが、
既存のソースを多くお持ちの方にとっては大幅な変更はいいことばかりでもないのですね
>>528-531
興味深いお話をどうもありがとうございます
自分からnull非許容の話を出しておいて恥ずかしいのですが、
実はこれが具体的にどういうものなのかほとんど理解できていないのです
var a = new string[1]; は許されるのか?とか、許されるならそれは
var a = new string[1] { string.Empty }; と同じ意味なのか?とか、
もしそれが正しいなら、クラス毎に Empty 的なものを用意しないといけないのか?とか
疑問は膨らむばかりです
534デフォルトの名無しさん (ワッチョイ bf93-FpIe)
2018/07/11(水) 01:52:22.43ID:OI/RESej0 シンプルなコードで良い疑問やなあ
実際導入されたら混乱しそう…
右辺のArrayがnullを許さないからコンパイラに怒られそう
初期値入れたらいけそう
もし仮にstringの規定値がemptyになる仕様になれば初期化無しでもコンパイルとおるかも
c#7系以前と同じ挙動にするなら
var a = new string[1]?;
という記述になるはず
List系使うから配列を生で使う機会は減ったけどね
実際導入されたら混乱しそう…
右辺のArrayがnullを許さないからコンパイラに怒られそう
初期値入れたらいけそう
もし仮にstringの規定値がemptyになる仕様になれば初期化無しでもコンパイルとおるかも
c#7系以前と同じ挙動にするなら
var a = new string[1]?;
という記述になるはず
List系使うから配列を生で使う機会は減ったけどね
535デフォルトの名無しさん (ワッチョイ bf93-FpIe)
2018/07/11(水) 01:53:31.50ID:OI/RESej0 恐ろしい子!
536デフォルトの名無しさん (ワッチョイ 7fe8-UVFs)
2018/07/11(水) 04:05:50.95ID:xb7b/JPY0 C#の話じゃないかもしれませんが、
LAN上の他のPCと通信するにはTCPorUDPしかないですかね?
ポート開けようとすると管理者のパスワード要求されるので
そういうのに影響されない方法があれば教えてください
サーバー上にファイル作って共有しようかとも思ったのですが
ロックとか速度とかちょっと使いにくいので
LAN上の他のPCと通信するにはTCPorUDPしかないですかね?
ポート開けようとすると管理者のパスワード要求されるので
そういうのに影響されない方法があれば教えてください
サーバー上にファイル作って共有しようかとも思ったのですが
ロックとか速度とかちょっと使いにくいので
537デフォルトの名無しさん (アウアウウー Sa0b-SJYg)
2018/07/11(水) 07:45:57.48ID:08+HRZoYa インターネットに出れるんならAWSでSQSかKinesisでも使えば
538デフォルトの名無しさん (ワンミングク MM3f-K9rx)
2018/07/11(水) 08:15:13.05ID:RuBHX//DM >>536
RAWなら好きなもの送れるでしょ
RAWなら好きなもの送れるでしょ
539デフォルトの名無しさん (ブーイモ MM7f-Ro9v)
2018/07/11(水) 08:54:54.59ID:NAmdOA29M ネットワークプログラミングの定石学びたいっす
540デフォルトの名無しさん (ワンミングク MM3f-K9rx)
2018/07/11(水) 09:14:18.75ID:RuBHX//DM レイヤー無視なら
Multi-object Multi-lingual Document Intermediary の仕様書でも
Multi-object Multi-lingual Document Intermediary の仕様書でも
541デフォルトの名無しさん (ササクッテロル Sp3b-AA7a)
2018/07/11(水) 09:42:14.12ID:DD+vdWYvp >>536
TCPやUDPじゃないと関所を通れないからなぁ
TCPやUDPじゃないと関所を通れないからなぁ
542デフォルトの名無しさん (スッップ Sd7f-h/fi)
2018/07/11(水) 10:03:35.37ID:/J4Azv5gd ポート開けたくないな、名前付きパイプのRemotingは?
sambaのポートが開いてりゃ疎通できた気がする。
sambaのポートが開いてりゃ疎通できた気がする。
543デフォルトの名無しさん (スッップ Sd7f-h/fi)
2018/07/11(水) 10:03:54.68ID:/J4Azv5gd ないな→ないなら
544デフォルトの名無しさん (ドコグロ MM1b-C8Iw)
2018/07/11(水) 12:51:43.31ID:vn5tWIshM545デフォルトの名無しさん (ワッチョイ 87bb-xhgQ)
2018/07/11(水) 12:56:39.30ID:fg0dx/vD0 アホか
くだらないことを書き込む前に少しは推敲しろ
くだらないことを書き込む前に少しは推敲しろ
546デフォルトの名無しさん (スププ Sd7f-cr2R)
2018/07/11(水) 13:59:27.90ID:cb0VPk/Kd >>544
aho
aho
547デフォルトの名無しさん (ワッチョイ 7fe8-hRO/)
2018/07/11(水) 16:51:29.67ID:xb7b/JPY0 ありがとうございます
まずは名前付きパイプを調べてみます
まずは名前付きパイプを調べてみます
548デフォルトの名無しさん (ササクッテロル Sp3b-AA7a)
2018/07/11(水) 16:58:41.62ID:DD+vdWYvp バイブにたかしとかりょうとか名前付けて愛用してんのかなぁ…
549デフォルトの名無しさん (ワッチョイ 5f51-bAjg)
2018/07/11(水) 17:39:37.83ID:kzvuO0/N0 >>534
レスありがとうございます
>右辺のArrayがnullを許さないからコンパイラに怒られそう
>初期値入れたらいけそう
確かにそんな気がしますね
でもそうなると大きな配列とは相性が悪そう・・・
>もし仮にstringの規定値がemptyになる仕様になれば初期化無しでもコンパイルとおるかも
それが一番わかりやすそうですね
ただ、stringはともかくStringBuilderの規定値とかどうすればいいのかさっぱり見当がつきません
>c#7系以前と同じ挙動にするなら
>var a = new string[1]?;
>という記述になるはず
?の位置は[1]の前ですか?
まあ書き方はともかく、もしvar a = new StringBuilder[100];とすると
自動的に100個のStringBuilderのインスタンスが作られるなら、
そのような動作を望まなければ配列の要素の型はnull許容にしたほうが良さそうですね
そうすると、例えばジェネリック型を使うときにはstringのような型とStringBuilderのような型の
区別をつけたくなることもありそうですし、ジェネリック型制約に新しく
where T : immutable(intやstringは許すけどStringBuilderは許さない)が
追加されたり・・・とか妄想してみましたw
レスありがとうございます
>右辺のArrayがnullを許さないからコンパイラに怒られそう
>初期値入れたらいけそう
確かにそんな気がしますね
でもそうなると大きな配列とは相性が悪そう・・・
>もし仮にstringの規定値がemptyになる仕様になれば初期化無しでもコンパイルとおるかも
それが一番わかりやすそうですね
ただ、stringはともかくStringBuilderの規定値とかどうすればいいのかさっぱり見当がつきません
>c#7系以前と同じ挙動にするなら
>var a = new string[1]?;
>という記述になるはず
?の位置は[1]の前ですか?
まあ書き方はともかく、もしvar a = new StringBuilder[100];とすると
自動的に100個のStringBuilderのインスタンスが作られるなら、
そのような動作を望まなければ配列の要素の型はnull許容にしたほうが良さそうですね
そうすると、例えばジェネリック型を使うときにはstringのような型とStringBuilderのような型の
区別をつけたくなることもありそうですし、ジェネリック型制約に新しく
where T : immutable(intやstringは許すけどStringBuilderは許さない)が
追加されたり・・・とか妄想してみましたw
550デフォルトの名無しさん (バットンキン MMfb-thxO)
2018/07/11(水) 17:57:29.81ID:g/mYMck9M プログラム素人で恐縮ですが、for文のスコープの中に変数を宣言するとメモリの無駄使いになるでしょうか?
for(;;) int hoge =1;
のような書き方です
for文に入る前に宣言した方が作法的に良いのであればそうしたいと思い
for(;;) int hoge =1;
のような書き方です
for文に入る前に宣言した方が作法的に良いのであればそうしたいと思い
551デフォルトの名無しさん (ワッチョイ a79e-l9EE)
2018/07/11(水) 18:16:12.97ID:I//Y0R5O0 コンパイラが最適化するのじゃないか?
初心者は、そんな事を考えずに、なるべく狭いスコープで宣言した方が良い。
処理に、10秒以上掛かるのなら、その時に考えても良いけど
「Effective 何々」などの本を読むと、書いてあるかも知れないけど
初心者は、そんな事を考えずに、なるべく狭いスコープで宣言した方が良い。
処理に、10秒以上掛かるのなら、その時に考えても良いけど
「Effective 何々」などの本を読むと、書いてあるかも知れないけど
552デフォルトの名無しさん (ブーイモ MMcf-SJYg)
2018/07/11(水) 18:20:39.15ID:L0DC21nsM >>550
C系の言語では基本的に一箇所で宣言された変数はメソッド全体で一つしか作られない
C#の場合はクロージャが絡んだりすると変わってくるけど、基本的にはそういう思想で設計されてる
気にせず必要最小限のスコープで宣言せよ
C系の言語では基本的に一箇所で宣言された変数はメソッド全体で一つしか作られない
C#の場合はクロージャが絡んだりすると変わってくるけど、基本的にはそういう思想で設計されてる
気にせず必要最小限のスコープで宣言せよ
553デフォルトの名無しさん (ドコグロ MM1b-C8Iw)
2018/07/11(水) 18:31:22.94ID:vn5tWIshM >>545-546
そんなレスしかできないからお前は🙅なんだよ w
そんなレスしかできないからお前は🙅なんだよ w
554デフォルトの名無しさん (ワッチョイ e717-UVFs)
2018/07/11(水) 18:40:26.95ID:sApF7MBC0 >>550
IL見ればあなたの悩みは全て解決しますよ
IL見ればあなたの悩みは全て解決しますよ
555デフォルトの名無しさん (ササクッテロル Sp3b-AA7a)
2018/07/11(水) 20:26:56.12ID:DD+vdWYvp あーでも>>550みたいな書き方すると突っ返されるメーカーあるよな。
無駄な作業させてるって自覚無いんだろうかなぁ
無駄な作業させてるって自覚無いんだろうかなぁ
556デフォルトの名無しさん (ブーイモ MMcf-SJYg)
2018/07/11(水) 20:31:34.49ID:L0DC21nsM >>550みたいな書き方してるコードってたいてい他の部分もクッソ汚いから、とりあえず突き返すのはわりと賢明なやり方
557デフォルトの名無しさん (ササクッテロル Sp3b-AA7a)
2018/07/11(水) 20:35:01.60ID:DD+vdWYvp スコープ毎にスタック操作なんかしないし、汚くてもオプティマイズされたら面影も無いし、イジメでしか無い罠
558デフォルトの名無しさん (ワッチョイ c716-xyRp)
2018/07/11(水) 20:39:44.95ID:sCxl2UHN0 >>549
このレスからにじみ出る頭のよさ
このレスからにじみ出る頭のよさ
559デフォルトの名無しさん (ワッチョイ 66c9-LQig)
2018/07/12(木) 00:31:45.14ID:07VYm5500 var すら毛嫌いされちゃうとこなのでコードレビューなんかやったらストレスで禿げるわ
560デフォルトの名無しさん (ワッチョイ 5e3b-C8NM)
2018/07/12(木) 01:31:48.84ID:Mt10qC0c0 それぞれのコーディング規約に従えばいいんじゃないですか
561デフォルトの名無しさん (ワッチョイ 6a9d-kMcx)
2018/07/12(木) 02:20:50.58ID:uvVknaw70562デフォルトの名無しさん (ワッチョイ 79e9-LQig)
2018/07/12(木) 05:53:25.42ID:ddTdn7l60 C#8のデフォルトインターフェースメソッドって、
インターフェースでほぼコーディングを終わらせてしまうことも可能、
って解釈で良いのかな。
インターフェースでほぼコーディングを終わらせてしまうことも可能、
って解釈で良いのかな。
563デフォルトの名無しさん (ワッチョイ ea8a-Y7YF)
2018/07/12(木) 06:34:40.79ID:0C7UQQhF0 クエリとlinqとlinqToXmlの違いがなにかよくわからないです
これらはなんですか
クエリはfromやselectとか思ってたのですが
"from a 〜 select a"も "XXXXXX.Select(〜)" の両方ともクエリ?
linqの中にクエリがある感じですか?
用語の違いを知りたいです
これらはなんですか
クエリはfromやselectとか思ってたのですが
"from a 〜 select a"も "XXXXXX.Select(〜)" の両方ともクエリ?
linqの中にクエリがある感じですか?
用語の違いを知りたいです
564デフォルトの名無しさん (バットンキン MM69-0TUM)
2018/07/12(木) 06:53:16.73ID:TSQ/qQegM565デフォルトの名無しさん (スッップ Sd0a-zHc1)
2018/07/12(木) 07:09:00.83ID:8dshyEbGd >>563
メソッド式とクエリ式でググれ
メソッド式とクエリ式でググれ
566デフォルトの名無しさん (JP 0Hc9-+kVx)
2018/07/12(木) 07:38:41.95ID:VF8Jnm1rH NumericUpDownで、ホイール下回転で値をUpさせる方法ないですか?
567デフォルトの名無しさん (ワントンキン MM7a-ZTCE)
2018/07/12(木) 08:08:47.97ID:CB78gZS5M568デフォルトの名無しさん (ワッチョイ 6a11-w0lO)
2018/07/12(木) 09:04:57.23ID:FtAr8eR70 >>553
管理者のパスワードって、単なるスーパーユーザーのパスワードのことだろきっと
管理者のパスワードって、単なるスーパーユーザーのパスワードのことだろきっと
569デフォルトの名無しさん (ワッチョイ 6d8f-PdR6)
2018/07/12(木) 12:49:07.46ID:96DaRN210 だったらなんなんだよ
570デフォルトの名無しさん (ワッチョイ 11a5-kMcx)
2018/07/12(木) 15:12:12.67ID:iIGcGb6Z0 久しぶりにまたC#勉強してみようかと思ってるんだけど
最近の動向ってどうなの?雑誌でもあまり見かけなくなったけど
最近の動向ってどうなの?雑誌でもあまり見かけなくなったけど
571デフォルトの名無しさん (スププ Sd0a-C8NM)
2018/07/12(木) 15:52:53.09ID:Yg7MNvpld さあ、プログラミングの雑誌読んでる奴は最近少ないでしょ
プログラミング情報は基本ネットだからな
プログラミング情報は基本ネットだからな
572デフォルトの名無しさん (ワッチョイ 89d3-Y8gp)
2018/07/12(木) 16:16:23.83ID:S+gZjDN60 >>570
マイクロソフトはAndroidのアプリC#で作る環境起こしたり結構力入れてる
マイクロソフトはAndroidのアプリC#で作る環境起こしたり結構力入れてる
573デフォルトの名無しさん (ワッチョイ 11a5-kMcx)
2018/07/12(木) 16:37:53.91ID:iIGcGb6Z0574デフォルトの名無しさん (ワッチョイ 11a5-kMcx)
2018/07/12(木) 16:40:31.97ID:iIGcGb6Z0 そういえばWindowsフォンとかいうのもあったね
575デフォルトの名無しさん (ワッチョイ 5e3b-C8NM)
2018/07/12(木) 16:45:06.48ID:Mt10qC0c0 >>572
iOSもな
iOSもな
576デフォルトの名無しさん (スププ Sd0a-7tX6)
2018/07/12(木) 17:23:36.80ID:S4vKnl6/d 雑誌とか書籍とか、本屋の棚を見てると勢力図が判るね。
Python強い。
Python強い。
577デフォルトの名無しさん (バットンキン MM15-0TUM)
2018/07/12(木) 17:25:15.60ID:PtJZmudoM MVC使ってるんですが、アルゴリズムをSQLに書くのは邪道でしょうか?
Modelを用意している時点でC♯でアルゴリズムを書くのが正攻法なのかなという気がして
でもクエリにある程度書いた方がパフォーマンスは良さそうで悩んでいます
Modelを用意している時点でC♯でアルゴリズムを書くのが正攻法なのかなという気がして
でもクエリにある程度書いた方がパフォーマンスは良さそうで悩んでいます
578デフォルトの名無しさん (ワッチョイ 669a-iomh)
2018/07/12(木) 19:07:16.04ID:MbhSnhO70 >>566
NumericUpDownの派生コントロールを作ってOnMouseWheelを書き換える
方法 : 既存の Windows フォーム コントロールから継承する
https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/how-to-inherit-from-existing-windows-forms-controls
コード例
public class NumericUpDownEX : NumericUpDown
{
protected override void OnMouseWheel(MouseEventArgs e)
{
if (null == e) return;
decimal m = this.Value;
int a = e.Delta > 0 ? -1 : 1;
m += a * this.Increment;
m = m > this.Maximum ? this.Maximum : m;
m = m < this.Minimum ? this.Minimum : m;
this.Value = m;
}
}
NumericUpDownの派生コントロールを作ってOnMouseWheelを書き換える
方法 : 既存の Windows フォーム コントロールから継承する
https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/how-to-inherit-from-existing-windows-forms-controls
コード例
public class NumericUpDownEX : NumericUpDown
{
protected override void OnMouseWheel(MouseEventArgs e)
{
if (null == e) return;
decimal m = this.Value;
int a = e.Delta > 0 ? -1 : 1;
m += a * this.Increment;
m = m > this.Maximum ? this.Maximum : m;
m = m < this.Minimum ? this.Minimum : m;
this.Value = m;
}
}
579デフォルトの名無しさん (ワッチョイ 6917-LQig)
2018/07/12(木) 19:39:16.71ID:5nesTxgP0 どうでもいいことだけどEventArgsがnullで渡ってくるケースってあるの?
580デフォルトの名無しさん (ワンミングク MM7a-ZTCE)
2018/07/12(木) 20:09:54.21ID:yTzbc7hIM581デフォルトの名無しさん (ワッチョイ 6a9d-X7oo)
2018/07/12(木) 21:06:22.46ID:uvVknaw70 そのSQLはどこに書かれているのだね
582デフォルトの名無しさん (バットンキン MM69-0TUM)
2018/07/13(金) 06:58:05.36ID:DDbEgWasM SQLはクエリ管理クラスでC♯で管理してます
ストアドで書かれてたらC♯がどうこういう話では無いですね
つかストアドは世間様の開発では一般的なのでしょうか
改修に弱そうなイメージがありシステム構成の検討任されたら自分なら選択しなさそうですけど
ストアドで書かれてたらC♯がどうこういう話では無いですね
つかストアドは世間様の開発では一般的なのでしょうか
改修に弱そうなイメージがありシステム構成の検討任されたら自分なら選択しなさそうですけど
583デフォルトの名無しさん (ブーイモ MM8e-3rXz)
2018/07/13(金) 08:21:33.93ID:KJTjy0eMM ビジネスロジックをストアドに集めるってのは
見たことあるなぁ。
既存言語はFEP構築だけに使う。
どちらかに徹底してりゃ良いんじゃね。鼻ホジ
見たことあるなぁ。
既存言語はFEP構築だけに使う。
どちらかに徹底してりゃ良いんじゃね。鼻ホジ
584デフォルトの名無しさん (ペラペラ SD12-0TUM)
2018/07/13(金) 12:34:59.94ID:p9f6lddDD585デフォルトの名無しさん (ワッチョイ 6a9d-X7oo)
2018/07/13(金) 14:43:56.67ID:0KYXvOut0 DBのバージョンアップじゃなくてリプレイスで
システムをリプレイスしない案件なんてほぼ考えられん
システムをリプレイスしない案件なんてほぼ考えられん
586デフォルトの名無しさん (ブーイモ MMc9-FUtQ)
2018/07/13(金) 15:22:59.85ID:r56MKyepM 可能な限り全部SQLでいいよ
多くの場合SQLの方が圧倒的に簡潔だしテストも容易だし
ストアドは管理が面倒だし見通しも悪いからソースに書きたいが
多くの場合SQLの方が圧倒的に簡潔だしテストも容易だし
ストアドは管理が面倒だし見通しも悪いからソースに書きたいが
587デフォルトの名無しさん (ワンミングク MM7a-ZTCE)
2018/07/13(金) 16:31:35.87ID:JMEmIQPoM SQLに書いてもいいけどシステムが死ぬまで面倒を見て、他のメンテナーに迷惑をかけないでくださいね
588デフォルトの名無しさん (オッペケ Srbd-mxjo)
2018/07/14(土) 14:54:07.96ID:pS7j55swr データベースにSQLite使ってるんだけど、データ量が増えたらSELECTがクッソ重くて無反応になる
無料でもっとまともなDBってないかな?
無料でもっとまともなDBってないかな?
589デフォルトの名無しさん (ワッチョイ 5e93-4MXr)
2018/07/14(土) 14:57:09.03ID:8JxBJ14s0 そもそもインデックスとか
ちゃんと使ってるのかね
ちゃんと使ってるのかね
590デフォルトの名無しさん (オッペケ Srbd-mxjo)
2018/07/14(土) 15:00:44.83ID:pS7j55swr もちろん
591デフォルトの名無しさん (ブーイモ MMc9-FUtQ)
2018/07/14(土) 15:02:50.58ID:LIsDU/xsM PostgreSQLだな
592デフォルトの名無しさん (ワッチョイ 6917-LQig)
2018/07/14(土) 15:06:32.58ID:EtwCAyCb0 C#から使うならSQLServerでしょ
593デフォルトの名無しさん (オッペケ Srbd-mxjo)
2018/07/14(土) 15:26:32.37ID:pS7j55swr どちらも無料なの?
594デフォルトの名無しさん (アウアウカー Sa55-tlpx)
2018/07/14(土) 15:40:56.72ID:jYJ6FXN8a >>579
nullで渡すと
nullで渡すと
595デフォルトの名無しさん (ワッチョイ 5d75-PdR6)
2018/07/14(土) 15:44:26.58ID:3U2LRmJo0 標準ライブラリのことでは?
596デフォルトの名無しさん (ワントンキン MM7a-ZTCE)
2018/07/14(土) 16:03:24.84ID:DkLuqI8LM プライベートの開発ではpostgresql一択
597デフォルトの名無しさん (ワッチョイ 66c9-LQig)
2018/07/14(土) 16:12:40.69ID:XotIEGF50598デフォルトの名無しさん (オッペケ Srbd-mxjo)
2018/07/14(土) 16:56:06.37ID:pS7j55swr599デフォルトの名無しさん (アウアウウー Sa21-FUtQ)
2018/07/14(土) 16:57:19.10ID:pGWO+29la 無料ならSQLServerはかなり制限がある
PostgreSQLは完全に無料で、性能・機能とも圧倒的に上
SQL ServerはWin上でGUIでお手軽に運用できるしMS製品で完結するのでドカタには愛されてる
PostgreSQLは完全に無料で、性能・機能とも圧倒的に上
SQL ServerはWin上でGUIでお手軽に運用できるしMS製品で完結するのでドカタには愛されてる
600デフォルトの名無しさん (ワッチョイ 5d75-PdR6)
2018/07/14(土) 16:59:28.09ID:3U2LRmJo0 俺はデータをカテゴリに分けてそれぞれに専用のテーブルを用意して振り分けて高速化したことある
601デフォルトの名無しさん (ワッチョイ b5b3-qWm8)
2018/07/14(土) 17:06:29.29ID:zT+O/n6K0 PostgreとMySQL比べるとどんな感じ?
602デフォルトの名無しさん (ワッチョイ 6681-38gj)
2018/07/14(土) 17:06:52.80ID:bK14KKak0 >>599
かなりって例えば?
ストアドも使えるしDBサイズも10GBまで使えるし基本問題ないっしょ。サイズ超えそうになったらバックアップDBとしてアーカイブすりゃいいしね。C#ならSQLServerがいいよ
かなりって例えば?
ストアドも使えるしDBサイズも10GBまで使えるし基本問題ないっしょ。サイズ超えそうになったらバックアップDBとしてアーカイブすりゃいいしね。C#ならSQLServerがいいよ
603デフォルトの名無しさん (ワッチョイ b5b3-qWm8)
2018/07/14(土) 17:09:02.22ID:zT+O/n6K0 俺もSQLServer使ってたけど10GB制限がキツイし全てのレコードを読めないと不都合だから別のDB探してたけどMySQL使おうかと思ってたところだった
604デフォルトの名無しさん (ワントンキン MM7a-ZTCE)
2018/07/14(土) 17:18:11.14ID:DkLuqI8LM MySQLは共通テーブル式が使えなくて捨てた
605デフォルトの名無しさん (ブーイモ MM81-FUtQ)
2018/07/14(土) 17:25:20.01ID:FtH+pgzSM >>601
最近はPostgreSQLも盛り上がってるね
PostgreSQLは機能が非常に豊富で極めて柔軟、非定形データだろうが地理空間情報だろうが何でも扱える
ライセンスもMySQL(GPL)より緩い
最近はPostgreSQLも盛り上がってるね
PostgreSQLは機能が非常に豊富で極めて柔軟、非定形データだろうが地理空間情報だろうが何でも扱える
ライセンスもMySQL(GPL)より緩い
606デフォルトの名無しさん (オッペケ Srbd-mxjo)
2018/07/14(土) 17:25:32.60ID:pS7j55swr607デフォルトの名無しさん (ワッチョイ 5d75-PdR6)
2018/07/14(土) 17:27:38.30ID:3U2LRmJo0 マシンにDBサーバーをたてるんだろ
608デフォルトの名無しさん (ワッチョイ b5b3-qWm8)
2018/07/14(土) 17:30:16.00ID:zT+O/n6K0 >>604-605
なるほどありがとう
それならせっかくだしそっちにしてみようかな
SQLServerはEntityFramework簡単に使えたけどもPostgreSQLもライブラリとか使いやすいのかな?
MySQLは接続文字列がおかしいのかテーブル指定がおかしいのかイマイチ上手く動かせなかった
なるほどありがとう
それならせっかくだしそっちにしてみようかな
SQLServerはEntityFramework簡単に使えたけどもPostgreSQLもライブラリとか使いやすいのかな?
MySQLは接続文字列がおかしいのかテーブル指定がおかしいのかイマイチ上手く動かせなかった
609デフォルトの名無しさん (ワッチョイ b69f-rNvr)
2018/07/14(土) 19:18:56.84ID:VO5okbkP0 ASP.NET Core MVCはオワコンになって今後はASP.NET Core Razorが主流になっていく感じですか?
610デフォルトの名無しさん (ワッチョイ 6ad2-zHc1)
2018/07/14(土) 19:54:51.34ID:GmLXhPvN0 >>609
お前なんか勘違いしてんぞ
お前なんか勘違いしてんぞ
611デフォルトの名無しさん (ブーイモ MMc9-EWaj)
2018/07/15(日) 10:06:31.58ID:vbOfg8AFM 今は各言語ごとにフルスタックのフレームワークがあるけど無駄に見える
どれか一個がセンターにあって後は各言語対応のAPI提供というパターンにならないのか
どれか一個がセンターにあって後は各言語対応のAPI提供というパターンにならないのか
612デフォルトの名無しさん (アウアウウー Sa21-FUtQ)
2018/07/15(日) 10:20:38.72ID:aio6qM3qa 少なくとも.NETはASP.NET Coreが統一フレームワーク
613デフォルトの名無しさん (ワッチョイ 5e3b-C8NM)
2018/07/15(日) 10:33:05.77ID:X2092vNg0 まさに.NETのことだね
614デフォルトの名無しさん (ブーイモ MMc9-EWaj)
2018/07/15(日) 10:46:24.73ID:CFAGuM1zM 各言語ごとにフルスタックフレームあるけど
シェア3位のdjangoすら5%以下らしい
それ以下のASP.Net coreの存在意義がかなり薄いと思うけどないといけないものなのか
シェア3位のdjangoすら5%以下らしい
それ以下のASP.Net coreの存在意義がかなり薄いと思うけどないといけないものなのか
615デフォルトの名無しさん (オッペケ Srbd-mxjo)
2018/07/15(日) 10:54:00.74ID:7Enq42ndr616デフォルトの名無しさん (オッペケ Srbd-mxjo)
2018/07/15(日) 10:55:19.57ID:7Enq42ndr Coreは存在すらしていないっぽいな
617デフォルトの名無しさん (ブーイモ MM81-FUtQ)
2018/07/15(日) 10:59:15.18ID:upsCSZLnM 検索でClassic ASP.NET/MVC/Coreは区別がつかないから混ざってるんだろ
618デフォルトの名無しさん (スププ Sd0a-C8NM)
2018/07/15(日) 11:08:09.00ID:p0LeSK9sd Coreじゃなくても.NETなら多言語対応だし
619デフォルトの名無しさん (スッップ Sd0a-zHc1)
2018/07/15(日) 12:32:26.47ID:mrrFOD8id >>616
StackOverflowのデータ見てみろよ
StackOverflowのデータ見てみろよ
620デフォルトの名無しさん (オッペケ Srbd-mxjo)
2018/07/15(日) 12:53:44.01ID:7Enq42ndr なんかSQLiteがおっせーって書いた者だけど、他のサーバー型SQLよりぶっ飛びで速いんだな
このまま使い続けるか
このまま使い続けるか
621デフォルトの名無しさん (ワッチョイ 6681-38gj)
2018/07/15(日) 14:17:55.92ID:LJ5Na9vP0622デフォルトの名無しさん (ワッチョイ ea21-d8J1)
2018/07/15(日) 19:34:53.12ID:Bovqh3Um0 使ったことないからよく知らんけどローカルファイルへのアクセスだからレイテンシが小さいとか?
623デフォルトの名無しさん (バットンキン MM69-0TUM)
2018/07/15(日) 20:22:37.76ID:5Xgvchi7M javaに比べると圧倒的に仕事が少ないC#ですがjavaの有償化で仕事は増えるでしょうか
624デフォルトの名無しさん (ワントンキン MM7a-ZTCE)
2018/07/15(日) 20:38:51.55ID:BpM21w6AM レガシーJavaをすぐさまC#に移植するってのは現実的じゃない
レガシーの面倒を見るためにとりあえず金を払ってライセンスを買うしかない
ライセンス買ったならじゃあいいかとなってJavaを引き続き使っていくことになる
レガシーの面倒を見るためにとりあえず金を払ってライセンスを買うしかない
ライセンス買ったならじゃあいいかとなってJavaを引き続き使っていくことになる
625デフォルトの名無しさん (ワッチョイ 5d75-PdR6)
2018/07/15(日) 20:54:44.00ID:31mTAsFB0 Java厨ザマアw
626デフォルトの名無しさん (ワッチョイ 66e8-LQig)
2018/07/15(日) 20:57:17.95ID:OJzI1T4t0 でもC#は無料なの?
いいえ、有償です
いいえ、有償です
627デフォルトの名無しさん (ワッチョイ 6681-/VsX)
2018/07/15(日) 20:59:55.51ID:WCfEKFtx0 大人しくオラクルのケツ舐めて1CPUあたり25ドル払っとけって
628デフォルトの名無しさん (ワッチョイ 5d75-PdR6)
2018/07/15(日) 21:00:24.79ID:31mTAsFB0 2ドルだろ
629デフォルトの名無しさん (ワッチョイ b69f-rNvr)
2018/07/16(月) 01:40:16.05ID:0WZqyTt50 application/jsonを使ったRPCの実装方法でスタンダードなやり方ってありますか?
ぐぐってもREST APIの実装方法ばっかり出てくるんですが…
ぐぐってもREST APIの実装方法ばっかり出てくるんですが…
630デフォルトの名無しさん (ワッチョイ 5e93-4MXr)
2018/07/16(月) 03:10:13.20ID:yOmS9IaY0631デフォルトの名無しさん (ワッチョイ ea8a-dbYN)
2018/07/16(月) 03:53:04.58ID:M+rWa9nq0 >>609
MVCのVの部分がRazorエンジンになっただけやで。
MVCのVの部分がRazorエンジンになっただけやで。
632デフォルトの名無しさん (オッペケ Srbd-mxjo)
2018/07/16(月) 10:04:00.08ID:R/aUtilHr >>621
アプリ起動時とかにSQLからメモリテーブルにコピーして、追加更新削除があれば別スレッドでinoutする感じ?
アプリ起動時とかにSQLからメモリテーブルにコピーして、追加更新削除があれば別スレッドでinoutする感じ?
633デフォルトの名無しさん (ワッチョイ 1563-KCFg)
2018/07/16(月) 15:04:39.14ID:f5ww7Pxw0 プログラミング初心者なんですが、Randomオブジェクトの扱われ方がよく分かりません
なぜ別にクラスを作らなくてもインスタンスを生成出来るのでしょうか
なぜ別にクラスを作らなくてもインスタンスを生成出来るのでしょうか
634デフォルトの名無しさん (ワッチョイ 6a5d-WZyh)
2018/07/16(月) 15:14:56.71ID:Tg2I8Krt0 >>633
「なぜ class Random { ... } とクラスを定義しなくても new Random() と書けるのか?」
という質問なら、「Random クラスは最初から定義されてるから」が答えになると思います
質問の意図が違うなら、「XXXと書くのが正しいと思うが、実際にはYYYと書くのはなぜか?」
というように具体的なコードを交えてもう一度質問してもらえませんか?
「なぜ class Random { ... } とクラスを定義しなくても new Random() と書けるのか?」
という質問なら、「Random クラスは最初から定義されてるから」が答えになると思います
質問の意図が違うなら、「XXXと書くのが正しいと思うが、実際にはYYYと書くのはなぜか?」
というように具体的なコードを交えてもう一度質問してもらえませんか?
635デフォルトの名無しさん (ワッチョイ 1563-KCFg)
2018/07/16(月) 15:17:03.84ID:f5ww7Pxw0 >>634
それで合ってます 返答どうもです
それで合ってます 返答どうもです
636デフォルトの名無しさん (ワッチョイ 6db5-p+0f)
2018/07/16(月) 15:18:23.77ID:MLoWNAtR0 usingで指定されて無いと幾ら最初から有っても使えないけどな。
637デフォルトの名無しさん (ワッチョイ 6db5-p+0f)
2018/07/16(月) 15:19:55.32ID:MLoWNAtR0 そう言う意味では、最初からusingでネームスペースが指定されているって言わないと正しくない。
638デフォルトの名無しさん (ワントンキン MM7a-ZTCE)
2018/07/16(月) 15:21:33.95ID:fVJkfJ21M JSFみたいな使いやすいフレームワークねえかなぁ
C#は言語そのもののセンスは良いけどエコシステムがショボいよな
C#は言語そのもののセンスは良いけどエコシステムがショボいよな
639デフォルトの名無しさん (ワッチョイ 2a7f-L1xz)
2018/07/16(月) 15:50:12.73ID:jQHectJ10 >>636
namespace省略せずに書けば使えるぞ
namespace省略せずに書けば使えるぞ
640デフォルトの名無しさん (ワッチョイ 5d75-PdR6)
2018/07/16(月) 15:55:20.48ID:N67OeEDm0 >>634みたいにも?
641デフォルトの名無しさん (ワッチョイ eab3-ziCw)
2018/07/16(月) 15:58:33.82ID:XBIjWYki0642デフォルトの名無しさん (ワッチョイ 66c9-LQig)
2018/07/16(月) 16:00:41.87ID:CrUViZU+0 偶にこういうコード見かけるんだけど、コーディング規約に全部書けとかあるのかな?
using System.IO;
略
System.IO.File.ReadAllBytes(hoge);
using System.IO;
略
System.IO.File.ReadAllBytes(hoge);
643デフォルトの名無しさん (ワッチョイ 2a7f-L1xz)
2018/07/16(月) 16:54:46.97ID:jQHectJ10 自分が作っていないクラスを使用するのに必要なのはアセンブリ/COMの参照設定。
(基本的なアセンブリは最初から設定されてる)
usingするかはどうかは別の話。
参照していないのにusingだけ書いてももちろん使えない。
(基本的なアセンブリは最初から設定されてる)
usingするかはどうかは別の話。
参照していないのにusingだけ書いてももちろん使えない。
644デフォルトの名無しさん (ラクッペ MM6d-/VsX)
2018/07/16(月) 17:47:55.17ID:SOPUXhzxM645デフォルトの名無しさん (アウアウエー Sa52-4Kub)
2018/07/16(月) 18:31:19.12ID:zG1+5npqa >>642
そんな不合理な規約はないと信じたいねw
あえてフルネームで書くことを肯定できる(少なくとも否定的に思わない)ケースは
そのソースファイルでその名前空間の要素そ参照するのが1、2か所しかない場合ぐらいかなあ
意見は分かれるかもしれんが、バッティングを避ける目的ならエイリアスを使うのが普通でしょう
using IO = System.IO;
みたいに
そんな不合理な規約はないと信じたいねw
あえてフルネームで書くことを肯定できる(少なくとも否定的に思わない)ケースは
そのソースファイルでその名前空間の要素そ参照するのが1、2か所しかない場合ぐらいかなあ
意見は分かれるかもしれんが、バッティングを避ける目的ならエイリアスを使うのが普通でしょう
using IO = System.IO;
みたいに
646デフォルトの名無しさん (ワッチョイ eab3-ziCw)
2018/07/16(月) 19:06:40.67ID:XBIjWYki0647デフォルトの名無しさん (アウアウエー Sa52-4Kub)
2018/07/16(月) 19:11:38.45ID:zG1+5npqa 何言ってるのか意味わからないねw
648デフォルトの名無しさん (ワッチョイ 6a9d-X7oo)
2018/07/16(月) 19:29:52.77ID:65+uaC9H0 その名前空間を使うのがここだけだと思ってフルで書いたが
やっぱり他でも使ったのでusing追加した
元の箇所は直していない
まあ、そんな感じじゃないかと
やっぱり他でも使ったのでusing追加した
元の箇所は直していない
まあ、そんな感じじゃないかと
649デフォルトの名無しさん (ワッチョイ 6a5d-WZyh)
2018/07/16(月) 19:56:41.16ID:Tg2I8Krt0650デフォルトの名無しさん (ワッチョイ 6db5-p+0f)
2018/07/16(月) 21:01:32.11ID:MLoWNAtR0 同じ名前のクラスがあるんだよw
だからフルネームで書かないと怒られるんだw
だからフルネームで書かないと怒られるんだw
651デフォルトの名無しさん (ワッチョイ 59e3-RMv+)
2018/07/16(月) 21:45:18.03ID:PnkuF1BZ0 >>650
あるあるw
バッティングすると悪夢なのなw
曲線をPathって名前にしてファイルパスもPathって名前にして
usingを呼んじゃってからエラーが出たぜハイ直せってやられると最悪
せめて改名してからusing呼べやクソがって思うんだが
馬鹿な奴に限ってバッティングさせるし作業手順も考えない
しかもそれでコミットしてくる
あるあるw
バッティングすると悪夢なのなw
曲線をPathって名前にしてファイルパスもPathって名前にして
usingを呼んじゃってからエラーが出たぜハイ直せってやられると最悪
せめて改名してからusing呼べやクソがって思うんだが
馬鹿な奴に限ってバッティングさせるし作業手順も考えない
しかもそれでコミットしてくる
652デフォルトの名無しさん (オッペケ Srbd-mxjo)
2018/07/16(月) 22:03:10.98ID:0I7EzBy0r []で読み込むDLLの意味がよくわからない
どこで呼んでもいいみたいだけど、あれってどういう仕組みなの?
どこで呼んでもいいみたいだけど、あれってどういう仕組みなの?
653デフォルトの名無しさん (ワッチョイ 79d3-LQig)
2018/07/16(月) 22:12:47.48ID:Fqt7znsC0 ランタイムがLoadLibraryなりで動的にロードしてよろしくやってるだけやで
ネイティブ側を書いたことないとイメージしづらいのかもしらんが
ネイティブ側を書いたことないとイメージしづらいのかもしらんが
654デフォルトの名無しさん (ワントンキン MM7a-ZTCE)
2018/07/16(月) 22:24:51.27ID:fVJkfJ21M655デフォルトの名無しさん (ワッチョイ 5d75-PdR6)
2018/07/16(月) 22:25:49.96ID:N67OeEDm0 アホかな?
656デフォルトの名無しさん (ワッチョイ 59e3-RMv+)
2018/07/16(月) 22:32:54.10ID:PnkuF1BZ0657デフォルトの名無しさん (ワッチョイ 6db5-p+0f)
2018/07/16(月) 22:50:59.26ID:MLoWNAtR0 いやいや、それは例えが悪いだけで、マイクロソフト様ですら同じ名前のクラス名付けてて、たまにどっちだボケって聞いて来るからなぁ
658デフォルトの名無しさん (ワッチョイ 6ad2-zHc1)
2018/07/16(月) 23:09:50.26ID:m2D0dvJF0659デフォルトの名無しさん (ワントンキン MM7a-ZTCE)
2018/07/16(月) 23:16:42.09ID:fVJkfJ21M >>658
足りないってほどじゃないんだけどねー
直感的に挙動を理解しやすいJSFと比べてこっちはちょっと推測しにくい感じ
これを変えたいなら多分こうだろってのが閃きにくい
ドキュメントみれば解決するけど見ないでなんとなくで解決したいんだよね
足りないってほどじゃないんだけどねー
直感的に挙動を理解しやすいJSFと比べてこっちはちょっと推測しにくい感じ
これを変えたいなら多分こうだろってのが閃きにくい
ドキュメントみれば解決するけど見ないでなんとなくで解決したいんだよね
660デフォルトの名無しさん (ワッチョイ 6ad2-zHc1)
2018/07/16(月) 23:17:22.95ID:m2D0dvJF0 >>659
具体的に
具体的に
661デフォルトの名無しさん (アウアウウー Sa21-FUtQ)
2018/07/16(月) 23:23:08.13ID:tD8bNggya662デフォルトの名無しさん (ワッチョイ ea8a-Y7YF)
2018/07/17(火) 04:59:27.29ID:KftlrzGo0 blockingcollectionを使ってキューを作ろうと思ってます
そのキューの中にデータを取り出すのではなく、データがあるかないかを確認したいのだけども
それってどうやって実現できるでしょうか?
そのキューの中にデータを取り出すのではなく、データがあるかないかを確認したいのだけども
それってどうやって実現できるでしょうか?
663デフォルトの名無しさん (アウアウウー Sa21-FUtQ)
2018/07/17(火) 07:44:52.51ID:xIcozahsa >>662
できない
BlockingCollection.GetEnumeratorで取得した列挙子は既にコレクションから削除された要素を返す可能性があるから、要素の存在確認には使用できない
それが必要なら普通のQueueをロックして使おう
BlockingCollectionはProducer-Consumerパターンを実装するための特殊なコレクションで、取得と消費は基本的に分離不可能な操作として扱う
できない
BlockingCollection.GetEnumeratorで取得した列挙子は既にコレクションから削除された要素を返す可能性があるから、要素の存在確認には使用できない
それが必要なら普通のQueueをロックして使おう
BlockingCollectionはProducer-Consumerパターンを実装するための特殊なコレクションで、取得と消費は基本的に分離不可能な操作として扱う
664デフォルトの名無しさん (ワッチョイ 6db5-p+0f)
2018/07/17(火) 08:21:55.96ID:9WzYNMpJ0 なぜキューを使わず違うものでキューみたいなものを作るのか?
665デフォルトの名無しさん (ワッチョイ 25d2-qJjT)
2018/07/17(火) 09:13:46.43ID:JRPSvXt/0 【毒素ためる、制汗″】 Ban、Ag、 8×4が <乳癌> <鼻炎> <ワキガ> の原因になっている!?
http://rosie.5ch.net/test/read.cgi/liveplus/1531621398/l50
くさいくさい
http://rosie.5ch.net/test/read.cgi/liveplus/1531621398/l50
くさいくさい
666デフォルトの名無しさん (ラクッペ MM6d-/VsX)
2018/07/17(火) 09:57:15.28ID:ZMugNBvxM >>662
Count
Count
667デフォルトの名無しさん (ワッチョイ 59e3-LQig)
2018/07/17(火) 11:05:47.08ID:we+kZK/d0 >>662
Any()はだめ?
Any()はだめ?
668デフォルトの名無しさん (JP 0H7a-ZAMG)
2018/07/17(火) 12:01:54.65ID:5aCAbGPrH669デフォルトの名無しさん (JP 0H7a-ZAMG)
2018/07/17(火) 12:04:20.14ID:5aCAbGPrH670デフォルトの名無しさん (アウアウエー Sa52-4Kub)
2018/07/17(火) 12:10:59.29ID:G5IVIkIla671デフォルトの名無しさん (スップ Sd0a-Y7YF)
2018/07/17(火) 17:47:09.52ID:bja0VNMZd672デフォルトの名無しさん (オイコラミネオ MM92-xqu7)
2018/07/17(火) 19:12:27.90ID:TPR76IZRM この本読み込めば中級者って本ないん?
独習C#新版と
実戦で役立つc#プログラミング
あたりですか?
独習C#新版と
実戦で役立つc#プログラミング
あたりですか?
673デフォルトの名無しさん (ワッチョイ 66c9-LQig)
2018/07/17(火) 19:14:26.70ID:LTVxWI1Y0 BlockingCollectionはコレクションの要素が取れるまでブロックし続けるから、peekとか削除とか考えずに済むから楽なのにな
まあ>>670の通り他と連動してコレクションにとどめておく必要があるんだろうけどさ
まあ>>670の通り他と連動してコレクションにとどめておく必要があるんだろうけどさ
674デフォルトの名無しさん (ブーイモ MMc9-Y8gp)
2018/07/17(火) 21:31:50.07ID:k6KsTxhHM675デフォルトの名無しさん (ワッチョイ 6917-LQig)
2018/07/17(火) 21:58:58.79ID:0bp3oS7H0 コピペを繰り返していたら3年やろうが10年やろうが初心者のままだぞ気をつけろ
676デフォルトの名無しさん (ワッチョイ 59e3-RMv+)
2018/07/17(火) 21:59:23.64ID:JBBJUfmR0 いや、今ならVRエロゲ一本作れば中級者
677デフォルトの名無しさん (ワントンキン MM7a-ZTCE)
2018/07/17(火) 22:03:58.19ID:vVWTH+iBM むやみに書くより良書を読んだほうがいい
読んだ内容を実践して身につける
読んだ内容を実践して身につける
678デフォルトの名無しさん (ワッチョイ 59e3-RMv+)
2018/07/17(火) 22:10:31.97ID:JBBJUfmR0 俺は〜の作り方的な
作り進めていく形式のがオススメ
作り進めていく形式のがオススメ
679デフォルトの名無しさん (ブーイモ MMc9-FUtQ)
2018/07/17(火) 22:19:09.18ID:8FZ8qVPxM 〜の作り方的な本は、言語が分かってない段階だと本当に手順を追うだけになってしまって何一つ頭に残らないからお勧めできない
まあ頭使わずに何かやってる気にはなれるから勉強が苦手でどうしてもモチベーションが続かない人にはいいのかもね
まあ頭使わずに何かやってる気にはなれるから勉強が苦手でどうしてもモチベーションが続かない人にはいいのかもね
680デフォルトの名無しさん (ワッチョイ 66e8-LQig)
2018/07/17(火) 22:28:45.89ID:A75xOI8y0 おらにも良書おしえい
>>674
結構ハードルが高いですね…
結構ハードルが高いですね…
682デフォルトの名無しさん (ワッチョイ 5d1e-EBXJ)
2018/07/17(火) 22:58:06.26ID:s7VdXjPi0 一番いいのは作りたいアプリがあってそれを作る。アプリ作りを通して色々考えることがでてきだろう。最初は一人よがりなプログラムになるかもしれんがそれが第一歩だな。
683デフォルトの名無しさん (ワッチョイ de1b-xorT)
2018/07/17(火) 23:18:31.59ID:JTS2mYBv0 >>672
MSの公式ドキュメント
MSの公式ドキュメント
684デフォルトの名無しさん (ワッチョイ 66e8-LQig)
2018/07/17(火) 23:27:52.79ID:A75xOI8y0 ここまで0冊
685デフォルトの名無しさん (ワッチョイ 66e8-LQig)
2018/07/17(火) 23:32:23.19ID:A75xOI8y0 >>672
まずは独習でいいと思う
これで基本機能が理解できたら
Linqや非同期、マルチコア専門の教本もあるから気になったら読めばいい
これらは重要だし独習が終わればよく理解できると思う
実践で役立つ〜はちょっとわからない
まずは独習でいいと思う
これで基本機能が理解できたら
Linqや非同期、マルチコア専門の教本もあるから気になったら読めばいい
これらは重要だし独習が終わればよく理解できると思う
実践で役立つ〜はちょっとわからない
686デフォルトの名無しさん (スッップ Sd0a-+P7Y)
2018/07/17(火) 23:39:41.63ID:JKMrilxjd 書籍なんて最近手出してないけどeffectiveって無いの?
C+やstlでは結構お世話になったけど
C+やstlでは結構お世話になったけど
687デフォルトの名無しさん (ワッチョイ 7983-Y8gp)
2018/07/17(火) 23:41:42.83ID:ofYg0nnt0 >>674
10万行の間違いだろ。
10万行の間違いだろ。
688デフォルトの名無しさん (ワッチョイ 2a7f-L1xz)
2018/07/17(火) 23:47:31.06ID:WCI1fetR0 >>672
独習C#新版が終わったらレポートよろしくね
独習C#新版が終わったらレポートよろしくね
690デフォルトの名無しさん (ワッチョイ b69f-rNvr)
2018/07/18(水) 00:21:32.09ID:WfV71rrt0 dotnet aspnet-codegeneratorってwindowsでしかうごかんの?
691デフォルトの名無しさん (ワッチョイ 6681-+P7Y)
2018/07/18(水) 02:04:04.67ID:ohWLsVDp0 >>688
やっぱあるよね
感覚的にはeffectiveに書いてある内容がとりあえず理解できて実践しだしたら中級者なイメージ
上級者っていうとmvpクラスと同等の知識レベルとかになるのかなぁ
mvpもいろいろあって基準としては曖昧かもしれんが
やっぱあるよね
感覚的にはeffectiveに書いてある内容がとりあえず理解できて実践しだしたら中級者なイメージ
上級者っていうとmvpクラスと同等の知識レベルとかになるのかなぁ
mvpもいろいろあって基準としては曖昧かもしれんが
692デフォルトの名無しさん (ワッチョイ 6681-+P7Y)
2018/07/18(水) 02:09:13.63ID:ohWLsVDp0 1000行なんて時には1日で書く程度のアプリ10本作ったところで…
だからって10万行のアプリなんて、それほんとに10万行必要だったの?プラグイン1個居れたら数万行不要になるんじゃない?って気もする
そもそも行数で語る時点でおかしい訳だけど
プログラム未経験は別として経験者なら一言語の中級者になるのに3年もかけてたら上級者になる頃にはその言語消えてんじゃね?って思う
だからって10万行のアプリなんて、それほんとに10万行必要だったの?プラグイン1個居れたら数万行不要になるんじゃない?って気もする
そもそも行数で語る時点でおかしい訳だけど
プログラム未経験は別として経験者なら一言語の中級者になるのに3年もかけてたら上級者になる頃にはその言語消えてんじゃね?って思う
693デフォルトの名無しさん (スップ Sdea-Y7YF)
2018/07/18(水) 07:35:29.71ID:604NWUGLd 一時的にスリープのように任意のスレッドの処理を停止させて
別スレッドがある処理をしたら停止スレッドが動き始めるような形を作りたいです
waitforsingleobject以外に実現方法ありますか
別スレッドがある処理をしたら停止スレッドが動き始めるような形を作りたいです
waitforsingleobject以外に実現方法ありますか
694デフォルトの名無しさん (スッップ Sd0a-zHc1)
2018/07/18(水) 07:37:13.37ID:gGGdDmmqd >>693
なぜそんなことしたいの?
なぜそんなことしたいの?
695デフォルトの名無しさん (スップ Sdea-Y7YF)
2018/07/18(水) 07:40:12.26ID:604NWUGLd >>694
Aスレッド、Bスレッドがあって
Aスレッドはたまっているリクエストを非同期で投げ続けています
リクエストは一つずつ送らないといけない制約があるため
その応答が来るまでAスレッドを停止させたいです
応答というのがBスレッドの処理です
Aスレッド、Bスレッドがあって
Aスレッドはたまっているリクエストを非同期で投げ続けています
リクエストは一つずつ送らないといけない制約があるため
その応答が来るまでAスレッドを停止させたいです
応答というのがBスレッドの処理です
696デフォルトの名無しさん (スッップ Sd0a-zHc1)
2018/07/18(水) 07:51:29.32ID:gGGdDmmqd >>695
普通にasync/awaitじゃだめなの?
普通にasync/awaitじゃだめなの?
697デフォルトの名無しさん (ワッチョイ 6a11-w0lO)
2018/07/18(水) 09:20:45.30ID:W2UhJLr+0 待機するAスレッドがUIスレッドとかいう状態でもなければ
それこそ関数直接コールでも良さそうなもんだけど
それこそ関数直接コールでも良さそうなもんだけど
698デフォルトの名無しさん (ササクッテロル Spbd-p+0f)
2018/07/18(水) 10:14:35.95ID:IWAo5nUlp じゃあセマホ使えよ。
699デフォルトの名無しさん (アウアウエー Sa52-4Kub)
2018/07/18(水) 12:17:19.01ID:TKyRL/+ma A案:リクエストのキューを投げる側ではなく受ける側に持たせる
B案:リクエストを投げるメソッドのデリゲートのキューをリクエストを受ける側に持たせる
B案:リクエストを投げるメソッドのデリゲートのキューをリクエストを受ける側に持たせる
700デフォルトの名無しさん (ワッチョイ 8954-nsuX)
2018/07/18(水) 13:53:18.95ID:imuZ+lX20 会社クラスを作りインナークラスで部署クラスを作ったのですが、インナークラスの使い方として間違っていないでしょうか
なんかMS意図と違う使い方をしてる気がしておりまして
なんかMS意図と違う使い方をしてる気がしておりまして
701デフォルトの名無しさん (ワンミングク MM7a-ZTCE)
2018/07/18(水) 14:21:30.22ID:JHZwBCBgM 間違いです
702デフォルトの名無しさん (ワッチョイ 7983-Y8gp)
2018/07/18(水) 14:39:45.10ID:zONoZYnW0 IT業界は部署ごと社外に出向させられるとか日常茶飯事ですからね。
703デフォルトの名無しさん (ワッチョイ 6dbb-Qvid)
2018/07/18(水) 19:00:56.71ID:9N0yBnKk0 listviewを使って画像をドラッグした位置に挿入できるようなものを作りましたが、サムネイル表示(ViewプロパティをView.LargeIconに設定)だと移動後に一番後ろに来てしまいます
、どうすれば自由に画像を入れ替えれるのでしょうか?
、どうすれば自由に画像を入れ替えれるのでしょうか?
704デフォルトの名無しさん (ワッチョイ 1181-L1xz)
2018/07/18(水) 19:50:12.60ID:yFSY1wbO0705デフォルトの名無しさん (ワッチョイ 3dd2-9zcR)
2018/07/18(水) 21:41:28.47ID:ojmeEx4e0 >>704
内容にもよるんだろうけれど、きちんと動くプログラムを10本完成させたっていうのであれば、それなりに評価してよいと思う。
内容にもよるんだろうけれど、きちんと動くプログラムを10本完成させたっていうのであれば、それなりに評価してよいと思う。
706デフォルトの名無しさん (ワッチョイ 66c9-LQig)
2018/07/18(水) 21:49:23.42ID:GTM6kR3M0 仕事の山越えたからと社内文章読んでたら我が社のコーディング規約にvarとLINQ禁止とデカデカと書いてあってて笑ったwww
707デフォルトの名無しさん (ワッチョイ 6917-LQig)
2018/07/18(水) 21:53:50.99ID:iepCQJFn0 就職ガチャ失敗おめでとうございます
708デフォルトの名無しさん (スププ Sd0a-C8NM)
2018/07/18(水) 22:21:17.43ID:ptS24Bkdd >>706
LINQ禁止ってラムダ式使ったらだめってこと?
LINQ禁止ってラムダ式使ったらだめってこと?
709デフォルトの名無しさん (ワッチョイ 3633-CB8p)
2018/07/18(水) 22:30:15.87ID:MKYFu03e0 varだめってリテラシーならラムダもダメだろうね
710デフォルトの名無しさん (アウアウウー Sa21-Y8gp)
2018/07/18(水) 22:41:34.30ID:62X+9Moaa 短いコードのアプリでもちゃんと一般人の使用に耐えうるようになってるならいいだろう
機能的には十分でも無秩序にボタンが並んでるアプリは見ててつらい
機能的には十分でも無秩序にボタンが並んでるアプリは見ててつらい
711デフォルトの名無しさん (アウアウカー Sa55-eTBu)
2018/07/18(水) 23:09:23.95ID:/cNHsX3ta コントロールそこそこおいたまともなアプリなら1000行じゃおさまらんやろ
712デフォルトの名無しさん (ワッチョイ 6ad2-zHc1)
2018/07/18(水) 23:29:19.34ID:p8keSf810 >>706
C#の公式コーディング規約に真っ向から対立www
C#の公式コーディング規約に真っ向から対立www
713デフォルトの名無しさん (ワッチョイ 5e3b-C8NM)
2018/07/18(水) 23:39:58.45ID:rt2OOdjJ0 ラムダ式禁止とかC#使う価値半減だな
714デフォルトの名無しさん (ワントンキン MM7a-ZTCE)
2018/07/18(水) 23:43:15.56ID:dMzTHkZAM λ縛りはBダッシュ縛りマリオぐらいキツイ
715デフォルトの名無しさん (ワッチョイ 69d2-w0lO)
2018/07/18(水) 23:46:14.58ID:L7ofGWBt0 h
716デフォルトの名無しさん (ワッチョイ ffe8-H0hI)
2018/07/19(木) 00:18:15.44ID:mgU85F4C0 varってスコープが決まってたりよく使うもんだと思ってるんだけど
違うん?
あとコンパイル時に推論されるから実行速度には影響ないって考えていいの?
違うん?
あとコンパイル時に推論されるから実行速度には影響ないって考えていいの?
717デフォルトの名無しさん (ワッチョイ 9fd2-4ryk)
2018/07/19(木) 00:29:07.38ID:iwebbGhU0 >>716
明示的に型を示しても実行速度は変わりません
明示的に型を示しても実行速度は変わりません
718デフォルトの名無しさん (ワッチョイ ffe8-H0hI)
2018/07/19(木) 00:29:37.74ID:mgU85F4C0 >>717
ありがとうございます
ありがとうございます
719デフォルトの名無しさん (ワッチョイ ff8a-H0hI)
2018/07/19(木) 00:34:23.22ID:4jMcHp760 var myTable = new Dictionary<string, string>();
myTable.Add("Hokkaido", "Sapporo");
myTable.Add("Iwate", "Morioka");
myTable.Add("Miyagi", "Sendai");
//*1
var b = myTable.ContainsKey("Iwate");
if (b == true)
{
//*2
var s = myTable["Iwate"];
MessageBox.Show(s);
}
Dictionaryから特定の要素を探して、あれば表示するんですが
この*1 *2 をLINQを使って1行にしたいんですが、どうすればいいですか?
myTable.Add("Hokkaido", "Sapporo");
myTable.Add("Iwate", "Morioka");
myTable.Add("Miyagi", "Sendai");
//*1
var b = myTable.ContainsKey("Iwate");
if (b == true)
{
//*2
var s = myTable["Iwate"];
MessageBox.Show(s);
}
Dictionaryから特定の要素を探して、あれば表示するんですが
この*1 *2 をLINQを使って1行にしたいんですが、どうすればいいですか?
720デフォルトの名無しさん (ワッチョイ f7d2-zNEp)
2018/07/19(木) 00:38:57.36ID:5TJBBc7u0 継承について
スーパークラスAに始まり
class B : A
class C : B
class D : C
となった場合、
Dクラス内でAやBのクラスのフィールドやメソッドをを使いたくなった場合には
それぞれをインスタンス化をすれば使えると思いますが、
継承されていない場合はどうすれば良いのですか?
例えば、
スーパークラスX
class Y : X
class Z : Y
とい場合、class Aのメソッドやフィールドを使いたくなったときは、
どうやってクラスAを持ってくるのでしょうか?
継承をしなくても、そのクラスのメソッドやフィールドを持ってくる方法はありますか?
スーパークラスAに始まり
class B : A
class C : B
class D : C
となった場合、
Dクラス内でAやBのクラスのフィールドやメソッドをを使いたくなった場合には
それぞれをインスタンス化をすれば使えると思いますが、
継承されていない場合はどうすれば良いのですか?
例えば、
スーパークラスX
class Y : X
class Z : Y
とい場合、class Aのメソッドやフィールドを使いたくなったときは、
どうやってクラスAを持ってくるのでしょうか?
継承をしなくても、そのクラスのメソッドやフィールドを持ってくる方法はありますか?
721デフォルトの名無しさん (アウアウウー Sadb-4GkJ)
2018/07/19(木) 00:46:06.47ID:9fGOJ2HHa コンポジション
ZのフィールドやプロパティにAをもたせるだけ
ZのフィールドやプロパティにAをもたせるだけ
722デフォルトの名無しさん (ワッチョイ ffd3-H0hI)
2018/07/19(木) 00:56:15.63ID:OslD0F820 >>719
LINQ は集合に対して使うものなので、その例だと必要ない
if (myTable.TryGetValue("Iwate", out var s))
{
MessageBox.Show(s);
}
対象が複数あるならこう
var list = new[] { "Hokkaido", "Iwate", "Tokyo" };
var q = list
.Where(x=> myTable.ContainsKey(x))
.Select(x=> myTable[x]);
foreach (var s2 in q)
{
MessageBox.Show(s2);
}
LINQ は集合に対して使うものなので、その例だと必要ない
if (myTable.TryGetValue("Iwate", out var s))
{
MessageBox.Show(s);
}
対象が複数あるならこう
var list = new[] { "Hokkaido", "Iwate", "Tokyo" };
var q = list
.Where(x=> myTable.ContainsKey(x))
.Select(x=> myTable[x]);
foreach (var s2 in q)
{
MessageBox.Show(s2);
}
723デフォルトの名無しさん (アウアウウー Sadb-glQ9)
2018/07/19(木) 01:05:12.94ID:EPnya5cJa >>719
LINQ全く関係ないけど比較的新しいC#ならこう書ける
if (myTable.TryGetValue("Iwate", out var s)) MessageBox.Show(s);
どうしても単一ステートメントにしたいなら
myTable.TryGetValue("Iwate", out var s) ? MessageBox.Show(s) : DialogResult.None; とか
(myTable.TryGetValue("Iwate", out var s) ? (Action<string>)(x => MessageBox.Show(x)) : (Action<string>)(_ => {}))();
とか書けなくはないけど俺ならこんなの書いてきやがったらコードレビューで突き返す
LINQ全く関係ないけど比較的新しいC#ならこう書ける
if (myTable.TryGetValue("Iwate", out var s)) MessageBox.Show(s);
どうしても単一ステートメントにしたいなら
myTable.TryGetValue("Iwate", out var s) ? MessageBox.Show(s) : DialogResult.None; とか
(myTable.TryGetValue("Iwate", out var s) ? (Action<string>)(x => MessageBox.Show(x)) : (Action<string>)(_ => {}))();
とか書けなくはないけど俺ならこんなの書いてきやがったらコードレビューで突き返す
724デフォルトの名無しさん (スプッッ Sd3f-/JJK)
2018/07/19(木) 07:22:53.40ID:Y653MTcJd >>696
awaitでは上手く実現できなさそうな構造でした
https://msdn.microsoft.com/ja-jp/library/system.threading.monitor(v=vs.110).aspx
monitorクラスを使って実現できそうだなとなりました
ただこれのシグナルを投げるpulseとpulseallの違いがよくわかりません
pulseは変数で渡したオブジェクトのスレッドを、pulseallは渡すオブジェクトとか関係なくwaitで止まってるすべてのスレッドを動かす?
awaitでは上手く実現できなさそうな構造でした
https://msdn.microsoft.com/ja-jp/library/system.threading.monitor(v=vs.110).aspx
monitorクラスを使って実現できそうだなとなりました
ただこれのシグナルを投げるpulseとpulseallの違いがよくわかりません
pulseは変数で渡したオブジェクトのスレッドを、pulseallは渡すオブジェクトとか関係なくwaitで止まってるすべてのスレッドを動かす?
725デフォルトの名無しさん (スッップ Sdbf-4ryk)
2018/07/19(木) 07:52:34.10ID:pmdFJ8GPd726デフォルトの名無しさん (アウアウウー Sadb-rtlg)
2018/07/19(木) 07:53:35.73ID:EPnya5cJa727デフォルトの名無しさん (ワッチョイ 9f9d-yhN8)
2018/07/19(木) 10:16:19.48ID:cAPUq0O30 Aそのものは非同期(バックグラウンド)で動く必要があるとして
そもそもBが非同期で動く必要性がわからん
かならず応答きてから次をよぶんだろ?
そもそもBが非同期で動く必要性がわからん
かならず応答きてから次をよぶんだろ?
728デフォルトの名無しさん (アウアウエー Sadf-0r7x)
2018/07/19(木) 11:39:51.48ID:wWZN809Va むしろ一番の疑問は、
>リクエストは一つずつ送らないといけない制約がある
のであれば、キューを持つべきなのはリクエストを送る側ではなく受ける側なんじゃないか、
なぜリクエストを送る側に受ける側の都合に合わせる負担をさせるのか、
ってことだと思うけど、まあ話が曖昧過ぎてよくわからんね。
>リクエストは一つずつ送らないといけない制約がある
のであれば、キューを持つべきなのはリクエストを送る側ではなく受ける側なんじゃないか、
なぜリクエストを送る側に受ける側の都合に合わせる負担をさせるのか、
ってことだと思うけど、まあ話が曖昧過ぎてよくわからんね。
729719 (ワッチョイ ff8a-H0hI)
2018/07/19(木) 12:02:04.85ID:4jMcHp760 >>722
自分のコードだと野暮ったくて古い感じがしたんですが
out var なるものを使ってすっきりさせるんですね
>>723
最近、ラムダ式やLINQを始めたんで↓みたいにメソッドチェーンで繋げたかったんですが
これだとやりすぎなんですねw
>> myTable.TryGetValue("Iwate", out var s) ? MessageBox.Show(s) : DialogResult.None; とか
>> (myTable.TryGetValue("Iwate", out var s) ? (Action<string>)(x => MessageBox.Show(x)) : (Action<string>)(_ => {}))();
>> とか書けなくはないけど俺ならこんなの書いてきやがったらコードレビューで突き返す
ありがとうございました
自分のコードだと野暮ったくて古い感じがしたんですが
out var なるものを使ってすっきりさせるんですね
>>723
最近、ラムダ式やLINQを始めたんで↓みたいにメソッドチェーンで繋げたかったんですが
これだとやりすぎなんですねw
>> myTable.TryGetValue("Iwate", out var s) ? MessageBox.Show(s) : DialogResult.None; とか
>> (myTable.TryGetValue("Iwate", out var s) ? (Action<string>)(x => MessageBox.Show(x)) : (Action<string>)(_ => {}))();
>> とか書けなくはないけど俺ならこんなの書いてきやがったらコードレビューで突き返す
ありがとうございました
730デフォルトの名無しさん (スプッッ Sd3f-FUqr)
2018/07/19(木) 12:23:58.43ID:apArmWopd 見やすくしたり行数減らす為の機能なのに一文に無理やり詰めたら見づらいだろうしな
LINQ使わなくても
;で終わらせた文を一列にずっと書き続けてたらなんだこいつってなるだろうし
LINQ使わなくても
;で終わらせた文を一列にずっと書き続けてたらなんだこいつってなるだろうし
731デフォルトの名無しさん (ブーイモ MM7b-klHS)
2018/07/19(木) 12:45:19.73ID:7c8TqsUTM MQ使えよ
732デフォルトの名無しさん (オッペケ Sr4b-Kbv3)
2018/07/19(木) 13:14:15.48ID:kD3lyTPJr varのメリットってなに?
733デフォルトの名無しさん (スフッ Sdbf-6Gsv)
2018/07/19(木) 14:01:22.48ID:goaSBPuMd >>732
定期的にこのスレを荒らすメリットがある。
定期的にこのスレを荒らすメリットがある。
734デフォルトの名無しさん (ワッチョイ 7783-4GkJ)
2018/07/19(木) 14:35:28.55ID:3tSlXwR10 10年で1スレも消費できないムラダ厨がまた初心者スレで暴れてるのか。
735デフォルトの名無しさん (ササクッテロル Sp4b-zvcE)
2018/07/19(木) 15:40:49.42ID:afTcWGfVp >>728
送る側で待たないと仕事を溜め込んだ受け側が最悪死ぬか無視する様になるぞ。
送る側で待たないと仕事を溜め込んだ受け側が最悪死ぬか無視する様になるぞ。
736デフォルトの名無しさん (アウアウエー Sadf-0r7x)
2018/07/19(木) 16:09:05.04ID:wWZN809Va >>735
意味わかんないよ
キューが満杯ならエンキューできないだけ。
そして、キューが満杯になるような事態が起こるかどうかは、キューを送る側受ける側
どちらが持つかという設計の問題とは何も関係がない。
送り側が持てばそんな事態は起こらない、などとはまったく言えない
意味わかんないよ
キューが満杯ならエンキューできないだけ。
そして、キューが満杯になるような事態が起こるかどうかは、キューを送る側受ける側
どちらが持つかという設計の問題とは何も関係がない。
送り側が持てばそんな事態は起こらない、などとはまったく言えない
737デフォルトの名無しさん (ワッチョイ ffed-4GkJ)
2018/07/19(木) 16:13:58.11ID:GVBKISLp0 共有メモリにFIFO作りたいのでサンプルコードください
738デフォルトの名無しさん (アウアウウー Sadb-4GkJ)
2018/07/19(木) 19:27:54.48ID:FFg3mKaqa >>737
基本的にスレチだな
基本的にスレチだな
739デフォルトの名無しさん (ワッチョイ f717-H0hI)
2018/07/19(木) 20:33:54.32ID:AM4tPqCx0 >>737
マルチ乙
マルチ乙
740デフォルトの名無しさん (ワントンキン MM7f-ArLl)
2018/07/19(木) 20:34:49.77ID:m5MPu7YPM バックグラウンドジョブをメモリに置いて管理するとクラッシュした時につらいのでやめてください
741デフォルトの名無しさん (ササクッテロル Sp4b-zvcE)
2018/07/19(木) 23:06:52.57ID:afTcWGfVp742デフォルトの名無しさん (ワッチョイ 9f7f-0FgR)
2018/07/19(木) 23:10:07.57ID:3HXgvZll0743デフォルトの名無しさん (ワッチョイ ffed-4GkJ)
2018/07/19(木) 23:16:09.86ID:GVBKISLp0 >>742
ありがとうございます
ありがとうございます
744デフォルトの名無しさん (アウアウエー Sadf-0r7x)
2018/07/19(木) 23:24:45.38ID:OO5CyzUia >>741
何を言ってんの。
ちゃんと自分の頭で考えて言ってる?
キューの容量が100だとする。
リクエストが100まで溜まってしまうかどうかは、キューをどちらが持つかと関係ないでしょ。
スループットはリクエストの処理能力で決まるんであって、キューをどっちが持つかで決まるんじゃない。
当たり前でしょ。
送る側が待てばたまらない?
それは受ける側がリクエスト拒否したらたまらないと言ってるのと同じ
君の世界じゃ、バケツリレーの余分なバケツの置き場所を送り元におくか送り先に置くかで
バケツの輸送能力(単位時間あたりの送れる水の量)が変わるの?
変わるわけがないでしょ
頼むよマジで
何を言ってんの。
ちゃんと自分の頭で考えて言ってる?
キューの容量が100だとする。
リクエストが100まで溜まってしまうかどうかは、キューをどちらが持つかと関係ないでしょ。
スループットはリクエストの処理能力で決まるんであって、キューをどっちが持つかで決まるんじゃない。
当たり前でしょ。
送る側が待てばたまらない?
それは受ける側がリクエスト拒否したらたまらないと言ってるのと同じ
君の世界じゃ、バケツリレーの余分なバケツの置き場所を送り元におくか送り先に置くかで
バケツの輸送能力(単位時間あたりの送れる水の量)が変わるの?
変わるわけがないでしょ
頼むよマジで
745デフォルトの名無しさん (ワッチョイ f7d2-zNEp)
2018/07/20(金) 00:04:31.35ID:K42rKqTp0746デフォルトの名無しさん (ワッチョイ 3781-0FgR)
2018/07/20(金) 00:15:51.43ID:v/t2rOLx0 >>745
クラスのインスタンスをメンバ変数などに設定して持つ
クラスのインスタンスをメンバ変数などに設定して持つ
747デフォルトの名無しさん (ブーイモ MM7b-klHS)
2018/07/20(金) 00:16:43.45ID:Cn0RK5hEM 配置計画
GOFはそちらを優先して説明しているが
GOFはそちらを優先して説明しているが
748デフォルトの名無しさん (ワッチョイ 171e-SQ69)
2018/07/20(金) 01:07:34.53ID:AsTO3swr0 持つと待つ
混ざりすぎじゃねぇの?
待つって言いたいんだよね?
混ざりすぎじゃねぇの?
待つって言いたいんだよね?
749デフォルトの名無しさん (オイコラミネオ MM4f-FMaE)
2018/07/20(金) 06:49:01.24ID:rjUp7fMrM750デフォルトの名無しさん (ワッチョイ 9f11-zNEp)
2018/07/20(金) 09:57:40.63ID:KW0DEJnu0751デフォルトの名無しさん (ササクッテロル Sp4b-zvcE)
2018/07/20(金) 10:43:27.30ID:aSukBuZjp752デフォルトの名無しさん (アウアウエー Sadf-0r7x)
2018/07/20(金) 10:47:52.01ID:j2kgPlBya >>751
まだ言ってるのか。
君の世界では
>送る側、更にそこに送る側、更に大元の送る行為を辞めされはいいって話
これが可能かどうかはリクエストのキューをどちらが持つかに依存するのか。
キューをリクエストの受け側が持ったらそれは出来ないのか。
意味が分からないよ
何が
>通信のフローコントロールの話と同じなんだよ?
だw
馬鹿過ぎて笑える
まだ言ってるのか。
君の世界では
>送る側、更にそこに送る側、更に大元の送る行為を辞めされはいいって話
これが可能かどうかはリクエストのキューをどちらが持つかに依存するのか。
キューをリクエストの受け側が持ったらそれは出来ないのか。
意味が分からないよ
何が
>通信のフローコントロールの話と同じなんだよ?
だw
馬鹿過ぎて笑える
753デフォルトの名無しさん (ラクッペ MM0b-3H7b)
2018/07/20(金) 10:50:07.22ID:GHEf7JCUM よそでやってくんねーかなクソカス
754デフォルトの名無しさん (ササクッテロル Sp4b-zvcE)
2018/07/20(金) 10:50:53.38ID:aSukBuZjp おまえ、目悪過ぎて呆れるわ。
持つなんて一言も言って無いだろw
待つだw マツ。
キューをどっちが持ってるかなんて話はしてない。
持つなんて一言も言って無いだろw
待つだw マツ。
キューをどっちが持ってるかなんて話はしてない。
755デフォルトの名無しさん (ブーイモ MM5b-4GkJ)
2018/07/20(金) 11:06:39.88ID:KI/QuNIvM アスペルガーの人はひとつのことしか同時にわからないから
二つ話題があることに気がつかない
その話題は持つであってるよ
二つ話題があることに気がつかない
その話題は持つであってるよ
756デフォルトの名無しさん (ササクッテロル Sp4b-zvcE)
2018/07/20(金) 11:16:02.27ID:aSukBuZjp >>755
まあ普通は受け取る側に郵便受けが無いと受け取る人はいちいち局留めの郵便を受け取りに行かなきゃならないんだけど、まあ、それはどちらでも機能するからあんまり争点にはならないけどね。
まあ普通は受け取る側に郵便受けが無いと受け取る人はいちいち局留めの郵便を受け取りに行かなきゃならないんだけど、まあ、それはどちらでも機能するからあんまり争点にはならないけどね。
757デフォルトの名無しさん (スププ Sdbf-DFDX)
2018/07/20(金) 13:07:56.71ID:aSN8UD58d バケツリレーの喩えでもスループットは変わっちゃうんだよな。
受け側に送信側が送信する総量より大きいバッファを持てば、スループットは水の入ったバケツを運ぶ時間に依存するだけで済む。
キューがそれより遅ければバケツを引き渡すために時間が余計にかかるわけだから、スループットは落ちる。
送信側にキューを持ったところで、送信側は送信処理に対して同期的に処理しないだけで済むだけで、そのキューからの送出がどんどん遅れるだろう。受け取ってくれないなら。
受け側に送信側が送信する総量より大きいバッファを持てば、スループットは水の入ったバケツを運ぶ時間に依存するだけで済む。
キューがそれより遅ければバケツを引き渡すために時間が余計にかかるわけだから、スループットは落ちる。
送信側にキューを持ったところで、送信側は送信処理に対して同期的に処理しないだけで済むだけで、そのキューからの送出がどんどん遅れるだろう。受け取ってくれないなら。
758デフォルトの名無しさん (ワッチョイ 17b3-H0hI)
2018/07/20(金) 13:54:59.01ID:gB9GbXMP0759デフォルトの名無しさん (ワッチョイ d763-ewJP)
2018/07/20(金) 21:28:53.81ID:OAXfUTo30 c=(a*a+b*b)
c=System.Math.Sprt(c)
これでcの平方根を出そうとしたのですがSystem.MathにSprtの定義がありませんと出ます
sharedevelopを使っています
c=System.Math.Sprt(c)
これでcの平方根を出そうとしたのですがSystem.MathにSprtの定義がありませんと出ます
sharedevelopを使っています
760デフォルトの名無しさん (ブーイモ MMcf-klHS)
2018/07/20(金) 21:32:35.58ID:XkM+nwLwM SQRT
761デフォルトの名無しさん (ブーイモ MMbf-rtlg)
2018/07/20(金) 21:35:00.80ID:6RzmSKAyM エディタの不具合だろ
SharpDevelopなどという化石は今すぐアンインストールしてVSかVSCodeを使え
SharpDevelopなどという化石は今すぐアンインストールしてVSかVSCodeを使え
762デフォルトの名無しさん (ブーイモ MMcf-klHS)
2018/07/20(金) 21:44:14.53ID:XkM+nwLwM 平方根の綴りが違う
763デフォルトの名無しさん (ワッチョイ 975d-egWL)
2018/07/20(金) 22:17:34.54ID:7jIkQpVM0 square rootだからねぇ
764デフォルトの名無しさん (ワッチョイ d763-ewJP)
2018/07/21(土) 00:28:32.93ID:WdWG9X6t0 ありがとうございます 解決しました
765デフォルトの名無しさん (ワッチョイ 9fe3-ol3M)
2018/07/21(土) 06:52:38.43ID:HGZKU0EK0 スパート!
766デフォルトの名無しさん (ワッチョイ 9f9d-gdxi)
2018/07/21(土) 13:53:42.54ID:aw31/LTY0 >>754
もともと
>キューを持つべきなのはリクエストを送る側ではなく受ける側なんじゃないか、
にたいして
>送る側で待たないと仕事を溜め込んだ受け側が最悪死ぬか無視する様になるぞ。
ってレスしてるのが発端なんだが
どうでもいい良いしよそでやって欲しいけど
もともと
>キューを持つべきなのはリクエストを送る側ではなく受ける側なんじゃないか、
にたいして
>送る側で待たないと仕事を溜め込んだ受け側が最悪死ぬか無視する様になるぞ。
ってレスしてるのが発端なんだが
どうでもいい良いしよそでやって欲しいけど
767デフォルトの名無しさん (ワッチョイ 97b5-zvcE)
2018/07/21(土) 14:14:10.21ID:IqGIA9LU0 話題が一変してんのにわざわざ掘り返すなよw
言ってる事とやってる事が矛盾してんぞw
言ってる事とやってる事が矛盾してんぞw
768デフォルトの名無しさん (ワッチョイ ff81-3H7b)
2018/07/21(土) 15:42:07.60ID:8fBGWCJL0 レスバトルって奴だろ
最後に言及した方が勝ちなんだって
これ見るといつも思うが、こういう馬鹿には自分自身を見る自意識がないのかね
最後に言及した方が勝ちなんだって
これ見るといつも思うが、こういう馬鹿には自分自身を見る自意識がないのかね
769デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/21(土) 20:00:10.16ID:rsQP0F780 たすけて!
Parallel.ForEachの中でデータグリッドの内容を更新してるんだけど
途中で爆発します
データグリッド全体に✕って出て非表示になる
データグリッドの更新処理はlockで囲ってても競合は起きちゃうものですか?
Parallel.ForEachの中でデータグリッドの内容を更新してるんだけど
途中で爆発します
データグリッド全体に✕って出て非表示になる
データグリッドの更新処理はlockで囲ってても競合は起きちゃうものですか?
770デフォルトの名無しさん (ワッチョイ f717-H0hI)
2018/07/21(土) 20:05:25.49ID:CBiNHREt0 まず原因を切り分けろ
Parallel.ForEachを外しても爆発するか確認するんだ
Parallel.ForEachを外しても爆発するか確認するんだ
771デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/21(土) 20:07:27.16ID:rsQP0F780772デフォルトの名無しさん (ワッチョイ 9f7f-0FgR)
2018/07/21(土) 20:08:57.28ID:gktKld7A0773デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 20:10:43.13ID:BEEMYUE30 >>771
Action<TLocal> localFinally の引数をとるオーバーロードを使ってみたらどうでしょう?
Action<TLocal> localFinally の引数をとるオーバーロードを使ってみたらどうでしょう?
774デフォルトの名無しさん (ブーイモ MMcf-rtlg)
2018/07/21(土) 20:10:44.76ID:H6KFndt4M >>768
君のレスを見るといつも思うが、こういう特徴のある口調のレスを繰り返す人には自分自身を見る自意識がないのかね
君のレスを見るといつも思うが、こういう特徴のある口調のレスを繰り返す人には自分自身を見る自意識がないのかね
775デフォルトの名無しさん (ワッチョイ bf99-DFDX)
2018/07/21(土) 20:10:59.84ID:nH897ECr0 invokeするか、ContextにPostするしか無いんじゃないかな
776デフォルトの名無しさん (ワッチョイ 9fb3-y/zy)
2018/07/21(土) 20:22:09.68ID:3bWsh9tI0777デフォルトの名無しさん (アウアウエー Sadf-0r7x)
2018/07/21(土) 20:22:10.55ID://qCwfF7a 爆発w
778デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/21(土) 20:24:00.77ID:rsQP0F780779デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 20:35:04.73ID:BEEMYUE30 私は >>773 ですが Invoke について自分があまり良く分かってない気がしてきたので
詳しい方がいらっしゃったら教えてください
UIスレッドで Parallel.ForEach を呼ぶとUIスレッドをつかんだまま並列処理が実行されて、
その並列処理のスレッドで Invoke を使うとデッドロックしてしまう気がするのですが
実際はそういうことはないのでしょうか?
詳しい方がいらっしゃったら教えてください
UIスレッドで Parallel.ForEach を呼ぶとUIスレッドをつかんだまま並列処理が実行されて、
その並列処理のスレッドで Invoke を使うとデッドロックしてしまう気がするのですが
実際はそういうことはないのでしょうか?
780デフォルトの名無しさん (ワッチョイ 9f9d-yhN8)
2018/07/21(土) 20:36:04.76ID:aw31/LTY0 マルチスレッドにしてInvokeしまくると結局パフォーマンスがガタ落ちしたりするがな
781デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 21:15:58.91ID:BEEMYUE30 >>779 です
WPF で下のようなコードを実行してみたらやっぱりデッドロックしてしまいました
Invoke はそれなりに慎重に使わないといけないみたいです
void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("このメッセージは必ず表示される");
Parallel.ForEach(Enumerable.Repeat(0, 2), i => Dispatcher.Invoke(() => { }));
MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}
ちなみに Enumerable.Repeat(0, 2) の部分を変えると以下のような挙動でした
Enumerable.Repeat(0, 0) に変える → デッドロックしない
Enumerable.Repeat(0, 1) に変える → デッドロックする
new int[] { } に変える → デッドロックしない
new int[] { 0 } に変える → デッドロックしない
new int[] { 0, 0 } に変える → デッドロックする
WPF で下のようなコードを実行してみたらやっぱりデッドロックしてしまいました
Invoke はそれなりに慎重に使わないといけないみたいです
void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("このメッセージは必ず表示される");
Parallel.ForEach(Enumerable.Repeat(0, 2), i => Dispatcher.Invoke(() => { }));
MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}
ちなみに Enumerable.Repeat(0, 2) の部分を変えると以下のような挙動でした
Enumerable.Repeat(0, 0) に変える → デッドロックしない
Enumerable.Repeat(0, 1) に変える → デッドロックする
new int[] { } に変える → デッドロックしない
new int[] { 0 } に変える → デッドロックしない
new int[] { 0, 0 } に変える → デッドロックする
782デフォルトの名無しさん (ワッチョイ 572b-lqiN)
2018/07/21(土) 21:16:52.59ID:1oayVCQs0 >>778
いいってことよ(´・ω・`)b
いいってことよ(´・ω・`)b
783デフォルトの名無しさん (ワッチョイ bf99-DFDX)
2018/07/21(土) 21:18:17.40ID:nH897ECr0 >>779
並列処理はUIスレッドではないスレッドで行われるよ。
いや、UIスレッドで行われるとは限らない、と言う言い方の方が正しいかな。
UIスレッドを掴んだままの意味がわからんが、挙動が謎なら、ブレークポイントつけて実行して、どのスレッドが何をしてるかを把握してはいかがだろうか。
今どのスレッドを使ってるかは表示されてるから。
並列処理はUIスレッドではないスレッドで行われるよ。
いや、UIスレッドで行われるとは限らない、と言う言い方の方が正しいかな。
UIスレッドを掴んだままの意味がわからんが、挙動が謎なら、ブレークポイントつけて実行して、どのスレッドが何をしてるかを把握してはいかがだろうか。
今どのスレッドを使ってるかは表示されてるから。
784デフォルトの名無しさん (ワッチョイ bf99-DFDX)
2018/07/21(土) 21:20:54.98ID:nH897ECr0 WPFかあ
785デフォルトの名無しさん (ワッチョイ 7feb-yhN8)
2018/07/21(土) 21:25:21.58ID:VW1YO4fA0 Windows版VSCodeで、monoを構文解析用のコンパイラとして指定することってできないのかな?
Unityの.Net4.0用プロジェクトで、数ヶ月前までは、.Net3.5用のSystem.Data.DLLを読み込んでくれたのにさあ
VisualStudioを更新したら構文解析用のコンパイラが変わったのか、古い.net3.5用のDLLを読み込んでくれなくて赤波線だらけになっちゃったぜ
4.0用のDLLもあるわけだけど、それを入れるとUnityのmonoの方でなぜかエラーを起こすし・・・どうしたら良いものか・・・・
Unityの.Net4.0用プロジェクトで、数ヶ月前までは、.Net3.5用のSystem.Data.DLLを読み込んでくれたのにさあ
VisualStudioを更新したら構文解析用のコンパイラが変わったのか、古い.net3.5用のDLLを読み込んでくれなくて赤波線だらけになっちゃったぜ
4.0用のDLLもあるわけだけど、それを入れるとUnityのmonoの方でなぜかエラーを起こすし・・・どうしたら良いものか・・・・
786デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 21:33:11.65ID:BEEMYUE30787デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 21:36:50.95ID:BEEMYUE30 Windows フォームで試してみたのでご報告を。
以下のコードを実行してみた結果、やっぱりデッドロックしてしまいました
Enumerable.Repeat(0, 2) を変えたときの挙動も >>781 と同じでした
void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("このメッセージは必ず表示される");
Parallel.ForEach(Enumerable.Repeat(0, 2), i => Invoke(new Action(() => { })));
MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}
以下のコードを実行してみた結果、やっぱりデッドロックしてしまいました
Enumerable.Repeat(0, 2) を変えたときの挙動も >>781 と同じでした
void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("このメッセージは必ず表示される");
Parallel.ForEach(Enumerable.Repeat(0, 2), i => Invoke(new Action(() => { })));
MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}
788デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/21(土) 22:26:34.46ID:rsQP0F780 えーわからん…
ちなみにフォームですビューです
つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか
それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが
uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか
ちなみにフォームですビューです
つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか
それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが
uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか
789デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 22:44:23.68ID:BEEMYUE30 >>788
あくまで私一人の考えですが・・・
[1] Invoke を使うと >>779 に書いたような理由でデッドロックするので
Parallel.ForEach でUIスレッドを使いたいなら >>773 のようにすべき
[2] しかし、同じく >>779 に書いたように Parallel.ForEach はUIスレッドを
つかんだまま並列処理を行うのでデータグリッドの更新処理だけ
Parallel.ForEach から切り出してもほとんど同じなのでは?
(一応 localFinally 中も他のスレッドは動けるので
そこで更新処理を行う方がいい場合もあるかもしれない)
[3] 並列処理が必要なほど大きな処理を行うなら、
一度UIスレッドを手放す選択肢も考えてみては?
ただ、Invoke がダメだと考えている人間自体が私だけのような気もするので
他の方の意見も聞いてみたほうがいいと思います
あと、[3] に関しては場合によりけりだと思うので、
具体的な処理内容を教えていただければ私の考えをお伝えしたいと思います
あくまで私一人の考えですが・・・
[1] Invoke を使うと >>779 に書いたような理由でデッドロックするので
Parallel.ForEach でUIスレッドを使いたいなら >>773 のようにすべき
[2] しかし、同じく >>779 に書いたように Parallel.ForEach はUIスレッドを
つかんだまま並列処理を行うのでデータグリッドの更新処理だけ
Parallel.ForEach から切り出してもほとんど同じなのでは?
(一応 localFinally 中も他のスレッドは動けるので
そこで更新処理を行う方がいい場合もあるかもしれない)
[3] 並列処理が必要なほど大きな処理を行うなら、
一度UIスレッドを手放す選択肢も考えてみては?
ただ、Invoke がダメだと考えている人間自体が私だけのような気もするので
他の方の意見も聞いてみたほうがいいと思います
あと、[3] に関しては場合によりけりだと思うので、
具体的な処理内容を教えていただければ私の考えをお伝えしたいと思います
790デフォルトの名無しさん (ワッチョイ 9f7f-0FgR)
2018/07/21(土) 22:55:07.29ID:gktKld7A0791デフォルトの名無しさん (ワッチョイ 9f7f-0FgR)
2018/07/21(土) 23:00:46.86ID:gktKld7A0 既に>>779に書いてあったね。その通り。
792デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 23:10:20.56ID:BEEMYUE30 >>790-791
レスありがとうございます
>>779 の考えで正しいのか不安だったのですがお陰様で自身が持てました
他に何かおかしなことを言ってしまっていたら教えていただけると嬉しいです
>>788
>>789 はレスとしてとっ散らかっている気がしてきたので一問一答で答えてみます
> つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか
Parallel を UI スレッドで実行する場合は悪手というか、致命的だと思います
> それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが
それなら期待通りの動作にはなると思います。ただ、確かにあまりいい方法ではないと思います
> uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか
正しく Invoke を使えば問題ないと思います
しかし今回の件からもわかるように、Invoke を正しく使うのはなかなか難しいようです
レスありがとうございます
>>779 の考えで正しいのか不安だったのですがお陰様で自身が持てました
他に何かおかしなことを言ってしまっていたら教えていただけると嬉しいです
>>788
>>789 はレスとしてとっ散らかっている気がしてきたので一問一答で答えてみます
> つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか
Parallel を UI スレッドで実行する場合は悪手というか、致命的だと思います
> それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが
それなら期待通りの動作にはなると思います。ただ、確かにあまりいい方法ではないと思います
> uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか
正しく Invoke を使えば問題ないと思います
しかし今回の件からもわかるように、Invoke を正しく使うのはなかなか難しいようです
793デフォルトの名無しさん (ワッチョイ d7b3-vUFk)
2018/07/21(土) 23:21:21.79ID:R8KbBSh90 .Invokeではなく.BeginInvokeを使うのはどう?
794デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 23:30:54.97ID:BEEMYUE30 >>793
それって
> それともThread生成してその中でParallelすれば良かったり…?
よりも更にワチャワチャする気がするのですがどうなんでしょう?
ワチャワチャって具体的にどういうことなのか
説明を求められれば頑張ってみようと思いますが、
自分の考えがあっているかも、それをうまく説明できるかどうかも
自信がないので、詳しい方の意見を聞けると嬉しいです
それって
> それともThread生成してその中でParallelすれば良かったり…?
よりも更にワチャワチャする気がするのですがどうなんでしょう?
ワチャワチャって具体的にどういうことなのか
説明を求められれば頑張ってみようと思いますが、
自分の考えがあっているかも、それをうまく説明できるかどうかも
自信がないので、詳しい方の意見を聞けると嬉しいです
795デフォルトの名無しさん (アウアウエー Sadf-0r7x)
2018/07/21(土) 23:41:01.32ID://qCwfF7a >>794
そんな難しい話じゃないっすよw
BeginInvokeは非同期に実行される、つまりキューにデリゲートを入れたらすぐに処理を返すので
Invokeのように自分で自分の終了を待機する状態に陥らない
そんな難しい話じゃないっすよw
BeginInvokeは非同期に実行される、つまりキューにデリゲートを入れたらすぐに処理を返すので
Invokeのように自分で自分の終了を待機する状態に陥らない
796デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/21(土) 23:43:41.94ID:rsQP0F780 >>792
有難う御座います
これで行けたので実装試してみます
void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("このメッセージは必ず表示される");
Task.Factory.StartNew(() =>
{
Parallel.ForEach(Enumerable.Repeat(0, 2), i => Invoke(new Action(() => { })));
}
MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}
有難う御座います
これで行けたので実装試してみます
void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("このメッセージは必ず表示される");
Task.Factory.StartNew(() =>
{
Parallel.ForEach(Enumerable.Repeat(0, 2), i => Invoke(new Action(() => { })));
}
MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}
797デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 23:55:52.12ID:BEEMYUE30798デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 00:03:07.23ID:qjdpSLXF0 >>797
データグリッドビューは進捗状況を見るために更新していて
1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます
ダメではなく単純に自分が分かってないだけです
この処理ならlocalFinallyが最適かもです
深く調べてみます
データグリッドビューは進捗状況を見るために更新していて
1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます
ダメではなく単純に自分が分かってないだけです
この処理ならlocalFinallyが最適かもです
深く調べてみます
799デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 00:13:38.17ID:IU6x2eOV0 >>798
> データグリッドビューは進捗状況を見るために更新していて
> 1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます
進捗状況の確認が必要なほど1行あたりの処理に時間がかかる理由は何でしょうか?
もしその理由が IO など、CPU 以外のところにあるのだとすれば、
Parallel.ForEach を使うこと自体を見直したほうがいいかもしれません
> この処理ならlocalFinallyが最適かもです
正直なところ、更新処理だけ切り出す方法よりも localFinally の方が
適切なケースはまれだと思います
ただ、localFinally の使い方がわかれば更新処理を Parallel.ForEach の外に
切り出す方法もわかると思うので、とりあえず調べてみて損はないと思います
> データグリッドビューは進捗状況を見るために更新していて
> 1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます
進捗状況の確認が必要なほど1行あたりの処理に時間がかかる理由は何でしょうか?
もしその理由が IO など、CPU 以外のところにあるのだとすれば、
Parallel.ForEach を使うこと自体を見直したほうがいいかもしれません
> この処理ならlocalFinallyが最適かもです
正直なところ、更新処理だけ切り出す方法よりも localFinally の方が
適切なケースはまれだと思います
ただ、localFinally の使い方がわかれば更新処理を Parallel.ForEach の外に
切り出す方法もわかると思うので、とりあえず調べてみて損はないと思います
800デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 00:23:24.78ID:qjdpSLXF0 >>799
圧縮ファイルを解凍して中のファイルを加工して再び圧縮し直す
これで1タスクです
1ファイル200MBほどで100ファイル以上処理することが多いです
圧縮解凍、加工は外部ツールを使用しててProcessStartInfoで処理されます
圧縮ファイルを解凍して中のファイルを加工して再び圧縮し直す
これで1タスクです
1ファイル200MBほどで100ファイル以上処理することが多いです
圧縮解凍、加工は外部ツールを使用しててProcessStartInfoで処理されます
801デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 00:35:58.51ID:IU6x2eOV0 >>800
なるほど〜
CPU 処理も IO もあって微妙なところですね
ちなみにその外部ツールはマルチスレッドを使うオプションはないでしょうか?
(例えば 7-zip.exe だと -mmt がそれにあたります)
もし外部ツールがマルチスレッドに対応してるなら、
並列処理はそっちに任せてしまうというのはどうでしょう?
または、外部ツールではなく SharpCompress のようなライブラリを使うことができれば、
C# によるより細かい制御も可能になると思います
なるほど〜
CPU 処理も IO もあって微妙なところですね
ちなみにその外部ツールはマルチスレッドを使うオプションはないでしょうか?
(例えば 7-zip.exe だと -mmt がそれにあたります)
もし外部ツールがマルチスレッドに対応してるなら、
並列処理はそっちに任せてしまうというのはどうでしょう?
または、外部ツールではなく SharpCompress のようなライブラリを使うことができれば、
C# によるより細かい制御も可能になると思います
802デフォルトの名無しさん (アウアウウー Sadb-rtlg)
2018/07/22(日) 00:37:18.94ID:gDKcX53ba 汎用的なものとは思えないし、動けばどうでもいいだろ
俺ならそういうのはいちいちGUI付けずにコンソールでやっちゃうな
俺ならそういうのはいちいちGUI付けずにコンソールでやっちゃうな
803デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 00:45:55.06ID:IU6x2eOV0 >>800
それともう一つ、外部ツールを呼び出すのにデフォルトの ParallelOptions で
Parallel.ForEach を呼び出すのはさすがにまずいと思います
ParallelOptions 自体に MaxDegreeOfParallelism というプロパティがありますし、
ParallelOptions の TaskScheduler プロパティに以下のような自前のスケジューラーを
設定すればより柔軟な並列処理を実現できると思います
同時実行の程度を制限するタスク スケジューラを作成する
https://msdn.microsoft.com/ja-jp/library/ee789351(v=vs.100).aspx
>>802
それは確かにw
完成したソフトによって得られる利益よりソフトを作るコストのほうが大きくなってしまったら
意味がないですからね
(ただしソフトによって得られる利益には開発者のスキルアップも含まれる・・・と言ってみたりw)
それともう一つ、外部ツールを呼び出すのにデフォルトの ParallelOptions で
Parallel.ForEach を呼び出すのはさすがにまずいと思います
ParallelOptions 自体に MaxDegreeOfParallelism というプロパティがありますし、
ParallelOptions の TaskScheduler プロパティに以下のような自前のスケジューラーを
設定すればより柔軟な並列処理を実現できると思います
同時実行の程度を制限するタスク スケジューラを作成する
https://msdn.microsoft.com/ja-jp/library/ee789351(v=vs.100).aspx
>>802
それは確かにw
完成したソフトによって得られる利益よりソフトを作るコストのほうが大きくなってしまったら
意味がないですからね
(ただしソフトによって得られる利益には開発者のスキルアップも含まれる・・・と言ってみたりw)
804デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 00:48:52.21ID:qjdpSLXF0 >>801
7zip使ってます
スレチになるけど
mmtは一つの処理をマルチに実行するものではないでしょうか
圧縮形式は決まってなく複数あるので7zipを使用してます
zip rar lzh以外にも色々
7zip使ってます
スレチになるけど
mmtは一つの処理をマルチに実行するものではないでしょうか
圧縮形式は決まってなく複数あるので7zipを使用してます
zip rar lzh以外にも色々
805デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 00:51:33.52ID:qjdpSLXF0806デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 00:54:31.49ID:IU6x2eOV0 >>804
> mmtは一つの処理をマルチに実行するものではないでしょうか
その通りです
したいことが「進捗状況を表示できるようにすること」と「並列化により処理時間を短縮すること」
だとすれば、それで問題ない(というかむしろその方が望ましい)の思うのですがいかがでしょうか?
> mmtは一つの処理をマルチに実行するものではないでしょうか
その通りです
したいことが「進捗状況を表示できるようにすること」と「並列化により処理時間を短縮すること」
だとすれば、それで問題ない(というかむしろその方が望ましい)の思うのですがいかがでしょうか?
807デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 00:59:41.83ID:IU6x2eOV0 >>805
MaxDegreeOfParallelism を使ってらっしゃるなら
とりあえず致命的にまずいことはないと思います
ただ、CPU だけじゃなく、同時に8つのファイルの読み書きを
求められる HDD さんの気持ちも考えてあげて・・・w
MaxDegreeOfParallelism を使ってらっしゃるなら
とりあえず致命的にまずいことはないと思います
ただ、CPU だけじゃなく、同時に8つのファイルの読み書きを
求められる HDD さんの気持ちも考えてあげて・・・w
808デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 01:01:31.55ID:qjdpSLXF0 >>806
後続の加工処理もありエラー監視も含むので進捗知りたいです
後続の加工処理もありエラー監視も含むので進捗知りたいです
809デフォルトの名無しさん (ワッチョイ 9f7f-0FgR)
2018/07/22(日) 01:03:03.89ID:SZ8yn9810 >>798
localFinallyよりasync/awaitの方が分かりやすいと思う。
private async void button1_Click( object sender, EventArgs e )
{
MessageBox.Show( "このメッセージは必ず表示される" );
await Task.Run( () =>
{
Parallel.ForEach( Enumerable.Repeat( 0, 2 ), i => Invoke( new Action( () => { } ) ) );
} );
MessageBox.Show( "デッドロックするとこのメッセージは表示されない" );
}
localFinallyよりasync/awaitの方が分かりやすいと思う。
private async void button1_Click( object sender, EventArgs e )
{
MessageBox.Show( "このメッセージは必ず表示される" );
await Task.Run( () =>
{
Parallel.ForEach( Enumerable.Repeat( 0, 2 ), i => Invoke( new Action( () => { } ) ) );
} );
MessageBox.Show( "デッドロックするとこのメッセージは表示されない" );
}
810デフォルトの名無しさん (アウアウウー Sadb-rtlg)
2018/07/22(日) 01:04:00.97ID:gDKcX53ba makefile使えば?
数行のMakefile書いて make -j8 するだけだよ
数行のMakefile書いて make -j8 するだけだよ
811デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 01:04:22.38ID:qjdpSLXF0812デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 01:18:41.37ID:IU6x2eOV0 >>808
Parallel.ForEach を使わなくてもそれはできると思うのですがいかがでしょうか?
>>809
確かにおっしゃる通りですね
後は好みの問題ですが、やはり私は1行ごとに Invoke するよりも
パフォーマンス的に有利な localFinally や更新処理の切り出しを推したいですw
>>811
なるほど!そうすれば外部ツールを使っても HDD へのアクセスだけ別に処理できますね
ただ、HDD へのアクセスを別にしようという意識をお持ちで、それだけのスキルもあるのなら、
外部ツールにこだわる必要はないのでは・・・という気もします
あと、メモリは HDD よりはずっと速いですが、CPU キャッシュとかの関係でやっぱり
8 個のファイルを同時に読み出すよりは1つずつの方が良いような気がします
Parallel.ForEach を使わなくてもそれはできると思うのですがいかがでしょうか?
>>809
確かにおっしゃる通りですね
後は好みの問題ですが、やはり私は1行ごとに Invoke するよりも
パフォーマンス的に有利な localFinally や更新処理の切り出しを推したいですw
>>811
なるほど!そうすれば外部ツールを使っても HDD へのアクセスだけ別に処理できますね
ただ、HDD へのアクセスを別にしようという意識をお持ちで、それだけのスキルもあるのなら、
外部ツールにこだわる必要はないのでは・・・という気もします
あと、メモリは HDD よりはずっと速いですが、CPU キャッシュとかの関係でやっぱり
8 個のファイルを同時に読み出すよりは1つずつの方が良いような気がします
813デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 01:27:28.49ID:IU6x2eOV0814デフォルトの名無しさん (ワッチョイ ff81-MwhK)
2018/07/22(日) 01:35:51.92ID:eU7Qw5rc0 そんな処理速度気にするなら複数PC用意できたりしないのかな?
たぶん内製ツールだと思うけど、そういうのって長期保守とかしないならシンプルでさくっとやれる方向を模索したほうがいい気が…
研究開発兼ねてとかだったらいいんだけど
たぶん内製ツールだと思うけど、そういうのって長期保守とかしないならシンプルでさくっとやれる方向を模索したほうがいい気が…
研究開発兼ねてとかだったらいいんだけど
815デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 01:43:37.75ID:qjdpSLXF0816デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 01:44:34.84ID:qjdpSLXF0 ほな寝ます。詳しくありがとうございました!
もしかしたら明日もっとやべーかもです
もしかしたら明日もっとやべーかもです
817デフォルトの名無しさん (ワンミングク MM7f-ArLl)
2018/07/22(日) 01:59:21.48ID:J1Nh86LOM var block = new ActionBlock<ZipOpParam>(
async (param) => {
await ExecuteZipOpAsync(param);
InvokeUpdateUi(param);
},
new ExecutionDataflowBlockOptions {
MaxDegreeOfParallelism = 8
});
foreach(var p in zipOpParams)
block.Post(p);
block.Complete();
await block.Completion;
async (param) => {
await ExecuteZipOpAsync(param);
InvokeUpdateUi(param);
},
new ExecutionDataflowBlockOptions {
MaxDegreeOfParallelism = 8
});
foreach(var p in zipOpParams)
block.Post(p);
block.Complete();
await block.Completion;
818デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 03:07:13.11ID:IU6x2eOV0 >>815
> そうです、最も投げやすく勝手にマルチしてくれる便利なParallelさんって聞いて使ってるます
これは私も同じように認識しています
> cpuキャッシュとか考慮せずマルチ=高速って誤認識で走ってきて
これは場合によりけりだと思います
特に今回のように外部ツール側でマルチスレッドにできる場合はツールの呼び出し側では
余計なことをせず外部ツールに任せたほうが高速になる場合が多いと思います
>>817
C# で並列処理を行うならこれは一つの解決策になりそうですね
別の解決策として、新たに参照を追加する必要のない↓の方法とかどうでしょう?
var tasks = new List<Task>();
foreach (var param in zipOpParams)
{
if (tasks.Count == 8) tasks.Remove(await Task.WhenAny(tasks));
tasks.Add(ExecuteZipOpAsync(param).ContinueWith(
_ => InvokeUpdateUi(param),
TaskScheduler.FromCurrentSynchronizationContext()));
}
await Task.WhenAll(tasks);
> そうです、最も投げやすく勝手にマルチしてくれる便利なParallelさんって聞いて使ってるます
これは私も同じように認識しています
> cpuキャッシュとか考慮せずマルチ=高速って誤認識で走ってきて
これは場合によりけりだと思います
特に今回のように外部ツール側でマルチスレッドにできる場合はツールの呼び出し側では
余計なことをせず外部ツールに任せたほうが高速になる場合が多いと思います
>>817
C# で並列処理を行うならこれは一つの解決策になりそうですね
別の解決策として、新たに参照を追加する必要のない↓の方法とかどうでしょう?
var tasks = new List<Task>();
foreach (var param in zipOpParams)
{
if (tasks.Count == 8) tasks.Remove(await Task.WhenAny(tasks));
tasks.Add(ExecuteZipOpAsync(param).ContinueWith(
_ => InvokeUpdateUi(param),
TaskScheduler.FromCurrentSynchronizationContext()));
}
await Task.WhenAll(tasks);
819デフォルトの名無しさん (ワッチョイ 9fe3-ol3M)
2018/07/22(日) 09:28:10.63ID:e8tLYzcQ0 違うexeキックすれば終わりなんやで?
820デフォルトの名無しさん (ワッチョイ d763-ylAy)
2018/07/22(日) 13:48:56.26ID:dLVAOvzX0 オブジェクト指向について勉強しようと思い、クラスを複数作って実行しようとしたら実行ボタンがプロセスにアタッチというよく分からない物に代わりビルドなども出来なくなってしまいました
どうしたら元に戻せるでしょうか
どうしたら元に戻せるでしょうか
821デフォルトの名無しさん (ラクッペ MM0b-3H7b)
2018/07/22(日) 15:37:48.37ID:X/YKRg9/M 参考にした資料がそう(実行ボタンをプロセスにアタッチ)しろと書いているなら
その手法でトラブった時の解決法も資料に書いてあるのでは
提示されたくらいの情報でここで帰ってくる答えは
「ゴミは捨てて作り直せ」
「一旦オブジェクト指向についての記憶を消せ」
だと思う
その手法でトラブった時の解決法も資料に書いてあるのでは
提示されたくらいの情報でここで帰ってくる答えは
「ゴミは捨てて作り直せ」
「一旦オブジェクト指向についての記憶を消せ」
だと思う
822デフォルトの名無しさん (ワッチョイ d763-ylAy)
2018/07/22(日) 19:34:11.94ID:dLVAOvzX0 このように実行ボタンがアタッチ…となりビルドも行えなくなってしまっています…
プログラムは「確かな力が身に付くc#超入門」から取っていて特にプロセスにアタッチに関する記述も無いので恐らく設定どこか変に弄ってしまったのかと思うのですが…
https://i.imgur.com/QK8r2yI.jpg
プログラムは「確かな力が身に付くc#超入門」から取っていて特にプロセスにアタッチに関する記述も無いので恐らく設定どこか変に弄ってしまったのかと思うのですが…
https://i.imgur.com/QK8r2yI.jpg
823デフォルトの名無しさん (ワッチョイ 9fd2-4ryk)
2018/07/22(日) 19:59:19.28ID:zgYMpfBL0 >>822
ソリューションエクスプローラーで当該プロジェクトを右クリック→スタートアッププロジェクトに設定(みたいなやつ)を選択
ソリューションエクスプローラーで当該プロジェクトを右クリック→スタートアッププロジェクトに設定(みたいなやつ)を選択
824デフォルトの名無しさん (ワッチョイ ff9a-Z9Wx)
2018/07/22(日) 20:02:21.74ID:2+gJNW3/0825デフォルトの名無しさん (ワッチョイ d763-ylAy)
2018/07/22(日) 20:13:04.82ID:dLVAOvzX0 >>823
やってみたのですがそれらしき項目がありませんでした…
やってみたのですがそれらしき項目がありませんでした…
826デフォルトの名無しさん (ワッチョイ d763-ylAy)
2018/07/22(日) 20:13:36.52ID:dLVAOvzX0 >>824
なるほどありがとうございます vsのスレで聞いてきます
なるほどありがとうございます vsのスレで聞いてきます
827デフォルトの名無しさん (ワッチョイ ff81-5o+W)
2018/07/23(月) 00:19:07.43ID:glq8mOZ10 revertしろや。意味もわからんだろうがな。
828デフォルトの名無しさん (ワッチョイ d763-ylAy)
2018/07/23(月) 01:08:12.51ID:7plYbgct0 >>827
じゃあなぜそれを言ったのでしょうか…
じゃあなぜそれを言ったのでしょうか…
829デフォルトの名無しさん (ワッチョイ 778a-klHS)
2018/07/23(月) 02:22:37.56ID:UcAZ2Awl0 ナチュラルマウンティング
830デフォルトの名無しさん (ブーイモ MM7b-5o+W)
2018/07/23(月) 09:39:14.18ID:GAsLkYgIM >>828
ググって勉強しろということだ
ググって勉強しろということだ
831デフォルトの名無しさん (ワッチョイ 7f9f-L2yr)
2018/07/24(火) 22:19:33.23ID:KA6Loe2t0 もしかしてASP.NETってJavaみたいなリッチで無料の拡張フレームワーク無いの?
832デフォルトの名無しさん (スププ Sdbf-KceU)
2018/07/24(火) 22:26:36.90ID:9BkrBjXcd833デフォルトの名無しさん (ワッチョイ 9f9d-gdxi)
2018/07/25(水) 13:43:12.86ID:rJjy6ITv0 きもは「リッチ」で「拡張」ってことだろ
つまりどんなものを指してるのか全く分からんがな
つまりどんなものを指してるのか全く分からんがな
834デフォルトの名無しさん (ブーイモ MMbf-rtlg)
2018/07/25(水) 14:20:20.79ID:HwnrNSAwM Classic ASP.NETは拡張性とかガン無視でMSがデフォルトで提供するお仕着せのものだけ覚りゃ一通りできるっていうドカタ向けフレームワークだぞ
Springみたいなのがお好みならASP.NET Core使え
Springみたいなのがお好みならASP.NET Core使え
835デフォルトの名無しさん (ワッチョイ 9f9d-yhN8)
2018/07/25(水) 17:37:41.34ID:rJjy6ITv0836デフォルトの名無しさん (ワッチョイ 9f9b-MwhK)
2018/07/25(水) 22:02:27.35ID:LjfK0h7i0 すれ違いで書き込んだ者ですが、こういう連続線をC♯を使って、方眼風の画面にクリックして一番近い座標点から始まり次のクリック座標点って感じで連続線を描きたいんですが、なんか参考になる本だとかサイトってありませんか?
https://i.imgur.com/Emj85bk.jpg
https://i.imgur.com/Emj85bk.jpg
837デフォルトの名無しさん (スププ Sdbf-KceU)
2018/07/25(水) 22:16:28.94ID:QC64Azkrd >>836
Graphicsクラスを使って自分で線描画するのが手っ取り早いからこのあたりかな
https://dobon.net/vb/dotnet/graphics/drawrectangle.html
Graphicsクラスを使って自分で線描画するのが手っ取り早いからこのあたりかな
https://dobon.net/vb/dotnet/graphics/drawrectangle.html
838デフォルトの名無しさん (ワッチョイ ff9a-Z9Wx)
2018/07/25(水) 22:56:32.30ID:oxjpcelO0 >>837
そのページは閉じた図形だな。
>>836
同じdobonで
折れ線を描く(DrawLinesメソッド)
https://dobon.net/vb/dotnet/graphics/drawline.html#fold
そのページは閉じた図形だな。
>>836
同じdobonで
折れ線を描く(DrawLinesメソッド)
https://dobon.net/vb/dotnet/graphics/drawline.html#fold
839デフォルトの名無しさん (ワッチョイ 7f9f-L2yr)
2018/07/25(水) 23:40:00.99ID:sTP5vmoc0 >>834
ASP.NET CoreってPrimeFacesのような無料で便利なライブラリあるの?
商用ならWijmoやTelerik色など々あるようだけど有料はちょっとね
拡張すりゃ出来るとかハンドラ書けばできるとかそんなのは当たり前の事だけど
そんな車輪の再発明に工数が出るわけがないし
ASP.NET CoreってPrimeFacesのような無料で便利なライブラリあるの?
商用ならWijmoやTelerik色など々あるようだけど有料はちょっとね
拡張すりゃ出来るとかハンドラ書けばできるとかそんなのは当たり前の事だけど
そんな車輪の再発明に工数が出るわけがないし
840デフォルトの名無しさん (スププ Sdbf-KceU)
2018/07/25(水) 23:47:26.31ID:QC64Azkrd 無料ライブラリなんかnugetでなんぼでもインストールできるだろ
841デフォルトの名無しさん (ワッチョイ c69f-5Vmn)
2018/07/26(木) 00:19:33.20ID:aLLF0qhM0 >>840
具体的にはどのパッケージですか?
具体的にはどのパッケージですか?
842デフォルトの名無しさん (アウアウウー Sa43-Hl5m)
2018/07/26(木) 07:51:00.77ID:qCaaK3zMa843デフォルトの名無しさん (オッペケ Sr47-GgdS)
2018/07/26(木) 14:29:55.52ID:ujIuVWNLr ライブラリ不要レベルやん
マウス位置とライン引くだけだし
マウス位置とライン引くだけだし
844デフォルトの名無しさん (ワッチョイ e383-tjON)
2018/07/26(木) 14:36:43.63ID:rEhHpU7y0 PictureBoxがあればなんだってできるみたいな
845デフォルトの名無しさん (ドコグロ MMea-WSYg)
2018/07/26(木) 16:41:36.62ID:EX1pNRMXM 文字の折返しさえできたら実はなんでもいい
846デフォルトの名無しさん (スププ Sd32-KqpP)
2018/07/26(木) 16:48:08.19ID:lkW5ctngd >>843
誰もライブラリ使えなんて言ってないだろ
誰もライブラリ使えなんて言ってないだろ
847デフォルトの名無しさん (ワントンキン MM42-ylDe)
2018/07/26(木) 19:08:23.29ID:BBodZQOSM >>842
そういう使い方はNGですね
サーバーサイドレンダリングが基本のフレームワークとクライアントサイドのフレームワークは常識的に考えてインピーダンスミスマッチでしょう
(primefacesのように最初からセットで設計されてるならともかく)
それならまだaspnet coreはapiに徹してangularやreact使ったほうがマシです
そういう使い方はNGですね
サーバーサイドレンダリングが基本のフレームワークとクライアントサイドのフレームワークは常識的に考えてインピーダンスミスマッチでしょう
(primefacesのように最初からセットで設計されてるならともかく)
それならまだaspnet coreはapiに徹してangularやreact使ったほうがマシです
848デフォルトの名無しさん (ブーイモ MM5b-Hl5m)
2018/07/26(木) 19:18:37.89ID:IphAgnBQM849デフォルトの名無しさん (ワッチョイ 5e8a-3ouB)
2018/07/26(木) 19:30:12.58ID:36qwSZL10 C#で、VPN経由でCiscoのL2スイッチにログインしてフォワーディングデータベースと各ポートのステータスを取得したいんですが、
簡単に解説しているサイトはないでしょうか?
クライアントを動かすPC - HUB - NATルーター - VPNルーター - ネット - VPNルーター - HUB - Ciscoルーター - 目当てのCisco L2スイッチ
ていう状態です。
簡単に解説しているサイトはないでしょうか?
クライアントを動かすPC - HUB - NATルーター - VPNルーター - ネット - VPNルーター - HUB - Ciscoルーター - 目当てのCisco L2スイッチ
ていう状態です。
850デフォルトの名無しさん (ワッチョイ 16e8-4UL4)
2018/07/26(木) 19:41:22.79ID:jgVPt9Lg0 LinQの中身ってfor文ってホント?
851デフォルトの名無しさん (ワッチョイ f317-53i4)
2018/07/26(木) 19:42:46.48ID:CSIl69XB0 アイドルグループの中身は知りません
852デフォルトの名無しさん (ワッチョイ 16e8-4UL4)
2018/07/26(木) 19:49:11.86ID:jgVPt9Lg0 LinQクラスの各メソッドの中身の味方教えてください
853デフォルトの名無しさん (スッップ Sd32-UO0F)
2018/07/26(木) 19:51:33.98ID:XPlHGtVDd >>852
github
github
854デフォルトの名無しさん (ワッチョイ d27f-J6FL)
2018/07/26(木) 19:55:09.78ID:gWAgddOO0855デフォルトの名無しさん (ワッチョイ 929d-cPc7)
2018/07/26(木) 20:49:53.68ID:X2GH2dHI0 >>847
NGかどうかはお前の都合だがな
ASP.NETでもWebFormあたりは、サーバ側とクライアント側の統合を目指してたんだよ
クライアントスクリプト一切書かなくてもAJAXできるコントロールとかまであった
だが今の流れはサーバサイドはサーバサイド、クライアントはクライアントな流れ
クライアントはすきなライブラリ使え
>それならまだaspnet coreはapiに徹して
apiに徹するのと、html出力に徹するのとどれほどの違いがあると?
NGかどうかはお前の都合だがな
ASP.NETでもWebFormあたりは、サーバ側とクライアント側の統合を目指してたんだよ
クライアントスクリプト一切書かなくてもAJAXできるコントロールとかまであった
だが今の流れはサーバサイドはサーバサイド、クライアントはクライアントな流れ
クライアントはすきなライブラリ使え
>それならまだaspnet coreはapiに徹して
apiに徹するのと、html出力に徹するのとどれほどの違いがあると?
856デフォルトの名無しさん (ワッチョイ c69f-5Vmn)
2018/07/26(木) 20:51:44.84ID:aLLF0qhM0 >>848
ASP.NET Coreと相性いいのは無いね
ASP.NET Coreと相性いいのは無いね
857デフォルトの名無しさん (ブーイモ MM32-tjON)
2018/07/26(木) 20:59:07.08ID:0BZQ2aB/M ASP.NETの問題というよりC#自体がwebのフレームワークと相性が悪いような…
おとなしくtypescript使ったほうが楽かなとは思う
おとなしくtypescript使ったほうが楽かなとは思う
858デフォルトの名無しさん (ワッチョイ c69f-5Vmn)
2018/07/26(木) 21:10:20.45ID:aLLF0qhM0 >>855
WebFormsの時からずっとだけど鯖で出力したhtmlやバックエンドの挙動を把握してJS書かないといけないからめんどくせえじゃん
なんのためにナマのhtmlを隠蔽したのかって話になる
htmlを隠蔽すると決めたなら徹底しなきゃならん
apiに徹すればクライアントはクライアントで綺麗に切れるからそんな煩わしさから開放される
WebFormsの時からずっとだけど鯖で出力したhtmlやバックエンドの挙動を把握してJS書かないといけないからめんどくせえじゃん
なんのためにナマのhtmlを隠蔽したのかって話になる
htmlを隠蔽すると決めたなら徹底しなきゃならん
apiに徹すればクライアントはクライアントで綺麗に切れるからそんな煩わしさから開放される
859デフォルトの名無しさん (ワッチョイ 4b9e-h/lP)
2018/07/26(木) 21:25:20.81ID:+zykdZnW0 LinQ は、Rails のQuery object と同じだろ
where 何々
order by 何々
別々に書いた文字列を、1つのSQL 文にまとめて、DB に問い合わせする
where 何々
order by 何々
別々に書いた文字列を、1つのSQL 文にまとめて、DB に問い合わせする
860デフォルトの名無しさん (ワッチョイ 92d2-UO0F)
2018/07/26(木) 21:32:16.74ID:Q5F+5vhQ0 >>857
ちょっと何言ってるかわからない
ちょっと何言ってるかわからない
861デフォルトの名無しさん (ワッチョイ 1680-P01o)
2018/07/26(木) 21:43:03.68ID:wePnpHti0862デフォルトの名無しさん (ワッチョイ 16e8-53i4)
2018/07/26(木) 21:45:25.99ID:F57VHmfS0 ソリューションエクスプローラーで.csファイルのなめえ変えてもデバッグできる?データ壊れない?
863デフォルトの名無しさん (ブーイモ MM32-tjON)
2018/07/26(木) 21:47:47.65ID:0BZQ2aB/M864デフォルトの名無しさん (ワッチョイ 16e8-53i4)
2018/07/26(木) 21:50:46.39ID:F57VHmfS0865デフォルトの名無しさん (ワッチョイ e383-tjON)
2018/07/26(木) 21:51:53.07ID:rEhHpU7y0 こういうハッキングの匂いがするやつは回答しないほうがいい
866デフォルトの名無しさん (ワッチョイ d27f-J6FL)
2018/07/26(木) 21:51:55.20ID:gWAgddOO0 >>862
ソリューションエクスプローラー上での名前の変更は問題なく出来る
ソリューションエクスプローラー上での名前の変更は問題なく出来る
867デフォルトの名無しさん (ブーイモ MM32-tjON)
2018/07/26(木) 21:53:30.55ID:0BZQ2aB/M git使わなくてもソリューションのフォルダごとコピーかzip圧縮でも十分だけど
868デフォルトの名無しさん (ワッチョイ 16e8-53i4)
2018/07/26(木) 21:55:22.46ID:F57VHmfS0869デフォルトの名無しさん (ワッチョイ 16e8-53i4)
2018/07/26(木) 21:59:28.86ID:F57VHmfS0870デフォルトの名無しさん (ワッチョイ 238a-nbnO)
2018/07/26(木) 22:20:23.27ID:uwMXaYNj0 >>868
javaとは違うんだよ
javaとは違うんだよ
871デフォルトの名無しさん (ワッチョイ b7d2-dWiX)
2018/07/26(木) 22:27:27.51ID:ySl3KkZ10 >>867
gitでもフォルダコピーでも、自由に試し放題なのは同じだが
gitだとフォルダコピーに該当する操作が一瞬なんだよね
フォルダコピーだとある程度大きいプロジェクトになるとプログレスバーを待たなきゃならん
gitでもフォルダコピーでも、自由に試し放題なのは同じだが
gitだとフォルダコピーに該当する操作が一瞬なんだよね
フォルダコピーだとある程度大きいプロジェクトになるとプログレスバーを待たなきゃならん
872デフォルトの名無しさん (ワッチョイ c69f-5Vmn)
2018/07/28(土) 08:21:01.22ID:IX5bbTr/0 DataAnnotationsの属性の組み合わせを新しい属性として定義することはできますか?
例えばFooIdは20文字以下で"^[A-Z]{5}-\d+$"にマッチしなければなりません
StringLengthAttributeとRegularExpressionAttributeを組み合わせて
FooIdAttribute := StringLengthAttribute(20) and RegularExpressionAttribute(@"^[A-Z]{5}-\d+$")
といったニュアンスでFooIdAttributeを定義したいのですが方法を探してもまったく見つかりません
もちろんValidationAttributeを継承してFooIdAttributeを作るだけなら出来ました
しかしこの方法ではASP.NETのクライアント検証やEFのコードファーストがStringLengthAttributeとRegularExpressionAttributeを認識してくれません
すべてを諦めて
「モデルプロパティとしてFooIdを使う時はstring型でプロパティを定義してStringLength(20)とRegularExpressionAttribute(@"^[A-Z]{5}-\d+$")をコピペすること」
といった実装ルールを定めてDRY違反には目をつぶるしかないのでしょうか
例えばFooIdは20文字以下で"^[A-Z]{5}-\d+$"にマッチしなければなりません
StringLengthAttributeとRegularExpressionAttributeを組み合わせて
FooIdAttribute := StringLengthAttribute(20) and RegularExpressionAttribute(@"^[A-Z]{5}-\d+$")
といったニュアンスでFooIdAttributeを定義したいのですが方法を探してもまったく見つかりません
もちろんValidationAttributeを継承してFooIdAttributeを作るだけなら出来ました
しかしこの方法ではASP.NETのクライアント検証やEFのコードファーストがStringLengthAttributeとRegularExpressionAttributeを認識してくれません
すべてを諦めて
「モデルプロパティとしてFooIdを使う時はstring型でプロパティを定義してStringLength(20)とRegularExpressionAttribute(@"^[A-Z]{5}-\d+$")をコピペすること」
といった実装ルールを定めてDRY違反には目をつぶるしかないのでしょうか
873デフォルトの名無しさん (ワンミングク MM42-ylDe)
2018/07/28(土) 09:32:16.19ID:rUA3L/4NM バリデーションに限った話ではなく属性のMixinができないのは言語仕様の欠陥
多重継承が可能なら悩むことなかったんだけど...
まあC# 9ではMixinがサポートされるらしいのでそれ以後は簡単になるだろう
それまでは諦めてコピペする以外ない
多重継承が可能なら悩むことなかったんだけど...
まあC# 9ではMixinがサポートされるらしいのでそれ以後は簡単になるだろう
それまでは諦めてコピペする以外ない
874デフォルトの名無しさん (アウアウウー Sa43-Hl5m)
2018/07/28(土) 09:50:11.05ID:Z2VlFyTVa パラメータだけconst stringにしとけ
875デフォルトの名無しさん (ワッチョイ 27b3-53i4)
2018/07/28(土) 16:04:28.18ID:xL2l+Gb50876デフォルトの名無しさん (ワンミングク MM42-ylDe)
2018/07/28(土) 16:54:36.21ID:Ls9tzaL9M >>875
ValidationAttributeはサーバーサイド検証はできるけどクライアントサイド検証やEFには効果がない(追加コードを書かなければ)
属性Mixin的なことができれば追加コードを何も書かずにそれらの収穫を得ることができたはずなんだ
ValidationAttributeはサーバーサイド検証はできるけどクライアントサイド検証やEFには効果がない(追加コードを書かなければ)
属性Mixin的なことができれば追加コードを何も書かずにそれらの収穫を得ることができたはずなんだ
877デフォルトの名無しさん (スププ Sd32-+DHK)
2018/07/28(土) 17:41:04.66ID:PBzjh5L/d878デフォルトの名無しさん (ワンミングク MM42-ylDe)
2018/07/28(土) 19:08:15.95ID:Ls9tzaL9M879デフォルトの名無しさん (アウアウウー Sa43-tjON)
2018/07/28(土) 21:33:59.64ID:ooB9UphUa 例がおかしいせいか正規表現で何とかしろって最初に見たとき思った
880デフォルトの名無しさん (ワッチョイ c69f-5Vmn)
2018/07/28(土) 21:46:45.51ID:IX5bbTr/0 TypeDescriptorで動的属性にしたけどダメだった
このFWカスタムしにくい
このFWカスタムしにくい
881デフォルトの名無しさん (ワッチョイ d29b-ILTU)
2018/07/29(日) 17:20:08.97ID:1IN8lfJM0 VB6のプログラムをC♯で書き直しをやってるんですが、複数あるフォームで毎度使うグローバル変数や定数ってどうしたら良いですか?
882デフォルトの名無しさん (ワッチョイ 02eb-x//5)
2018/07/29(日) 17:39:04.96ID:jELBj7vj0 それらを管理する構造体かクラスを作るのが良いでしょう
ただ、作り始める前に現代風のプログラミングの仕組みを勉強したほうが良いんじゃないかな
変数のスコープの問題として解決しようとする時点で基礎が出来ていない気がしてしまう
ただ、作り始める前に現代風のプログラミングの仕組みを勉強したほうが良いんじゃないかな
変数のスコープの問題として解決しようとする時点で基礎が出来ていない気がしてしまう
883デフォルトの名無しさん (ワッチョイ 929d-cPc7)
2018/07/29(日) 17:48:24.83ID:OsBw9Csr0884デフォルトの名無しさん (ワッチョイ b7d2-dWiX)
2018/07/29(日) 18:02:58.75ID:qyyXPeAu0 >>881
もう親フォームのpublicに置いちゃえば?
もう親フォームのpublicに置いちゃえば?
885デフォルトの名無しさん (アウアウウー Sa43-tjON)
2018/07/29(日) 19:28:22.30ID:w8CG8UOca Appに持たせる
886デフォルトの名無しさん (ワッチョイ d29b-ILTU)
2018/07/29(日) 19:28:43.90ID:1IN8lfJM0 親フォームにpublicに置くのがベターなのかね?楽でいいし。
887デフォルトの名無しさん (ワッチョイ 6fb5-WEB5)
2018/07/29(日) 19:32:07.48ID:0glkw7L10 普通は目的や用途に分けてベースクラスと機能クラスに分けて配置するだろ。
888デフォルトの名無しさん (アウアウウー Sa43-tjON)
2018/07/29(日) 19:32:52.42ID:w8CG8UOca 定数はクラスに持たせるべき
グローバル変数というものは存在しない
グローバル変数というものは存在しない
889デフォルトの名無しさん (ワッチョイ b39f-Fk8t)
2018/07/29(日) 19:36:39.97ID:LP0lwlvd0 public static read onlyをまとめたクラス1個作ればよくね?
890デフォルトの名無しさん (ワッチョイ d29b-ILTU)
2018/07/29(日) 19:42:49.43ID:1IN8lfJM0 やっぱクラスか。
891デフォルトの名無しさん (ワッチョイ 238a-nbnO)
2018/07/29(日) 22:10:08.10ID:UEZe9Eeh0 別に構造体でも良いのよ
892デフォルトの名無しさん (ワッチョイ 12d2-gjV1)
2018/07/29(日) 22:38:15.47ID:F0wMdqEY0 標準モジュール→Public Shared Class
893デフォルトの名無しさん (アウアウエー Saaa-zUMk)
2018/07/29(日) 22:43:45.68ID:ELcoO8zwa >>881
そんなものは無くすように書き直すのがベストでしょう
どうしてもというのならProgramにでも置く。
お勧めはしないけど、using static使えばVB6っぽく書けると思うw
https://ufcpp.net/study/csharp/ap_ver6.html#using-static
そんなものは無くすように書き直すのがベストでしょう
どうしてもというのならProgramにでも置く。
お勧めはしないけど、using static使えばVB6っぽく書けると思うw
https://ufcpp.net/study/csharp/ap_ver6.html#using-static
894デフォルトの名無しさん (ワッチョイ d29b-ILTU)
2018/07/29(日) 23:31:49.93ID:1IN8lfJM0 例えば何度も登場するファイル名とかパス名とかって使う時はどのようにします?
895デフォルトの名無しさん (ワッチョイ 169a-r0Mq)
2018/07/29(日) 23:33:57.49ID:caIFgm3n0 >>894
決まった値ならconst stringにしておけば間違う心配がない
決まった値ならconst stringにしておけば間違う心配がない
896デフォルトの名無しさん (ワッチョイ 03e3-WSYg)
2018/07/30(月) 00:08:07.54ID:VxehPTRB0 >>894
staticのメンバ変数
staticのメンバ変数
897デフォルトの名無しさん (アウアウウー Sa43-Hl5m)
2018/07/30(月) 00:08:34.88ID:rsToVW4ga898デフォルトの名無しさん (ドコグロ MM32-WSYg)
2018/07/30(月) 07:19:52.76ID:+iDwScmiM >>897
俺は何度も登場させた方がいい派
登場させないってことは定数であるにも関わらず変数に突っ込んで色んなとこ回して最後にそこに行き着く的なソースになんだろ?
定数なら検索したときに使用箇所がひと目でわかったほうがいいよ
俺は何度も登場させた方がいい派
登場させないってことは定数であるにも関わらず変数に突っ込んで色んなとこ回して最後にそこに行き着く的なソースになんだろ?
定数なら検索したときに使用箇所がひと目でわかったほうがいいよ
899デフォルトの名無しさん (アウアウウー Sa43-Hl5m)
2018/07/30(月) 07:36:32.18ID:rsToVW4ga900デフォルトの名無しさん (ワッチョイ 6fb5-WEB5)
2018/07/30(月) 09:05:26.71ID:Jg26N5KJ0 クラス内で何度も参照する事はあるだろうが、複数のクラスに跨って同じ定数を参照するってのは、
それ、たまたま同じなだけだから、まとめるのは誤りだろ?
それ、たまたま同じなだけだから、まとめるのは誤りだろ?
901デフォルトの名無しさん (ブーイモ MM0e-cnlH)
2018/07/30(月) 09:07:31.01ID:MG3uyJqBM 899に同意だな。おれがレビューしたら書き直させるわ。
902デフォルトの名無しさん (スプッッ Sd52-ILTU)
2018/07/30(月) 12:08:02.74ID:7haz7YgPd エクセルをデータベース接続して開いて閉じる。までは出来たのですがそこからシート2を選択して最終行まで読み込むにはどうしたら良いですか?
903デフォルトの名無しさん (ブーイモ MM5b-Hl5m)
2018/07/30(月) 12:10:36.96ID:5omRjmvzM まずVBAで書いて、意図どおりに動いたらそれを同じようにC#で書くだけ
VBAで動かないならスレ違い
VBAで動かないならスレ違い
904デフォルトの名無しさん (ワッチョイ 37c9-53i4)
2018/07/30(月) 12:14:41.69ID:KgGKmVLt0 >>902
接続したならシート名をテーブル名としてSELECT使えば最終行まで取れるはず
接続したならシート名をテーブル名としてSELECT使えば最終行まで取れるはず
905デフォルトの名無しさん (スプッッ Sd52-ILTU)
2018/07/30(月) 12:20:48.13ID:7haz7YgPd セレクトでググってみます!
906デフォルトの名無しさん (スプッッ Sd52-ILTU)
2018/07/30(月) 14:16:52.66ID:7haz7YgPd さっぱりわかりません。これをC♯でどうすればいいですか?
https://i.imgur.com/XlcEsOK.jpg
https://i.imgur.com/XlcEsOK.jpg
907デフォルトの名無しさん (ワッチョイ 238a-nbnO)
2018/07/30(月) 14:49:47.75ID:yNVCdeG40 窓から投げ捨てろ
908デフォルトの名無しさん (ワッチョイ 16e8-4UL4)
2018/07/30(月) 15:35:38.43ID:5x/p7Cmg0 コンボボックスのitem追加してるだけやん
909デフォルトの名無しさん (ワッチョイ 02eb-2QVD)
2018/07/30(月) 17:13:19.68ID:fEGsPpBX0 これ、出来上がるまでずっと聞きまくるわけかい?
910デフォルトの名無しさん (ワッチョイ 5e8a-9RIx)
2018/07/30(月) 17:49:14.69ID:7NTlHlZ80 とりあえずガチでまったくわからないなら、Do Until とかIf Thenみたいな処理の流れに関するとこから、C#に翻訳してみれ。
911デフォルトの名無しさん (ワッチョイ 92e3-53i4)
2018/07/30(月) 20:38:04.00ID:jheKbzlL0 >>906
SharpDevelopで変換できたりせんか?
SharpDevelopで変換できたりせんか?
912デフォルトの名無しさん (ワッチョイ 03e3-WSYg)
2018/07/30(月) 20:56:43.06ID:VxehPTRB0913デフォルトの名無しさん (ワッチョイ d27f-J6FL)
2018/07/30(月) 21:47:46.48ID:wGxxsVxc0 >>908
コメントにも書いてあるなw
コメントにも書いてあるなw
914デフォルトの名無しさん (ワッチョイ 92e3-53i4)
2018/07/31(火) 10:42:36.92ID:2Ex+HyWw0 >>912
VB6から直接はだめだろうな。VB.netを経由させて。
VB6から直接はだめだろうな。VB.netを経由させて。
915デフォルトの名無しさん (スプッッ Sd52-ILTU)
2018/07/31(火) 12:16:51.56ID:U+0KE03Yd 無事なんとか出来ました。
お騒がせしてすみません。
お騒がせしてすみません。
916デフォルトの名無しさん (ワッチョイ 7fad-tjON)
2018/08/01(水) 02:45:49.37ID:FqdJoFN10 VBを勉強しようかC#を勉強しようか迷ってるんですがVB(およびVBA)でできることはC#でもできると考えていいのでしょうか?
917デフォルトの名無しさん (ワッチョイ 9e1b-WsON)
2018/08/01(水) 06:48:32.72ID:l9oYGZY20 >>916
そんなのお前が出来るか、出来ないかによる
そんなのお前が出来るか、出来ないかによる
918デフォルトの名無しさん (ワッチョイ 03e3-WSYg)
2018/08/01(水) 07:02:36.02ID:rdkY69Yn0 >>916
いやc#やればいいよ
いやc#やればいいよ
919デフォルトの名無しさん (ワッチョイ 1e3b-KqpP)
2018/08/01(水) 07:13:07.63ID:qsg6KMIX0 VBAで出来てC#で出来ないことはある
920デフォルトの名無しさん (ワッチョイ 03e3-WSYg)
2018/08/01(水) 07:19:08.47ID:rdkY69Yn0 unityでサポートされてるのがc#だった気がする
921デフォルトの名無しさん (ワンミングク MM42-nbnO)
2018/08/01(水) 07:29:28.41ID:Y/cQkN27M922デフォルトの名無しさん (ワッチョイ 7fad-tjON)
2018/08/01(水) 07:53:12.90ID:FqdJoFN10 ありがとうございます
迷わずC#を勉強しようと思います
迷わずC#を勉強しようと思います
923デフォルトの名無しさん (スッップ Sd32-UO0F)
2018/08/01(水) 07:58:50.19ID:+mBt06Dyd RazorもC#
924デフォルトの名無しさん (ワッチョイ 129f-lgLX)
2018/08/01(水) 08:27:33.28ID:jJEMbL0b0 迷わず逝けよ逝けば分かるさ
925デフォルトの名無しさん (ワンミングク MM42-BbI7)
2018/08/01(水) 10:13:49.72ID:xEVWsek0M VS2013 で Process で別コンソールアプリを実行するプログラムを作っています。
OutputDataReceivedイベントで随時標準出力を取得したいのですがうまくいきません。
同じくVS2013C#で作ったコンソールアプリでのConsole.WriteLineならうまくいくのですが
VC++6.0 で printf 出力だと、ある程度溜まったタイミングでそれまでの出力が一気に来ます。
printfでもリアルタイムで取得できるようにできないでしょうか。
OutputDataReceivedイベントで随時標準出力を取得したいのですがうまくいきません。
同じくVS2013C#で作ったコンソールアプリでのConsole.WriteLineならうまくいくのですが
VC++6.0 で printf 出力だと、ある程度溜まったタイミングでそれまでの出力が一気に来ます。
printfでもリアルタイムで取得できるようにできないでしょうか。
926デフォルトの名無しさん (ササクッテロ Sp47-WEB5)
2018/08/01(水) 10:16:00.84ID:bFUL3z7Ep そりゃあ、ある程度溜まってから表示されるからじゃね?
927デフォルトの名無しさん (ブーイモ MM5b-Hl5m)
2018/08/01(水) 10:17:43.78ID:7O+dWvwKM flushしろ
対象に手を入れられないなら無理
対象に手を入れられないなら無理
928デフォルトの名無しさん (ブーイモ MM32-nbnO)
2018/08/01(水) 10:41:41.93ID:WxaG7LihM つ setvbuf
929デフォルトの名無しさん (ワンミングク MM42-BbI7)
2018/08/01(水) 13:34:26.08ID:xEVWsek0M930デフォルトの名無しさん (ワッチョイ c215-XuXc)
2018/08/01(水) 21:13:58.64ID:htMziwx30 resharper使ってる人感想教えて
勉強になるって書いてるブログもあったから
半額セール中に試してみようかなと
勉強になるって書いてるブログもあったから
半額セール中に試してみようかなと
931デフォルトの名無しさん (ワッチョイ f317-53i4)
2018/08/01(水) 21:15:10.33ID:soAz8ZFH0 ブログに書いてるんならそれを参考にすればいいじゃん
932デフォルトの名無しさん (アウアウウー Sa43-Hl5m)
2018/08/01(水) 22:14:32.39ID:+VbRL20ga resharper重いから嫌い
よく他の拡張と干渉して不具合起こすし、機能の頭数だけ多くて結局vsにデフォルトで搭載されてる機能と似たようなもの以外は滅多に使わなかった
vscodeが快適すぎて最近はC#もほとんどvscodeで書いてるわ
よく他の拡張と干渉して不具合起こすし、機能の頭数だけ多くて結局vsにデフォルトで搭載されてる機能と似たようなもの以外は滅多に使わなかった
vscodeが快適すぎて最近はC#もほとんどvscodeで書いてるわ
933デフォルトの名無しさん (ワッチョイ c215-XuXc)
2018/08/01(水) 22:38:33.79ID:htMziwx30 使用感産休ー
結局使わなくなっちゃうくらいもっさりは躊躇するな
俺のマシンそんな高性能じゃないし
結局使わなくなっちゃうくらいもっさりは躊躇するな
俺のマシンそんな高性能じゃないし
934デフォルトの名無しさん (スプッッ Sd1f-Bh6x)
2018/08/02(木) 12:35:14.33ID:atWDWRRZd 先日のお騒がせものですが、シートの中身入れることはできたんですが、今度はシート名をコンボボックスに入れるのにこれだとシート名が名前順に入るんですがシート順に入れるにはどうしたらできますか?
https://i.imgur.com/LxYIiyg.jpg
https://i.imgur.com/LxYIiyg.jpg
935デフォルトの名無しさん (ワッチョイ ff9d-w5ex)
2018/08/02(木) 13:28:17.69ID:CFW8XzdE0936デフォルトの名無しさん (ワッチョイ 7f60-9U+n)
2018/08/02(木) 14:17:24.55ID:B5uzr2w20937デフォルトの名無しさん (ブーイモ MM67-Eno9)
2018/08/02(木) 14:19:27.48ID:5ti5JZJPM >>935
フォントのレンダリングが美しくて見やすい
プラグインが豊富
一緒に他の言語のソースを編集する必要がある場合に完全にシームレスに行き来できる
プロジェクトファイルを直接テキストとして開ける(.NET Coreなら必須)
フォントのレンダリングが美しくて見やすい
プラグインが豊富
一緒に他の言語のソースを編集する必要がある場合に完全にシームレスに行き来できる
プロジェクトファイルを直接テキストとして開ける(.NET Coreなら必須)
938デフォルトの名無しさん (ワッチョイ 33d3-Xflc)
2018/08/02(木) 18:24:36.08ID:IKbU8cfg0 細かい話だけど.csprojのテキスト編集は.NET Coreプロジェクトだと
VSでもコンテキストメニューにあるのよね
まあIDEの立場としてはGUIが未実装故の手抜きと見做すべきだろうけどw
VSでもコンテキストメニューにあるのよね
まあIDEの立場としてはGUIが未実装故の手抜きと見做すべきだろうけどw
939デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
2018/08/02(木) 18:59:54.66ID:R3xyuwRy0 30年前のプログラミング環境に逆戻りですなw
940デフォルトの名無しさん (ブーイモ MM67-Eno9)
2018/08/02(木) 19:09:52.83ID:5ti5JZJPM >>939
設定を必要最小限にして極力テキストベースで完結させるのが今時の流行り
新形式のプロジェクトファイルは直接手で編集しやすいように構造が全面的に見直されてるんだよ
gitにコミットするときとかgithub上でレビューしたりするときにどうせ中身を一行一行意識しなきゃいけないんだから、
GUIの設定画面なんかはっきり言って邪魔なだけ
設定を必要最小限にして極力テキストベースで完結させるのが今時の流行り
新形式のプロジェクトファイルは直接手で編集しやすいように構造が全面的に見直されてるんだよ
gitにコミットするときとかgithub上でレビューしたりするときにどうせ中身を一行一行意識しなきゃいけないんだから、
GUIの設定画面なんかはっきり言って邪魔なだけ
941デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
2018/08/02(木) 19:27:12.70ID:R3xyuwRy0 30年前と言ってることが同じですな。
942デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
2018/08/02(木) 19:28:34.12ID:R3xyuwRy0 一度滅んだOSSの糞文化を取り込んだせいでどんどんMSの品質が腐っていく。
943デフォルトの名無しさん (スップ Sd1f-VIZ/)
2018/08/02(木) 19:31:53.19ID:vZ9OA8Bgd おじいちゃんかわいそうに
944デフォルトの名無しさん (ブーイモ MM67-Eno9)
2018/08/02(木) 19:33:26.86ID:5ti5JZJPM まあ騙されたと思って新しい形式のプロジェクトファイル使ってみたら?
Coreじゃなくても使えるよ
GUIによる設定は今まで通りにできるし、バージョン管理が楽になって普通に便利
Coreじゃなくても使えるよ
GUIによる設定は今まで通りにできるし、バージョン管理が楽になって普通に便利
945デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
2018/08/02(木) 19:44:44.63ID:R3xyuwRy0 >>943
無職乙。C#の案件は見つかりましたか?
無職乙。C#の案件は見つかりましたか?
946デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
2018/08/02(木) 19:47:31.22ID:R3xyuwRy0947デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
2018/08/02(木) 19:50:04.61ID:R3xyuwRy0 C#はほぼ壊滅しただがまだVB.netの案件は数多く残っている。
VB >>>> C# これが現実。初心者はVBにしたほうがいい。
VB >>>> C# これが現実。初心者はVBにしたほうがいい。
948デフォルトの名無しさん (アウアウカー Sa07-kkiZ)
2018/08/02(木) 19:50:50.20ID:3eKb6bola >>947
いいから早く就職しろ
いいから早く就職しろ
949デフォルトの名無しさん (スップ Sd1f-VIZ/)
2018/08/02(木) 19:52:31.24ID:vZ9OA8Bgd >>945
自己紹介かよw
自己紹介かよw
950デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
2018/08/02(木) 19:56:33.48ID:R3xyuwRy0 ID:vZ9OA8Bgd ←こいつC#しかできないみたいw
何を勘違いしてC#を勉強した知らんが10年前から既にC#はオワコンだから諦めろ。今は採用案件は皆無。
馬鹿なおまえになぜか教えてやろう。C#は糞だから。これが世界中のIT業界の総意。ゲイツやカトラーも含めてな。
何を勘違いしてC#を勉強した知らんが10年前から既にC#はオワコンだから諦めろ。今は採用案件は皆無。
馬鹿なおまえになぜか教えてやろう。C#は糞だから。これが世界中のIT業界の総意。ゲイツやカトラーも含めてな。
951デフォルトの名無しさん (ササクッテロ Spc7-GoWg)
2018/08/02(木) 19:59:03.89ID:QFtuhP10p いつものヘジたんラヴおじさんか
ボーランド時代に逆恨みしてメンヘラ化してるというw
ボーランド時代に逆恨みしてメンヘラ化してるというw
952デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
2018/08/02(木) 19:59:47.82ID:R3xyuwRy0 しかし、今時、30年前の手法でやりましょうって笑えるよな。開発の歴史を全く知らないのだろうか。
それが今の流行ならWindows10やC#も流行ってるはず。だが見向きもされない。むしろ敬遠されてる。
それが今の流行ならWindows10やC#も流行ってるはず。だが見向きもされない。むしろ敬遠されてる。
953デフォルトの名無しさん (スップ Sd1f-VIZ/)
2018/08/02(木) 20:02:53.83ID:vZ9OA8Bgd >>950
なるほどだからあなたは採用されないのですね
なるほどだからあなたは採用されないのですね
954デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
2018/08/02(木) 20:03:34.69ID:R3xyuwRy0 >>951
はぁ? むしろボーランドこそ革新的なIDEを普及させたんじゃねーか。そんなことも知らないとか無知すぎる。
それがなんでまたGUIは邪魔なんでテキストでやりましょうってw アホですか。どうせエディタもvim設定なんだろ。
時代遅れの骨董品どもが。
はぁ? むしろボーランドこそ革新的なIDEを普及させたんじゃねーか。そんなことも知らないとか無知すぎる。
それがなんでまたGUIは邪魔なんでテキストでやりましょうってw アホですか。どうせエディタもvim設定なんだろ。
時代遅れの骨董品どもが。
955デフォルトの名無しさん (ワッチョイ cfe8-Xflc)
2018/08/02(木) 20:03:36.14ID:L2LG0yaW0 え、わからない
VBとC#どっちがいいの?
VBとC#どっちがいいの?
956デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
2018/08/02(木) 20:04:45.73ID:R3xyuwRy0 >>953
キミは煽りばかり全くC#やVSの話はしないのですね。馬鹿がバレるのが怖いんですか?
キミは煽りばかり全くC#やVSの話はしないのですね。馬鹿がバレるのが怖いんですか?
957デフォルトの名無しさん (ワッチョイ cf81-TkmH)
2018/08/02(木) 20:04:48.57ID:uMr/Fq0h0 ゴミをつついて遊ぶの止めてくれるかなサル君
958デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
2018/08/02(木) 20:07:45.63ID:R3xyuwRy0 ワッチョイスレって単発煽り多すぎて議論にならんな。
必死にでネット繋ぎなおしてると思うと笑えるw >> ワッチョイ cf81
必死にでネット繋ぎなおしてると思うと笑えるw >> ワッチョイ cf81
959デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
2018/08/02(木) 20:09:28.08ID:R3xyuwRy0 ワッチョイって意味ないな。
低脳馬鹿のコード書けない煽り屋とマイナーOSS陣営から流れてきたvi使いの骨董品以外いない。
低脳馬鹿のコード書けない煽り屋とマイナーOSS陣営から流れてきたvi使いの骨董品以外いない。
960デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
2018/08/02(木) 20:11:37.17ID:R3xyuwRy0 煽りしかしない奴ってなんで内容ないレスばかりするんだろうと思ったんだけど、
キーボードアレルギーか何かで入力がめっちゃ遅いんだと思うわ。
おれが5レスする間に一行しか打てないトロ臭さ。
リアル低スキルじゃん。今まで碌にコード書いてないのがバレバレだな。
キーボードアレルギーか何かで入力がめっちゃ遅いんだと思うわ。
おれが5レスする間に一行しか打てないトロ臭さ。
リアル低スキルじゃん。今まで碌にコード書いてないのがバレバレだな。
961デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
2018/08/02(木) 20:15:41.97ID:R3xyuwRy0 結局、技術的反論は皆無。これが現実。
今のC#信者は低スキル。今時、テキスト最高ってw COM、.net全否定かよwww
今のC#信者は低スキル。今時、テキスト最高ってw COM、.net全否定かよwww
962デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
2018/08/02(木) 20:25:19.02ID:R3xyuwRy0 単発煽りって急に大量に現れて急にみんな消えるよな。
可能性として考えられるのは、ゆとりで低スキルで無職で同一人物。
可能性として考えられるのは、ゆとりで低スキルで無職で同一人物。
963デフォルトの名無しさん (ワッチョイ cf80-F72M)
2018/08/02(木) 21:55:18.44ID:6w1GWseD0 >>934
OleDbじゃシート順は無視されるから他の手立てを考える必要がある
https://stackoverflow.com/questions/1164698/using-excel-oledb-to-get-sheet-names-in-sheet-order
xlsxならここのZipArchive使うのとか(他に色々書かれてるコードは意味ないから無視して良い)
System.IO.Compress.PackagingとかOpen Xml SDKとかClosedXMLとか
xlsならNPOIぐらいなんかね あ、上のページにNPOIのサンプルもある
OleDbじゃシート順は無視されるから他の手立てを考える必要がある
https://stackoverflow.com/questions/1164698/using-excel-oledb-to-get-sheet-names-in-sheet-order
xlsxならここのZipArchive使うのとか(他に色々書かれてるコードは意味ないから無視して良い)
System.IO.Compress.PackagingとかOpen Xml SDKとかClosedXMLとか
xlsならNPOIぐらいなんかね あ、上のページにNPOIのサンプルもある
964デフォルトの名無しさん (スププ Sd1f-ON65)
2018/08/03(金) 08:51:02.00ID:tLm3HHgqd まあVSつかいたい奴は明らかにVSが向いてないシーンでも使いたがるからな。
俺も使い分けてるが、netcoreでも案外VS起動する事の方が多い。nuget探しやすいとかそんなレベルだけど。
どっちでも良いものは割とVS Codeで開くな。
とはいえ、mdのライブプレビューとかVSで出来んのかな?
俺も使い分けてるが、netcoreでも案外VS起動する事の方が多い。nuget探しやすいとかそんなレベルだけど。
どっちでも良いものは割とVS Codeで開くな。
とはいえ、mdのライブプレビューとかVSで出来んのかな?
965デフォルトの名無しさん (ササクッテロ Spc7-pHBK)
2018/08/03(金) 11:29:34.10ID:am/wpoGlp VSはIDEの機能を利用したいが為だけに使うことがある。
966デフォルトの名無しさん (オイコラミネオ MM07-B6sM)
2018/08/03(金) 11:34:31.88ID:U4A077LcM MDプレビュー&編集はメジャーなVS拡張がある
967デフォルトの名無しさん (スププ Sd1f-ON65)
2018/08/03(金) 13:57:43.04ID:tLm3HHgqd あるんだ。
何が何でもVSの中で過ごせるように出来てんだなぁ、やっぱ。
何が何でもVSの中で過ごせるように出来てんだなぁ、やっぱ。
968デフォルトの名無しさん (ワッチョイ cfe8-Xflc)
2018/08/03(金) 19:55:03.42ID:nRWExeYy0 C#よりVBのが人気って本当ですか?
969デフォルトの名無しさん (ブーイモ MM67-vpSm)
2018/08/03(金) 21:05:33.17ID:C7OuABnlM 嘘
970デフォルトの名無しさん (ワッチョイ 6f9e-QB3m)
2018/08/03(金) 22:34:44.79ID:pBzQtwq10 if(aaa.bbb.ccc ==null){
・・・
}
だと、aaaかaaa.bbbがnullの時にNUll参照エラー出ますよね。
じゃあ、
if(aaa!=null && aaa.bbb!=null && aaa.bbb.ccc ==null){
こう書くしかないですか?
もっとスッキリ書けませんか?
・・・
}
だと、aaaかaaa.bbbがnullの時にNUll参照エラー出ますよね。
じゃあ、
if(aaa!=null && aaa.bbb!=null && aaa.bbb.ccc ==null){
こう書くしかないですか?
もっとスッキリ書けませんか?
971デフォルトの名無しさん (ワッチョイ cf81-TkmH)
2018/08/03(金) 22:36:26.80ID:KKU0/EVq0 null条件演算子が使えるなら使え
どのバージョンで入ったかは忘れた(役立たず)
どのバージョンで入ったかは忘れた(役立たず)
972デフォルトの名無しさん (ワッチョイ b3e3-HuCS)
2018/08/03(金) 22:43:12.49ID:ls6gmcCr0 >>970
なんか下のコードって
動いたら不具合臭くない?
if(コードA && コードB && コードC)
ってあったときにコードAがfalseだからってコードCが実行されないとおかしくなる処理もあるんじゃね?
コードABCがそれぞれ結果を保持するような動作をするときもにょる
言語仕様がどうなってようと書いたやつは死刑
なんか下のコードって
動いたら不具合臭くない?
if(コードA && コードB && コードC)
ってあったときにコードAがfalseだからってコードCが実行されないとおかしくなる処理もあるんじゃね?
コードABCがそれぞれ結果を保持するような動作をするときもにょる
言語仕様がどうなってようと書いたやつは死刑
973デフォルトの名無しさん (ワッチョイ ffa6-F9eT)
2018/08/03(金) 22:57:30.21ID:5FtEqA870 >>972
横からですが
> ってあったときにコードAがfalseだからってコードCが実行されないとおかしくなる処理もあるんじゃね?
そういう場合は && ではなく & を使うと良いようです。
よかったら「短絡評価」で検索してみてください。
横からですが
> ってあったときにコードAがfalseだからってコードCが実行されないとおかしくなる処理もあるんじゃね?
そういう場合は && ではなく & を使うと良いようです。
よかったら「短絡評価」で検索してみてください。
974デフォルトの名無しさん (スププ Sd1f-9U+n)
2018/08/03(金) 23:23:18.87ID:zsmRuSg9d aaa?.bbb?. ccc == null
975デフォルトの名無しさん (ワッチョイ b3e3-HuCS)
2018/08/03(金) 23:36:42.74ID:ls6gmcCr0 >>973
コードABCがそれぞれ判定結果を保持する処理をしてたら余計なお世話じゃねーか?
コードABCがそれぞれ判定結果を保持する処理をしてたら余計なお世話じゃねーか?
976デフォルトの名無しさん (ワッチョイ ffa6-F9eT)
2018/08/03(金) 23:59:44.06ID:5FtEqA870977デフォルトの名無しさん (ワッチョイ b3e3-HuCS)
2018/08/04(土) 00:26:40.78ID:aY8Umh7+0978デフォルトの名無しさん (ワッチョイ cf81-TkmH)
2018/08/04(土) 00:53:29.00ID:b3FMlOEa0 なんかnull条件演算子が短絡じゃないような言い方をしている人がいますが
null条件演算子は短絡評価なので念のため
仕様の是非については関知しません
勝手にすればよろしい
null条件演算子は短絡評価なので念のため
仕様の是非については関知しません
勝手にすればよろしい
979デフォルトの名無しさん (ワッチョイ 6f9e-QB3m)
2018/08/04(土) 09:01:55.83ID:n5GHf3Ra0980デフォルトの名無しさん (ワッチョイ 7317-Xflc)
2018/08/04(土) 09:42:38.97ID:wpkf7FcP0 ならない
もしtrueにしたいのなら if(aaa?.bbb == null || aaa?.bbb?.ccc == null) にする
もしtrueにしたいのなら if(aaa?.bbb == null || aaa?.bbb?.ccc == null) にする
981デフォルトの名無しさん (ワッチョイ b3e3-Xflc)
2018/08/04(土) 09:49:39.47ID:L3XBWYHn0 >>979
なるんじゃね?
なるんじゃね?
982デフォルトの名無しさん (ワッチョイ b3e3-HuCS)
2018/08/04(土) 10:12:57.05ID:aY8Umh7+0983デフォルトの名無しさん (ワッチョイ 7317-Xflc)
2018/08/04(土) 10:16:40.19ID:wpkf7FcP0 ごめん確認したらtrueになったわ
984デフォルトの名無しさん (ワッチョイ 43c9-Xflc)
2018/08/04(土) 10:18:40.31ID:c4yFtWHQ0 Null 条件演算子の結果でnull判定ってなんか使い方おかしくね?
null判定の記述省略が目的だと思ってたわ
null判定の記述省略が目的だと思ってたわ
985デフォルトの名無しさん (ワッチョイ b3e3-HuCS)
2018/08/04(土) 10:18:47.38ID:aY8Umh7+0 >>983
なるのかよ
なるのかよ
986デフォルトの名無しさん (ブーイモ MM67-Eno9)
2018/08/04(土) 10:46:26.16ID:Q3NLupVYM ?.は使える場面が限られすぎてるんだよな
主語が違っても使えるようにしてほしい
employee ?& company.Fire(employee)
// employee != null ? company.Fire(employee) : null と等価
みたいな
主語が違っても使えるようにしてほしい
employee ?& company.Fire(employee)
// employee != null ? company.Fire(employee) : null と等価
みたいな
987デフォルトの名無しさん (ワッチョイ ffb3-6jVY)
2018/08/04(土) 12:29:39.69ID:AH7fLvgn0 >>984
> Null 条件演算子の結果でnull判定ってなんか使い方おかしくね?
そんなもん何をやりたいかによるだろ
> null判定の記述省略が目的だと思ってたわ
Null条件演算子自体の目的はそれでいいと思うが
> Null 条件演算子の結果でnull判定ってなんか使い方おかしくね?
そんなもん何をやりたいかによるだろ
> null判定の記述省略が目的だと思ってたわ
Null条件演算子自体の目的はそれでいいと思うが
988デフォルトの名無しさん (ワッチョイ 6f9e-QB3m)
2018/08/04(土) 12:36:27.73ID:n5GHf3Ra0989デフォルトの名無しさん (ワッチョイ 7f60-9U+n)
2018/08/04(土) 21:50:20.61ID:sXotmGKy0990デフォルトの名無しさん (ワッチョイ 8f9f-myUF)
2018/08/05(日) 15:20:33.53ID:wZ9wDNsY0 俺なら分けてコメントでも書いておくかな
if(aaa == null || aaa.bbb= null){
// Hack aaaとbbbがnullでもOKで、その時は何もしない。設計がゴミ
}
else if(aaa.bbb.ccc == null){
}
if(aaa == null || aaa.bbb= null){
// Hack aaaとbbbがnullでもOKで、その時は何もしない。設計がゴミ
}
else if(aaa.bbb.ccc == null){
}
991デフォルトの名無しさん (オッペケ Src7-mXgF)
2018/08/05(日) 16:43:04.45ID:RYmTh0/wr 再帰してNullチェックする関数一つ書けばいいのでは?
992デフォルトの名無しさん (ワッチョイ 639a-7JJt)
2018/08/05(日) 17:47:48.87ID:76QdhMr90993デフォルトの名無しさん (ワッチョイ 7317-Xflc)
2018/08/05(日) 18:17:15.11ID:DE014Z3K0 建てられなかったので別の方お願い
994デフォルトの名無しさん (ワッチョイ ffb3-6jVY)
2018/08/05(日) 18:21:48.75ID:C8NdcnMU0995デフォルトの名無しさん (ワッチョイ 43d2-j3zu)
2018/08/05(日) 18:38:49.57ID:hZh56vqa0 再帰でnullチェックする関数気になるな
996デフォルトの名無しさん (ワッチョイ b38d-0Uuo)
2018/08/05(日) 19:30:23.50ID:yb/HDiEo0 コンソールプログラミングでは
Application.DoEventsが使えませんが
代わりに処理中の入力を受け付けるようなメソッドはないでしょうか?
時間がかかる処理をESCキーでキャンセルするような処理を
コンソールプログラムで書きたいと思っています
Application.DoEventsが使えませんが
代わりに処理中の入力を受け付けるようなメソッドはないでしょうか?
時間がかかる処理をESCキーでキャンセルするような処理を
コンソールプログラムで書きたいと思っています
997デフォルトの名無しさん (ブーイモ MM67-Eno9)
2018/08/05(日) 19:30:55.99ID:uVIrroLRM こうかな
// nullが見つかった深さを返す
static int? AmazingNullCheck(int level, dynamic obj, params Func<dynamic, dynamic>[] next) =>
obj == null ? level : next.FirstOrDefault()?.Invoke(level + 1, obj, next.Skip(1).ToArray());
if (AmazingNullCheck(0, a, a=>a.b, b=>b.c) == 2)
// a.b.c == null
// nullが見つかった深さを返す
static int? AmazingNullCheck(int level, dynamic obj, params Func<dynamic, dynamic>[] next) =>
obj == null ? level : next.FirstOrDefault()?.Invoke(level + 1, obj, next.Skip(1).ToArray());
if (AmazingNullCheck(0, a, a=>a.b, b=>b.c) == 2)
// a.b.c == null
998997 (ブーイモ MM67-Eno9)
2018/08/05(日) 19:37:00.55ID:uVIrroLRM 訂正
obj == null ? level : !next.Any() ? null : AmazingNullCheck(level + 1, next.First().Invoke(obj), next.Skip(1).ToArray());
かな
obj == null ? level : !next.Any() ? null : AmazingNullCheck(level + 1, next.First().Invoke(obj), next.Skip(1).ToArray());
かな
999デフォルトの名無しさん (ブーイモ MM67-Eno9)
2018/08/05(日) 19:43:31.17ID:uVIrroLRM1000デフォルトの名無しさん (ワッチョイ 338a-vpSm)
2018/08/05(日) 19:45:50.96ID:3KDX12Zf0 1000ならjava民絶滅
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 61日 0時間 13分 9秒
新しいスレッドを立ててください。
life time: 61日 0時間 13分 9秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【スクープ】広瀬アリスと元KAT-TUN赤西仁が交際!GW中、しゃぶしゃぶ店で堂々デート、連日のお泊まり 左手薬指にお揃いの指輪も [Ailuropoda melanoleuca★]
- 【速報】東京・立川市の小学校教室に男2人が侵入・窓ガラス割る すでに確保 児童にケガなし、教員4人ケガ [おっさん友の会★]
- カーナビ搭載の公用車、NHK受信料の未払い相次ぐ 1000万円超えも…自治体に波紋 [おっさん友の会★]
- 【文春】永野芽郁(25)&田中圭(40)燃え上がる不倫LINE ★24 [Ailuropoda melanoleuca★]
- 【野球】巨人・オコエ瑠偉選手と増田大輝選手をオンラインカジノで賭博の疑いで書類送検 警視庁 [Ailuropoda melanoleuca★]
- なぜ?大阪で中国からの移住者が急増中! 中国に比べ日本は安い?生活に余裕?中国からの逃げ出し「潤」とは? [ぐれ★]
- 【速報】小学校に男2人が侵入 教員4人が怪我 [817260143]
- 【悲報】大阪万博+71000 パー収してしまう [616817505]
- ウーバーイーツでチップの代わりにおっぱいを揉ませてくれる女性が急増、お前ら急げ!!! [606757419]
- 【朗報】アメリカ、児童婚容認へ トランプ関係者「女は初潮が来たらおちんちんお迎え準備万端、『成熟』しているとみなしてよい」 [517459952]
- 女「キラキラしたいよおお!!私の人生キラキラしてないよおおお!!」なぜ女はキラキラを求めるのか? [851881938]
- 【石破も】 テレ東『大食い王』に批判殺到 汚すぎる食べ方に視聴者「食欲失せた」 [732912476]