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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 19:32:42.28 ID:70UTtyrn0.net]
「どんなにくだらない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/
■コードを貼る場合は↓を使いましょう。
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
referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

2 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 20:49:49.24 ID:M4A1qqma0.net]
(*゚∀゚)b

3 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 00:37:35.76 ID:YMH0q3TJM.net]
デコーダーがイベント監視してる時点でなんかおかしいって気が付かなきゃダメだよ
クラスの責務は1つなのだからデコーダーはデコードすることに集中しなきゃならん
なのでイベントの購読、デコーダーへのデータ供給は別のクラスの仕事というわけだ
どうしてもデコーダーにイベントソースを掴ませたいならより抽象化されたストリームを渡すべきだろうね

4 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 00:54:44.11 ID:89Zk6fQTa.net]
前スレ>>999

酷い言い掛かりだなw
この人、自分の議論が

(1) FrameDecoderは使い捨てされるオブジェクトである(CommunicationPortより寿命が短い)

(2) FrameDecoderを使う側(メインクラス?)はプログラムと同じ寿命

っていう自分勝手な前提に立ってることに気付いてるのかな。
そんな勝手な前提を置いたらどんなイチャモンでも言えるよw


既に書いたが、結局抽象的に言えるのは
----
使い捨てのオブジェクトが自分より長寿のオブジェクトのイベントに
メソッドを紐づけする場合は、イベント購読解除を忘れるとリークする
----

これ以上でも以下でもない。

だから俺の書いたコードhttps://mevius.5ch.net/test/read.cgi/tech/1523004019/985
に対して、「FrameDecoderがプログラムと同じ寿命じゃない、使い捨てされるオブジェクトなら
いらなくなったタイミングでイベント購読解除するようにしないとリークするよ」と質問者にアドバイスするのなら
意味があると思う

イベント発行側を引数でもらったらイカンとか、そんな訳わかんない
俺様ルールを他人にごり押ししてどうすんの。

5 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 00:57:45.23 ID:89Zk6fQTa.net]
それとさあ、、これも繰り返しになるけど、
だから俺は質問者の参考になるかもしれんコードの骨組みのサンプルを書いてるだけであって、
そんな細かい別の話をしてるんじゃないってばw

何でもっと建設的になれないかな

6 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 01:15:02.96 ID:e5dRgfnV0.net]
死なないと分かんねーのかな

7 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 01:18:11.35 ID:qa98W75KM.net]
>>4
分かってないなあ
FrameDecoderの寿命はFrameDecoder自身が決めることではなくてそれを使う側が決めることでしょ
引数をはじめとして、自分の管理外にあるものに対して自分自身を登録することは、その了解を破ってるという点で好まれない
OSSのソースとか読んだことないかもしれないけど、実際滅多にないよ?
FormやTimerのようにGCRoot持って自分自身で寿命を制御してる例外も無くはないが、
それはフォームはXボタン、タイマなら一定時間経過、というように自分自身の性質が寿命を決めているからそれが自然なんだよ

8 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 01:18:13.86 ID:XybM8xsda.net]
>>4
分かってないなあ
FrameDecoderの寿命はFrameDecoder自身が決めることではなくてそれを使う側が決めることでしょ
引数をはじめとして、自分の管理外にあるものに対して自分自身を登録することは、その了解を破ってるという点で好まれない
OSSのソースとか読んだことないかもしれないけど、実際滅多にないよ?
FormやTimerのようにGCRoot持って自分自身で寿命を制御してる例外も無くはないが、
それはフォームはXボタン、タイマなら一定時間経過、というように自分自身の性質が寿命を決めているからそれが自然なんだよ

9 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 01:28:03.10 ID:kKiXaErEa.net]
>>7
分かってないのは君

だから、君は勝手に「FrameDecoderを使う側の寿命はCommunicationPortと同じが
それより長い」という前提に立っている。

何度も言うが、そんな勝手な前提を置いたら何でも言える。
じゃあFrameDecoderを使うオブジェクトの寿命がCommunicationPortより短い場合はどうするのか。

10 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 01:36:08.83 ID:XybM8xsda.net]
>>9
なるほど、そんな初歩的なところを勘違いしてたのか
イベントを使うにしろ何にしろ、CommunicationPortから引数の受け渡しによってデータを受け取る以上、
当然、CommunicationPortからFrameDecoderへは参照を辿って到達可能でなければならないよ
問題にしてるのはその参照を登録したり解除したりする責任の話ね



11 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 01:39:09.20 ID:CmtfArYj0.net]
つか、シリアル通信クラスって標準のがあった気がするけど
それが合わないとしても、それを模倣して作れって言うのが普通じゃないのか

12 名前:前スレ976 mailto:sage [2018/06/06(水) 06:26:27.44 ID:z0q6WK6V0.net]
すいません
回答ありがとうございました
何か揉める原因になってすいません

ttps://dobon.net/vb/dotnet/vb2cs/event.html#section3のデータを返す方法がやりたいことになるのかなと思って調べてました。

13 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 09:37:08.80 ID:e5dRgfnV0.net]
彼らは病気だから気にしなくていい
いつものことさ

14 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 11:55:26.62 ID:/mNmPD5La.net]
>>10
何を言ってるのかさっぱり分からない
だれか分かる人がいたら解説してw
「CommunicationPortからFrameDecoderへは参照を辿って到達可能でなければならない」
必要なんかどこにあんのw

しかし、こういう「俺様ルール」を正当化するために
勝手な前提条件を設定してかつその自覚がない人ってのは困っちゃうね

15 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 12:02:03.87 ID:/mNmPD5La.net]
>>12
別にもめてるわけじゃw

プログラミングは技術の一種なんだから質問スレであっても
議論に発展することがあるのは当たり前で、それを異常なことのように
感じる人間の方が病気で、そういう人間こそ無視していいと思う

以前「マウンティング」って言葉が好きな御仁がおったけど、
ようするに彼はそんなくだらないことでマウントを取りたい自分を
表出することで何かを語るに落ちてることにも気が付かない素朴なお方だw

16 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 12:28:24.14 ID:v+YVHC4y0.net]
>>1読め

17 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 20:12:00.38 ID:Xjc53mAM0.net]
どうでもいい質問ですがvisual studioの初期設定で
C#が中括弧だけで1行使うのはなにか理由があるんでしょうか?
C++他の言語だと最初の中括弧の前では改行しないスタイルの方が多いと思うんですが

18 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 20:17:07.10 ID:yVrgGFaDM.net]
ない

19 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 20:34:10.39 ID:LL2q+46Ta.net]
https://ja.m.wikipedia.org/wiki/字下げスタイル

20 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 21:13:23.87 ID:5ce/nrvV0.net]
>>17
波動拳みたいでいいだろ?



21 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 21:13:34.77 ID:Xjc53mAM0.net]
>>19
どうも、よく分かりました

22 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 23:05:03.78 ID:N8yiaTQzM.net]
パイソンスタイルが至高
波カッコとか要らん

23 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 23:07:52.15 ID:+PcIhiGy0.net]
俺はブロックが解り易くて良いと思うけどな
縦に長くなるのが嫌だって人がいるのも理解しない事はないが

24 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 23:15:12.78 ID:c8dAN/Mma.net]
>>17
C++は { だけで一行使うスタイルの方が一般的だと思うぞ
C#はもともとC++開発者の取り込みを狙って作られた言語なので、ソースのスタイルも含め、意図的に全体的な雰囲気をC++に似せ

25 名前:トいる []
[ここ壊れてます]

26 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 00:32:23.12 ID:8RMVvRLY0.net]
>>22
C#はコード畳めるんだぜ?

27 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 00:35:34.59 ID:gtRPAC9i0.net]
言いたい事は解るけど、それは言語仕様でなくIDEの機能では……

28 名前:デフォルトの名無しさん [2018/06/07(木) 07:22:06.46 ID:7v9jTo8H0.net]
あのコード畳める機能って極悪だよな。
もうそろそろ終わりだなぁと思ったら畳まれているコードが数百行隠れてましたとか泣いたよ。

29 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 08:14:21.51 ID:w0rLP4AV0.net]
畳まれてるコードがあって泣くってどういう状態だよ・・・

30 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 08:49:08.48 ID:acA4rAind.net]
どうせ20000行のメソッドとかなんだろ



31 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 08:54:33.87 ID:dtJbFkp5M.net]
クラスの作成について教えてください。
内部でstring程度の情報しか持たない場合でも、Disposeは実装しなければならないですか?実際、何もやる事ないですが。

32 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 08:59:41.46 ID:jTBAfznK0.net]
しなければならないと言った人に聞いてくださいよ
一般的に、決定権がある人が必要ないと判断すればしません

33 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 09:15:25.73 ID:dtJbFkp5M.net]
すみません、聞き方が悪かったです。
しなければならないと言われた訳ではないのですが、作法としてどうなのかな?と心配になって質問しました。
自分だけで使うならどうでもいいのですが、他人にも公開するものなので、恥ずかしくないものを作りたくて。

34 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 09:41:25.22 ID:NVuYCS+k0.net]
作法というかIDisposableは主にアンマネージリソース解放の用途だよ
OS機能を直接扱うとか、メンバーが使用してるとか。インスタンス解放ではない
むしろ実装の仕方に作法があるのでMicrosoft DocsなりMSDNなりを

35 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 15:35:52.79 ID:Fu48jME1a.net]
>>32
やることが無いならDisposeやファイナライザを実装してはいけない
それらを実装するのは例外的なケースであり、無いのが普通

36 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 16:30:11.85 ID:dtJbFkp5M.net]
>>33
>>34
レスありがとうござます。完全に勉強不足でした。
IDisposableが実装されてないクラスなんて山ほどあるのに何を勘違いしてたんでしょうか。聞いてよかったです。

37 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 19:28:36.25 ID:6Ugs28PiM.net]
>>27
行数表示してないのかよw

38 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 19:55:09.68 ID:GcMnTqlg0.net]
コントロールが表示されないのですがなぜでしょう
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("www.yahoo.co.jp/");

39 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 21:20:31.87 ID:aqK3UKBIa.net]
>>35
アンマネージなシステムリソースを確実に解放するときに使うよ

40 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 21:25:32.22 ID:HziEaPXa0.net]
どういう考え方をすればできるようになるんだよ!教えろお前ら!!ホラホラホラホラ!!!!



41 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 21:27:36.16 ID:8RMVvRLY0.net]
プロセスゾンビを確実にkillするにはどうすればよい?

42 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 21:43:03.21 ID:muNvrUxm0.net]
シャットダウン

43 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 12:54:30.79 ID:ZXhSx/U8M.net]
kill -9 プロセス番号

44 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 12:54:58.48 ID:sQqhvtlW0.net]
init 0

45 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 13:08:29.19 ID:CYBBWkiVM.net]
>>17
私は { は単独にしない派ですね。
理由は、少しでも多く画面内にソースを表示して見通しやすくするためと、昔からの Basicの名残で、ifなら thenに相当する { は行末。endifの } は単独という位置づけですね。

今はideの進化で { } のペアの書き忘れがほとんどないというのもあるかな。

46 名前:デフォルトの名無しさん [2018/06/08(金) 14:44:00.50 ID:6WR6CtyO0.net]
>>37
試してないけど、対応OSで実行してないとか?

47 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 15:03:45.94 ID:QSVDv9Gwd.net]
>>44
その言語の流儀に素直に従った方がいいんじゃないかと

48 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 16:55:43.13 ID:3Fn0oPLQ0.net]
流儀に従うなら、どっちでもいい、では?

49 名前:デフォルトの名無しさん [2018/06/08(金) 17:50:11.32 ID:wbtEeseM0.net]
int c = 5;
for(c = 1; c < 61; c++)
{
        //処理
}
Console.WriteLine(c.ToString());

これで一番最後でCが62になるのですが
C<61の判定後でも++のインクリメントは行われているってことでいいのですか?

50 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 17:59:23.80 ID:3yCOErp00.net]
>>48
新規でコンソールアプリ用のプロジェクト作ってそれをコピペして実行してみたら?
処理の中身に問題が無ければ62になるはずがない



51 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 18:02:38.49 ID:SrLrQXUUa.net]
>>48
https://ideone.com/Sr1WXN

52 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 18:11:11.09 ID:SrLrQXUUa.net]
つーか、この程度の検証もせずに他人に質問を投げる神経が分からんマジで

53 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 18:35:49.98 ID:QSVDv9Gwd.net]
>>47
パブリックなAPIかそうでないかによって違う

54 名前:デフォルトの名無しさん mailto:sage [2018/06/08(金) 19:21:59.01 ID:TU3718TC0.net]
>>45
OSのバージョンは問題なさそうなんですよね。

55 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 10:20:18.22 ID:iRP9QLJz0.net]
>>52
え、何が?
{の位置にそんなこと関係ある?

56 名前:デフォルトの名無しさん [2018/06/09(土) 11:11:10.00 ID:3S5Pjg6F0.net]
構造化制御文はインデントされた行を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) {
で始めて、( の前のスペースの有無と { の前の改行の有無のどちらでも前者と後者で
違いをつけた方が、すんなりと見分けられて良い。

57 名前: mailto:sage [2018/06/09(土) 11:28:17.50 ID:BV3WmSRm0.net]
>>55
if (cond) {
}
と書くのだったら、関数の場合も
int func(int arg) {
}
とするのが統一がとれていいんじゃない?なぜ関数と if 文とで書き分けるのか、その理由がわからない

58 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 11:40:22.30 ID:kOHnqaQt0.net]
その自己主張要る?

59 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 11:41:04.90 ID:kOHnqaQt0.net]
あ、>>57>>55宛てね
宗教論争は他所でやって頂きたい

60 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 11:42:25.58 ID:4y2IVpvw0.net]
メソッドとif文に差付けなくてもインデント違う時点で判別付くんじゃないのか
と思ったが、ローカル関数出てきたんだっけか



61 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 12:02:32.41 ID:54mp5fzVM.net]
if (cond) statement;

if (cond) call();

if (notcond) return;
statement;
statement;
statement;

{}がなくても見やすいね

62 名前:デフォルトの名無しさん [2018/06/09(土) 12:03:48.88 ID:3S5Pjg6F0.net]
>>56
それぞれの制御文 (if, for, whileなど) 同士は機能が似通っているが、
関数は全く違うから、見た目も書き分けた方が良い。

Pascalだと関数は
 function func(arg: integer): integer;
 begin
で、制御文は
 if cond then begin
で始まり、前者は begin の前に ; が入り、関数頭部を書いて一旦区切ってから
関数本体を書く格好になるので、頭部の行の独立性が比較的高い。これに倣い、
C系でも関数は頭部だけで改行した方がすんなり読める。

>>58
じゃあ、スレ立ててよ。

63 名前:デフォルトの名無しさん [2018/06/09(土) 12:05:40.33 ID:3S5Pjg6F0.net]
>>60
1行if文は否定しないし、自分自身も割とよく使うよ。

64 名前: mailto:sage [2018/06/09(土) 12:18:17.45 ID:BV3WmSRm0.net]
>>61
pascal に習う必要はないと思いますが…なぜ pascal を持ち出してきたのでしょうか?
私は関数と if/for/while を別にする必要性はないと思っています
{
}
とかスペースの無駄にみえてしまいます

65 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 12:23:56.94 ID:54mp5fzVM.net]
構造がクリーンなコードを心がければ自然と{}を使わないコードになる
まあ俺から言わせてもらうと{}は綺麗なコードが浮かばない時に仕方なく使う苦肉の策ってところだね

66 名前:デフォルトの名無しさん [2018/06/09(土) 12:43:14.79 ID:3S5Pjg6F0.net]
>>63
Pascalの悪い所、例えば条件を ( ) で囲まないので条件が目立たないのは真似する
必要はないが、良い所は参考にすべきだろう。C#は開発主導者がTurbo Pascalの
作者だったこともあり、Pascalからもいくらかの影響を受けていて、赤の他人ではない。

関数と制御文は機能が違うし、関数の方がより大きなブロックだから、書き分けた方が
すんなり読める。自然言語で小さな区切りには , を、大きな区切りには ; を使って
書き分けるのに似ている。あるいは章や節の見出しのスタイルに視覚的な差を
つけるようなもの。

67 名前: mailto:sage [2018/06/09(土) 12:49:18.67 ID:BV3WmSRm0.net]
>>65
>>61
昔のpascalのif 文は
if cond
 begin
  ..;.
 end;
が主流だった気がします
if cond begin
end;
はむしろCの影響を受けているのでは?

68 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 13:02:16.97 ID:ufdIEzvk0.net]
>>54
うん。C#のコーディング規約はあくまでもパブリックなライブラリに関するものだから。
プライベートなものについてはお好きにどうぞって感じ。

69 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 13:06:52.76 ID:oQlrsJoz0.net]
改行コードが構文に影響を与えない言語仕様なんだから、好きにすればいいんだよ。

70 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 13:12:22.07 ID:Tjb3C0On0.net]
pascal流はマジキモイな
func() {
}
if () {
}
else {
}
が一番利に適ってる



71 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 13:27:36.34 ID:VOfp/P7BM.net]
これ以上続けても宗教の違いみたいな話で
なにも建設的なハナシにはならないからここらで終わりにしておけば?

72 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 13:29:19.91 ID:4y2IVpvw0.net]
いくら議論したところで、お仕事なら我が社のコーディング規約で終わっちゃう話だしな

73 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:24:17.49 ID:fpkuA4ugr.net]
どうでもいいしキモい

74 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:27:26.20 ID:DBY1R4Jva.net]
この手の嗜好がただの慣れと思い込みにすぎないっていい歳こいて気付かない人は
プログラマとしてかなり筋が悪いと思うw
たぶん知能もあんまり高くないw

2週間も違う書式で作業してたらすっかりそっちが「普通」になるw
人間なんてそんなもの。
これフォントにも言えるね

75 名前: mailto:sage [2018/06/09(土) 14:28:38.55 ID:BV3WmSRm0.net]
>>70
泥仕合にならないかぎり、意義があると思っています、これから泥仕合になるのかもしれませんが…

76 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:28:44.98 ID:d5fCz/GJ0.net]
エディタとコーディングスタイルの話はしないのが紳士のたしなみ

77 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 14:39:18.62 ID:54mp5fzVM.net]
>>73
フォントは目に優しいのを使った方がいい
カッコの位置などというくだらない問題とは違う

78 名前:デフォルトの名無しさん [2018/06/09(土) 15:20:12.02 ID:JwKFPqLV0.net]
>>61
ふらっと C#,C♯,C#(議論用)
mevius.5ch.net/test/read.cgi/tech/1469538912/

79 名前:デフォルトの名無しさん mailto:sage [2018/06/09(土) 15:35:33.03 ID:a58WBe6r0.net]
>>75
よい習慣をお持ちですね。素晴らしい

80 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 12:25:35.64 ID:6xD/x26k0.net]
VisualStudio2017 でコンソールアプリケーションを作っています。
System.Windows.Forms.Clipboardクラスを使いたいのですが
ビルドの設定をReleaseにしているとエラーはでないのに
Debugにすると FormsがSystem.Windowsに存在しないといわれてしまいます。
(アセンブリ参照はしています)
どなたか原因分かる方いないでしょうか。

https://i.imgur.com/sgkx4HK.png
https://i.imgur.com/Tr2VkYB.png



81 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 12:35:57.40 ID:bN46fGFrd.net]
>>79
csprojファイル晒して

82 名前:79 mailto:sage [2018/06/11(月) 13:13:19.40 ID:6xD/x26k0.net]
>>80
新しいソリューションを作成してコードをコピペしたら問題が発生しなかったので
とりあえず解決したということにします。

ありがとうございます

83 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 21:03:57.62 ID:TLX2q1MD0.net]
フォームアプリで画面の真ん中に線を引きたいと思って単純に

(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height)/2

のところに線を挽けばいいと思ったんですが、モニタのピクセルの半分のところに線を引くと
フォームの上の -□× のあるバーの下から0ピクセルになるから20ピクセルほどが下にずれてしまいます。
フォームの中央に線を引く方法ってないでしょうか?

84 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 21:10:24.16 ID:hXpDig4+p.net]
枠無しフォームでやれ。

85 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 21:11:16.03 ID:R9cSput30.net]
>>82
フォームの中央なのか画面の中央なのかまずはっきりしてくれ
スクリーン座標←→クライアント座標の変換を行うには?
www.atmarkit.co.jp/fdotnet/dotnettips/377screentoclient/screentoclient.html

86 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 21:12:11.98 ID:aKalcs2L0.net]
フォームの中央なのかディスプレイの中央なのかどっちだよ

87 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 21:44:14.69 ID:TLX2q1MD0.net]
自分でもどっちでいいかわからなくなったw
最初単純にフォーム最大化してるんだから、モニタの真ん中が真ん中だろと思ったら、
windowsって下にタスクバーあるわ、モニタの下に非表示領域20ピクセルほど隠れてるわ、フォームにフォームバーあるわで、
モニタの真ん中が真ん中に見えない。
たぶん無意識化でフォームの真ん中が人は真ん中と認識しているので気持ち悪い。
ということでフォームの真ん中にしました。

88 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 22:15:41.36 ID:kexbIBuK0.net]
>>86
タスクバーの位置なんて自由に変えられるんだけど

89 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 22:24:08.10 ID:xa0hP702a.net]
>モニタの下に非表示領域20ピクセルほど隠れてるわ
そんなものはないと思うけど...
今時CRT使っててオーバースキャン表示でもやってるなら別かもしれんけどw

90 名前:デフォルトの名無しさん mailto:sage [2018/06/11(月) 22:37:51.73 ID:VLKc0T550.net]
フォームバーってタイトルバーのことかな
非クライアント領域もあるぞ



91 名前:前スレ976 mailto:sage [2018/06/12(火) 07:25:05.60 ID:qsxFIdydM.net]
どうにかイベントを発生させることができました。ここから5バイトの受信データを分解して処理を分岐したいんですが、どのような手法、便利な関数がありますでしょうか。
オペコード1バイト+データ4バイトという形式です。データは4バイトで表現する数値だったり、1ビットごとのフラグだったりします。
昔ながらのswich~caseで分岐って使うんでしょうか
オペコードが増えたり、データの予約ビットが変わると変更が大変そうです

92 名前:デフォルトの名無しさん mailto:sage [2018/06/12(火) 08:46:58.51 ID:awfOgDQGa.net]
switchでいいよ
たかがイベント一個作るのに何日もかかるようなレベルで今どんな凝った設計しようが、結局後で全部やり直しになる
今は余計な手間をかけないこと、シンプルに保つこと、それだけ考えてりゃいい

93 名前:デフォルトの名無しさん mailto:sage [2018/06/12(火) 08:51:11.88 ID:l+dIOx6V0.net]
デバイスドライバーみたいに処理をチェーンさせるってのもあり

94 名前:デフォルトの名無しさん mailto:sage [2018/06/12(火) 09:12:16.14 ID:HMj9ZmCFM.net]
スクリプト言語のインタプリタなんかでも巨大switchが普通だぞ
断言するが、先を見通せない状況でヘタにコマンドパターンとか入れても、後で横断的な変更が多発して
すべてのコマンドクラスに手を入れて回るアホみたいな作業に追われることになるだけ

95 名前:デフォルトの名無しさん mailto:sage [2018/06/12(火) 10:49:11.67 ID:Blmm4zE90.net]
コード増加はともかく予約を変更すんな・・・

96 名前:デフォルトの名無しさん mailto:sage [2018/06/12(火) 11:04:17.10 ID:O2DKnY7ra.net]
>>90
どっちにしろ「便利な関数なんかないでしょうw
ちっとも汎用的じゃない処理をエレガントに書く方法なんか用意されてるはずがないw
泥臭い物は泥臭く書くしかないかと

オペコードがそれ以上分解できない前提で

(1) オペコードをenumにキャストしてswith、でも
(2) ジャンプテーブル(デリゲートの配列)を使う、でもお好みで

もし仮に受信するデータが常にこちらから要求したデータである、
つまり、どういうデータが送信されてくることをこちら側が期待しているか事前に分かっている場合は
別の方法論もあると思う

その場合はこちらがリクエストを出す段階で、期待する種類のデータだけを読解できるオブジェクトを
生成してタイムアウト付きで待機させればいい

97 名前:デフォルトの名無しさん mailto:sage [2018/06/12(火) 12:12:37.91 ID:yJ6G/fgzM.net]
>>93
横断的な変更を最小限の労力でやるために最初にほんのすこしだけ投資する
これがシステム開発のコツな

98 名前:デフォルトの名無しさん mailto:sage [2018/06/12(火) 14:41:16.06 ID:dH3jUIiRp.net]
それより、データの先頭を識別できるフォーマットにしたか?

99 名前:デフォルトの名無しさん mailto:sage [2018/06/12(火) 15:40:05.30 ID:wFgJsw9E0.net]
固定長なら先頭コード種類分のデリゲートを割り付けるってのもあるが、こればっかしは好みだな。

100 名前:前スレ976 mailto:sage [2018/06/12(火) 20:18:08.93 ID:qsxFIdydM.net]
ありがとうございます。
ベタベタに書いてみます。

1バイトが1ビットごとのフラグになっている場合はビットマスクで一つずつ抽出するのが一般的でしょうか?



101 名前:デフォルトの名無しさん [2018/06/13(水) 22:29:58.82 ID:T96Fk9Se0.net]
SQLについて質問ですが

INSERT INTO T_USER (
ID, PASSWORD
) VALUES (
@ID, @PASSWORD
);

のINSERT分を

INSERT INTO T_USER (
ID = @ID,
PASSWORD = @PASSWORD
);

のように書く場合はどのようにしたらよいでしょうか。

102 名前:デフォルトの名無しさん mailto:sage [2018/06/13(水) 22:33:15.48 ID:8SXHgjst0.net]
スレチ

103 名前:デフォルトの名無しさん mailto:sage [2018/06/13(水) 22:40:13.78 ID:dwe0uTDh0.net]
そういうメソッド作ったらいいじゃん

setInsert(new dictionary略);

みたいなの

104 名前:デフォルトの名無しさん mailto:sage [2018/06/14(木) 08:40:57.01 ID:tUkyOm+Z0.net]
クラスの構造体(ただint型のデータが複数個しかない)をXMLに変換したいのだが
XMLSerializer以外に何かないかな?
XMLSerializerは以前にバグを起こしたことがあって使いたくないんだ

105 名前:デフォルトの名無しさん mailto:sage [2018/06/14(木) 09:14:05.32 ID:o3acK5Uh0.net]
>>100
UPDATEじゃないんだから・・・

106 名前:デフォルトの名無しさん mailto:sage [2018/06/14(木) 09:54:39.43 ID:A8NrLUZ4M.net]
クラスの構造体…?

107 名前:デフォルトの名無しさん [2018/06/14(木) 11:31:35.89 ID:/+f4Bre90.net]
>>103
全手動

108 名前:デフォルトの名無しさん mailto:sage [2018/06/14(木) 12:02:09.33 ID:cv0ACSdK0.net]
最終的に配列を書きだしたいのですが
それまでに色んなクラスのインスタンスからその配列の読み書きがされるのですが
どういうふうにクラスを作ればいいですか?
その配列はグローバルでstaticで宣言するか、インスタンス作るごとに参照を引き渡すのですか?

109 名前:デフォルトの名無しさん [2018/06/14(木) 13:20:39.46 ID:NMzxKZ+IM.net]
>>107
日本語でおk

110 名前:デフォルトの名無しさん mailto:sage [2018/06/14(木) 14:19:07.38 ID:KBTpBKAkM.net]
>>107
グローバルなpublic staticでいい
良い悪いを問題にするのであれば、あちこちから共通の配列をいじくるという前提の時点で設計に問題があるので、正解なし、が答えになる



111 名前:デフォルトの名無しさん mailto:sage [2018/06/14(木) 15:31:16.28 ID:fa4YRdZnp.net]
アクセス関数を作ってインスタンス取得用に一つスタティック関数を用意するだけ。
アクセス関数介さないと、排他処理とかいちいち入れるの面倒だぞ。

112 名前:デフォルトの名無しさん mailto:sage [2018/06/14(木) 17:22:37.66 ID:Omv9hEYDd.net]
初歩的な質問なんだけど
プロパティ?(get;set;)ついてるやつと、ついていないやつの差がわからないから教えてほしい

プロパティつけててもprivateはアクセスできないみたいだから
結局、両方ともpublicになって何が違うん?ってなってる

113 名前:デフォルトの名無しさん mailto:sage [2018/06/14(木) 17:40:33.14 ID:T0JMmz9y0.net]
>>111
プロパティにするとメソッドを組み込めたりgetとsetでアクセスレベル変えられたり
あと取りあえずこの辺とか
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/properties
特定のソースで何が変わるの?って言う話なら書いた人に聞かないと分からない

114 名前:デフォルトの名無しさん mailto:sage [2018/06/14(木) 17:41:27.02 ID:im2Z0uooa.net]
クラスのメンバーでプロパティじゃない変数はフィールドと言う

フィールド (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-5f82

115 名前:8cde []
[ここ壊れてます]

116 名前:デフォルトの名無しさん mailto:sage [2018/06/14(木) 18:59:14.79 ID:UejGuppF0.net]
クラスのプロパティに「型」を変数みたいにおけますか?

外部から「型」をセットして、クラスの中でその型を使って new して実体を作って利用したいのです。

117 名前:デフォルトの名無しさん mailto:sage [2018/06/14(木) 19:03:10.93 ID:UejGuppF0.net]
気持ちをコードで表すと

  public class Test
  {
    public <T> PersonClass;

    public void Unko()
    {
      var p = new PersonClass();
      p.unko();
    }
  }

ってな感じです。
※PersonClass にメソッド unko() がある前提

118 名前:デフォルトの名無しさん mailto:sage [2018/06/14(木) 19:09:01.39 ID:Cyktia16d.net]
>>115
これ使えば?
https://msdn.microsoft.com/ja-jp/library/0hcyx2kd(v=vs.110).aspx

119 名前:デフォルトの名無しさん mailto:sage [2018/06/14(木) 19:15:40.41 ID:5YiZsxt70.net]
>>115
unkoを定義するインターフェイス作って、
Tをwhereでそのインターフェイスとnew()で絞った上で、default(T)でインスタンス作って、呼べばよいのでは?

120 名前:デフォルトの名無しさん mailto:sage [2018/06/14(木) 19:19:58.23 ID:w+8RUA83a.net]
>>114
賭けてもいい
初心者がこの手の処理が必要だと思う時、それは100%勘違いw



121 名前:デフォルトの名無しさん [2018/06/14(木) 19:26:49.09 ID:dsNhKni40.net]
>>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 ) )
{

122 名前:デフォルトの名無しさん mailto:sage [2018/06/14(木) 23:44:33.25 ID:rYhQU2t8a.net]
>>119
そんな見てて痒くなる書き方しなくても今のC#は2進数リテラル使えるぞ

123 名前:デフォルトの名無しさん mailto:sage [2018/06/14(木) 23:56:40.66 ID:9S9/LeJo0.net]
1
2
4
8
16
32
64
128
でいいよ。

124 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 00:31:01.58 ID:UuMD2cf2a.net]
>>119みたいなのならHexで書くのが一番だろうねw
少なくとも俺ならそうする

125 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 01:23:47.16 ID:hh/0fz+KM.net]
10進よりマシだが一番ではない
2進があるならどう考えても2進が一番

126 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 01:34:20.89 ID:UuMD2cf2a.net]
書いてみりゃ分かるよw
単に一つのビットだけ立っている値を列挙するなら2進リテラルは冗長過ぎる。
そもそも何のためにHexなんかあると思ってるの

2進リテラルっていうのは、例えば組み込みで7セグのパターンのテーブルを定義する時とか、
bit5-bit7みたいにニブル単位じゃないビット範囲のビットマスクを定義する時とかに使う

127 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 02:40:57.81 ID:3RK99arqM.net]
君にとってはCが頭に染み付いてるからそうかもしれないけど、
現に>>119にとっては分かりにくいからわざわざこんな書き方をしてるんだろう
今時のプログラマはC経験ない人も多いんだから実情に合わせることも必要
そういう連中を見下すのもいいけど老害呼ばわりされないように気をつけてね

128 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 03:02:28.24 ID:UuMD2cf2a.net]
>>125
しょうもな
偉そうにするな!と偉そうに言うバカw

どこが偉そうにしてるのか。

そもそも俺は>>119を必ずしも否定してない。
少なくとも10進表記や2進数リテラルよりマシだ

129 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 03:07:31.98 ID:UuMD2cf2a.net]
どーでもいいけど、こういう自分を客観視できない単細胞な奴がネトウヨとかなるんだろうね

130 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 03:33:39.61 ID:/sL5C1h/0.net]
ネトウヨってつまりどういう定義なんですか
マンコ吸わせてくださいs



131 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 06:19:02.91 ID:9gOvrFZ50.net]
5分かけて最後に煽っていくというだけで
自分が嫌ってる

132 名前:ゴミと大差なくなっているというね []
[ここ壊れてます]

133 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 07:16:26.72 ID:Cd+XXhnVM.net]
今どきビット演算なんてしてるやつはゴミ

134 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 07:16:57.07 ID:Cd+XXhnVM.net]
これまで歩んだ人生がゴミ

135 名前:前スレ976 mailto:sage [2018/06/15(金) 07:27:20.01 ID:A2l2tHW6M.net]
>>119
ありがとうございます


bitarrayってのがあるらしいんですけど、これって共用体とかに一括で代入できないんですかね
3バイトデータの内の下位1バイトは1bitごとのフラグなのでbitarrayで分解できそうなんですが

136 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 09:16:33.32 ID:rymWY0Tx0.net]
そういえばちょっと疑問なんだけど、enum定義する時に>>119みたいにbyteとか指定するのは何か意味があるの?
指定したところでbyte型の変数に代入しようとしたらキャストしなきゃいけないし、やる意味がわからないんだけど

137 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 09:22:49.39 ID:BTgSia3a0.net]
>>133
え?キャスト?

138 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 09:45:21.99 ID:rymWY0Tx0.net]
>>134
え?

139 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 10:04:23.68 ID:BTgSia3a0.net]
ああ、enumで作った型なんだからenum型になってるだろ。
受ける変数も同じ型じゃないとダメなのは当たり前。

140 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 11:52:41.04 ID:jCp8kGwY0.net]
>>133
シリアライズとかネイティブとの相互運用目的



141 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 11:58:42.21 ID:6Dx/uRsOp.net]
動的にenumで作った型のsizeof求めりゃいいんだが、静的に解決しなきゃならない時は指定するしか無いって話だよな?

142 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 12:03:59.97 ID:AMC7cROI0.net]
>>116-117
コンパイル時点で型が定まらない(実行時に型が決まる)ものを new する手段という風ですよね?
使えそうです。ありがとうございました。

あとは、外部から「型」を受け取って new するまでの間、保管しておきたいのですが
型を変数(プロパティ)に格納するにはどうしたらいいんでしょ

143 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 12:20:55.24 ID:NFN3YtCpd.net]
>>139
117はジェネリクスなのでコンパイル時には一応定まってるハズ。
型を変数に入れたいならインスタンス.GetType()か、typeof(型)で、Type型の値が取れるけど…
本当にやりたい事と、実装の方法(型を受け取ってインスタンスを作ってそのメソッドを呼ぶ)がズレてないか心配。

144 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 12:25:49.54 ID:rymWY0Tx0.net]
>>137-138
なるほど、さんくす

145 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 12:48:48.68 ID:AMC7cROI0.net]
>>140
ありがとうございます。
「型」を格納する変数の型は System.Type なんですね!!
やりたいことが出来ました!!

System.Type t = typeof(××フォーム);  ← ここのところを公開して外部からセット

var f = (System.Windows.Forms.Form)System.Activator.CreateInstance(t);
f.ShowDialog();

146 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 12:57:15.01 ID:PdS4cleJa.net]
>>142
それさあ、キャストしてる時点で何の意味があるんだと思わなきゃw

147 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 13:10:18.30 ID:VuRl2MkoM.net]
>>143
Showなどのフォーム共通の操作をしたいんだろう
基底クラスにキャストする分には意味はある
設計として正しいかどうかは別問題であり今の情報だけでは何とも言えないが、
君は自分の個人的な好みを一般常識であるかのように主張して相手の事情を理解しようとせず人を一方的に批判する傾向があるようだね

148 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 13:16:34.24 ID:AMC7cROI0.net]
本当は自作インターフェースを持った「なにか」から派生するクラスなのですが
そこまで書くと行数が凄いことになるので、Form を例にさせてもらいました。

149 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 13:30:43.12 ID:/HLz/tc50.net]
>>145
本当は何がしたいの?

150 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 13:36:49.24 ID:PdS4cleJa.net]
>>144
そういうのはFafcoty Method的な方法でやればいい。

最初から質問者が何か勘違いしてるだけだと言ってるが、
>>114-115みたいな方法論を取る必要は何もない。

お前ごときに俺の何が分かるんだアホか
その批判、お前自身にちゃんと向けているか?

自己分析一つできない奴に限って安易に他人を批判したがるから笑える



151 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 14:16:21.09 ID:AMC7cROI0.net]
>>146
基底クラスから派生したクラスを動的に生成します。

142 みたいな方法が出来ることを知らなかったので
switch 〜 case でクラスの種類だけ new() やってたところをキレイにします。

152 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 15:03:37.25 ID:NFN3YtCpd.net]
>>145
それは自作インターフェイスに「『自作インターフェイスをもった何かのインスタンス』を返す関数」を定義しておいて、
何かの方で「その関数」を実装して、
呼び出す側では普通に「その関数」を使えば良いのではなかろうか。
抽象クラスと静的関数の方がキレイかな。

「その関数」のリストが作りたいなら、そこでやっとリフレクションで取ったらいいし。
いきなりCreateInstanceは宜しくないというか危ないし、後々、各小クラスでコンストラクタがどうしようもない状況に陥ると思うよ。

153 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 00:47:26.32 ID:i9Db63x30.net]
Dynamicは黒歴史ですか

154 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 08:04:12.32 ID:axPFqDQY0.net]
いいえ

155 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 08:10:11.50 ID:YoGVHqI7d.net]
うんにゃ

156 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 08:34:15.67 ID:eKBdC14eM.net]
むしろ.NETのメインストリームがWebに移ってからはdynamic使われまくってる
JSONデータをたくさん扱ってるといちいち型付けてられない場面が多い

157 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 09:57:30.72 ID:fkqp7HMy0.net]
自作のインタプリタ作った時に
Dynamic使った記憶がある

意図は・・忘れたww

158 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 10:02:21.77 ID:v/kjTt9Bd.net]
>>153
jsonからクラスへの変換なんてVisualStudio使えば一瞬じゃない?

159 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 10:04:46.66 ID:ayiE9VmyM.net]
大規模プロジェクトなら連想配列禁止は納得できる

160 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 12:20:07.70 ID:omCaDuHT0.net]
教えてください。
戻り値が async Task のメソッドで await を使わないと↓のような警告が出ます。

> CS1998 この非同期メソッドには 'await' 演算子がないため、同期的に実行されます。
> 'await' 演算子を使用して非ブロッキング API 呼び出しを待機するか、'await Task.Run(...)' を
> 使用してバックグラウンドのスレッドに対して CPU 主体の処理を実行することを検討してください。

独立したメソッドなら、await が必要ないなら async Task をやめて void にすればいいのですが、
仮想呼び出しなどの関係で戻り値を変更したくない場合の解決策に悩んでいます。

とりあえず、

[1] 警告を抑制する
[2] async だけ外して Task.CompletedTask を返す

という二つの解決策を思いついたのですが、どちらも到底正しい方法とは思えません。
いいアイディアがあれば教えてもらえると嬉しいです。



161 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 12:52:10.42 ID:Ws4rvThPa.net]
>>157
2が正しい

162 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 12:56:37.78 ID:dmQidkOU0.net]
同期的に結果が分かるものを非同期にして結果が欲しいとか、コールバックでも仕込んで別処理で結果得ないと正しい結果なんて分からないだろうに。

163 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 13:16:07.05 ID:omCaDuHT0.net]
>>158
レスありがとうございます。やはり他に正しい方法はないのですね。
非同期が必要になるまでは同期

164 名前:実行できるのが async の効果だと思っていたので
非同期が全く必要ないときに async が使えないのは逆のような気がして
違和感が拭えないのですが、とりあえず [2] の方法でやっていこうと思います。

>>159
申し訳ないのですが、同期ついて理解不足で仰っていることが理解できないので
もう少し詳しく説明していただけないでしょうか。
[]
[ここ壊れてます]

165 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 13:59:46.72 ID:VCIrJNT80.net]
await Task.Run(()=>やりたいこと)
で済ますのはどうなんだろ。

166 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 14:16:04.53 ID:Ws4rvThPa.net]
>>161
無駄にスレッド消費するしマルチスレッドによる不要なトラブルを持ち込む可能性もある最低最悪の方法
awaitを外したくないなら await Task.CompletedTask の方がクリーン

167 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 14:42:27.67 ID:omCaDuHT0.net]
>>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 を外したくないなら」という無理のある前提に合わせて話してくださっていることは
 理解しています)

168 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 14:59:09.83 ID:ext5YZxs0.net]
これあえて警告出しっぱなしじゃ駄目なのかね
IDEがasyncメソッドをawait無しで実行しているから警告しているだけであって、意図的に同期実行するのならコメントとかで明示しておけば良いような気もするけど

169 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 15:23:38.22 ID:omCaDuHT0.net]
>>164
レスありがとうございます。
たかが警告を消すために実際のコードを書き換える必要があるのかという考えは
実にごもっともだと思います。
ただその場合、警告を抑制するだけでも意図は十分に伝わると思うのですが、
やはり警告はそのままにしてコメントなどで説明を行うべきなのでしょうか。

170 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 15:24:59.98 ID:gQX30pFpa.net]
#pragma warningディレクティブ使って警告を抑止するのが一番素直のような気がする。
知らんけど

っていうか、asyncなしで問題ない前提なら最初から何も悩む必要ないと思うんだけど...



171 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 15:35:00.89 ID:omCaDuHT0.net]
>>166
レスありがとうございます。やはり警告の抑制も選択肢になりますよね。
警告を抑制することに対する考え方は人それぞれということもあると思いますので、
その都度状況に応じた対処法を考えるのが一番でしょうか。

> っていうか、asyncなしで問題ない前提なら最初から何も悩む必要ないと思うんだけど...

申し訳ありません。これについてよく意味が理解できませんでした。
詳しくご説明していただけないでしょうか。

172 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 15:46:13.12 ID:gQX30pFpa.net]
>>167
ごめん後者アホなこと言いましたw

よく考えてみたら、asyncが付くかどうかはただのメソッドの中の実装によって決まる話であって、
ベースクラスやインターフェイスによってそれが強制されることはないよねw

普段深く考えずに使ってることがばれちゃったw

173 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 16:13:25.34 ID:dmQidkOU0.net]
なぜ同期させているのかが根本的に分かって無いから、警告を解く事だけに注意が向いてるんだな。
同期が必要ならコードどころか構造を変えるくらいしないてならないだろうに。

174 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 17:10:20.97 ID:b9GFXH4k0.net]
状況把握しきれていないが
async()=>{}という形でラムダにasyncつけることで解決できるケースもあるんじゃね?

175 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 17:13:04.67 ID:omCaDuHT0.net]
>>167
ご説明ありがとうございます。 >>166 で仰っていた意味が理解できました。
async/await は糖衣構文なので確かにベースクラスなどで使用が強制されることはありませんが、
深く考えずに使えるところが糖衣構文のいいところですし、
async を使うメソッドに XxxAsync という名前をつけることが推奨されていることからも、
事実上 async/await を使うかどうかはベースクラスに依存していると言っていいと思います。
これを踏まえて、改めて >>166 にお返事したいと思います。

> っていうか、asyncなしで問題ない前提なら最初から何も悩む必要ないと思うんだけど...

文法上は async なしでも問題ありませんが、コードの一貫性を考えると async を意図した
メソッドのオーバーライドで async なしは問題だと思います。
それにもかかわらず、たまたま実装上 await を全く使わなかっただけで
async の使用をとがめるような警告が表示されてしまうので悩んでいるのです。


>>169
レスありがとうございます。他の方のご意見も聞かせていただいて、
やはりこの警告は不適切で、警告を解くことだけに注意を向ければいいように感じてきています。
それに対して異論を唱えてくださっているようなのですが、勉強不足で仰っていることが
よく理解できていないので、申し訳ないのですが詳しく説明していただけないでしょうか。

176 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 17:18:42.84 ID:omCaDuHT0.net]
>>170
レスどうもありがとうございます。
このような返しばかりで情けないのですが、理解力が足りず仰っていることがよくわかりませんでした。
申し訳ありませんが詳しいご説明をお願いできないでしょうか。

177 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 18:03:54.76 ID:AoXX/TDlp.net]
先ず、同期と非同期で何が違うのか、
同期は目的の処理を完了して戻って来る事が大前提で作られている。
非同期は目的の処理を行う指示だけをして戻って来る。
だから戻り値も自ずと意味が違って来るのが普通。
同期の戻り値は実行結果、非同期の戻り値は指示出来たかどうかで結果はまだ分からない。
そこを根本的に間違えているから、問題なんだよ。

178 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 18:08:04.04 ID:40YgBCHOM.net]
>>173
基底クラスやインターフェイスに合わせるためであったり、
後でDB使った実装に変更する予定で今はハードコードしておくみたいなときには普通にあるケースだよ
後で非同期に変えるのは影響が大きいからね

179 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 21:30:40.09 ID:omCaDuHT0.net]
>>173
レスどうもありがとうございます。
同期処理と非同期処理の違いは、一般論としてはおっしゃるとおりだと思うのですが、
それが >>174 でご指摘いただいているような目的を達成する上で障害になっていて、
そのような問題を解消するために async/await 構文が作られたのではないでしょうか。
だとすると、同期処理と非同期処理の違いを理由に await なしの async を
否定することは本末転倒のように感じてしまうのですがいかがでしょうか。

>>174
ご説明どうもありがとうございます。
具体例を含めてとてもわかりやすく感じたのでこのレスの前半で引用させていただきました。
私にはこれだけ要領よく説明することはできそうにないので助かりました。

180 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 21:44:52.43 ID:dmQidkOU0.net]
まあ、メイン処理止めていいなら待てばいいじゃない。
止めたく無いならポーリングやコールバックで終わったの知ればいいじゃない。
コーディングでワーニング出るから構造を弄るって手法そのものが間違いって言ってるの。



181 名前:デフォルトの名無しさん mailto:sage [2018/06/16(土) 22:10:42.86 ID:omCaDuHT0.net]
>>176
メイン処理を止めたくないならポーリングやコールバックを明示的に記述する以外に
選択肢がないというように読めてしまったのですが、この部分に間違いはないでしょうか。
もしそうなら async/await 構文についてあまりお詳しくないようにお見受けしますので、
よろしければ一度お触りになってみてください。
非同期処理の大変さをご存知であればこそ、便利さを実感できるのではないかと思います。

(ちなみに、今の問題は非同期処理を行うことも可能なメソッドをオーバーライドする際に
 非同期処理を全く使わないと警告が出てしまうということですので、
 何かに妥協してメイン処理を止めるというわけではありません)

182 名前:デフォルトの名無しさん mailto:sage [2018/06/17(日) 00:16:30.35 ID:hCSOxZ9X0.net]
そもそもasync修飾子そのものには、たんにawaitする目印としての意味しかないわけで
awaitしないメソッドをasyncにするのが根本的におかしいとしか思えんのだが

183 名前:デフォルトの名無しさん mailto:sage [2018/06/17(日) 04:27:25.92 ID:f8Zp6PCK0.net]
wpfのフォームってhtmlとcssが合わさったようなもん?

184 名前:デフォルトの名無しさん mailto:sage [2018/06/17(日) 05:09:52.71 ID:w8cOZ/cU0.net]
>>178
async Task Hoge() { }
↑は警告は出るもののコンパイルできますが
Task Fuga() { }
↑はコンパイルすらできないので、async がたんに awaitするための目印というのは語弊があるのではないでしょうか。

185 名前:デフォルトの名無しさん mailto:sage [2018/06/17(日) 10:24:51.50 ID:g+98DwlT0.net]
> async を使うメソッドに XxxAsync という名前をつけることが推奨されていることからも、
> 事実上 async/await を使うかどうかはベースクラスに依存していると言っていいと思います。

TAPはTaskを返す関数の実装にasync/awaitを強要せんし使う側も関知せんじゃろ
AsyncサフィックスなんてそれこそEAPの頃からの慣例でしかない

awaitを使わず何故か付いてるasyncよりTask.CompletedTaskを返すコードの方がよほど明確だと思うがね

186 名前:デフォルトの名無しさん mailto:sage [2018/06/17(日) 11:46:32.45 ID:IxLGC6rAM.net]
>>180
ただの目印と理解していいよ
asyncって目印を見つけたらメソッド内だけ文法をちょっと変えますねっていう取り決めなの

目印もなしに勝手に文法を変えられたら仕事にならん
だから目印が必要なの

目印を付けただけでエラーになると言うけど
目印を付けたら文法が変わるのだから同じコードでエラーが出たってなにもおかしくないだろう?

187 名前:デフォルトの名無しさん mailto:sage [2018/06/17(日) 12:14:10.68 ID:w8cOZ/cU0.net]
>>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
確かにそのとおりですね。失礼いたしました。
ただ問題なのは、「目印を付けただけでエラーになる」のではなく、
「目印を付けないとエラーになるのに目印を付けても警告が残る」という点でして、
せっかくの目印の機能を気持ちよく使うことができず、どうしたものかと考えております。

188 名前:デフォルトの名無しさん mailto:sage [2018/06/17(日) 12:46:14.26 ID:JpLAIDLea.net]
結局質問者の疑問はこういうこと?

(1) サブクラスで非同期メソッドとして実装される可能性があるメソッドの名前は
Asyncでサフィックスすべきか?

(2) (1)がYesの場合、そのメソッドが非同期で実装されなくても(awaitを含まなくても)
asyncで修飾すべきか?

正解はYes-No?
理由は、非同期メソッドは使う側がそれを非同期メソッドだと理解している必要があるのに対し、
非同期メソッドじゃないものを非同期メソッドと誤認しても弊害はないから

もちろん不要な混乱を避けるために、「このメソッドは多態の都合上Asyncでサフィックスされてるけど
非同期メソッドじゃないよ」みたいなコメントは必要か?

189 名前:デフォルトの名無しさん mailto:sage [2018/06/17(日) 13:22:22.85 ID:w8cOZ/cU0.net]
>>184
整理していただきどうもありがとうございます。

(1) については実は疑問であるという認識をもっていたわけではなく、
ご指摘をいただくまで当然そうするべき事柄であると考えておりました。

(2) がまさに疑問点でして、(1) が Yes/No のどちらであっても
答えが得られると嬉しいと思っています。

> 非同期メソッドは使う側がそれを非同期メソッドだと理解している必要があるのに対し、
> 非同期メソッドじゃないものを非同期メソッドと誤認しても弊害はない

おっしゃる通りだと思います。(もちろん細かなオーバーヘッドが問題にならない場合の話ですが)

> 「このメソッドは多態の都合上Asyncでサフィックスされてるけど
> 非同期メソッドじゃないよ」みたいなコメントは必要か?

インターフェース等を介さずにメソッドを呼び出す可能性がある場合は
そのようなコメントがあると親切だと思いますが、
私としては、必ずしも必要ではないように思います。

190 名前:デフォルトの名無しさん mailto:sage [2018/06/17(日) 14:33:41.38 ID: ]
[ここ壊れてます]



191 名前:IxLGC6rAM.net mailto: >>183
気持ち良い悪いみたいな感覚の話にすると結論が出なくなる

・コードに統一感があったほうが気持ちがいい(俺はこの感覚がよくわからんが)
・使ってないものを使いますと宣言するのは気持ちが悪い

どっちも言い分としては間違いではないしどちらがより正しいかとも言えない
それは見た人によるとしか言えない
君が美しいと思って書いた統一感のあるコードは、俺からすれば必要のない無駄な記述の多い汚いコードに見えるかもしれない



それはさておき
asyncメソッドはTaskインスタンスの生成とスレッドの生成に繋がる可能性がある
インスタンスの生成はともかくスレッドを無駄に消費するってことはOS全体に負荷をかけることにも繋がりかねないので意味がないなら避けるべきだ
しかし文法上の間違いではないのでエラーと断言することもできない
間をとって警告を出すってのが妥当な落とし所じゃないかな
[]
[ここ壊れてます]

192 名前:デフォルトの名無しさん mailto:sage [2018/06/17(日) 21:01:18.97 ID:6Wp8R37qa.net]
・スレッド生成
勉強してから言えよって思う

193 名前:デフォルトの名無しさん mailto:sage [2018/06/17(日) 21:08:29.24 ID:rRGqqoATM.net]
あーこれゴミクズにありがちな燃えるコメントの仕方だわ
言い争いが始まるので、賢明な諸兄は3日ほどスレを閉じておくのがよろしい

194 名前:デフォルトの名無しさん mailto:sage [2018/06/17(日) 21:15:10.69 ID:Z+AbfkC70.net]
静的メソッドの中で動的メソッドって呼び出せないってあるけど、自分のクラスのインスタンスのメソッドは呼び出せるの?教えて雑魚

195 名前:デフォルトの名無しさん mailto:sage [2018/06/17(日) 21:27:50.40 ID:6Wp8R37qa.net]
> 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のついたメソッドができる
勿論警告もでないし誰かの言う一貫性のある美しいコードじゃないか

196 名前:デフォルトの名無しさん mailto:sage [2018/06/17(日) 21:32:42.49 ID:6Wp8R37qa.net]
わかってると思うけどawaitがついたメソッドに突入した時点で
内部が自動的に別のスレッドで実行されるわけじゃない
中に入っても最終的にタスクにたどり着かないと別スレッドはスタートしない

System.Threading.Thread.CurrentThread.ManagedThreadIdでスレッドIDがでるから確認したらいい

197 名前:デフォルトの名無しさん [2018/06/17(日) 21:38:25.64 ID:7lB5BPvGa.net]
>>191
await後に書いた処理って元のスレッドに同期されると思ってたけど、awaitで実行されたスレッドのまま進むよね?
Formアプリであれ?invokeしなくていいの?って思った記憶ある。思い違いだったらすまぬ

198 名前:デフォルトの名無しさん mailto:sage [2018/06/17(日) 21:42:03.70 ID:62NxCwPo0.net]
非同期自体が複雑だし、(当時は)新しい構文ってことで、混乱を少しでも減らすために警告にしてるだけっぽいね
抑止しちゃっていいと思うよ

199 名前:デフォルトの名無しさん mailto:sage [2018/06/17(日) 22:13:20.40 ID:g+98DwlT0.net]
>>193
Formが作成された所謂UIスレッドでは同期されるが、コンソールアプリ等では同期されない

もうちょい突っ込むと、await文が実行されるスレッドにSynchronizationContextへの仕込みがあるかどうかで違ってくる
await後に実行されるスレッドはSynchronizationContext.Postの実装により決定される

Winformsは最初のフォーム作成時にWindowsFormsSynchronizationContextを現在のスレッドに設定し
WindowsFormsSynchronizationContext.Postはメッセージループを仲介してUIスレッドでawaitの続きを実行する

具体的な実装はReference SourceやmonoのWindowsFormsSynchronizationContextを読むのが良い

200 名前:194 mailto:sage [2018/06/17(日) 22:18:16.07 ID:g+98DwlT0.net]
安価まちげーた>>192

なんかテキトーに書いたら分かりにくいな・・・
要はWinforms(WPFも同様)のスレッドでawaitするとその後の文は裏で勝手にControl.Invokeされてると思えばええねん



201 名前:デフォルトの名無しさん mailto:sage [2018/06/18(月) 03:16:27.74 ID:tq92Vuqu0.net]
>>180
>Task Fuga() { } はコンパイルすらできない
それは戻り値のチェックで、int Fuga...でもコンパイルできないだろ
Taskもasync/awaitも関係ない話

むしろ、async Task Hoge() { } がタスク戻さないのにコンパイル通ることのほうが問題じゃね
つかほんとにこれ警告だけで通って正常に動くの?
そのときHoge()で何が帰ってきてるんだ?

202 名前:デフォルトの名無しさん mailto:sage [2018/06/18(月) 03:36:27.38 ID:tq92Vuqu0.net]
まあその例で統一したやり方でやりたいなら
async Task SayHello0() { await Task.CompletedTask; }
で良いんじゃないのか

203 名前:デフォルトの名無しさん mailto:sage [2018/06/18(月) 07:05:52.53 ID:5zfP7m4zM.net]
>>196
最適化してCompletedTaskでも返すのかなとも思ったけど
IL見ると他と同じようにコード生成して実行してんね
このオーバーヘッドが必要な処理なら警告を無視してasync使えばいいと思う

204 名前:デフォルトの名無しさん mailto:sage [2018/06/18(月) 10:59:47.44 ID:ubyRHWyfa.net]
どう考えても質問者の方がよく分かってるのに
何も分かってない奴に限って上から目線で偉そうに何か言ってるのは滑稽過ぎるねw

気付いてないのは本人だけ(とすら気づいてない)のも何とも笑いを誘う

205 名前:デフォルトの名無しさん mailto:sage [2018/06/18(月) 11:33:39.78 ID:jfMWOsL40.net]
質問者のドメイン知識の話だろ。

質問者以外に、このスレどんなエスパーいるのか?

206 名前:デフォルトの名無しさん mailto:sage [2018/06/18(月) 12:52:58.18 ID:omBcANz0a.net]
実際にawaitされることで呼び出し側が想定されることが実現されるなら
たとえ何もしない無駄なスレッドを使用したとしてもそれが一番いい
最適化されて何もしないとなればUIスレッドなどの副作用を期待していた呼び出し側が困る
実際はそういうことはおこらないので問題ない

上に書いてあったawait Task.CompletedTask;が一番いい答えだと思う

207 名前:デフォルトの名無しさん mailto:sage [2018/06/18(月) 17:06:03.17 ID:wetnizJS0.net]
プログラミングってさあ、基本を使い倒すほうがいいの?

208 名前:デフォルトの名無しさん mailto:sage [2018/06/18(月) 18:38:53.61 ID:rGsHjxJX0.net]
皆さんレスどうもありがとうございます。

>>186
スレッド生成はともかく、無駄をなくすという観点は重要ですね。
>>198 に書いていただいてあることも踏まえると、
> しかし文法上の間違いではないのでエラーと断言することもできない
> 間をとって警告を出すってのが妥当な落とし所じゃないかな
というご意見は実に的を射たものであるように感じました。

>>190
> forループで制御したらいい
同じメソッドを繰り返し呼ぶ例は不適切でしたね。失礼いたしました。
ただ、for ループ版に n = 0 を渡しても何の問題もないのに
async Task SayHello0() { } では警告が出るというのも
やはり腑に落ちない感じがします。

>> 191
> 中に入っても最終的にタスクにたどり着かないと別スレッドはスタートしない
やはりそこが重要なポイントですよね。
だからこそ、最終的にタスクにたどり着かない選択肢がある方が
自然だと思うのですがいかがでしょうか。

>>193
> 非同期自体が複雑だし、(当時は)新しい構文ってことで、混乱を少しでも減らすために警告にしてるだけっぽいね
> 抑止しちゃっていいと思うよ
言われてみると、構文に不慣れな方向けの警告であるという考えは
とても納得ができました。
あとは、「自分は構文を十分に理解しているから警告を抑制しても構わないのだ」
という主張をいかにして人様に受け入れて貰うかが課題でしょうか(汗

209 名前:デフォルトの名無しさん mailto:sage [2018/06/18(月) 18:39:23.10 ID:rGsHjxJX0.net]
>>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 のコードに差があると
前者

210 名前:を使うのは躊躇してしまいますね。そもそも私は
> このオーバーヘッドが必要な処理
になる状況が分からず、CompletedTask を返すように最適化が行われるべきだと思うのですが、
「await なしの async」と「CompletedTask 返し」との間の違いに気づいていらっしゃるようであれば
ぜひお教えいただけないでしょうか。
[]
[ここ壊れてます]



211 名前:デフォルトの名無しさん mailto:sage [2018/06/18(月) 18:46:20.98 ID:XI+GT1Uo0.net]
>>202
何が聞きたい

旅行ってさあ
車で行ったほうがいいの?
→目的地や条件による

212 名前:デフォルトの名無しさん mailto:sage [2018/06/18(月) 20:44:23.89 ID:/4T5LZMPM.net]
>>202が一を聞いて十を知る頭の良い人間なら先に一通り言語をマスターした方が効率的
そうでないなら最初から高度な機能を覚えてもそれが何の役に立つのか理解できないから、まずは基本だけで身をもって苦労したほうがいい

213 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 05:31:43.83 ID:R/zbDFZs0.net]
>>204
そもそもawait なしの asyncが必要な理由も場面も思い浮かばんが
自分一人でやってるなら好きにすればいいんじゃね

最適化うんぬんを言うなら、Taskを返すどころかそんな呼び出しそのものが不要じゃね

214 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 08:14:05.91 ID:qYFKlpQqM.net]
そもそものそもそもasyncやawaitで気軽にスレッドを立ててるような処理はだいたいバグってる
スレッドを立てるってそれ自体の処理より
立てても大丈夫なぐらいの前準備のが遥かに手間がかかる
気軽に立ててあるとこはまず間違いなくバグってるので安心していい

215 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 08:47:25.71 ID:XF2Gjt0sa.net]
asyncとスレッドって直接関係ないだろ
スレッドは非同期処理を実装する手段の一つに過ぎない
最近のazureなんか「上司にメール送って添付URLのページにある承認ボタンが押されるまで待つ」みたいな非同期処理ですらawaitできるんだぞw

216 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 10:49:26.69 ID:2YKCyXH1a.net]
誰に向かって説教してるつもりなのかねw
馬鹿過ぎる

217 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 17:36:20.33 ID:ygjnsczhH.net]
google検索で
@it async await
これ読んでわかった気になった。
シンプルな実装では使えたけど、応用でつまずく。最近プログラム組んでないので頭固い……

218 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 17:40:54.18 ID:B+3+LOal0.net]
固ければジューサーに入れてみる?

219 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 18:44:23.63 ID:eWtmWHlOM.net]
普通のジューサーでは>>211の固い頭は砕けません
そこでショップジャ〇ンのマジックブレッドデラックスを使えば楽チンに下ごしらえができます

220 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 19:56:40.35 ID:0sn0Q0vo0.net]
C♯を勉強するのにおすすめのサイトありますか?
何かを作りなが勉強したいなと思ってるんですが。



221 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 20:10:42.40 ID:kAXRFxrM0.net]
>>214
https://dobon.net/vb/dotnet/index.html
www.atmarkit.co.jp/fdotnet/csharp_abc/index/
ufcpp.net/
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/
ここで勉強するというかやりたいことを「C#」に続けてググるとだいたいこのあたりがヒットする

222 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 20:12:26.56 ID:ygjnsczhM.net]
>>213
そこで、トゥルースリーパーとパチもんハズキルーペ買った。
パチもんの方はメガネにLEDライトが付いてたからつい。薄暗いとこであれはめちゃ便利(稀にしか使わないけど…orz)。(100金の老眼鏡でいいと思う。しょ

223 名前:ケん凸レンズの一種だから。)
トゥルースリーパーは半年くらいたってまだ箱の中orz
[]
[ここ壊れてます]

224 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 21:01:02.40 ID:RAxnAMrUr.net]
c#のコーティング方法で検索すること多いけど、なぜかLINQで解説しているサイトがほとんどない
日本語サイトも海外サイトも

なんで?

225 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 21:02:44.86 ID:LBhs/jk2M.net]
>>217
実践的なアプリ開発で使われる機能だから、コピペTips系サイトのサンプルコードで必要になることはほとんど無い

226 名前:デフォルトの名無しさん [2018/06/19(火) 21:53:01.39 ID:EPHYIqEL0.net]
素人に使われると価値が下がるからね
素人は年収300万で死ぬまでくだらないコードを書いていればいいんだよ

227 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 22:04:52.94 ID:kI3CAS1L0.net]
>>217
ほとんどないわけねーよwww

228 名前:デフォルトの名無しさん mailto:sage [2018/06/19(火) 22:16:45.72 ID:EE12WGu0M.net]
>>217
LINQは手段であって目的じゃないからじゃないかなああああ

229 名前:デフォルトの名無しさん [2018/06/20(水) 09:42:33.52 ID:+y79X+880.net]
FileSystemWatcherのChangedイベントの発生条件は、監視しているディレクトリ内のファイルまたはディレクトリのサイズ、システム属性、最後の書き込み時刻、最後のアクセス時刻、またはセキュリティ アクセス許可の変更のようですが、
このうちのどれが変更されたか種痘するにはどうすればよいでしょうか?

230 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 11:51:07.40 ID:ZYBHUW1Qr.net]
>>218
そういうもんなの?

>>220
スタックオーバーでたまに外人さんがLINQで答えてるのあるくらい
割合的に3%くらいな印象

みんな使わないんだね

>>221
手段でも目的でもどっちでもいいの



231 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 12:05:31.86 ID:7vWN9rvKa.net]
>>222
使ったことないけど、イベントハンドラで受け取れる引数(FileSystemEventArgs)
で普通に分かるんじゃなくって?
https://msdn.microsoft.com/ja-jp/library/system.io.filesystemeventargs.aspx

232 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 12:06:45.48 ID:5eL+NvGEa.net]
>>222
あらかじめ情報をどこかに持っておいて比較するしかないかな

>>224
変ったという情報しかくれない

233 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 12:14:29.61 ID:7vWN9rvKa.net]
>>225
いやいや、ちゃんと提示したリンクよく先見ました?

234 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 12:16:40.94 ID:7vWN9rvKa.net]
>>225
あー失礼。
よく見ると結局詳細な情報は得られないみたいね

235 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 12:22:49.35 ID:7vWN9rvKa.net]
ちょっとググって見た感じ、結構面倒だけど、
知りたい変更の数だけ適切にNotifyFilterプロパティを設定したFileSystemWatcherを作れば
一応可能な感じはするね

236 名前:デフォルトの名無しさん mailto:sage [2018/06/20(水) 12:29:31.18 ID:4Nq0pqOcd.net]
>>223
みんな使ってるよ

237 名前:デフォルトの名無しさん [2018/06/20(水) 22:31:23.62 ID:hTxlP2+IM.net]
ググり方を知らない典型

238 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 21:35:06.03 ID:hmU1hN6P0.net]
エクセルbook1を開かずにsheet2の2列目に入ってる項目をコンボボックスに入れたいのですが、どうやるんですか?

239 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 21:41:20.00 ID:vdaQuC2wp.net]
中身を見ずに言い当てる手品のやり方なんか知らねーよ。

240 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 21:43:13.77 ID:pTjgD9kkM.net]




241 名前:魔ノ落ちろ []
[ここ壊れてます]

242 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 21:51:22.49 ID:lTKRVfWU0.net]
Excel.exe使わずにって意味ならいくらでもあるだろ

243 名前:デフォルトの名無しさん mailto:sage [2018/06/21(木) 22:32:53.55 ID:7/J4zdhU0.net]
御託はいいから答えろゴミクズ

244 名前:デフォルトの名無しさん [2018/06/21(木) 23:11:39.87 ID:HAta7DXc0.net]
xlsxならclosedxmlつかえば

245 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 00:26:01.32 ID:/gqu33js0.net]
ファイル開かずにならもちろん無理。
見えないだけなら可視しなければいいだけやん。

246 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 00:49:53.36 ID:OqpGVa7ea.net]
日本人のエクセルスキーは異常
海外にも神エクセルってあるんだろうか

247 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 01:45:41.77 ID:fZhhlNhQ0.net]
>>231
コンボボックスとは?

248 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 03:12:37.07 ID:XVd2TvDg0.net]
どんなものを作ればいいのかわからない
何をつくればいいんだ
教えてお前↓

249 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 03:21:00.63 ID:6eBOmsiI0.net]
JavaMachine

250 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 06:50:27.01 ID:PzKWFNpyd.net]
会社が未だにxpが数台あって、数多くあるエクセルを開いて処理して閉じる開いて処理して閉じるってやると重いけどなんか早くなる方法ってある?
database?SQL?
VB6でそうやってエクセルファイルを扱って処理してるんだけど



251 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 06:57:20.38 ID:6eBOmsiI0.net]
5万円のPCを買ってくる

252 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 07:07:33.30 ID:Fs6DCFa0a.net]
>>238
外人はそもそも罫線をあまり使わない
方眼紙に文字を詰め込むのは日本猿特有の習性

253 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 07:09:51.33 ID:6eBOmsiI0.net]
私は猿なのでVSの枠がはっきりしないフラットデザインが馴染めません。

254 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 07:20:32.82 ID:Y47lTZ4XM.net]
日本猿も江戸時代はプレーンテキストだったのに、どこで間違えたんだろうな

255 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 09:37:09.99 ID:bJJwlRlwM.net]
>>231
開かないとわかりません

256 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 09:59:49.98 ID:atRhX3PgM.net]
>>245
同意
各項目の意味付けが曖昧になってすごく見づらい。退化と言いたいくらい。
そのうち立体的にするとわかりやすいやろって波が来ると思う。

257 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 10:09:55.10 ID:lIRytxFLM.net]
そもそも細々としたアイコンやメニューを大量に配置するのに適したUIではないわ
Azureコンソールとか見てても思うけど、マイクロソフトにUXデザイナーがいないってのは恐らく本当

258 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 10:13:34.27 ID:etP9oQEYM.net]
VSCodeのUIは使いやすいけどな
本家VSもボタン全部無くしてコマンドにするべきだわ

259 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 10:18:33.53 ID:KB00qr+FM.net]
web service(asmx)について教えてください。
利用する複数のアプリで使い回したいものをstatic変数に保持したいのですが、寿命が尽きるタイミングは分からないでしょうか?
具体的にはデータベースのconnectionでして、セッションをケチるために1つだけを使い回そうと考えています。寿命が尽きる時にdisposeしたいのですが、できない場合問題でしょうか?

260 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 10:26:12.51 ID:xMgX8Fdkr.net]
C#の設計思想とか、どういう設計でコード書いたらいいかみたいなのがわかりやすい書籍ってある?



261 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 10:51:01.98 ID:32SF4tM80.net]
>>244
値を縦に並べて合計との間に一本横線引いてあるだけとか、海外の資料じゃ良くあるよね

>>245
馴染めないという程じゃないけど、もうちょっと境界をはっきりして欲しいな
Windowsのデザインからしても最近のMSのトレンドなんだろうけど

262 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 12:00 ]
[ここ壊れてます]

263 名前::58.68 ID:fAckkxP+p.net mailto: >>252
c#実践開発手法がいいと思う
設計する上で重要な思想が学べるはず
[]
[ここ壊れてます]

264 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 12:11:16.45 ID:mIOgjjA8a.net]
フラットデザインは最近はやりのユニバーサルデザインとは真逆

265 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 12:11:51.14 ID:U+1NZIRBr.net]
>>254
よさげ
とりあえずKindle版ぽちった。
ありがとう!

266 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 12:19:03.29 ID:D0ZAUiXgM.net]
第2版が出てたんだな
ステマか

267 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 14:40:02.21 ID:+QjyPCKBM.net]
ダイレクトやろ

268 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 17:59:11.25 ID:32SF4tM80.net]
むしろサードパーティマーケティング

269 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 18:01:56.90 ID:v3P4scZFM.net]
今年独り社内SEとして入社しC#を選んだ者ですが、コンストラクタをオーバーロードして引数が有るものと無いものを作りました

よくよく考えると引数が無いコンストラクタのインスタンスを作って引数有りを前提にしたメソッドをコールすると最悪例外を出してしまうのですが、これは設計不良として検討し直しでしょうか?よくある事として許容されるでしょうか?

270 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 18:07:20.69 ID:j0bZxxMK0.net]
>>260
>引数が無いコンストラクタのインスタンスを作って(コンストラクタの)引数有りを前提にしたメソッド
人に聞くまでもなく作り直さないとだめだろう



271 名前:260 mailto:sage [2018/06/22(金) 18:21:23.38 ID:v3P4scZFM.net]
やっぱり設計の問題ですよね
フィールドに初期値入れれば例外は起きないと思いますが、引数必須のインスタンスを作られたら無意味なメソッドが完成するというのは設計者失格ですよね

272 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 18:35:58.53 ID:j0bZxxMK0.net]
>無意味なメソッドが完成する
メソッド書き直すとかないんだ・・・
普通は条件が違えば呼ばれないようにするとかメソッド内部で分岐させるとかいろいろあると思うんだが

273 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 19:36:18.31 ID:fkpP2SFC0.net]
>>251
>寿命が尽きるタイミングは分からないでしょうか
基本的には分からない
つかキャッシュ使え
そもそもDBコネクションならほとんどの場合でドライバ側でプーリングされてると思うが

274 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 19:43:22.50 ID:RGVBxohIa.net]
>>260
設計不良は大げさ過ぎw
普通に考えて

(1) 引数ありのメソッドは廃止。代わりにそのデータはプロパティでセットできるようにする。

(2) 引数なしのコンストラクタが呼ばれた時はプロパティの値は規定値が設定されるようにする

こんだけでしょう

275 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 19:58:18.66 ID:KB00qr+FM.net]
>>264
データベース管理者から、なるべく接続を増やすなと言われてます。複数のPCから複数のアプリでアクセスするので、窓口を一本化するイメージです。
なのでプーリングはアプリ分の接続が残るので逆効果。
キャッシュを使うとは具体的にはどうするのですか?ググるヒントをもう少しください。

276 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 20:38:24.35 ID:fkpP2SFC0.net]
>>266
>複数のPCから複数のアプリでアクセスするので
それサーバ側の話?
アクセスって何に?DBにアクセスするのは誰?

つか、そもそもそれWEBサービスに同時アクセスあったときにどうする気?

277 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 20:58:02.81 ID:atRhX3PgM.net]
>>260
使う側からすると、引数に渡す値ね〜よのときは、引数なしのほうがいいな。
(なしのときは null渡すとかにしたくないな。私見)

278 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 22:05:33.33 ID:rFBnrjcr0.net]
>>266
接続ユーザー分排他でもするのかよw

279 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 23:04:03.86 ID:TC2xExz/0.net]
4msのインターバルタイマを実現するのにおすすめの方法を教えてください

280 名前:デフォルトの名無しさん mailto:sage [2018/06/22(金) 23:08:50.34 ID:6eBOmsiI0.net]
リアルタイムOSをインストールする



281 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 00:01:03.09 ID:9nwowUkH0.net]
USBシリアル付きマイコンから適当にパルスを送ってもらう
数百円ぐらい

282 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 00:04:23.96 ID:4A65Q ]
[ここ壊れてます]

283 名前:ZOx0.net mailto: >>267
クライアントPCからデータベースに接続します。webサービスで排他処理します。
サーバーの負担を増やしたくないとの事で、とにかく同時期にセッションを増やさないという方針は決定してます。
なので排他処理はどこかでやる事になるのですが、どこかのPCで動くアプリよりやり取りも含めて楽かなと思ったのですが。
[]
[ここ壊れてます]

284 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 00:07:55.71 ID:OXSP1qkx0.net]
>>271
CreateWaitableTimerなるものを見つけました
試してみます

>>272
URLはよ!はよ!

285 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 00:27:06.35 ID:YVqCYnTIa.net]
>>273
データアクセスのためのAPI作れば

286 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 01:52:54.43 ID:OXSP1qkx0.net]
>>272
Arduino Nano互換 でいいのね?
よーし、パパがんばっちゃうぞー

287 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 02:29:38.11 ID:RCtrcOsy0.net]
>>273
>クライアントPCからデータベースに接続します。webサービスで排他処理します。
webサービスは何をもらって何を返す気なんだ
なんにしても俺には想像もつかない方式を検討してそうだ

288 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 06:55:53.26 ID:DOoRmJ6HM.net]
>>273
webサービスの中で普通にコネクションを開いて使い終わったらすぐにDisposeすればいいよ
ライブラリがいい感じにコネクション数を調整してくれる

どうしてもマニュアルでコネクションの数を制御したいならDB要求をループで処理し続けるスレッドを走らせて、他のスレッドとはキューで連携させる

289 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 07:53:25.35 ID:5eZj9LlZM.net]
web側でmax connection pool sizeを設定するだけの話に見えるが
そういう設定が無いからどうしたらいいかって話なの?

290 名前:デフォルトの名無しさん [2018/06/23(土) 09:10:53.59 ID:kilEB0fc0.net]
tes



291 名前:デフォルトの名無しさん [2018/06/23(土) 11:25:15.28 ID:kilEB0fc0.net]
test

292 名前:デフォルトの名無しさん [2018/06/23(土) 11:28:34.91 ID:kilEB0fc0.net]
fwくぇ

293 名前:デフォルトの名無しさん [2018/06/23(土) 11:42:17.32 ID:kilEB0fc0.net]
fwq

294 名前:デフォルトの名無しさん [2018/06/23(土) 11:44:04.15 ID:kilEB0fc0.net]
fwqef

295 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 12:01:17.59 ID:AshQdjwf0.net]
よそでやれ

296 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 12:23:56.69 ID:RL7TWjJda.net]
>>262
引数なしのコンストラクタをprivateに

297 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 17:51:20.90 ID:RCtrcOsy0.net]
>>286
それだと(外部から)引数必須なインスタンスしか作れなくなる
それが設計通りならそれでいいけど

引数必須なインスタンスと引数なしのインスタンスが同一クラスである必要あるのか疑問だ
引数なしのクラスを継承して引数ありのクラス作れば良い気がするぞ

298 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 18:04:38.51 ID:61tHQZae0.net]
引数一個で騒々しいソースコードですね

299 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 22:33:46.94 ID:RCtrcOsy0.net]
動けば良いってなら好きにすればいいさ
設計論として考えるとどうしても大仰になるのはしかたない

300 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 22:44:50.08 ID:AshQdjwf0.net]
クレデンシャルを持ってる場合だけ一部の関数が使えるとか
別に珍しい設計じゃないと思うけどね



301 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 00:05:43.76 ID:LwX9ZOYW0.net]
>>289
動けばいいことの他に何を気にしてるの?
実行速度?

302 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 00:10:47.78 ID:tHXuj/n7a.net]
ああ、なんか質問を読み違えてたけど、
要は現実の使われ方として、特定のプロパティがまったく必要とされないケースがあるってことね。

単純に考えると>>287がシンプルで分かりやすいように思うけど
ケースバイケースではあるが、一つのプロパティを追加しただけのサブクラスってのも
存在意義がはっきりしないというか、名前付けに困るようなクラスになりがちのようにも思う

コンストラクタで明示的に指定されない場合はプロパティの値が規定値としておくのが
無難なケースの方が多いと思うけどね

303 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 01:25:17.80 ID:GW8ybopf0.net]
>>291
設計論だっていってるんだから、設計の美しさだよ
美しさ

304 名前:フ基準は人によって違うからほとんど宗教論なんだがなw

>>291
>コンストラクタで明示的に指定されない場合はプロパティの値が規定値
コンストラクタで指定するものが、プロパティで指定できるようなものなら確かにそれが一番無難
ただそれなら引数つきコンストラクタの存在意義がなぁ
たんにコードが短くなるぐらいだが、オブジェクト初期化子でプロパティ設定するのと大差ない気がするし
[]
[ここ壊れてます]

305 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 23:01:38.61 ID:euoTg7OM0.net]
webBrowser1.documentText=hoge;
で生成したHTML中にページ内リンクがあります。
(<span id="xxx"></span>)
クリック操作をせずにこのアンカーにジャンプすることはできるのでしょうか?

306 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 23:35:19.41 ID:+Dnac0xs0.net]
webBrowser1.Document.GetElementById("xxx").InvokeMember("Click");

307 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 23:43:26.59 ID:euoTg7OM0.net]
エラーは出ないのですが、ジャンプはしてくれませんでした。
単なるアンカーなので、直接それをクリックしても意味はなくて、
<a href="#xxx">XXX</a>をクリックするようにしないとジャンプしないのではないでしょうか?
(なお、ページ内に↑を用意していないので、これをクリックすることはできません)

308 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 10:34:01.89 ID:CeO6DCCqM.net]
GetElementById(...).ScrollIntoView(...)

309 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 11:16:30.33 ID:sIr2ygWz0.net]
>>297
いけました!
ありがとうございます!

310 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 16:58:03.78 ID:L8J9ADJ70.net]
ListVIewでクリックされたアイテムのインデックスを取得するにはどうしたらいいでしょうか?
例えば、以下の画像だと、"ListSubItem 3"がクリックされた時に、1,2 (1は列,2は行)といった値を取得したいです。
www.planetsourcecode.com/Upload_PSC/ScreenShots/PIC20042291953273057.jpg



311 名前:260 mailto:sage [2018/06/25(月) 17:57:14.07 ID:TcWThoAPM.net]
引数有り無しのコンストラクタで相談した者ですが色々とご意見ありがとうございます
先輩無しの独り開発なので参考になります

何が正しいかはプロジェクトの性質に左右されそうなので突き詰めませんが、驚き最小の法則的に見ると、無意味なメソッドをコール出来るとかどんな気持ちでしょうか?

私は後々混乱しそうなので避けたいのですが、さほど驚かれないならこのまま実装しようかとも

312 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 21:33:53.83 ID:1sQ+cvRC0.net]
>>299 HitTest

313 名前:デフォルトの名無しさん [2018/06/25(月) 21:56:47.71 ID:lw6peYFv0.net]
暇つぶしにunityでプチゲームを作ろうとしているのですが
以下のような処理をしています。
https://dotnetfiddle.net/p6v66Z
スキルが増えるごとにSkillFactoryとTypeToParameterに分岐が増えていってしまって
なんだかなあという感じなのですが、もうちょっとマシな方法はないでしょうか。
SkillParamが諸悪の根源のような気もしていますがほかにうまい方法がおもいつかず。。

314 名前:デフォルトの名無しさん [2018/06/25(月) 22:01:12.17 ID:XS6tlG59d.net]
githubでC#で書かれたソースコードを見るとVisual Studioで作成したファイルが見当たらないんですが、
Visual Studioを使わないほうがいいんでしょうか?

315 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 22:10:35.49 ID:XRDiWZAB0.net]
ワークシート1のb2から空になる最終行までフォーム1のコンボボックスに入れにはどうしたらいいですか?

316 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 22:15:12.37 ID:Bspx7Xiu0.net]
>>303
VisualStudioで作成したファイルって具体的には何のこと?

317 名前:デフォルトの名無しさん [2018/06/25(月) 22:30:53.83 ID:QLHuH/320.net]
ListでKey値が一致する要素を探

318 名前:して
内容を更新するにはどうすればいいの
ループで検索するしかない?
[]
[ここ壊れてます]

319 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 22:41:13.84 ID:DXP13toJ0.net]
>>306
DictionaryならともかくListでKey値って何よ

320 名前:デフォルトの名無しさん [2018/06/25(月) 22:49:08.14 ID:QLHuH/320.net]
>>307
2次元にしてキー項目を自分で作ったのよIndex用に



321 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 23:11:47.70 ID:cq0DHw7f0.net]
KeyedCollectionクラス

322 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 09:16:48.94 ID:UPxy/vlK0.net]
なぜDictionaryにしなかったのか

323 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 09:21:11.66 ID:A+/Pd/Nq0.net]
君は何故全力を尽くしても駄目なのか

324 名前:デフォルトの名無しさん [2018/06/26(火) 09:58:06.77 ID:1CiOys6I0.net]
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型は基本のようなので、根本的な所を理解していないのかも知れませんが
よろしくお願いします。

325 名前:初心者 mailto:sage [2018/06/26(火) 10:22:41.47 ID:d46l513VM.net]
>>312
Hogeのobjはbを知らないから……かな?

326 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 12:16:48.98 ID:U/nLOHiUM.net]
>>312
objectをdynamicに変えるといいよ

327 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 12:22:10.81 ID:yFHnMB/La.net]
>>312
つdynamic

328 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 13:31:04.74 ID:oxIIJc6mM.net]
便乗質問していいですか?

> var obj = new { a = "a", b = "b" };

これってクラスとして扱われるんですか?

329 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 13:38:08.33 ID:ZA95aSE/M.net]
扱われるよ

330 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 14:41:15.83 ID:yB7+BiTZ0.net]
インスタンスメソッドと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の方が入力と出力がはっきりしてるのでわかりやすいのかなと思うのですが、オブジェクト指向ではないですよね



331 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 14:59:10.81 ID:FPh9h90J0.net]
インスタンスが必要かどうか。
stringクラスのCompareメソッドとCompareToメソッドが良い例。

前者はパラメータがnullでも通るが、後者はインスタンスが無いとダメ。

332 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 15:53:58.50 ID:B40aLJ4va.net]
インスタンスメンバーを参照してないならstaticにしてる
でも必ずすべきとは思わない
仮に日本語にして考えてみる
人間クラスに "はピヨです()"メソッドをそれぞれ実装すると

if(人間.はピヨです(彼)) {〜}

if(彼.はピヨです()) {〜};

これを見るとstatic はおかしいと思うがstaticにすることが多い

333 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 16:01:01.51 ID:B40aLJ4va.net]
誤解を招くような書き方だけど上のHogeなら間違いなくインスタンスメソッドにする

334 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 19:39:44.60 ID:2rJMn7sUa.net]
あー、ちょっとわかってきたかもです
主語というか、意味的に、表現したい意図に近い方を選ぶ感じですかね
とりあえず今回の例で言うと、インスタンスメソッドにすることにします

335 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 22:41:11.75 ID:oc0D76610.net]
RuntimeHelpers.PrepareMethod(RuntimeMethodHandle)の挙動が理解できない・・・


336 名前:このコードで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: '指定されたジェネリックのインスタンス化は無効です。'
  }
}
==
[]
[ここ壊れてます]

337 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 22:44:20.11 ID:QRnSOnuU0.net]
>>322
別にそんなとこ気を使っても一円の利益にもならんというアドバイスも
心の片隅においておいてくれ

338 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 06:43:38.75 ID:ZicgrVNId.net]
Cでエクセルを扱っていろいろするときはやっぱcsvにしておいた方がいいのかね?

339 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 09:40:20.28 ID:UGstrjJ10.net]
>>316
匿名型、で調べてみるといい

340 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 13:28:49.32 ID:kZGjx8UI0.net]
>>325
何をやりたいか次第だけども、
csvで完結出来るのならcsvがいい



341 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 15:48:14.07 ID:VkL9wLVWp.net]
下手にxls使うと勝手に型変換してくれるからめちゃくちゃになるんだよな。

342 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 19:05:45.76 ID:Eyd8ciC/M.net]
複数のアプリで1つのserial portを使いたくて、dllで受けて受信データによって別々のイベントを発生させ、複数のアプリに受信させようと考えました。
dll内のSerialPortをstaticで持てば共有できるかと思ったのですが、staticで宣言しても呼び出し元が別プロセスだと共有されないようですね。
何かいい手はないでしょうか。

343 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 19:33:53.09 ID:cLV89PFx0.net]
シリアルポートと通信するサーバを作って
必要な数だけクライアントを待ち受けるのが楽なんじゃないの
プロセス間通信はソケットやパイプとか適当なものを使う

344 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 20:12:38.21 ID:4yQE+Bm50.net]
>>323
コレじゃダメかい?
https://stackoverflow.com/questions/31754418/runtimehelpers-preparemethod-not-working-when-called-with-funcstring-created-i

345 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 22:11:07.14 ID:VkL9wLVWp.net]
複数のアプリにどうやって通信データを振り分けるかの方が興味あるわ。

346 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 22:41:58.18 ID:ezuUhY+H0.net]
つ MSMQ

347 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 23:21:02.53 ID:KXFiZVY30.net]
そもそもWindowsのシリアルポートって複数のアプリで共有(同時オープン)できるのか?

348 名前:デフォルトの名無しさん [2018/06/27(水) 23:25:13.59 ID:YJH26+lwa.net]
シリアルポートはなんかが掴んでたらだめだよね

349 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 23:39:03.37 ID:kv/Gz/3da.net]
だから質問してるんでしょw

質問者は他のアプリが占有中でも無理矢理割り込む方法を聞いてるわけじゃなく、
自作アプリの複数のプロセスで共有する方法を聞いてる

350 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 23:42:52.29 ID:lEu9Ds2F0.net]
ない



351 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 23:50:05.06 ID:KXFiZVY30.net]
だからそもそもシリアルポートは複数のプロセスで共有できないでしょって言ってるんだが

どうすべきかは>>330さんがとっくに示してるわ

352 名前:デフォルトの名無しさん mailto:sage [2018/06/27(水) 23:57:16.85 ID:kv/Gz/3da.net]
馬鹿にも程があるな...

353 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 00:02:45.40 ID:o5j8xzNra.net]
言ってるんだが
いつも思うけど、こういう口調って馬鹿の間で流行ってるのかねw

354 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 00:39:46.48 ID:M7FH9WysM.net]
シリアルポートに限らずdllのstatic変数が共有できないのですが、共有したい需要ってないのでしょうか?共有したい場合はどうするのがよいのでしょうか?

355 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 01:01:35.03 ID:wDYBzoR70.net]
>>332
俺も

356 名前:アれが疑問だ
仮にサーバーが受けたとして
どうやって俺宛か判断するんだ?
[]
[ここ壊れてます]

357 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 01:12:05.63 ID:5aYb43f30.net]
dllのstatic云々はおいといてメモリマップトファイルならC#でも使えたかな
C++ならデータセグメントを共有メモリにできる
どちらにしろプロセス間の排他制御が必要

358 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 01:31:16.24 ID:o5j8xzNra.net]
>>342
宛先なんかなく、単に全部のアプリに同じデータがブロドキャストされれば
十分って場合もあるでしょ

例えばシリアル経由で計測器か何かのデータが送られてくるとして、

(1) 画面表示だけするアプリ
(2) エクセルにログを保存するアプリ
(3) 計測データを使って何か他の機器を制御するアプリ

何かの都合でこんな風に複数のアプリに分けて作る必要があるのかもしれない

359 名前:デフォルトの名無しさん [2018/06/28(木) 01:38:37.90 ID:KZQYx/g/0.net]
C#でのSelenium操作についても質問していいですか?

360 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 05:25:02.37 ID:mpKH796a0.net]
>>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 }); // 問題なし
}
}
==



361 名前:331 mailto:sage [2018/06/28(木) 07:24:39.78 ID:TtGcC5rD0.net]
>>346
(確固たるソースに基づく訳じゃないので推測だけど)値型か、参照型かじゃない?
参照型の場合は TypeHandleを指定する必要がある、ってこと。

362 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 07:34:23.33 ID:wMDqdzUG0.net]
>>341
よく解らんけどdllってアプリごとにメモリに個別に展開されて初期化されるからソースコード上で同じ変数名にアクセスしても実態は違うので共有できないのは当たり前なきがする

363 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 08:01:29.47 ID:M7FH9WysM.net]
Cとかって共有されなかったっけ?よく覚えてないけど。

364 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 08:16:48.89 ID:h/Ekqdxpa.net]
されるわけないだろ
何のためにプロセスがあると思ってるんだ

365 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 09:27:13.22 ID:9GisGdyJ0.net]
ないって言ってんのにな
死ぬまで悪あがきしてればいいよ

366 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 10:06:45.02 ID:uTPw2MsS0.net]
何がしたいのか知らんけど、Win2k時代にシリアル通信のロガー作ったことある。あんときは、DLLをフックしてCreateFile,ReadFile,WriteFileのデータをトレースしたが、ハッキリ言ってやめたほうが良い。

367 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 11:08:48.44 ID:mI3gmfcxp.net]
ロガーだけならどこぞの口でforkすりゃいいだけだろ。
通信内容を振り分ける仕組みだと思ってたから無理って話してんだよな。

368 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 11:17:35.66 ID:uTPw2MsS0.net]
親がシリアル掴んで、名前付きパイプで子に振り分けるかなぁ。

369 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 12:52:45.79 ID:q5PWc0B3M.net]
>>332, >>342, >>353
受信データによって
って書いてるから何らかのプロトコル決めてて、アドレスとかポート番号とかの振分け用の情報あるんだろ
LANケーブルは1本でも複数のプロセスで共有してるのと同じ
ここまで書けばよほど頭の悪い奴でなければわかると思うが>>329が言うようなことは実現可能
nobikko-nobinobi.hatenablog.com/entry/2017/09/13/234555
ただC#だけでできるかどうかは知らん

370 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 12:53:45.63 ID:q5PWc0B3M.net]
>>349-351
無知自慢乙



371 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 13:12:07.43 ID:wMDqdzUG0.net]


372 名前:同じDLLのstatic変数がそれを使ってることなるプロセス間で同じメモリの場所を参照するかってことじゃないの? []
[ここ壊れてます]

373 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 13:48:50.61 ID:f040o02ua.net]
>>356
残念だけどそれはプロセス間の共有メモリの話であってシリアルポート共有じゃないよ

シリアルポートは排他でしか開けないので他の人が書いてるようにシリアルポートをサービスで開いておくしかない
それがどのような形をとるかはいろいろある

374 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 15:13:33.45 ID:5RaMOuHjM.net]
通信量など条件にもよるけど、
シリアル受信プログラムは、データの種類によって接頭語+日時名のファイルを作る。
各アプリはファイル監視して自分用のを実行する。
とかユルイ連携にするのも手かと。同時開発しやすいしテストやトラブル対処も楽。

375 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 15:19:28.79 ID:poFZ3+du0.net]
ASP.NET CoreにはJavaの@Transactionalのような仕組みはないのですか?
DispatchProxyを使ってトランザクション管理を自前実装してますがより一般的な手段があるなら乗り換えたいです

376 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 15:21:33.85 ID:pHy9VzUja.net]
今時232C使ってるようなデバイスでそんな振り分けが必要なデータなんか送ってくる可能性は低いと思いうけどねw

I2Cとか485をエミューレートしてるとかなら知らんけど
そんなデバイス聞いたことないけどさ

アプリ作るのも、ブロードキャストして要らないデータはアプリ側で捨てる方が簡単で
保守性も高いでしょう

377 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 16:53:51.04 ID:uTPw2MsS0.net]
どーせ、RS485/LAN変換器とか絡んでるんじゃね

378 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 17:08:19.49 ID:mI3gmfcxp.net]
普通のシリアル通信にコンフリクト回避のネゴエーショ等の機能は存在しないんだが、どうするつもりなんだろうな。
RS422規格の通信にするにしても、ドライバーが対応してないと難しいよな。ハードフロー制御なドライバーにして後はハードに頑張ってもらうのかな?

379 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 17:10:29.45 ID:mI3gmfcxp.net]
あ、先に書かれてたか。

380 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 17:49:10.63 ID:Hec9+XaU0.net]
LANはシリアル通信ではないのだが・・・



381 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 18:13:18.29 ID:q5PWc0B3M.net]
>>358
>>329は受信によってイベントを発生させるとか書いてるからサービスでないといろいろ面倒だが、単にポートの読み書きを共有するだけならサービスなんていらんよ

382 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 18:17:20.09 ID:q5PWc0B3M.net]
>>361
まーた、俺の環境ではそんなデータはあり得ない(キリッ
ってか
いちいちマウント取りに来なくていいよ

383 名前:デフォルトの名無しさん [2018/06/28(木) 18:25:00.98 ID:hgy03eod0.net]
また必死なのが沸いてるなァ

384 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:07:13.57 ID:mpKH796a0.net]
>>347
ありがとうございます
いろいろ試してみたところ、書いてもらった通りメソッドを宣言したオブジェクトのジェネリック型引数が
全部値型ならPrepareMethodの第2引数は要らないみたいです
でも値型と参照型が混在する場合は参照型のハンドルだけ渡せばいいというわけではなくて
値型のものも含めて渡す必要があるみたいなので、
やっぱり基本的にメソッドを宣言したオブジェクトがジェネリック型引数を持つなら
第2引数は必要と考えたほうが安全な気がします

385 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:15:51.58 ID:UR04nmTq0.net]
君たちマニアックすぎよ!
初心者用だぞ!

386 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:19:04.65 ID:u+1Q3Zjpa.net]
>>367
こういう馬鹿みるちいつも思うけど、それやってるのはお前なんだけど...
馬鹿にも程があるなほんと

387 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:24:04.13 ID:q5PWc0B3M.net]
>>371
>>368

388 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:29:53.64 ID:u+1Q3Zjpa.net]
>>372
これやるのも2chの馬鹿の特徴だよね

これ見るといつも思うが、こういう馬鹿には自分自身を見る自意識がないのかね。
お前

389 名前:自身がやってることは何なんだw

それ以前に必死だったら何なのかね。意味が分からん
まるで「お前ウンコした!!!」って騒いでる中学生だけど、ガチでそのあたりで精神年齢止まってる可哀想なお方なんだろうけどね
[]
[ここ壊れてます]

390 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:35:28.68 ID:OkcoTao20.net]
>>373
>>1読め



391 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:36:30.54 ID:u+1Q3Zjpa.net]
232C使うようなデバイスでアドレスだのポート番号だの、振り分けが必要なケースなんかレアだろう、
(質問者もそんなこと言ってない)ってのはごく普通の感想だと思うけど、異論があるならできれば
具体例上げて反論すればいい。

マウントがどうとか中学生じみたことしか言えない馬鹿は黙ってろって
いい歳こいて恥知らずかよ

392 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:37:46.81 ID:u+1Q3Zjpa.net]
>>374
いう相手を間違えてるよ馬鹿
こういう馬鹿も2ch名物だな

393 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:41:07.48 ID:OkcoTao20.net]
>C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
読めないのは誰なのか

394 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:44:26.95 ID:5xE/3ALJ0.net]
slip も知らない奴にほざかれてもな
あと産業用ならRS-485はまだまだ現役
https://www.fujiele.co.jp/semiconductor/step/engineering/20171219-1/

395 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 19:46:09.46 ID:wDYBzoR70.net]
結局、物理的な線は一本なんだろ?
なんで他アプリ全員に配るんだ?

396 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 20:21:27.00 ID:u+1Q3Zjpa.net]
>>377
お前自身も読めてない。いってるそばから「俺だけ特別」クンか
そもそもなぜ喧嘩を売った側でなく売られた側を非難するのか
馬鹿だろお前。

397 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 20:25:36.86 ID:u+1Q3Zjpa.net]
>>379
それは愚問。
ただ、昨日から言ってるように、現実的に考えれば質問者がやりたいことは
>>344みたいな感じである可能性が一番高いと思う。

もちろん、仮想的な複数の通信チャンネルを実現したい可能性も否定はできない

398 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 20:38:08.78 ID:9GisGdyJ0.net]
「自分自身」と「馬鹿」って来たら例外を握り潰す君だから
そいつこのスレに12年いるぜ

399 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 20:40:32.24 ID:9GisGdyJ0.net]
年いくつだろ
Hagexを刺した統失くらいはあるのかなw

400 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 20:44:45.44 ID:9GisGdyJ0.net]
あとは「口調」「中学生」「精神年齢」は定番ワード



401 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 20:47:01.29 ID:u+1Q3Zjpa.net]
>>382
こいつもいつも思うけど、これで自分をおかしいと思わないんだから幸せでいいよねw
前から誰のこと言ってるのか知らんけど、この意味不明な粘着質、普通にストーカーと同じメンタルだ

402 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 20:53:26.04 ID:u+1Q3Zjpa.net]
そもそも匿名掲示板で誰かを「特定」して付きまとってやろう、って動機が理解不能だけど、
普通の人間だったらそんな動機を持つ俺って異常なんじゃないかと悩むと思うんだけど...

いや悩まなくても、多少知恵がある人間なら、それって(2chにはよくいる)負けを認めるだけの
精神的強さを持たない弱者の「精神勝利法」なんじゃないか、とか思うと思うんだけど

403 名前:デフォルトの名無しさん mailto:sage [2018/06/28(木) 21:27:08.49 ID:wMDqdzUG0.net]
必死だな。

404 名前:312 mailto:sage [2018/06/28(木) 22:49:06.80 ID:RNZwZaAN0.net]
遅レスですがobjectをdynamicに変えて値を取る事が出来ました

こんな便利な型があるんですね
ありがとうございました

405 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 07:02:58.46 ID:41EVR+sW0.net]
動機ねえ、スレが荒れそうだからかな
俺に反応して貰って、俺が反応を無視すれば、とりあえず収まるんだよ
そう、いつものことだ

406 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 07:26:58.04 ID:mdiAhzMH0.net]
>>375
232cは物理層の規格や。今だってモデムやTNC繋げる人もいるさ。

407 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 08:53:11.26 ID:HPFHtU9c0.net]
>>329
答え出てると思うけど
プロセスは3つにする
1つのプロセスはシリアル通信のサービスを提供
他の2つはクライアントとしてシリアル通信の要求をだす
要求はQueueで排他する等で安全策取る

プロセス間通信は適当に(ipc使えば簡単かな)

408 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 08:55:21.96 ID:HPFHtU9c0.net]
>>391
あ、、、要求じゃなくてサーバーが自走して受信のイベントをクライアントに出すのか
でもそれも可能だからね

409 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 09:17:28.48 ID:VFzCkUQ4r.net]
おお、コンプリティッドタスク!!!

使ってみよう

ありがとうございました

410 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 10:32:36.67 ID:eG0vtZS/M.net]
ipcは死んだ技術なのかと思ってたけどつかってる人いるんだね
デバッグ環境ではうまくいくけど実環境でこけることが多いから最近は使ってなかった



411 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 10:33:59.19 ID:1XSLHtbi0.net]
electronでもつかうことね

412 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 12:38:26.74 ID:8d6UIl5Q0.net]
配列内の文字列がtargetStrに含まれてるかどうかを調べるコードなのですが
いまどき風な書き方ってありますか?
var words = new string[] { "ああ", "いい" };
foreach (var word in words)
{
  if (targetStr.IndexOf(word) != -1)
  {
  // hit
  }
}

413 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 12:45:50.64 ID:iCnCbkLdd.net]
>>396
Contains

414 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 13:54:50.63 ID:6eaCpSu00.net]
>>396
targetStrの中に"ああ"や"いい"が含まれている判定はIndexOfでいいんじゃね?
ループつかわないでLINQのAnyメソッドにしておくとか

415 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 13:59:23.95 ID:6eaCpSu00.net]
あ、すまん。おらの見ないでよかと。>>397見てなかったorz

416 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 16:12:15.55 ID:tWLgdBQo0.net]
まぁ、words.Any(word => targetStr.Contains(word)) ですっきり書こう、が今時?なんかなぁ?

417 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 16:54:35.36 ID:Z9lwbPEL0.net]
>>400
それ、words.Any(targetStr.Contains) でいけるよ
仮引数いらん

418 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 17:33:42.32 ID:+TbsbPax0.net]
>>400-401
https://qiita.com/Temarin/items/4ac0de4f395dcecf5eec
このページでは
.Where( string.IsNullOrWhiteSpace );
よりも
.Where( x => string.IsNullOrWhiteSpace( x ) );
を推奨してるけどいまいちよく分からないから詳しい議論を聞いてみたい

419 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 17:56:22.21 ID:n04C+v3iM.net]
>>402
お前は何回Where呼ぶつもりやねんと
Whereの引数に渡すデリゲートのnewがネックになるほどタイトなループでWhere呼ぶなら、明らかにその設計自体が問題
どうでもいい机上の空論だから全く気にする必要はない
通常は、そんなことよりもラムダが間に一枚入ることによるメソッド呼び出しのオーバーヘッド増加のほうが問題になる

420 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 18:01:54.20 ID:NMkrO0hpd.net]
仮引数を省略してるというより渡してるものが違うだろ。
たとえフレームワークの関数でも、関数自体は俺も渡したくはないな。
xとか付けるやつは意識してないだろうが、引数名も有意義だし。
そもそもこれぐらいならインライン展開されるだろうし。



421 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 18:06:39.91 ID:Z9lwbPEL0.net]
関数を第一級オブジェクトとして取り回したくないならLinqなんぞ使わず

422 名前:素直にループした方がいいよ []
[ここ壊れてます]

423 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 18:31:03.18 ID:fLw6tHLKM.net]
最近はクエリスタイルも悪くないかなって思えてきた
単純に記号が減って読みやすいし
ループで書いたらネストするようなクエリを書きやすい
Effective C#でもサンプルコードにクエリ形式を使ってるね

424 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 19:20:37.69 ID:ldv2G5QsM.net]
>>404
関数型の世界では関数をそのまま渡すほうが好まれるよ
その方がより宣言的だからな
ラムダはダサい

425 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 19:30:19.44 ID:NMkrO0hpd.net]
一級オブジェクトとして関数渡してんじゃん?ラムダでも。Funcがdelegateなのが気に食わんのかな。

ダサいってのは主観的な気がする。

426 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 19:40:00.41 ID:Z9lwbPEL0.net]
あれ、主張がわからんくなってきた
関数を引数にするのはいいけど、その場合必ずラムダで無名関数作ってから渡したいって話なのか

427 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 19:42:32.14 ID:HOtQS3nQa.net]
>>408
Haskellとかやってみたらわかるぞ
関数型ワールドでは徹底的にプレースホルダを省くのがクールと見做される
理由は知らん

428 名前:396 mailto:sage [2018/06/29(金) 20:03:36.51 ID:8d6UIl5Q0.net]
皆様ありがとうございます!
高度過ぎて理解できてませんがContainsとLINQ any調べてやってみますm(_ _)m

429 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 20:08:45.96 ID:MGdViK9A0.net]
>>410
そこら辺は言語毎の宗教だろ
他言語を持ち出して比較するのはフェアじゃない

430 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 20:19:05.54 ID:4EyMIKKY0.net]
宗教というか、純粋関数型言語とマルチパラダイム言語で記法を比べられてもな



431 名前:デフォルトの名無しさん mailto:sage [2018/06/29(金) 20:32:19.73 ID:Z9lwbPEL0.net]
>>410
ポイントフリースタイルにこだわりすぎるのはHaskell界隈でも嫌われてるから
あんま変な誤解を植え付けんでくれ

仮引数があった方がわかりやすいならつければいい
ただ今回のContainsに関してはそれでわかりやすくなる要素が見当たらないので何とも
まぁどっちでも普通に読めるから、どっちでもいいよもう

432 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 13:03:37.19 ID:stDx+Xo5a.net]
デリゲートとラムダ式は別物

メソッドにラムダ式を渡してると思って実際は変換されたデリゲートを渡してる場合もある
メソッドのシグネチャーを見てラムダ式をわたしてるのかデリゲートを渡してるのか意識すべき

433 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 13:20:07.97 ID:wYh1ox1V0.net]
やっぱりラムダ式とかデリゲートとか難しい…
>>415
メソッドに渡すのは常にデリゲートだと思ってました
ラムダ式を渡す場合とデリゲートを渡す場合、それぞれの例を教えてもらえませんか?

434 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 13:26:42.98 ID:stDx+Xo5a.net]
>>416
ちょっと書いてたことはあいまいで間違っていたが詳しく知りたいなら
c# ラムダ式 式木でググる

435 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 13:47:21.51 ID:+7yWvOiaM.net]
>>415
お前は何を言ってるんだ
ラムダ式は文法要素上はメソッドの一種
メソッドだからデリゲートに暗黙的にキャストされる

436 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 13:51:28.53 ID:1b356axK0.net]
ラムダ式を渡してるって、その日本語自体がおかしい事に気づくべき。

437 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 13:52:29.78 ID:wYh1ox1V0.net]
>>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;

このあたりのことがとてもあやふやなので解釈が間違っていたらぜひ教えてほしいです

438 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 15:08:20.00 ID:d8PLC79S0.net]
そんなのいいから早く完成させろよ

439 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 15:12:03.88 ID:/Bfo044u0.net]
ところで
words.Any(targetStr.Contains) とか
Func<string, bool> b = string.IsNullOrEmpty; とか
これいつからできるようになってたの?
ラムダ式導入時からできてた?

440 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 15:18:18.92 ID:+7yWvOiaM.net]
>>422
C#2.0からだからラムダより前
今では誰も使ってない匿名メソッドと一緒に入った
匿名メソッドもラムダもメソッドなので、メソッドからデリゲートへの暗黙変換がないと
匿名メソッドもラムダもデリゲートをいちいち明示的にnewしないといけなくなる



441 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 15:23:28.91 ID:EEKpc4BGa.net]
>>422
ラムダ式は関係ないよw
C#2.0からデリゲートのインスタンスを明示的にnewしなくてもよくなった
ufcpp.net/study/csharp/sp_delegate.html#definition

words.Any(targetStr.Contains) ;

words.Any(new Func<string, bool(targetStr.Contains));
の省略記法

442 名前:デフォルトの名無しさん mailto:sage [2018/06/30(土) 17:23:22.11 ID:VzcFRgA/0.net]
オマエラ、
今夜ぐらいは仕事の事を忘れて肉でも食いにいけよ

443 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 09:33:02.24 ID:6nQmCY/K0.net]
あぁそうか、そういえばそのままなデリゲートだったね
すっかり忘れてたww

444 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 21:21:17.36 ID:btMzwCPv0.net]
直撮りで申し訳ないんですが
youとenemy のHP表示→それぞれ1〜9の値を引くの処理をどちらかのhpが0になるまで続けるように組んだつもりなんですが、whileより上の部分と下の部分しか反映されませんでした
どうしたら上手く処理出来るでしょうか
https://i.imgur.com/HbKFSfr.jpg

445 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 21:25:37.50 ID:Y9X1m4Hz0.net]
>>427
>= 0

446 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 21:30:15.05 ID:btMzwCPv0.net]
>>428
なるほど、確かにこれじゃあ条件が「hpが0以下の時」になっちゃってますね 助かりましたありがとうございます!

447 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 21:36:19.75 ID:aT7of7CF0.net]
わろた

448 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 21:36:50.28 ID:aT7of7CF0.net]
微笑ましさで、ね。

449 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 21:40:16.96 ID:gdUYHRxe0.net]
>>428
=いらないんじゃないか
>>427
while (you > 0&& enemy > 0){
もしくは
while (true) {

(処理)

if (you<=0||enemy<=0) break;
}

450 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 21:43:42.29 ID:btMzwCPv0.net]
>>432
両方hpが無くならないと終わらなかったので後者を使わせて貰いました
参考になります!



451 名前:デフォルトの名無しさん [2018/07/03(火) 19:38:57.82 ID:uKdaL+TvM.net]
スクレイピングで、xpathや属性から要素を特定取得できると思いますが、逆に属性を取得することって、できるのでしょうか?
@class=取りたい属性←この値です

452 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 19:53:05.05 ID:obHlRFH50.net]
パーサーなに使ってるか知らんけど
xpath指定で値とれるなら属性指定すればとれるでしょう

453 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 19:56:50.40 ID:BhHhKgjH0.net]
ロケーションステップの末端に
/@取りたい属性
をつければ取れるだろう
あまりこのスレとは関係ないけど

454 名前:デフォルトの名無しさん [2018/07/03(火) 20:15:00.81 ID:3h3fF2lx0.net]
>>435
>>436
その属性を取りたいんですよ。

455 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 20:40:16.29 ID:BhHhKgjH0.net]
だからぁ
/@class
だっつうの

456 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 20:43:41.32 ID:BhHhKgjH0.net]
見直すと436の説明が悪かった

457 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 21:57:38.45 ID:c8nUoQXQM.net]
属性 "名"がほしいのか
属性 "値"が欲しいのかがわからないよな

458 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 00:07:29.57 ID:OxUMeZjO0.net]
要素の属性を全部取得する
https://hokaccha.hatenablog.com/entry/20130819/1376895914

要素の属性を全部取得したいんだけど、 jQuery ではできないっぽい。
DOMの element.attributes を使えばいける

459 名前:デフォルトの名無しさん [2018/07/04(水) 01:32:51.59 ID:QI ]
[ここ壊れてます]

460 名前:UWNU3h0.net mailto: >>440
属性の値がほしいんですね、名前はtagNameでとれるので
[]
[ここ壊れてます]



461 名前:デフォルトの名無しさん [2018/07/04(水) 01:43:11.66 ID:QIUWNU3h0.net]
id="→sample←"
webページ上の値じゃなくて、→←で囲ったsampleという結果がほしいんです。

462 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 04:05:11.91 ID:/r54tfMO0.net]
>>345>>434は同じ人か?
seleniumの話なら
webDriver.Url = @"https://www.seleniumhq.org/";
IWebElement element = webDriver.FindElement(By.Id("promo"));
element.FindElement(By.XPath("a")).GetAttribute("id");

463 名前:デフォルトの名無しさん [2018/07/04(水) 05:51:54.18 ID:QIUWNU3h0.net]
>>444
ありがとうございます。試してみます。

464 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 07:03:48.24 ID:nlc5wO39d.net]
C♯勉強したんだけどネットに参考になるサイトないですか?

VBAはこれで勉強してネットで使いながらそこそこは出来るようにはなりました。何かを作りながら取り敢えず基礎的仕組みを理解出来ればと思ってます。
https://for-guests.com/excel-vba-6006/

465 名前:デフォルトの名無しさん [2018/07/04(水) 07:55:26.39 ID:zwHbS25H0.net]
>>446
↓とりあえずはここかな
https://dobon.net/

466 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 08:50:06.90 ID:oGtdQ8QA0.net]
いやいや未確認飛行だろう

467 名前:デフォルトの名無しさん [2018/07/04(水) 09:30:12.33 ID:rFQM1K2RM.net]
>>444
無事に目的を果たせました!
感謝です。

468 名前:デフォルトの名無しさん [2018/07/04(水) 15:02:10.32 ID:x3V5psFC0.net]
PC上からC#で制御できる汎用IO製品って安いのないんかな?
Raspberry PiについてるGPIOみたいなのが欲しいんだけど

469 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 15:06:52.68 ID:ZJ2LKM3Q0.net]
デバドラの認証コストだけでも結構なお金がかかるからなぁ

470 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 15:11:38.24 ID:BdK+b5Vga.net]
Arduinoがいいよ



471 名前:デフォルトの名無しさん [2018/07/04(水) 16:48:56.19 ID:n4h9hTEh0.net]
超面白い
https://goo.gl/k4ehdm

472 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 17:14:18.28 ID:Ub7D34vBa.net]
>>450
あんまり安くもないがこんなのとか
akizukidenshi.com/catalog/g/gK-01977/

このICの本来の用途はGPIOじゃないが、GPIOとしても使えたはず。
でも8本 + αしかないし使い方に癖があった気がする。

473 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 19:26:55.57 ID:x1yYTdeNp.net]
むしろラズパイやらArduinoとシリアル通信させてそちらのgpioに何か繋ぐ方が、安心安全いざショートしちゃったとかのアクシデントの時にも安く済むよ。

474 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 19:51:54.95 ID:F41Mlataa.net]
>>454
それシリアル
USBパラレル変換モジュールの方では?

475 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 20:05:13.89 ID:acN7B5+I0.net]
Attiny85のV-USBで遊んでるarduino互換
完成品にDigisparkってのがあるけど尼とかで数百円
https://www.amazon.co.jp/dp/B0154PL3QA/

476 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 20:23:47.96 ID:Ub7D34vBa.net]
>>456
だから
>このICの本来の用途はGPIOじゃないが、GPIOとしても使えたはず。

って前置きしてるでしょ。
確認してみたけど、ちょっと変則的だけど一応使えるよやっぱり

パラレルの方(FT245)のICもGPIOとして使えるが(こっちも本来はそういう用途じゃない。ちなみにこっちは使用経験あり)
こっちの方がちょっとだけ高価でGPIOとして使えるピン数も少ない
akizukidenshi.com/catalog/g/gK-01799/

477 名前:デフォルトの名無しさん [2018/07/04(水) 21:43:30.53 ID:rQfJfUyF0.net]
>>454
取説見るとデジタルI/Oは5本みたいだが。

478 名前:デフォルトの名無しさん [2018/07/04(水) 21:46:57.76 ID:gFgZc5FG0.net]
AWK

479 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 22:01:51.27 ID:Ub7D34vBa.net]
>>459
スレ違いだけど、このドキュメントのP3に書いてある特殊機能があるんよ
www.ftdichip.com/Support/Documents/AppNotes/AN_232R-01_Bit_Bang_Mode_Available_For_FT232R_and_Ft245R.pdf

最低8本は使える
残りのプラスアルファーがどういう風に使えるかは、たぶんドライバーのAPI
アプリケーションノートに書いてあると思うが、さすがに面倒だから読んでない

480 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 23:48:29.40 ID:acN7B5+I0.net]
FTDIのはドライバ必須だし
HIDとかで繋がるやつ揃えた方が楽だよ



481 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 23:51:36.78 ID:acN7B5+I0.net]
HIDというか標準クラスね
例えばArduino Leonardo相当であれば何にでも化けられる

482 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 09:53:48.98 ID:4AVSF7Vxp.net]
HIDって、出力ディバイスにも使えたっけ?

483 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 11:12:32.85 ID:zf6L08GCa.net]
digisparkというのを使ってたけどHIDデバイスに見えて入出力OK
昔は300円以下で送料無料で中国から買えたんだけど値上がりしちゃった

484 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 15:50:31.35 ID:P71/Py9I0.net]
C♯でMySQLを操作したいのですが楽に扱えるライブラリはありますか?
EntityFrameworkを使いたいのですがイマイチ接続できないので
一応昔にSQL書いて操作するパターンも作ったことありますが出来ればせっかくなのでやり取り楽な風にできればと思ってます

485 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 16:03:16.41 ID:I27lRIcu0.net]
LinqConnect

486 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 18:53:29.35 ID:/h700nZmM.net]
Dapper

487 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 20:00:51.78 ID:P71/Py9I0.net]
ありがとうございます
Dapperの存在忘れてましたこちら使い方少し調べてみます
LinqConnectも調べましたが環境整えるところからなので余裕ができたらこちらも調べてみます

488 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 20:12:43.80 ID:LKNZKA8z0.net]
>>464
昔からあるUSB-IOもHIDだよ

489 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 14:19:45.98 ID:v98PP3uI0.net]
教えてください
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;
}

490 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 14:26:00.38 ID:CcG3LQ040.net]
double power = 1.0;
の方が効率がいいぞ



491 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 15:02:32.12 ID:W35a98bMa.net]
>>471
高校数学やん

x^(a +b) = x^a + x^b
x^(a * b) = (x^a)^b

492 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 15:02:47.67 ID:M3cpa2kAa.net]
>>471
これでわかるか?
x^n = {
nが2で割り切れるとき x^(n/2) * x^(n/2)
割り切れないとき x^((n-1)/2) * x^((n-1)/2)
}

493 名前:474 mailto:sage [2018/07/06(金) 15:03:33.89 ID:M3cpa2kAa.net]
すまん訂正
割り切れないとき、はこれにxを掛けてくれ

494 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 15:04:04.87 ID:W35a98bMa.net]
>>473
ん゛?

× x^(a +b) = x^a + x^b
〇 x^(a +b) = x^a * x^b

495 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 15:31:31.99 ID:v98PP3uI0.net]
>>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;
} []
[ここ壊れてます]

497 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 15:54:12.85 ID:W35a98bMa.net]
>>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

498 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 16:10:07.44 ID:v98PP3uI0.net]
>>478
ありがとうございます
そのPowerを再帰を使わずに書くと>>471のPower2になるということですか?
なんだか分かりそうな気がしてきたのでその方向でもう一度考えてみます!

499 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 16:12:36.64 ID:W35a98bMa.net]
あー直接関係ないけど、0の0乗って1でいいんだな

500 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 17:25:12.79 ID:v98PP3uI0.net]
お陰様で>>471について理解できたと思います
どうもありがとうございました!

>>480
言われてみると、>>471のPower1やPower2では0の0乗が1になりますが
>>478のPowerだと0の0乗が0になりますね
調べてみたらWikipediaに「0の0乗」というページがあって
確かに0の0乗を1と考えることが多いと書いてありましたが
それ以外の考え方もあるみたいです



501 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 17:29:05.92 ID:Utskd+YBa.net]
0乗が1以外になる考え方なんてあるんだ
単位元の1に何も掛けないんだから常に1だと思ってた

502 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 22:25:57.54 ID:cMQzyLwk0.net]
高速冪乗法でググれって感じだ

503 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 00:10:19.78 ID:PwTdVeWu0.net]
>>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;
}

504 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 00:10:35.11 ID:PwTdVeWu0.net]
>>482
確かにWikipediaによれば
半群Sが単位元1をもつならSの元aの0乗は1になるので
Sが零元0ももつなら0の0乗は1になるそうです・・・なんのこっちゃw

>>483
ありがとうございます
Power2はちゃんとした名前のついたアルゴリズムだったんですね
この分だとPopulation2にも名前がついてそうですが
それらしい情報を見つけることができなかったので
もしご存知だったら教えてもらえると嬉しいです

505 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 00:33:06.38 ID:cboIXbsqa.net]
>>484
面白いねw
要は1が立ってるビットの数を数えてるわけだと思うけど、
Population2の方は
>n = n & n - 1;

これやると1が立ってる最下位ビットが消えるんだなw

名前は知らないごめんね

506 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 00:57:48.65 ID:PwTdVeWu0.net]
>>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;で最下位ビットが消える理由が
理解できていないのでもう少し考えてきます

507 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 01:08:23.64 ID:cboIXbsqa.net]
>>487
デクリメントした時、

(1) ボローが発生しなくなる

508 名前:桁(つまり、最下位の1の桁)はデクリメントの前は1、後は0

(2) その下位の桁はデクリメントの前は0、後は1

(3) 上位の桁の値は変わらない

なんだから、前後の値の論理積は必ず最下位の1まで0になる
[]
[ここ壊れてます]

509 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 01:35:58.15 ID:PwTdVeWu0.net]
>>488
とてもわかり易い説明ありがとうございます!お陰様で理解できました

実はこの説明を読むまでn & n - 1は(n & n) - 1という意味だと思ってて、
それならn - 1と同じじゃないのかと思いながらも
トンチンカンなことを言ってしまうのが怖くて黙ってたのですが、
こんなことなら変なプライドは捨ててさっさと疑問をぶつければよかったです

この問題を考えていて、少しビット演算に慣れてきた気がします
使い道があるかどうかは分かりませんが、
n = n & ~(n - 1);だと逆に最下位ビット以外を消すことができるんですね

とにかく、どうもありがとうございました

510 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 01:57:17.51 ID:PwTdVeWu0.net]
今更ですがPopulationってビットの人口ってことだったんですね・・・
Wikipediaにもページがバッチリありました
https://en.wikipedia.org/wiki/Population_count



511 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 07:04:40.39 ID:jG1Ln0tj0.net]
すいません
Pawar はx^nですか

512 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 18:20:25.33 ID:xch9dzoq0.net]
C#で予め用意されているクラス(Mathなど)のソースコードを見ることは可能ですか?
勉強がてら、どんな風に書かれているのか見てみたいのですが・・・

513 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 18:25:45.35 ID:30ihGmDyM.net]
>>492
ここにある
ちなみにMathは大部分が直接CLRに組み込まれていてC++で実装されているからあまり参考にはならんぞ
https://github.com/dotnet/corefx

514 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 18:28:37.54 ID:cyf+ZGJha.net]
そっち?

515 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 18:35:29.39 ID:nZLHvKy0a.net]
さすがに今更 Reference Sources は時代遅れだろ
Coreの方がコンパクトに纏まっててわかりやすいし、コピペしても捕まらないし

516 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 21:12:55.79 ID:gKVOSzfp0.net]
他人の書いたライブラリとか使おうと思っても仕様書もどう読めばいいかあまりわからなくて
いつも他人様の書いたコード見てやっとなんとなく使い方理解できてるんですが
サラサラかける人はどういう見かたしてるんですか?サンプル見てメソッド見ればもうわかるのですか?

517 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 21:24:10.82 ID:Sa3mysoT0.net]
>>496
ソースのメソッド見て中身理解するのは仕様書読むよりも難しくないか
メジャーなライブラリなら例を書いているサンプルがネット上にいっぱいあるし
そうでなくてもある程度自分で試しながら理解したらいいと思うが

518 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 21:27:00.32 ID:30ihGmDyM.net]
>>496
サンプル見ればだいたい分かるよ
お前も新しいフリーソフトとかWebサービスとか使うときマニュアル見なくてもだいたい分かるだろ?
それでお前の母ちゃんや友人に何で分かるのか聞かれて何て答える?
それと同じことで、経験を積むとパターンやライブラリの作者の考えが読めるようになってくる

519 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 22:41:26.27 ID:E0dVopgVM.net]
簡単だよ

こういう処理がしたいならメソッドにこういう文字列が含まれてるはずだよな
インテリセンスカチャカチャほらみろ有ったぞ
次は引数をドキュメントコメントで調べて入力
コンパイルエラー消えたよしこれでオッケー
ビルドして起動したら…はい動いたおわり

だいたいこんな感じ
今はライブラリも開発環境も優秀すぎて楽だよほんと

520 名前:デフォルトの名無しさん [2018/07/07(土) 22:50:08.17 ID:paMTBjoR0.net]
右クリックして定義見ればよくね?



521 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 23:30:31.81 ID:iY8uTCL40.net]
LINQ使った最近のデザパタ紹介しているサイトや書籍ってある?
どこもなんか古いコードで

522 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 23:40:48.02 ID:Xo0ZcSzF0.net]
>>501
誰も使ってネーからって気づけw

523 名前:デフォルトの名無しさん [2018/07/08(日) 00:27:29.44 ID:7kODHcAp0.net]
>>501
linqの古いコードって、例えばどんなん?ラムダ使ってない奴のことかな?

524 名前:デフォルトの名無しさん mailto:sage [2018/07/08(日) 00:45:39.18 ID:ijnRC5hf0.net]
>>503
日本語

525 名前:デフォルトの名無しさん mailto:sage [2018/07/08(日) 02:13:34.73 ID:8SSmHvWN0.net]
性懲りもなくよう相手にするなあこのクサレ脳みそども

526 名前:デフォルトの名無しさん mailto:sage [2018/07/08(日) 11:15:40.05 ID:YcDPlOAza.net]
他のスレでデザパタと略す奴は例外なくクソって言う風潮があるから
その略称は使わないほうがいいw

527 名前:デフォルトの名無しさん mailto:sage [2018/07/09(月) 15:36:56.63 ID:Uwu2BFrsM.net]
LinqというかDBアクセス系のパターンの事ならリポジトリパターンやイベントソーシング・CQRSあたりかな
MSの黒本 C#実践開発手法 はどうだろう

あとRxも押さえとけば

528 名前:デフォルトの名無しさん mailto:sage [2018/07/09(月) 23:28:49.95 ID:8W0J0prF0.net]
名前付きパイプでプロセス間通信するとき、できるだけ遅延を小さくするためにすべきこと、したほうがいいことがありますか?

529 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 03:23:37.00 ID:LdlDw2V90.net]
ポータブルなASP.NET実行環境はありますか?
勝手にソフトインストール出来ない環境で使いたい為、Tomcatのように、設定ファイルで設定してexe起動するだけのタイプを探しています。

530 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 03:44:47.11 ID:wzF2q8B9a.net]
>>509
.NET CoreとASP.NET Core
SCDでデプロイして内蔵サーバーのKestelで動かす
CoreはMVC系なので509が知っているASP.NETとは別物かもしれないが



531 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 07:07:05.03 ID:1Wfv3KWad.net]
formが3つがあってそれぞれ仮にa,b,cとして、a,b,cの中にコンボボックスがいくつかあってaのコンボボックスの一つにエクセルをdbで読み取って?コンボボックスに値を入れました。
以降もコンボボックスに入れてくんですけど、違いがブック名とシート名でコードをまとめたい時はどこにどのように書けばいいですか?
今はform aのloadに一つ書いてます。

532 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 08:43:35.96 ID:wzF2q8B9a.net]
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); }
}
こういうのを作って使い回す

533 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 10:08:29.34 ID:DQNNzOip0.net]
クラスを継承して機能を共通化するのとインターフェースで共通化するのと何が違いますか?

534 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 10:27:34.35 ID:u496riIwM.net]
いろいろなレベルでの回答があるが
インターフェースはMIX可能
継承の濫用は保守困難になりがち
インターフェース意識した方が設計的にスマートな事が多い

c#8で事情は大きく変わるが

535 名前:デフォルトの名無しさん [2018/07/10(火) 13:38:42.06 ID:vEF725PNp.net]
クラス継承は切り離せないが、インターフェースなら切り離せる。

536 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 15:17:35.18 ID:ptn/0Y0d0.net]
>>493
即レス

537 名前:感謝です
勉強になります
ありがとうございました
[]
[ここ壊れてます]

538 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 15:18:53.33 ID:6gd4tcDd0.net]
え、8ってどうなるん・・・

539 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 15:59:38.63 ID:lFSMnKMw0.net]
そらもうアレよ

540 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 17:43:22.36 ID:pIJZecgId.net]
おジャ魔女どれみc#



541 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 19:00:19.81 ID:1Wfv3KWad.net]
>>512
レベルが高過ぎてさっぱりです。
これはクラス追加してクラスに書く感じですかね?
クラス=VBのモジュールって感じでいいんですかね?

542 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 19:04:58.17 ID:WX+x+qIF0.net]
>>514
> c#8で事情は大きく変わるが
C#8ではnull非許容が標準になるという噂は聞いたことがあるのですが、
この話は検索してみてもなんのことを仰っているのか分かりませんでした
とても興味があるので、ぜひ詳しく教えていただけないでしょうか

543 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 21:19:40.32 ID:vJrIcc2p0.net]
>>521
インターフェースのデフォルト実装が導入されることかな。
.NET ランタイムにも手が入るそうな。

544 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 21:45:00.39 ID:WX+x+qIF0.net]
>>522
レスありがとうございます!
ただこれだけを聞くとC#8でインターフェースの価値が更に上がるように思うのですが、
>>514さんはインターフェースの価値を説かれた上で
「c#8で事情は大きく変わる」と仰っていているので、他の機能に拡充が図られるなどで
インターフェースの価値が相対的に下がると仰っしゃりたいように感じました
実際にはそういうわけではないのでしょうか?

いずれにしても、インターフェースのデフォルト実装は便利そうで楽しみです
あと、それほどいろいろと手を入れるなら、
IList<T>が共変なIReadOnlyList<out T>と反変なIWriteOnlyList<in T>を
継承するようにするとか、そういう変更もあると嬉しいな〜と素人ながら思ってみたりw

545 名前:デフォルトの名無しさん mailto:sage [2018/07/10(火) 22:52:33.99 ID:uwEab9SB0.net]
めっちゃ詳しいw

546 名前:デフォルトの名無しさん [2018/07/10(火) 23:47:58.27 ID:vJrIcc2p0.net]
>>523
IWritableListとIReadableListみたいな名前ならともかく、
それじゃわざわざOnlyって強調した単語使ってる意味がなくなるから悪手だろ

547 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 00:12:23.28 ID:08+HRZoYa.net]
>>525
既にList<>はIReadOnlyList<>を実装してるんだから今更だろ。
IList<>がIReadOnlyList<>を継承できない理由は、インターフェイスメンバの明示的実装を壊すから
IList<>に宣言されてたメンバのうちIReadOnlyList<>と被るものを全部削除したとしたら、IList<>のメンバを明示的実装している既存のクラスが全滅する

548 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 00:40:08.40 ID:OI/RESej0.net]
誤解を与えてすまん
c#8でインターフェースのデフォルト実装がサポートされるので価値は高まるという認識でok

null不許容も含めて大きく変わるねえ

549 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 00:50:36.62 ID:OI/RESej0.net]
null非許容を乱暴に説明すると

参照型の変数にnullが入らないのがデフォになる。よって多くのシナリオでnull落ちになるケースが激減する。基本的にプログラミングが楽になる。
変数にnull許可する場合には明示的に宣言が必要になる。

既存のソースに対しては破壊的変更になるからコンパイルオプションとかになるんじゃないかな。

550 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 01:02:22.00 ID:veaNU89qM.net]
OOP的にも綺麗でテーブルが正規化されてればnull非許容は受け入れられるかもね
業務システムではあまり役に立たなそうだ



551 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 01:04:51.55 ID:zbj7oPBja.net]


552 名前:>よって多くのシナリオでnull落ちになるケースが激減する。基本的にプログラミングが楽になる。
岩永氏の例の記事にもそう書いてあるが、何度考えてもこれは逆だと思うなw
いわゆる「例外を握りつぶす」筋悪コードと同じ弊害をもたらすだけだろう
[]
[ここ壊れてます]

553 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 01:08:15.17 ID:veaNU89qM.net]
凄まじい列数でほとんどがnullのテーブル
あれをなんとかしないとアプリケーションからnullを排除することは難しい
インフラの問題だからホスト言語のちょっとした改善でどうにかなるものじゃない

554 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 01:22:37.10 ID:OI/RESej0.net]
最近の言語がそういう流れだからだろうね

DB絡みに外部結合やORM、既存ライブラリやサービスがある以上、null考慮は回避できないだろうから使い分けになるだろうね
nullまみれのテーブルも いまだにみかけるし

新規コードでサクサク組んでいくには便利やと思う

555 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 01:24:04.27 ID:mrqtDgK70.net]
>>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 的なものを用意しないといけないのか?とか
疑問は膨らむばかりです

556 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 01:52:22.43 ID:OI/RESej0.net]
シンプルなコードで良い疑問やなあ
実際導入されたら混乱しそう…

右辺のArrayがnullを許さないからコンパイラに怒られそう
初期値入れたらいけそう
もし仮にstringの規定値がemptyになる仕様になれば初期化無しでもコンパイルとおるかも

c#7系以前と同じ挙動にするなら
var a = new string[1]?;
という記述になるはず

List系使うから配列を生で使う機会は減ったけどね

557 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 01:53:31.50 ID:OI/RESej0.net]
恐ろしい子!

558 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 04:05:50.95 ID:xb7b/JPY0.net]
C#の話じゃないかもしれませんが、
LAN上の他のPCと通信するにはTCPorUDPしかないですかね?
ポート開けようとすると管理者のパスワード要求されるので
そういうのに影響されない方法があれば教えてください
サーバー上にファイル作って共有しようかとも思ったのですが
ロックとか速度とかちょっと使いにくいので

559 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 07:45:57.48 ID:08+HRZoYa.net]
インターネットに出れるんならAWSでSQSかKi

560 名前:nesisでも使えば []
[ここ壊れてます]



561 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 08:15:13.05 ID:RuBHX//DM.net]
>>536
RAWなら好きなもの送れるでしょ

562 名前:デフォルトの名無しさん [2018/07/11(水) 08:54:54.59 ID:NAmdOA29M.net]
ネットワークプログラミングの定石学びたいっす

563 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 09:14:18.75 ID:RuBHX//DM.net]
レイヤー無視なら
Multi-object Multi-lingual Document Intermediary の仕様書でも

564 名前:デフォルトの名無しさん [2018/07/11(水) 09:42:14.12 ID:DD+vdWYvp.net]
>>536
TCPやUDPじゃないと関所を通れないからなぁ

565 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 10:03:35.37 ID:/J4Azv5gd.net]
ポート開けたくないな、名前付きパイプのRemotingは?
sambaのポートが開いてりゃ疎通できた気がする。

566 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 10:03:54.68 ID:/J4Azv5gd.net]
ないな→ないなら

567 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 12:51:43.31 ID:vn5tWIshM.net]
>>536
> ポート開けようとすると管理者のパスワード要求されるので
要するになんか管理者に知られずき通信したいんだろ
悪事に加担する気はない

568 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 12:56:39.30 ID:fg0dx/vD0.net]
アホか
くだらないことを書き込む前に少しは推敲しろ

569 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 13:59:27.90 ID:cb0VPk/Kd.net]
>>544
aho

570 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 16:51:29.67 ID:xb7b/JPY0.net]
ありがとうございます
まずは名前付きパイプを調べてみます



571 名前:デフォルトの名無しさん [2018/07/11(水) 16:58:41.62 ID:DD+vdWYvp.net]
バイブにたかしとかりょうとか名前付けて愛用してんのかなぁ…

572 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 17:39:37.83 ID:kzvuO0/N0.net]
>>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

573 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 17:57:29.81 ID:g/mYMck9M.net]
プログラム素人で恐縮ですが、for文のスコープの中に変数を宣言するとメモリの無駄使いになるでしょうか?

for(;;) int hoge =1;
のような書き方です

for文に入る前に宣言した方が作法的に良いのであればそうしたいと思い

574 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 18:16:12.97 ID:I//Y0R5O0.net]
コンパイラが最適化するのじゃないか?

初心者は、そんな事を考えずに、なるべく狭いスコープで宣言した方が良い。
処理に、10秒以上掛かるのなら、その時に考えても良いけど

「Effective 何々」などの本を読むと、書いてあるかも知れないけど

575 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 18:20:39.15 ID:L0DC21nsM.net]
>>550
C系の言語では基本的に一箇所で宣言された変数はメソッド全体で一つしか作られない
C#の場合はクロージャが絡んだりすると変わってくるけど、基本的にはそういう思想で設計されてる
気にせず必要最小限のスコープで宣言せよ

576 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 18:31:22.94 ID:vn5tWIshM.net]
>>545-546
そんなレスしかできないからお前は🙅なんだよ w

577 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 18:40:26.95 ID:sApF7MBC0.net]
>>550
IL見ればあなたの悩みは全て解

578 名前:決しますよ []
[ここ壊れてます]

579 名前:デフォルトの名無しさん [2018/07/11(水) 20:26:56.12 ID:DD+vdWYvp.net]
あーでも>>550みたいな書き方すると突っ返されるメーカーあるよな。
無駄な作業させてるって自覚無いんだろうかなぁ

580 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 20:31:34.49 ID:L0DC21nsM.net]
>>550みたいな書き方してるコードってたいてい他の部分もクッソ汚いから、とりあえず突き返すのはわりと賢明なやり方



581 名前:デフォルトの名無しさん [2018/07/11(水) 20:35:01.60 ID:DD+vdWYvp.net]
スコープ毎にスタック操作なんかしないし、汚くてもオプティマイズされたら面影も無いし、イジメでしか無い罠

582 名前:デフォルトの名無しさん mailto:sage [2018/07/11(水) 20:39:44.95 ID:sCxl2UHN0.net]
>>549
このレスからにじみ出る頭のよさ

583 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 00:31:45.14 ID:07VYm5500.net]
var すら毛嫌いされちゃうとこなのでコードレビューなんかやったらストレスで禿げるわ

584 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 01:31:48.84 ID:Mt10qC0c0.net]
それぞれのコーディング規約に従えばいいんじゃないですか

585 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 02:20:50.58 ID:uvVknaw70.net]
>>555
さすがに>>550のコードは例としてはあれだが
C#でforの中でしか使わん変数をforの外で定義しろと?
どんなメーカーだよ。つかメーカーってなんのメーカーだよ

586 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 05:53:25.42 ID:ddTdn7l60.net]
C#8のデフォルトインターフェースメソッドって、
インターフェースでほぼコーディングを終わらせてしまうことも可能、
って解釈で良いのかな。

587 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 06:34:40.79 ID:0C7UQQhF0.net]
クエリとlinqとlinqToXmlの違いがなにかよくわからないです
これらはなんですか

クエリはfromやselectとか思ってたのですが
"from a 〜 select a"も "XXXXXX.Select(〜)" の両方ともクエリ?

linqの中にクエリがある感じですか?
用語の違いを知りたいです

588 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 06:53:16.73 ID:TSQ/qQegM.net]
>>561
C組込上がりが閑職で社内システムを任されるとありそう

関数の先頭で宣言しろ宣言

589 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 07:09:00.83 ID:8dshyEbGd.net]
>>563
メソッド式とクエリ式でググれ

590 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 07:38:41.95 ID:VF8Jnm1rH.net]
NumericUpDownで、ホイール下回転で値をUpさせる方法ないですか?



591 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 08:08:47.97 ID:CB78gZS5M.net]
>>562
ライブラリ実装者が破壊的変更の影響を最小化
細かいパフォーマンスを最適化
するためのものなので乱用しないで
拡張やダイヤモンド継承による名前の重複など問題はまだ残ってる

592 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 09:04:57.23 ID:FtAr8eR70.net]
>>553
管理者のパスワードって、単なるスーパーユーザーのパスワードのことだろきっと

593 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 12:49:07.46 ID:96DaRN210.net]
だったらなんなんだよ

594 名前:デフォルトの名無しさん [2018/07/12(木) 15:12:12.67 ID:iIGcGb6Z0.net]
久しぶりにまたC#勉強してみようかと思ってるんだけど
最近の動向ってどうなの?雑誌でもあまり見かけなくなったけど

595 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 15:52:53.09 ID:Yg7MNvpld.net]
さあ、プログラミングの雑誌読んでる奴は最近少ないでしょ
プログラミング情報は基本ネットだからな

596 名前:デフォルトの名無しさん [2018/07/12(木) 16:16:23.83 ID:S+gZjDN60.net]
>>570
マイクロソフトはAndroidのアプリC#で作る環境起こしたり結構力入れてる

597 名前:デフォルトの名無しさん [2018/07/12(木) 16:37:53.91 ID:iIGcGb6Z0.net]
>>572
へえ〜そうなんだ
金のにおいプンプンするね

598 名前:デフォルトの名無しさん [2018/07/12(木) 16:40:31.97 ID:iIGcGb6Z0.net]
そういえばWindowsフォンとかいうのもあったね

599 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 16:45:06.48 ID:Mt10qC0c0.net]
>>572


600 名前:iOSもな []
[ここ壊れてます]



601 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 17:23:36.80 ID:S4vKnl6/d.net]
雑誌とか書籍とか、本屋の棚を見てると勢力図が判るね。
Python強い。

602 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 17:25:15.60 ID:PtJZmudoM.net]
MVC使ってるんですが、アルゴリズムをSQLに書くのは邪道でしょうか?

Modelを用意している時点でC♯でアルゴリズムを書くのが正攻法なのかなという気がして

でもクエリにある程度書いた方がパフォーマンスは良さそうで悩んでいます

603 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 19:07:16.04 ID:MbhSnhO70.net]
>>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;
}
}

604 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 19:39:16.71 ID:5nesTxgP0.net]
どうでもいいことだけどEventArgsがnullで渡ってくるケースってあるの?

605 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 20:09:54.21 ID:yTzbc7hIM.net]
>>577
邪道です
ビジネスロジックがSQLを侵食すると保守性が下がりスパゲティクエリが量産されます
結果的にパフォーマンスも劣悪なものとなるでしょう

606 名前:デフォルトの名無しさん mailto:sage [2018/07/12(木) 21:06:22.46 ID:uvVknaw70.net]
そのSQLはどこに書かれているのだね

607 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 06:58:05.36 ID:DDbEgWasM.net]
SQLはクエリ管理クラスでC♯で管理してます
ストアドで書かれてたらC♯がどうこういう話では無いですね

つかストアドは世間様の開発では一般的なのでしょうか

改修に弱そうなイメージがありシステム構成の検討任されたら自分なら選択しなさそうですけど

608 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 08:21:33.93 ID:KJTjy0eMM.net]
ビジネスロジックをストアドに集めるってのは
見たことあるなぁ。
既存言語はFEP構築だけに使う。

どちらかに徹底してりゃ良いんじゃね。鼻ホジ

609 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 12:34:59.94 ID:p9f6lddDD.net]
>>583
システムのリプレイスとデータベースのリプレイスのどちらが多いかだよな

後者でストアド依存は死ねると思う

610 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 14:43:56.67 ID:0KYXvOut0.net]
DBのバージョンアップじゃなくてリプレイスで
システムをリプレイスしない案件なんてほぼ考えられん



611 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 15:22:59.85 ID:r56MKyepM.net]
可能な限り全部SQLでいいよ
多くの場合SQLの方が圧倒的に簡潔だしテストも容易だし
ストアドは管理が面倒だし見通しも悪いからソースに書きたいが

612 名前:デフォルトの名無しさん mailto:sage [2018/07/13(金) 16:31:35.87 ID:JMEmIQPoM.net]
SQLに書いてもいいけどシステムが死ぬまで面倒を見て、他のメンテナーに迷惑をかけないでくださいね

613 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 14:54:07.96 ID:pS7j55swr.net]
データベースにSQLite使ってるんだけど、データ量が増えたらSELECTがクッソ重くて無反応になる
無料でもっとまともなDBってないかな?

614 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 14:57:09.03 ID:8JxBJ14s0.net]
そもそもインデックスとか
ちゃんと使ってるのかね

615 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 15:00:44.83 ID:pS7j55swr.net]


616 名前:もちろん []
[ここ壊れてます]

617 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 15:02:50.58 ID:LIsDU/xsM.net]
PostgreSQLだな

618 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 15:06:32.58 ID:EtwCAyCb0.net]
C#から使うならSQLServerでしょ

619 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 15:26:32.37 ID:pS7j55swr.net]
どちらも無料なの?

620 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 15:40:56.72 ID:jYJ6FXN8a.net]
>>579
nullで渡すと



621 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 15:44:26.58 ID:3U2LRmJo0.net]
標準ライブラリのことでは?

622 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 16:03:24.84 ID:DkLuqI8LM.net]
プライベートの開発ではpostgresql一択

623 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 16:12:40.69 ID:XotIEGF50.net]
>>588
データ量がどのくらい増えたとかテーブルのスキーマ構成とかSELECT文みてみないとなんとも言えんな
DBMS変えたら劇的に変わるもんでもないし

624 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 16:56:06.37 ID:pS7j55swr.net]
>>596
売るアプリだから無料のがよい

>>597
すまんすまん
indexの順番変えたらかなり改善した
複合indexを先に設定して、その後単一index作ってた
これを入れ替えた感じ

625 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 16:57:19.10 ID:pGWO+29la.net]
無料ならSQLServerはかなり制限がある
PostgreSQLは完全に無料で、性能・機能とも圧倒的に上
SQL ServerはWin上でGUIでお手軽に運用できるしMS製品で完結するのでドカタには愛されてる

626 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 16:59:28.09 ID:3U2LRmJo0.net]
俺はデータをカテゴリに分けてそれぞれに専用のテーブルを用意して振り分けて高速化したことある

627 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:06:29.29 ID:zT+O/n6K0.net]
PostgreとMySQL比べるとどんな感じ?

628 名前:デフォルトの名無しさん [2018/07/14(土) 17:06:52.80 ID:bK14KKak0.net]
>>599
かなりって例えば?
ストアドも使えるしDBサイズも10GBまで使えるし基本問題ないっしょ。サイズ超えそうになったらバックアップDBとしてアーカイブすりゃいいしね。C#ならSQLServerがいいよ

629 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:09:02.22 ID:zT+O/n6K0.net]
俺もSQLServer使ってたけど10GB制限がキツイし全てのレコードを読めないと不都合だから別のDB探してたけどMySQL使おうかと思ってたところだった

630 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:18:11.14 ID:DkLuqI8LM.net]
MySQLは共通テーブル式が使えなくて捨てた



631 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:25:20.01 ID:FtH+pgzSM.net]
>>601
最近はPostgreSQLも盛り上がってるね
PostgreSQLは機能が非常に豊富で極めて柔軟、非定形データだろうが地理空間情報だろうが何でも扱える
ライセンスもMySQL(GPL)より緩い

632 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:25:32.60 ID:pS7j55swr.net]
>>599
まじか
postgreに変えようかな

>>602
10GBならかなり余裕あるね
ならSQLServerも良いかなあ

MySQLはWebアプリではよく使ってるけど

そもそもわかってないことがあるんだけど、SQLってSQLサーバーで動いてるわけじゃん?
SQLite以外はWinFormアプリで作ったアプリだけで動かないの?
SQLアプリみたいなのが生成されるの?

633 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:27:38.30 ID:3U2LRmJo0.net]
マシンにDBサーバーをたてるんだろ

634 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:30:16.00 ID:zT+O/n6K0.net]
>>604-605
なるほどありがとう
それならせっかくだしそっちにしてみようかな
SQLServerはEntityFramework簡単に使えたけどもPostgreSQLもライブラリとか使いやすいのかな?
MySQLは接続文字列がおかしいのかテーブル指定がおかしいのかイマイチ上手く動かせなかった

635 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 19:18:56.84 ID:VO5okbkP0.net]
ASP.NET Core MVCはオワコンになって今後はASP.NET Core Razorが主流になっていく感じですか?

636 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 19:54:51.34 ID:GmLXhPvN0.net]
>>609
お前なんか勘違いしてんぞ

637 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 10:06:31.58 ID:vbOfg8AFM.net]
今は各言語ごとにフルスタックのフレームワークがある

638 名前:ッど無駄に見える
どれか一個がセンターにあって後は各言語対応のAPI提供というパターンにならないのか
[]
[ここ壊れてます]

639 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 10:20:38.72 ID:aio6qM3qa.net]
少なくとも.NETはASP.NET Coreが統一フレームワーク

640 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 10:33:05.77 ID:X2092vNg0.net]
まさに.NETのことだね



641 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 10:46:24.73 ID:CFAGuM1zM.net]
各言語ごとにフルスタックフレームあるけど
シェア3位のdjangoすら5%以下らしい
それ以下のASP.Net coreの存在意義がかなり薄いと思うけどないといけないものなのか

642 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 10:54:00.74 ID:7Enq42ndr.net]
現実
https://hotframeworks.com

643 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 10:55:19.57 ID:7Enq42ndr.net]
Coreは存在すらしていないっぽいな

644 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 10:59:15.18 ID:upsCSZLnM.net]
検索でClassic ASP.NET/MVC/Coreは区別がつかないから混ざってるんだろ

645 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 11:08:09.00 ID:p0LeSK9sd.net]
Coreじゃなくても.NETなら多言語対応だし

646 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 12:32:26.47 ID:mrrFOD8id.net]
>>616
StackOverflowのデータ見てみろよ

647 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 12:53:44.01 ID:7Enq42ndr.net]
なんかSQLiteがおっせーって書いた者だけど、他のサーバー型SQLよりぶっ飛びで速いんだな
このまま使い続けるか

648 名前:デフォルトの名無しさん [2018/07/15(日) 14:17:55.92 ID:LJ5Na9vP0.net]
>>620
速度求めるならメモリ使えば?
DBのinoutは別スレッドでコントロール

649 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 19:34:53.12 ID:Bovqh3Um0.net]
使ったことないからよく知らんけどローカルファイルへのアクセスだからレイテンシが小さいとか?

650 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 20:22:37.76 ID:5Xgvchi7M.net]
javaに比べると圧倒的に仕事が少ないC#ですがjavaの有償化で仕事は増えるでしょうか



651 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 20:38:51.55 ID:BpM21w6AM.net]
レガシーJavaをすぐさまC#に移植するってのは現実的じゃない
レガシーの面倒を見るためにとりあえず金を払ってライセンスを買うしかない
ライセンス買ったならじゃあいいかとなってJavaを引き続き使っていくことになる

652 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 20:54:44.00 ID:31mTAsFB0.net]
Java厨ザマアw

653 名前:デフォルトの名無しさん [2018/07/15(日) 20:57:17.95 ID:OJzI1T4t0.net]
でもC#は無料なの?
いいえ、有償です

654 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 20:59:55.51 ID:WCfEKFtx0.net]
大人しくオラクルのケツ舐めて1CPUあたり25ドル払っとけって

655 名前:デフォルトの名無しさん mailto:sage [2018/07/15(日) 21:00:24.79 ID:31mTAsFB0.net]
2ドルだろ

656 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 01:40:16.05 ID:0WZqyTt50.net]
application/jsonを使ったRPCの実装方法でスタンダードなやり方ってありますか?
ぐぐってもREST APIの実装方法ばっかり出てくるんですが…

657 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 03:10:13.20 ID:yOmS9IaY0.net]
>>629
.netならWCFかWEB API

REST APIは主流だが
規模的に保守が辛くなるなら
gRPC gatewayも良いと思う

658 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 03:53:04.58 ID:M+rWa9nq0.net]
>>609
MVCのVの部分がRazorエンジンになっただけやで。

659 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 10:04:00.08 ID:R/aUtilHr.net]
>>621
アプリ起動時とかにSQLからメモリテーブルにコピーして、追加更新削除があれば別スレッドでinoutする感じ?

660 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 15:04:39.14 ID:f5ww7Pxw0.net]
プログラミング初心者なんですが、Randomオブジェクトの扱われ方がよく分かりません
なぜ別にクラスを作らなくてもインスタンスを生成出来るのでしょうか



661 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 15:14:56.71 ID:Tg2I8Krt0.net]
>>633
「なぜ class Random { ... } とクラスを定義しなくても new Random() と書けるのか?」
という質問なら、「Random クラスは最初から

662 名前:闍`されてるから」が答えになると思います

質問の意図が違うなら、「XXXと書くのが正しいと思うが、実際にはYYYと書くのはなぜか?」
というように具体的なコードを交えてもう一度質問してもらえませんか?
[]
[ここ壊れてます]

663 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 15:17:03.84 ID:f5ww7Pxw0.net]
>>634
それで合ってます 返答どうもです

664 名前:デフォルトの名無しさん [2018/07/16(月) 15:18:23.77 ID:MLoWNAtR0.net]
usingで指定されて無いと幾ら最初から有っても使えないけどな。

665 名前:デフォルトの名無しさん [2018/07/16(月) 15:19:55.32 ID:MLoWNAtR0.net]
そう言う意味では、最初からusingでネームスペースが指定されているって言わないと正しくない。

666 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 15:21:33.95 ID:fVJkfJ21M.net]
JSFみたいな使いやすいフレームワークねえかなぁ
C#は言語そのもののセンスは良いけどエコシステムがショボいよな

667 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 15:50:12.73 ID:jQHectJ10.net]
>>636
namespace省略せずに書けば使えるぞ

668 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 15:55:20.48 ID:N67OeEDm0.net]
>>634みたいにも?

669 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 15:58:33.82 ID:XBIjWYki0.net]
>>640
書けないけど「使える」

>>636
> usingで指定されて無いと幾ら最初から有っても使えないけどな。

自分の書き込みぐらい覚えとけ

670 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 16:00:41.87 ID:CrUViZU+0.net]
偶にこういうコード見かけるんだけど、コーディング規約に全部書けとかあるのかな?

using System.IO;

System.IO.File.ReadAllBytes(hoge);



671 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 16:54:46.97 ID:jQHectJ10.net]
自分が作っていないクラスを使用するのに必要なのはアセンブリ/COMの参照設定。
(基本的なアセンブリは最初から設定されてる)

usingするかはどうかは別の話。
参照していないのにusingだけ書いてももちろん使えない。

672 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 17:47:55.17 ID:SOPUXhzxM.net]
>>642
そのスコープのFileクラスの定義が重複している場合
曖昧さを解消するために名前空間を全て書く必要がある

普通は標準ライブラリと名前が衝突する事態の方を避けるだろうけど

673 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 18:31:19.12 ID:zG1+5npqa.net]
>>642
そんな不合理な規約はないと信じたいねw

あえてフルネームで書くことを肯定できる(少なくとも否定的に思わない)ケースは
そのソースファイルでその名前空間の要素そ参照するのが1、2か所しかない場合ぐらいかなあ

意見は分かれるかもしれんが、バッティングを避ける目的ならエイリアスを使うのが普通でしょう
using IO = System.IO;
みたいに

674 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 19:06:40.67 ID:XBIjWYki0.net]
>>645
> そのソースファイルでその名前空間の要素そ参照するのが1、2か所しかない場合ぐらいかなあ
それならusingも書かないだろ、バカかよ

675 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 19:11:38.45 ID:zG1+5npqa.net]
何言ってるのか意味わからないねw

676 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 19:29:52.77 ID:65+uaC9H0.net]
その名前空間を使うのがここだけだと思ってフルで書いたが
やっぱり他でも使ったのでusing追加した
元の箇所は直していない

まあ、そんな感じじゃないかと

677 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 19:56:41.16 ID:Tg2I8Krt0.net]
>>634 に不適切なコードを書いたために混乱を招いてしまいました
また、 >>643 で適切な補足をしていただいていますが、
初めからこのような補足が必要ないようにできているだけでも
混乱は避けられたかもしれません。大変失礼しました

678 名前:デフォルトの名無しさん [2018/07/16(月) 21:01:32.11 ID:MLoWNAtR0.net]
同じ名前のクラスがあるんだよw
だからフルネームで書かないと怒られるんだw

679 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 21:45:18.03 ID:PnkuF1BZ0.net]
>>650
あるあるw
バッティングすると悪夢なのなw
曲線をPathって名前にしてファイルパスもPathって名前にして
usingを呼んじゃってからエラーが出たぜハイ直せってやられると最悪
せめて改名してからusing呼べやクソがって思うんだが
馬鹿な奴に限ってバッティングさせるし作業手順も

680 名前:考えない
しかもそれでコミットしてくる
[]
[ここ壊れてます]



681 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 22:03:10.98 ID:0I7EzBy0r.net]
[]で読み込むDLLの意味がよくわからない
どこで呼んでもいいみたいだけど、あれってどういう仕組みなの?

682 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 22:12:47.48 ID:Fqt7znsC0.net]
ランタイムがLoadLibraryなりで動的にロードしてよろしくやってるだけやで
ネイティブ側を書いたことないとイメージしづらいのかもしらんが

683 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 22:24:51.27 ID:fVJkfJ21M.net]
>>651
バッティングどうこうよりもファイル操作と図形操作を同じファイル内に実装してる時点で最悪だね
誰が悪いかというとそんな設計書を書いたバカが最悪だ

684 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 22:25:49.96 ID:N67OeEDm0.net]
アホかな?

685 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 22:32:54.10 ID:PnkuF1BZ0.net]
>>654
いや、別だよ
でもたまたま引っ張ってきたusingにPathが入っててバッティングしちゃったんだ
.netframeworkにはじめから入ってるPathも入ってかなり手強かったよ

686 名前:デフォルトの名無しさん [2018/07/16(月) 22:50:59.26 ID:MLoWNAtR0.net]
いやいや、それは例えが悪いだけで、マイクロソフト様ですら同じ名前のクラス名付けてて、たまにどっちだボケって聞いて来るからなぁ

687 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 23:09:50.26 ID:m2D0dvJF0.net]
>>638
JSFときたかwww
具体的に何が足りないと?

688 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 23:16:42.09 ID:fVJkfJ21M.net]
>>658
足りないってほどじゃないんだけどねー
直感的に挙動を理解しやすいJSFと比べてこっちはちょっと推測しにくい感じ
これを変えたいなら多分こうだろってのが閃きにくい
ドキュメントみれば解決するけど見ないでなんとなくで解決したいんだよね

689 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 23:17:22.95 ID:m2D0dvJF0.net]
>>659
具体的に

690 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 23:23:08.13 ID:tD8bNggya.net]
>>657
Managed DirectXは酷かった
嫌がらせレベル



691 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 04:59:27.29 ID:KftlrzGo0.net]
blockingcollectionを使ってキューを作ろうと思ってます
そのキューの中にデータを取り出すのではなく、データがあるかないかを確認したいのだけども
それってどうやって実現できるでしょうか?

692 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 07:44:52.51 ID:xIcozahsa.net]
>>662
できない
BlockingCollection.GetEnumeratorで取得した列挙子は既にコレクションから削除された要素を返す可能性があるから、要素の存在確認には使用できない
それが必要なら普通のQueueをロックして使おう
BlockingCollectionはProducer-Consumerパターンを実装するための特殊なコレクションで、取得と消費は基本的に分離不可能な操作として扱う

693 名前:デフォルトの名無しさん [2018/07/17(火) 08:21:55.96 ID:9WzYNMpJ0.net]
なぜキューを使わず違うものでキューみたいなものを作るのか?

694 名前:デフォルトの名無しさん [2018/07/17(火) 09:13:46.43 ID:JRPSvXt/0.net]
【毒素ためる、制汗″】 Ban、Ag、 8×4が <乳癌> <鼻炎> <ワキガ> の原因になっている!?
rosie.5ch.net/test/read.cgi/liveplus/1531621398/l50



くさいくさい

695 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 09:57:15.28 ID:ZMugNBvxM.net]
>>662
Count

696 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 11:05:47.08 ID:we+kZK/d0.net]
>>662
Any()はだめ?

697 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 12:01:54.65 ID:5aCAbGPrH.net]
>>633
ランダム、つまり白い悪魔と異名を取ったモビルスーツの事だ

常識なので覚えるように

698 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 12:04:20.14 ID:5aCAbGPrH.net]
>>633
ランダム、つまり疑似乱数を生成するクラスだ
疑似乱数は自前で作るのも簡単だから適当にに作って

699 名前:ンるのも一興だな []
[ここ壊れてます]

700 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 12:10:59.29 ID:G5IVIkIla.net]
>>667
食べるが側が自分だけじゃないなら>>663の言うととおりだめなんでしょう

その場合もコレクションに出し入れがあったことを検出する簡単な方法があれば
スキャンしている間に出し入れが行われなくなるまでリトライすることで実現できそうだけど、
そういう簡単な方法はないっぽい。

もっとも、仮に実現できたところで排他制御できないなら検査の後の状態は保証できないわけで、
どんだけ意味があるのか疑問ではある



701 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 17:47:09.52 ID:bja0VNMZd.net]
>>663
>>666
>>667
レスくれた方ありがとう
やりたいこととしてはcountとpeekを駆使することでなんとか実現できそうだという結論になりました
キューに対してpeekすると、じゃあ今度はいつ削除するの?とかなりそうだけどもpeekでなんとかします

702 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 19:12:27.90 ID:TPR76IZRM.net]
この本読み込めば中級者って本ないん?
独習C#新版と
実戦で役立つc#プログラミング
あたりですか?

703 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 19:14:26.70 ID:LTVxWI1Y0.net]
BlockingCollectionはコレクションの要素が取れるまでブロックし続けるから、peekとか削除とか考えずに済むから楽なのにな
まあ>>670の通り他と連動してコレクションにとどめておく必要があるんだろうけどさ

704 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 21:31:50.07 ID:k6KsTxhHM.net]
>>672
プログラムは本を読んだから中級者みたいな世界じゃないと思う
年間に1000行程度のアプリを10本ぐらい作って3年ぐらいしたら中級かなって思う

705 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 21:58:58.79 ID:0bp3oS7H0.net]
コピペを繰り返していたら3年やろうが10年やろうが初心者のままだぞ気をつけろ

706 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 21:59:23.64 ID:JBBJUfmR0.net]
いや、今ならVRエロゲ一本作れば中級者

707 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 22:03:58.19 ID:vVWTH+iBM.net]
むやみに書くより良書を読んだほうがいい
読んだ内容を実践して身につける

708 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 22:10:31.97 ID:JBBJUfmR0.net]
俺は〜の作り方的な
作り進めていく形式のがオススメ

709 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 22:19:09.18 ID:8FZ8qVPxM.net]
〜の作り方的な本は、言語が分かってない段階だと本当に手順を追うだけになってしまって何一つ頭に残らないからお勧めできない
まあ頭使わずに何かやってる気にはなれるから勉強が苦手でどうしてもモチベーションが続かない人にはいいのかもね

710 名前:デフォルトの名無しさん [2018/07/17(火) 22:28:45.89 ID:A75xOI8y0.net]
おらにも良書おしえい



711 名前: mailto:sage [2018/07/17(火) 22:28:56.55 ID:cS4zRgZd0.net]
>>674
結構ハードルが高いですね…

712 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 22:58:06.26 ID:s7VdXjPi0.net]
一番いいのは作りたいアプリがあってそれを作る。アプリ作りを通して色々考えることがでてきだろう。最初は一人よがりなプログラムになるかもしれんがそれが第一歩だな。

713 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 23:18:31.59 ID:JTS2mYBv0.net]
>>672
MSの公式ドキュメント

714 名前:デフォルトの名無しさん [2018/07/17(火) 23:27:52.79 ID:A75xOI8y0.net]
ここまで0冊

715 名前:デフォルトの名無しさん [2018/07/17(火) 23:32:23.19 ID:A75xOI8y0.net]
>>672
まずは独習でいいと思う
これで基本機能が理解できたら
Linqや非同期、マルチコア専門の教本もあるから気になったら読めばいい
これらは重要だし独習が終わればよく理解できると思う

実践で役立つ〜はちょっとわからない

716 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 23:39:41.63 ID:JKMrilxjd.net]
書籍なんて最近手出してないけどeffectiveって無いの?
C+やstlでは結構お

717 名前:世話になったけど []
[ここ壊れてます]

718 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 23:41:42.83 ID:ofYg0nnt0.net]
>>674
10万行の間違いだろ。

719 名前:デフォルトの名無しさん [2018/07/17(火) 23:47:31.06 ID:WCI1fetR0.net]
>>686
昔からあるぞ。
最近のだと、More Effective C# 6.0/7.0が既に出てて、Effective C# 6.0/7.0ももうすぐ出る予定。

720 名前: mailto:sage [2018/07/17(火) 23:52:58.90 ID:cS4zRgZd0.net]
>>672
独習C#新版が終わったらレポートよろしくね



721 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 00:21:32.09 ID:WfV71rrt0.net]
dotnet aspnet-codegeneratorってwindowsでしかうごかんの?

722 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 02:04:04.67 ID:ohWLsVDp0.net]
>>688
やっぱあるよね
感覚的にはeffectiveに書いてある内容がとりあえず理解できて実践しだしたら中級者なイメージ
上級者っていうとmvpクラスと同等の知識レベルとかになるのかなぁ
mvpもいろいろあって基準としては曖昧かもしれんが

723 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 02:09:13.63 ID:ohWLsVDp0.net]
1000行なんて時には1日で書く程度のアプリ10本作ったところで…
だからって10万行のアプリなんて、それほんとに10万行必要だったの?プラグイン1個居れたら数万行不要になるんじゃない?って気もする
そもそも行数で語る時点でおかしい訳だけど
プログラム未経験は別として経験者なら一言語の中級者になるのに3年もかけてたら上級者になる頃にはその言語消えてんじゃね?って思う

724 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 07:35:29.71 ID:604NWUGLd.net]
一時的にスリープのように任意のスレッドの処理を停止させて
別スレッドがある処理をしたら停止スレッドが動き始めるような形を作りたいです
waitforsingleobject以外に実現方法ありますか

725 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 07:37:13.37 ID:gGGdDmmqd.net]
>>693
なぜそんなことしたいの?

726 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 07:40:12.26 ID:604NWUGLd.net]
>>694
Aスレッド、Bスレッドがあって
Aスレッドはたまっているリクエストを非同期で投げ続けています
リクエストは一つずつ送らないといけない制約があるため
その応答が来るまでAスレッドを停止させたいです
応答というのがBスレッドの処理です

727 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 07:51:29.32 ID:gGGdDmmqd.net]
>>695
普通にasync/awaitじゃだめなの?

728 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 09:20:45.30 ID:W2UhJLr+0.net]
待機するAスレッドがUIスレッドとかいう状態でもなければ
それこそ関数直接コールでも良さそうなもんだけど

729 名前:デフォルトの名無しさん [2018/07/18(水) 10:14:35.95 ID:IWAo5nUlp.net]
じゃあセマホ使えよ。

730 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 12:17:19.01 ID:TKyRL/+ma.net]
A案:リクエストのキューを投げる側ではなく受ける側に持たせる

B案:リクエストを投げるメソッドのデリゲートのキューをリクエストを受ける側に持たせる



731 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 13:53:18.95 ID:imuZ+lX20.net]
会社クラスを作りインナークラスで部署クラスを作ったのですが、インナークラスの使い方として間違っていないでしょうか

なんかMS意図と違う使い方をしてる気がしておりまして

732 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 14:21:30.22 ID:JHZwBCBgM.net]
間違いです

733 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 14:39:45.10 ID:zONoZYnW0.net]
IT業界は部署ごと社外に出向させられるとか日常茶飯事ですからね。

734 名前:デフォルトの名無しさん [2018/07/18(水) 19:00:56.71 ID:9N0yBnKk0.net]
listviewを使って画像をドラッグした位置に挿入できるようなものを作りましたが、サムネイル表示(ViewプロパティをView.LargeIconに設定)だと移動後に一番後ろに来てしまいます
、どうすれば自由に画像を入れ替えれるのでしょうか?

735 名前:デフォルトの名無しさん [2018/07/18(水) 19:50:12.60 ID:yFSY1wbO0.net]
>>692
>1000行なんて時には1日で書く程度のアプリ10本作ったところで…

これも内容によるけどな
10本作る間に誰に見られても恥ずかしくないコードが

736 名前:書けるようになれば… []
[ここ壊れてます]

737 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 21:41:28.47 ID:ojmeEx4e0.net]
>>704
内容にもよるんだろうけれど、きちんと動くプログラムを10本完成させたっていうのであれば、それなりに評価してよいと思う。

738 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 21:49:23.42 ID:GTM6kR3M0.net]
仕事の山越えたからと社内文章読んでたら我が社のコーディング規約にvarとLINQ禁止とデカデカと書いてあってて笑ったwww

739 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 21:53:50.99 ID:iepCQJFn0.net]
就職ガチャ失敗おめでとうございます

740 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 22:21:17.43 ID:ptS24Bkdd.net]
>>706
LINQ禁止ってラムダ式使ったらだめってこと?



741 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 22:30:15.87 ID:MKYFu03e0.net]
varだめってリテラシーならラムダもダメだろうね

742 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 22:41:34.30 ID:62X+9Moaa.net]
短いコードのアプリでもちゃんと一般人の使用に耐えうるようになってるならいいだろう
機能的には十分でも無秩序にボタンが並んでるアプリは見ててつらい

743 名前:デフォルトの名無しさん [2018/07/18(水) 23:09:23.95 ID:/cNHsX3ta.net]
コントロールそこそこおいたまともなアプリなら1000行じゃおさまらんやろ

744 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 23:29:19.34 ID:p8keSf810.net]
>>706
C#の公式コーディング規約に真っ向から対立www

745 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 23:39:58.45 ID:rt2OOdjJ0.net]
ラムダ式禁止とかC#使う価値半減だな

746 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 23:43:15.56 ID:dMzTHkZAM.net]
λ縛りはBダッシュ縛りマリオぐらいキツイ

747 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 23:46:14.58 ID:L7ofGWBt0.net]


748 名前:デフォルトの名無しさん [2018/07/19(木) 00:18:15.44 ID:mgU85F4C0.net]
varってスコープが決まってたりよく使うもんだと思ってるんだけど
違うん?

あとコンパイル時に推論されるから実行速度には影響ないって考えていいの?

749 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 00:29:07.38 ID:iwebbGhU0.net]
>>716
明示的に型を示しても実行速度は変わりません

750 名前:デフォルトの名無しさん [2018/07/19(木) 00:29:37.74 ID:mgU85F4C0.net]
>>717
ありがとうございます



751 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 00:34:23.22 ID:4jMcHp760.net]
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行にしたいんですが、どうすればいいですか?

752 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 00:38:57.36 ID:5TJBBc7u0.net]
継承について
スーパークラスAに始まり
class B : A
class C : B
class D : C
となった場合、
Dクラス内でAやBのクラスのフィールドやメソッドをを使いたくなった場合には
それぞれをインスタンス化をすれば使えると思いますが、
継承されていない場合はどうすれば良いのですか?
例えば、
スーパークラスX
class Y : X
class Z : Y
とい場合、class Aのメソッドやフィールドを使いたくなったときは、
どうやってクラスAを持ってくるのでしょうか?
継承をしなくても、そのクラスのメソッドやフィールドを持ってくる方法はありますか?

753 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 00:46:06.47 ID:9fGOJ2HHa.net]
コンポジション

ZのフィールドやプロパティにAをもたせるだけ

754 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 00:56:15.63 ID:OslD0F820.net]
>>719
LINQ は集合に対して使うものなので、その例だと必要ない

if (myTable.TryGetValue("Iwate", out var s))
{
 MessageBox.Show(s);
}

対象が

755 名前:。数あるならこう

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);
}
[]
[ここ壊れてます]

756 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 01:05:12.94 ID:EPnya5cJa.net]
>>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>)(_ => {}))();
とか書けなくはないけど俺ならこんなの書いてきやがったらコードレビューで突き返す

757 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 07:22:53.40 ID:Y653MTcJd.net]
>>696
awaitでは上手く実現できなさそうな構造でした

https://msdn.microsoft.com/ja-jp/library/system.threading.monitor(v=vs.110).aspx
monitorクラスを使って実現できそうだなとなりました
ただこれのシグナルを投げるpulseとpulseallの違いがよくわかりません
pulseは変数で渡したオブジェクトのスレッドを、pulseallは渡すオブジェクトとか関係なくwaitで止まってるすべてのスレッドを動かす?

758 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 07:52:34.10 ID:pmdFJ8GPd.net]
>>724
>awaitでは上手く実現できなさそうな構造
なぜ?

759 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 07:53:35.73 ID:EPnya5cJa.net]
>>724
つまりProducer-Consumerだろ?
まさにBlockingCollectionのユースケース

760 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 10:16:19.48 ID:cAPUq0O30.net]
Aそのものは非同期(バックグラウンド)で動く必要があるとして
そもそもBが非同期で動く必要性がわからん
かならず応答きてから次をよぶんだろ?



761 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 11:39:51.48 ID:wWZN809Va.net]
むしろ一番の疑問は、
>リクエストは一つずつ送らないといけない制約がある

のであれば、キューを持つべきなのはリクエストを送る側ではなく受ける側なんじゃないか、
なぜリクエストを送る側に受ける側の都合に合わせる負担をさせるのか、
ってことだと思うけど、まあ話が曖昧過ぎてよくわからんね。

762 名前:719 mailto:sage [2018/07/19(木) 12:02:04.85 ID:4jMcHp760.net]
>>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>)(_ => {}))();
>> とか書けなくはないけど俺ならこんなの書いてきやがったらコードレビューで突き返す


ありがとうございました

763 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 12:23:58.43 ID:apArmWopd.net]
見やすくしたり行数減らす為の機能なのに一文に無理やり詰めたら見づらいだろうしな
LINQ使わなくても
;で終わらせた文を一列にずっと書き続けてたらなんだこいつってなるだろうし

764 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 12:45:19.73 ID:7c8TqsUTM.net]
MQ使えよ

765 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 13:14:15.48 ID:kD3lyTPJr.net]
varのメリットってなに?

766 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 14:01:22.48 ID:goaSBPuMd.net]
>>732
定期的にこのスレを荒らすメリットがある。

767 名前:デフォルトの名無しさん [2018/07/19(木) 14:35:28.55 ID:3tSlXwR10.net]
10年で1スレも消費できないムラダ厨がまた初心者スレで暴れてるのか。

768 名前:デフォルトの名無しさん [2018/07/19(木) 15:40:49.42 ID:afTcWGfVp.net]
>>728
送る側で待たないと仕事を溜め込んだ受け側が最悪死ぬか無視する様になるぞ。

769 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 16:09:05.04 ID:wWZN809Va.net]
>>735
意味わかんないよ

キューが満杯ならエンキューできないだけ。
そして、キューが満杯になるような事態が起こるかどうかは、キューを送る側受ける側
どちらが持つかという設計の問

770 名前:題とは何も関係がない。

送り側が持てばそんな事態は起こらない、などとはまったく言えない
[]
[ここ壊れてます]



771 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 16:13:58.11 ID:GVBKISLp0.net]
共有メモリにFIFO作りたいのでサンプルコードください

772 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 19:27:54.48 ID:FFg3mKaqa.net]
>>737
基本的にスレチだな

773 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 20:33:54.32 ID:AM4tPqCx0.net]
>>737
マルチ乙

774 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 20:34:49.77 ID:m5MPu7YPM.net]
バックグラウンドジョブをメモリに置いて管理するとクラッシュした時につらいのでやめてください

775 名前:デフォルトの名無しさん [2018/07/19(木) 23:06:52.57 ID:afTcWGfVp.net]
>>736
少なくとも送る側が待てばたまらないし、待たすからには大元まで遡って待たせることが出来る。
受け側で貯めちゃうと、そんなコントロールすらできない。

776 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 23:10:07.57 ID:3HXgvZll0.net]
>>737
MemoryMappedFileクラスで共有メモリを作って、そこにリングバッファを作れば良い。
サンプルコード? と言う名の丸投げは知らんw

777 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 23:16:09.86 ID:GVBKISLp0.net]
>>742
ありがとうございます

778 名前:デフォルトの名無しさん mailto:sage [2018/07/19(木) 23:24:45.38 ID:OO5CyzUia.net]
>>741
何を言ってんの。
ちゃんと自分の頭で考えて言ってる?

キューの容量が100だとする。
リクエストが100まで溜まってしまうかどうかは、キューをどちらが持つかと関係ないでしょ。

スループットはリクエストの処理能力で決まるんであって、キューをどっちが持つかで決まるんじゃない。
当たり前でしょ。

送る側が待てばたまらない?
それは受ける側がリクエスト拒否したらたまらないと言ってるのと同じ

君の世界じゃ、バケツリレーの余分なバケツの置き場所を送り元におくか送り先に置くかで
バケツの輸送能力(単位時間あたりの送れる水の量)が変わるの?

変わるわけがないでしょ
頼むよマジで

779 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 00:04:31.35 ID:K42rKqTp0.net]
>>721
ありがとうございます

すみません、コンポジションというのはどういう手法なのでしょうか?
調べてはみたのですが解説しているサイトが見つからなくて・・・

780 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 00:15:51.43 ID:v/t2rOLx0.net]
>>745
クラスのインスタンスをメンバ変数などに設定して持つ



781 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 00:16:43.45 ID:Cn0RK5hEM.net]
配置計画
GOFはそちらを優先して説明しているが

782 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 01:07:34.53 ID:AsTO3swr0.net]
持つと待つ
混ざりすぎじゃねぇの?
待つって言いたいんだよね?

783 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 06:49:01.24 ID:rjUp7fMrM.net]
きたです
https://i.imgur.com/F20EZn1.jpg

784 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 09:57:40.63 ID:KW0DEJnu0.net]
>>748
>>744の文中の持つは持つで間違ってないと思う

785 名前:デフォルトの名無しさん [2018/07/20(金) 10:43:27.30 ID:aSukBuZjp.net]
>>744
だから、貯め無い様にするには、送る側、更にそこに送る側、更に大元の送る行為を辞めされはいいって話。
わかる?

通信のフローコントロールの話と同じなんだよ?

786 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 10:47:52.01 ID:j2kgPlBya.net]
>>751
まだ言ってるのか。

君の世界では
>送る側、更にそこに送る側、更に大元の送る行為を辞めされはいいって話

これが可能かどうかはリクエストのキューをどちらが持つかに依存するのか。
キューをリクエストの受け側が持ったらそれは出来ないのか。
意味が分からないよ

何が
>通信のフローコントロールの話と同じなんだよ?
だw
馬鹿過ぎて笑える

787 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 10:50:07.22 ID:GHEf7JCUM.net]
よそでやってくんねーかなクソカス

788 名前:デフォルトの名無しさん [2018/07/20(金) 10:50:53.38 ID:aSukBuZjp.net]
おまえ、目悪過ぎて呆れるわ。

持つなんて一言も言って無いだろw
待つだw マツ。

キューをどっちが持ってるかなんて話はしてない。

789 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 11:06:3 ]
[ここ壊れてます]

790 名前:9.88 ID:KI/QuNIvM.net mailto: アスペルガーの人はひとつのことしか同時にわからないから
二つ話題があることに気がつかない

その話題は持つであってるよ
[]
[ここ壊れてます]



791 名前:デフォルトの名無しさん [2018/07/20(金) 11:16:02.27 ID:aSukBuZjp.net]
>>755
まあ普通は受け取る側に郵便受けが無いと受け取る人はいちいち局留めの郵便を受け取りに行かなきゃならないんだけど、まあ、それはどちらでも機能するからあんまり争点にはならないけどね。

792 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 13:07:56.71 ID:aSN8UD58d.net]
バケツリレーの喩えでもスループットは変わっちゃうんだよな。
受け側に送信側が送信する総量より大きいバッファを持てば、スループットは水の入ったバケツを運ぶ時間に依存するだけで済む。
キューがそれより遅ければバケツを引き渡すために時間が余計にかかるわけだから、スループットは落ちる。
送信側にキューを持ったところで、送信側は送信処理に対して同期的に処理しないだけで済むだけで、そのキューからの送出がどんどん遅れるだろう。受け取ってくれないなら。

793 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 13:54:59.01 ID:gB9GbXMP0.net]
>>693,695「スレッドを協調して動かしたいです、制約あるんで」
凡人の回答「○○使えよ」
天才の回答「制約が悪い」

794 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 21:28:53.81 ID:OAXfUTo30.net]
c=(a*a+b*b)
c=System.Math.Sprt(c)
これでcの平方根を出そうとしたのですがSystem.MathにSprtの定義がありませんと出ます
sharedevelopを使っています

795 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 21:32:35.58 ID:XkM+nwLwM.net]
SQRT

796 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 21:35:00.80 ID:6RzmSKAyM.net]
エディタの不具合だろ
SharpDevelopなどという化石は今すぐアンインストールしてVSかVSCodeを使え

797 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 21:44:14.53 ID:XkM+nwLwM.net]
平方根の綴りが違う

798 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 22:17:34.54 ID:7jIkQpVM0.net]
square rootだからねぇ

799 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 00:28:32.93 ID:WdWG9X6t0.net]
ありがとうございます 解決しました

800 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 06:52:38.43 ID:HGZKU0EK0.net]
スパート!



801 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 13:53:42.54 ID:aw31/LTY0.net]
>>754
もともと
>キューを持つべきなのはリクエストを送る側ではなく受ける側なんじゃないか、
にたいして
>送る側で待たないと仕事を溜め込んだ受け側が最悪死ぬか無視する様になるぞ。
ってレスしてるのが発端なんだが

どうでもいい良いしよそでやって欲しいけど

802 名前:デフォルトの名無しさん [2018/07/21(土) 14:14:10.21 ID:IqGIA9LU0.net]
話題が一変してんのにわざわざ掘り返すなよw
言ってる事とやってる事が矛盾してんぞw

803 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 15:42:07.60 ID:8fBGWCJL0.net]
レスバトルって奴だろ
最後に言及した方が勝ちなんだって
これ見るといつも思うが、こういう馬鹿には自分自身を見る自意識がないのかね

804 名前:デフォルトの名無しさん [2018/07/21(土) 20:00:10.16 ID:rsQP0F780.net]
たすけて!
Parallel.ForEachの中でデータグリッドの内容を更新してるんだけど
途中で爆発します
データグリッド全体に✕って出て非表示になる
データグリッドの更新処理はlockで囲ってても競合は起きちゃうものですか?

805 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:05:25.49 ID:CBiNHREt0.net]
まず原因を切り分けろ
Parallel.ForEachを外しても爆発するか確認するんだ

806 名前:デフォルトの名無しさん [2018/07/21(土) 20:07:27.16 ID:rsQP0F780.net]
>>770
パラレルの外出すと機能するけど
そうすると全処理終わってから一回しか更新されない…😌

807 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:08:57.28 ID:gktKld7A0.net]
>>771
UIはUIスレッドからしか操作出来ない
Parallel.ForEachの処理は別スレッドで実行される

808 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:10:43.13 ID:BEEMYUE30.net]
>>771
Action<TLocal> local

809 名前:Finally の引数をとるオーバーロードを使ってみたらどうでしょう? []
[ここ壊れてます]

810 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:10:44.76 ID:H6KFndt4M.net]
>>768
君のレスを見るといつも思うが、こういう特徴のある口調のレスを繰り返す人には自分自身を見る自意識がないのかね



811 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:10:59.84 ID:nH897ECr0.net]
invokeするか、ContextにPostするしか無いんじゃないかな

812 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:22:09.68 ID:3bWsh9tI0.net]
>>774
>>774

813 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:22:10.55 ID://qCwfF7a.net]
爆発w

814 名前:デフォルトの名無しさん [2018/07/21(土) 20:24:00.77 ID:rsQP0F780.net]
>>772
>>773
>>775
Invokeでググりました
まさにこの疑問を解決するための機能でした
有難う御座います

815 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:35:04.73 ID:BEEMYUE30.net]
私は >>773 ですが Invoke について自分があまり良く分かってない気がしてきたので
詳しい方がいらっしゃったら教えてください

UIスレッドで Parallel.ForEach を呼ぶとUIスレッドをつかんだまま並列処理が実行されて、
その並列処理のスレッドで Invoke を使うとデッドロックしてしまう気がするのですが
実際はそういうことはないのでしょうか?

816 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:36:04.76 ID:aw31/LTY0.net]
マルチスレッドにしてInvokeしまくると結局パフォーマンスがガタ落ちしたりするがな

817 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:15:58.91 ID:BEEMYUE30.net]
>>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 } に変える → デッドロックする

818 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:16:52.59 ID:1oayVCQs0.net]
>>778
いいってことよ(´・ω・`)b

819 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:18:17.40 ID:nH897ECr0.net]
>>779
並列処理はUIスレッドではないスレッドで行われるよ。
いや、UIスレッドで行われるとは限らない、と言う言い方の方が正しいかな。
UIスレッドを掴んだままの意味がわからんが、挙動が謎なら、ブレークポイントつけて実行して、どのスレッドが何をしてるかを把握してはいかがだろうか。
今どのスレッドを使ってるかは表示されてるから。

820 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:20:54.98 ID:nH897ECr0.net]
WPFかあ



821 名前:デフォルトの名無しさん [2018/07/21(土) 21:25:21.58 ID:VW1YO4fA0.net]
Windows版VSCodeで、monoを構文解析用のコンパイラとして指定することってできないのかな?

Unityの.Net4.0用プロジェクトで、数ヶ月前までは、.Net3.5用のSystem.Data.DLLを読み込んでくれたのにさあ
VisualStudioを更新したら構文解析用のコンパイラが変わったのか、古い.net3.5用のDLLを読み込んでくれなくて赤波線だらけになっちゃったぜ
4.0用のDLLもあるわけだけど、それを入れるとUnityのmonoの方でなぜかエラーを起こすし・・・どうしたら良いものか・・・・

822 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:33:11.65 ID:BEEMYUE30.net]
>>783-784
レスありがとうございます

> いや、UIスレッドで行われるとは限らない、と言う言い方の方が正しいかな。
>>781 で new int[] { 0 } だとデッドロックしないあたり、まさにそんな感じですね

> WPFかあ
>>769 でデータグリッドと書かれていたので、
今の Windows フォームなら DataGrid ではなく DataGridView かなと思って
WPF の方で試してしまいました(汗
Windows フォームだと挙動が変わるならそれも知っておきたいので
今からそっちでも試してみ

823 名前:ます []
[ここ壊れてます]

824 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:36:50.95 ID:BEEMYUE30.net]
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("デッドロックするとこのメッセージは表示されない");
}

825 名前:デフォルトの名無しさん [2018/07/21(土) 22:26:34.46 ID:rsQP0F780.net]
えーわからん…
ちなみにフォームですビューです
つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか
それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが

uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか

826 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 22:44:23.68 ID:BEEMYUE30.net]
>>788
あくまで私一人の考えですが・・・

[1] Invoke を使うと >>779 に書いたような理由でデッドロックするので
 Parallel.ForEach でUIスレッドを使いたいなら >>773 のようにすべき
[2] しかし、同じく >>779 に書いたように Parallel.ForEach はUIスレッドを
 つかんだまま並列処理を行うのでデータグリッドの更新処理だけ
 Parallel.ForEach から切り出してもほとんど同じなのでは?
 (一応 localFinally 中も他のスレッドは動けるので
   そこで更新処理を行う方がいい場合もあるかもしれない)
[3] 並列処理が必要なほど大きな処理を行うなら、
 一度UIスレッドを手放す選択肢も考えてみては?

ただ、Invoke がダメだと考えている人間自体が私だけのような気もするので
他の方の意見も聞いてみたほうがいいと思います
あと、[3] に関しては場合によりけりだと思うので、
具体的な処理内容を教えていただければ私の考えをお伝えしたいと思います

827 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 22:55:07.29 ID:gktKld7A0.net]
>>787
そのコードだと、button1_Click()がずっとUIスレッドを握ったまま。
だから、Parallelの別スレッドでInvoke()しようとしてもUIスレッドに遷移出来なくて固まる。

828 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:00:46.86 ID:gktKld7A0.net]
既に>>779に書いてあったね。その通り。

829 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:10:20.56 ID:BEEMYUE30.net]
>>790-791
レスありがとうございます
>>779 の考えで正しいのか不安だったのですがお陰様で自身が持てました
他に何かおかしなことを言ってしまっていたら教えていただけると嬉しいです

>>788
>>789 はレスとしてとっ散らかっている気がしてきたので一問一答で答えてみます

> つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか
Parallel を UI スレッドで実行する場合は悪手というか、致命的だと思います

> それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが
それなら期待通りの動作にはなると思います。ただ、確かにあまりいい方法ではないと思います

> uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか
正しく Invoke を使えば問題ないと思います
しかし今回の件からもわかるように、Invoke を正しく使うのはなかなか難しいようです

830 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:21:21.79 ID:R8KbBSh90.net]
.Invokeではなく.BeginInvokeを使うのはどう?



831 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:30:54.97 ID:BEEMYUE30.net]
>>793
それって
> それともThread生成してその中でParallelすれば良かったり…?
よりも更にワチャワチャする気がするのですがどうなんでしょう?

ワチャワチャって具体的にどういうことなのか
説明を求められれば頑張ってみようと思いますが、
自分の考えがあっているかも、それをうまく説明できるかどうかも
自信がないので、詳しい方の意見を聞けると嬉しいです

832 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:41:01.32 ID://qCwfF7a.net]
>>794
そんな難しい話じゃないっすよw

BeginInvokeは非同期に実行される、つまりキューにデリゲートを入れたらすぐに処理を返すので
Invokeのように自分で自分の終了を待機する状態に陥らない

833 名前:デフォルトの名無しさん [2018/07/21(土) 23:43:41.94 ID:rsQP0F780.net]
>>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("デッドロックするとこのメッセージは表示されない");
}

834 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:55:52.12 ID:BEEMYUE30.net]
>>795
レスありがとうございます
おっしゃる通りBeginInvokeはキューにデリゲートを入れたらすぐに処理を返すので
次から次へとキューが入って大変なことになりそう

835 名前:E・・と思ったのですが、
そんなに心配することではないのでしょうか

>>796
それで一応動くと思いますが、Parallel.ForEach が終わる前に
二つ目の MessageBox.Show の行に移るので注意してください
・・・というか、localFinally を使ったり更新処理だけを切り出したりはダメっぽいですか?
ダメだと考えられた理由を教えていただければ何かアイディアを提供できるかもしれません
[]
[ここ壊れてます]

836 名前:デフォルトの名無しさん [2018/07/22(日) 00:03:07.23 ID:qjdpSLXF0.net]
>>797
データグリッドビューは進捗状況を見るために更新していて
1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます

ダメではなく単純に自分が分かってないだけです
この処理ならlocalFinallyが最適かもです
深く調べてみます

837 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:13:38.17 ID:IU6x2eOV0.net]
>>798
> データグリッドビューは進捗状況を見るために更新していて
> 1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます
進捗状況の確認が必要なほど1行あたりの処理に時間がかかる理由は何でしょうか?
もしその理由が IO など、CPU 以外のところにあるのだとすれば、
Parallel.ForEach を使うこと自体を見直したほうがいいかもしれません

> この処理ならlocalFinallyが最適かもです
正直なところ、更新処理だけ切り出す方法よりも localFinally の方が
適切なケースはまれだと思います
ただ、localFinally の使い方がわかれば更新処理を Parallel.ForEach の外に
切り出す方法もわかると思うので、とりあえず調べてみて損はないと思います

838 名前:デフォルトの名無しさん [2018/07/22(日) 00:23:24.78 ID:qjdpSLXF0.net]
>>799
圧縮ファイルを解凍して中のファイルを加工して再び圧縮し直す
これで1タスクです
1ファイル200MBほどで100ファイル以上処理することが多いです
圧縮解凍、加工は外部ツールを使用しててProcessStartInfoで処理されます

839 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:35:58.51 ID:IU6x2eOV0.net]
>>800
なるほど〜
CPU 処理も IO もあって微妙なところですね

ちなみにその外部ツールはマルチスレッドを使うオプションはないでしょうか?
(例えば 7-zip.exe だと -mmt がそれにあたります)
もし外部ツールがマルチスレッドに対応してるなら、
並列処理はそっちに任せてしまうというのはどうでしょう?

または、外部ツールではなく SharpCompress のようなライブラリを使うことができれば、
C# によるより細かい制御も可能になると思います

840 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:37:18.94 ID:gDKcX53ba.net]
汎用的なものとは思えないし、動けばどうでもいいだろ
俺ならそういうのはいちいちGUI付けずにコンソールでやっちゃうな



841 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:45:55.06 ID:IU6x2eOV0.net]
>>800
それともう一つ、外部ツールを呼び出すのにデフォルトの ParallelOptions で
Parallel.ForEach を呼び出すのはさすがにまずいと思います
ParallelOptions 自体に MaxDegreeOfParallelism というプロパティがありますし、
ParallelOptions の TaskScheduler プロパティに以下のような自前のスケジューラーを
設定すればより柔軟な並列処理を実現できると思います

同時実行の程度を制限するタスク スケジューラを作成する
https://msdn.microsoft.com/ja-jp/library/ee789351(v=vs.100).aspx

>>802
それは確かにw
完成したソフトによって得られる利益よりソフトを作るコストのほうが大きくなってしまったら
意味がないですからね
(ただしソフトによって得られる利益には開発者のスキルアップも含まれる・・・と言ってみたりw)

842 名前:デフォルトの名無しさん [2018/07/22(日) 00:48:52.21 ID:qjdpSLXF0.net]
>>801
7zip使ってます
スレチになるけど
mmtは一つの処理をマルチに実行するものではないでしょうか

圧縮形式は決まってなく複数あるので7zipを使用してます
zip rar lzh以外にも色々

843 名前:デフォルトの名無しさん [2018/07/22(日) 00:51:33.52 ID:qjdpSLXF0.net]
>>803
タスクスケジューラー調べてみます良さそうですね

i7使用しててMaxDegreeOfParallelismは常に8で実行してます
8スレッドで画面カッチカチで処理してます
暴力です

844 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:54:31.49 ID:IU6x2eOV0.net]
>>804

845 名前:
> mmtは一つの処理をマルチに実行するものではないでしょうか
その通りです
したいことが「進捗状況を表示できるようにすること」と「並列化により処理時間を短縮すること」
だとすれば、それで問題ない(というかむしろその方が望ましい)の思うのですがいかがでしょうか?
[]
[ここ壊れてます]

846 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:59:41.83 ID:IU6x2eOV0.net]
>>805
MaxDegreeOfParallelism を使ってらっしゃるなら
とりあえず致命的にまずいことはないと思います
ただ、CPU だけじゃなく、同時に8つのファイルの読み書きを
求められる HDD さんの気持ちも考えてあげて・・・w

847 名前:デフォルトの名無しさん [2018/07/22(日) 01:01:31.55 ID:qjdpSLXF0.net]
>>806
後続の加工処理もありエラー監視も含むので進捗知りたいです

848 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:03:03.89 ID:SZ8yn9810.net]
>>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( "デッドロックするとこのメッセージは表示されない" );
}

849 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:04:00.97 ID:gDKcX53ba.net]
makefile使えば?
数行のMakefile書いて make -j8 するだけだよ

850 名前:デフォルトの名無しさん [2018/07/22(日) 01:04:22.38 ID:qjdpSLXF0.net]
>>807
解答先は8GBのRamディスクです
メモリに物理ファイルおいてでここで加工して再圧縮してその後HDDに移動させてます



851 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:18:41.37 ID:IU6x2eOV0.net]
>>808
Parallel.ForEach を使わなくてもそれはできると思うのですがいかがでしょうか?

>>809
確かにおっしゃる通りですね
後は好みの問題ですが、やはり私は1行ごとに Invoke するよりも
パフォーマンス的に有利な localFinally や更新処理の切り出しを推したいですw

>>811
なるほど!そうすれば外部ツールを使っても HDD へのアクセスだけ別に処理できますね
ただ、HDD へのアクセスを別にしようという意識をお持ちで、それだけのスキルもあるのなら、
外部ツールにこだわる必要はないのでは・・・という気もします
あと、メモリは HDD よりはずっと速いですが、CPU キャッシュとかの関係でやっぱり
8 個のファイルを同時に読み出すよりは1つずつの方が良いような気がします

852 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:27:28.49 ID:IU6x2eOV0.net]
>>809 >>812
いや、でも進捗状況を表示するとなると結局どこかで await は使うことになりそうですね
ただ私としては >>800 のような処理なら Parallel.ForEach は必要ないと考えていて、

foreach (ファイルのループ)
{
  foreach (進捗状況のループ)
  {
    await (進捗状況の更新待ち);
    (進捗状況を画面に反映);
  }
  (1ファイルの完了を画面に反映);
}

のような感じで十分だと思うのですが、どんなもんでしょうか?

853 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:35:51.92 ID:eU7Qw5rc0.net]
そんな処理速度気にするなら複数PC用意できたりしないのかな?
たぶん内製ツールだと思うけど、そういうのって長期保守とかしないならシンプルでさくっとやれる方向を模索したほうがいい気が…
研究開発兼ねてとかだったらいいんだけど

854 名前:デフォルトの名無しさん [2018/07/22(日) 01:43:37.75 ID:qjdpSLXF0.net]
>>812
そうです、最も投げやすく勝手にマルチしてくれる便利なParallelさんって聞いて使ってるます
別の手段があればコレに拘ることはないと思ってます

>>813
cpuキャッシュとか考慮せずマルチ=高速って誤認識で走ってきて
その中で最適化してきたので
localfinally使用したときと
1ファイルの処理の差も検証してみたいと思います

>>814
ただの趣味なんですPC一台で
複雑でも効

855 名前:果があれば試したいと考えています []
[ここ壊れてます]

856 名前:デフォルトの名無しさん [2018/07/22(日) 01:44:34.84 ID:qjdpSLXF0.net]
ほな寝ます。詳しくありがとうございました!
もしかしたら明日もっとやべーかもです

857 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:59:21.48 ID:J1Nh86LOM.net]
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;

858 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 03:07:13.11 ID:IU6x2eOV0.net]
>>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);

859 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 09:28:10.63 ID:e8tLYzcQ0.net]
違うexeキックすれば終わりなんやで?

860 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 13:48:56.26 ID:dLVAOvzX0.net]
オブジェクト指向について勉強しようと思い、クラスを複数作って実行しようとしたら実行ボタンがプロセスにアタッチというよく分からない物に代わりビルドなども出来なくなってしまいました
どうしたら元に戻せるでしょうか



861 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 15:37:48.37 ID:X/YKRg9/M.net]
参考にした資料がそう(実行ボタンをプロセスにアタッチ)しろと書いているなら
その手法でトラブった時の解決法も資料に書いてあるのでは

提示されたくらいの情報でここで帰ってくる答えは
「ゴミは捨てて作り直せ」
「一旦オブジェクト指向についての記憶を消せ」
だと思う

862 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 19:34:11.94 ID:dLVAOvzX0.net]
このように実行ボタンがアタッチ…となりビルドも行えなくなってしまっています…
プログラムは「確かな力が身に付くc#超入門」から取っていて特にプロセスにアタッチに関する記述も無いので恐らく設定どこか変に弄ってしまったのかと思うのですが…
https://i.imgur.com/QK8r2yI.jpg

863 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 19:59:19.28 ID:zgYMpfBL0.net]
>>822
ソリューションエクスプローラーで当該プロジェクトを右クリック→スタートアッププロジェクトに設定(みたいなやつ)を選択

864 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:02:21.74 ID:2+gJNW3/0.net]
>>822
言語じゃなくVisual Studioのスレで聞かないと
それはプロジェクトが読み込まれておらずソースだけ読み込まれている状態

865 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:13:04.82 ID:dLVAOvzX0.net]
>>823
やってみたのですがそれらしき項目がありませんでした…

866 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:13:36.52 ID:dLVAOvzX0.net]
>>824
なるほどありがとうございます vsのスレで聞いてきます

867 名前:デフォルトの名無しさん [2018/07/23(月) 00:19:07.43 ID:glq8mOZ10.net]
revertしろや。意味もわからんだろうがな。

868 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 01:08:12.51 ID:7plYbgct0.net]
>>827
じゃあなぜそれを言ったのでしょうか…

869 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 02:22:37.56 ID:UcAZ2Awl0.net]
ナチュラルマウンティング

870 名前:デフォルトの名無しさん [2018/07/23(月) 09:39:14.18 ID:GAsLkYgIM.net]
>>828
ググって勉強しろということだ



871 名前:デフォルトの名無しさん mailto:sage [2018/07/24(火) 22:19:33.23 ID:KA6Loe2t0.net]
もしかしてASP.NETってJavaみたいなリッチで無料の拡張フレームワーク無いの?

872 名前:デフォルトの名無しさん mailto:sage [2018/07/24(火) 22:26:36.90 ID:9BkrBjXcd.net]
>>831

ASP.NET自体が無料のフレームワークだろ

873 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 13:43:12.86 ID:rJjy6ITv0.net]
きもは「リッチ」で「拡張」ってことだろ
つまりどんなものを指してるのか全く分からんがな

874 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 14:20:20.79 ID:HwnrNSAwM.net]
Classic ASP.NETは拡張性とかガン無視でMSがデフォルトで提供するお仕着せのものだけ覚りゃ一通りできるっていうドカタ向けフレームワークだぞ
Springみたいなのがお好みならASP.NET Core使え

875 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 17:37:41.34 ID:rJjy6ITv0.net]
>>834
Classic ASP.NETがどのバージョンを指してるか知らんが拡張性無視とか笑わせる
HTTPハンドラとかモジュールとか自作したらほぼすべてカスタムできたわけだが

876 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 22:02:27.35 ID:LjfK0h7i0.net]
すれ違いで書き込んだ者ですが、こういう連続線をC♯を使って、方眼風の画面にクリックして一番近い座標点から始まり次のクリック座標点って感じで連続線を描きたいんですが、なんか参考になる本だとかサイトってありませんか?
https://i.imgur.com/Emj85bk.jpg

877 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 22:16:28.94 ID:QC64Azkrd.net]
>>836
Graphicsクラスを使って自分で線描画するのが手っ取り早いからこのあたりかな
https://dobon.net/vb/dotnet/graphics/drawrectangle.html

878 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 22:56:32.30 ID:oxjpcelO0.net]
>>837
そのページは閉じた図形だな。
>>836
同じdobonで
折れ線を描く(DrawLinesメソッド)
https://dobon.net/vb/dotnet/graphics/drawline.html#fold

879 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 23:40:00.99 ID:sTP5vmoc0.net]
>>834
ASP.NET CoreってPrimeFacesのような無料で便利なライブラリあるの?
商用ならWijmoやTelerik色など々あるようだけど有料はちょっとね
拡張すりゃ出来るとかハンドラ書けばできるとかそんなのは当たり前の事だけど
そんな車輪の再発明に工数が出るわけがないし

880 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 23:47:26.31 ID:QC64Azkrd.net]
無料ライブラリなんかnugetでなんぼでもインストールできるだろ



881 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 00:19:33.20 ID:aLLF0qhM0.net]
>>840
具体的にはどのパッケージですか?

882 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 07:51:00.77 ID:qCaaK3zMa.net]
>>839
ASP.NET CoreはMVCだからGUIは単なるHTML
ASP.NET Core関係なく普通にHTML/JS/CSSのライブラリを拾ってきて使えばよい

883 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 14:29:55.52 ID:ujIuVWNLr.net]
ライブラリ不要レベルやん
マウス位置とライン引くだけだし

884 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 14:36:43.63 ID:rEhHpU7y0.net]
PictureBoxがあればなんだってできるみたいな

885 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 16:41:36.62 ID:EX1pNRMXM.net]
文字の折返しさえできたら実はなんでもいい

886 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 16:48:08.19 ID:lkW5ctngd.net]
>>843
誰もライブラリ使えなんて言ってないだろ

887 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:08:23.29 ID:BBodZQOSM.net]
>>842
そういう使い方はNGですね
サーバーサイドレンダリングが基本のフレームワークとクライアントサイドのフレームワークは常識的に考えてインピーダンスミスマッチでしょう
(primefacesのように最初からセットで設計されてるならともかく)
それならまだaspnet coreはapiに徹してang

888 名前:ularやreact使ったほうがマシです []
[ここ壊れてます]

889 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:18:37.89 ID:IphAgnBQM.net]
>>847
なんでクライアントフレームワークの話になるんだ?
AngularやReactのようなものに依存せず単独でページに組み込めるHTML/JS/CSSのコンポーネントなんか腐るほどあるだろ

890 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:30:12.58 ID:36qwSZL10.net]
C#で、VPN経由でCiscoのL2スイッチにログインしてフォワーディングデータベースと各ポートのステータスを取得したいんですが、
簡単に解説しているサイトはないでしょうか?

クライアントを動かすPC - HUB - NATルーター - VPNルーター - ネット - VPNルーター - HUB - Ciscoルーター - 目当てのCisco L2スイッチ
ていう状態です。



891 名前:デフォルトの名無しさん [2018/07/26(木) 19:41:22.79 ID:jgVPt9Lg0.net]
LinQの中身ってfor文ってホント?

892 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:42:46.48 ID:CSIl69XB0.net]
アイドルグループの中身は知りません

893 名前:デフォルトの名無しさん [2018/07/26(木) 19:49:11.86 ID:jgVPt9Lg0.net]
LinQクラスの各メソッドの中身の味方教えてください

894 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:51:33.98 ID:XPlHGtVDd.net]
>>852
github

895 名前:デフォルトの名無しさん [2018/07/26(木) 19:55:09.78 ID:gWAgddOO0.net]
>>852
https://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs

896 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 20:49:53.68 ID:X2GH2dHI0.net]
>>847
NGかどうかはお前の都合だがな
ASP.NETでもWebFormあたりは、サーバ側とクライアント側の統合を目指してたんだよ
クライアントスクリプト一切書かなくてもAJAXできるコントロールとかまであった

だが今の流れはサーバサイドはサーバサイド、クライアントはクライアントな流れ
クライアントはすきなライブラリ使え
>それならまだaspnet coreはapiに徹して
apiに徹するのと、html出力に徹するのとどれほどの違いがあると?

897 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 20:51:44.84 ID:aLLF0qhM0.net]
>>848
ASP.NET Coreと相性いいのは無いね

898 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 20:59:07.08 ID:0BZQ2aB/M.net]
ASP.NETの問題というよりC#自体がwebのフレームワークと相性が悪いような…
おとなしくtypescript使ったほうが楽かなとは思う

899 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:10:20.45 ID:aLLF0qhM0.net]
>>855
WebFormsの時からずっとだけど鯖で出力したhtmlやバックエンドの挙動を把握してJS書かないといけないからめんどくせえじゃん
なんのためにナマのhtmlを隠蔽したのかって話になる
htmlを隠蔽すると決めたなら徹底しなきゃならん
apiに徹すればクライアントはクライアントで綺麗に切れるからそんな煩わしさから開放される

900 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:25:20.81 ID:+zykdZnW0.net]
LinQ は、Rails のQuery object と同じだろ

where 何々
order by 何々

別々に書いた文字列を、1つのSQL 文にまとめて、DB に問い合わせする



901 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:32:16.74 ID:Q5F+5vhQ0.net]
>>857
ちょっと何言ってるかわからない

902 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:43:03.68 ID:wePnpHti0.net]
>>849
C#が扱うのはTCPあたりだけじゃないのか
そっから下はOSやら何やらの仕事だし上はCISCOのマニュアルなり読めとしか言えそうにない

903 名前:デフォルトの名無しさん [2018/07/26(木) 21:45:25.99 ID:F57VHmfS0.net]
ソリューションエクスプローラーで.csファイルのなめえ変えてもデバッグできる?データ壊れない?

904 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:47:47.65 ID:0BZQ2aB/M.net]
>>862
gitというものがある
そいつを使えば自由自在に試し放題だ

905 名前:デフォルトの名無しさん [2018/07/26(木) 21:50:46.39 ID:F57VHmfS0.net]
いやあああああああ
これ理解してないと動かなくなるやつうううう
https://i.imgur.com/3Mz1OsU.png

906 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:51:53.07 ID:rEhHpU7y0.net]
こういうハッキングの匂いがするやつは回答しないほうがいい

907 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:51:55.20 ID:gWAgddOO0.net]
>>862
ソリューションエクスプローラー上での名前の変更は問題なく出来る

908 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:53:30.55 ID:0BZQ2aB/M.net]
git使わなくてもソリューションのフォルダごとコピーかzip圧縮でも十分だけど

909 名前:デフォルトの名無しさん [2018/07/26(木) 21:55:22.46 ID:F57VHmfS0.net]
>>866
>>867
ごめん無事でした
なんかVSがクラス名と一致させようとするからダメかと思いました
ありがとうございます

910 名前:デフォルトの名無しさん [2018/07/26(木) 21:59:28.86 ID:F57VHmfS0.net]
>>854
これ見てみます
ありがとうございます



911 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 22:20:23.27 ID:uwMXaYNj0.net]
>>868
javaとは違うんだよ

912 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 22:27:27.51 ID:ySl3KkZ10.net]
>>867
gitでもフォルダコピーでも、自由に試し放題なのは同じだが
gitだとフォルダコピーに該当する操作が一瞬なんだよね
フォルダコピーだとある程度大きいプロジェクトになるとプログレスバーを待たなきゃならん

913 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 08:21:01.22 ID:IX5bbTr/0.net]
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違反には目をつぶるしかないのでしょうか

914 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 09:32:16.19 ID:rUA3L/4NM.net]
バリデーションに限った話ではなく属性のMixinができないのは言語仕様の欠陥
多重継承が可能なら悩むことなかったんだけど...
まあC# 9ではMixinがサポートされるらしいのでそれ以後は簡単になるだろう
それまでは諦めてコピペする以外ない

915 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 09:50:11.05 ID:Z2VlFyTVa.net]
パラメータだけconst stringにしとけ

916 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 16:04:28.18 ID:xL2l+Gb50.net]
>>872
CustomValidationでいけそうな要件にみえるんだけど?
質問内容の理解が間違ってたらごめん

917 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 16:54:36.21 ID:Ls9tzaL9M.net]
>>875
ValidationAttributeはサーバーサイド検証はできるけどクライアントサイド検証やEFには効果がない(追加コードを書かなければ)
属性Mixin的なことができれば追加コードを何も書かずにそれらの収穫を得ることができたはずなんだ

918 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 17:41:04.66 ID:PBzjh5L/d.net]
>>872
\d+にするからなんじゃないの?
\d{14}か、{,14}で解決するのでは?

919 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 19:08:15.95 ID:Ls9tzaL9M.net]
>>877
正規表現を変えても同じ
サーバーサイド検証だけが検証属性の役割じゃない

920 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 21:33:59.64 ID:ooB9UphUa.net]
例がおかしいせいか正規表現で何とかしろって最初に見たとき思った



921 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 21:46:45.51 ID:IX5bbTr/0.net]
TypeDescriptorで動的属性にしたけどダメだった
このFWカスタムしにくい

922 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 17:20:08.97 ID:1IN8lfJM0.net]
VB6のプログラムをC♯で書き直しをやってるんですが、複数あるフォームで毎度使うグローバル変数や定数ってどうしたら良いですか?

923 名前:デフォルトの名無しさん [2018/07/29(日) 17:39:04.96 ID:jELBj7vj0.net]
それらを管理する構造体かクラスを作るのが良い

924 名前:ナしょう
ただ、作り始める前に現代風のプログラミングの仕組みを勉強したほうが良いんじゃないかな
変数のスコープの問題として解決しようとする時点で基礎が出来ていない気がしてしまう
[]
[ここ壊れてます]

925 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 17:48:24.83 ID:OsBw9Csr0.net]
>>872
属性二つ付けとくのでダメなのか?

>>881.882
ベタに移植するならなるべく同じようにしとくってのも手だぞ
まあベタ移植ならVB.NETでもいいわけだが

926 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 18:02:58.75 ID:qyyXPeAu0.net]
>>881
もう親フォームのpublicに置いちゃえば?

927 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 19:28:22.30 ID:w8CG8UOca.net]
Appに持たせる

928 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 19:28:43.90 ID:1IN8lfJM0.net]
親フォームにpublicに置くのがベターなのかね?楽でいいし。

929 名前:デフォルトの名無しさん [2018/07/29(日) 19:32:07.48 ID:0glkw7L10.net]
普通は目的や用途に分けてベースクラスと機能クラスに分けて配置するだろ。

930 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 19:32:52.42 ID:w8CG8UOca.net]
定数はクラスに持たせるべき
グローバル変数というものは存在しない



931 名前:デフォルトの名無しさん [2018/07/29(日) 19:36:39.97 ID:LP0lwlvd0.net]
public static read onlyをまとめたクラス1個作ればよくね?

932 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 19:42:49.43 ID:1IN8lfJM0.net]
やっぱクラスか。

933 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 22:10:08.10 ID:UEZe9Eeh0.net]
別に構造体でも良いのよ

934 名前:デフォルトの名無しさん [2018/07/29(日) 22:38:15.47 ID:F0wMdqEY0.net]
標準モジュール→Public Shared Class

935 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 22:43:45.68 ID:ELcoO8zwa.net]
>>881
そんなものは無くすように書き直すのがベストでしょう

どうしてもというのならProgramにでも置く。
お勧めはしないけど、using static使えばVB6っぽく書けると思うw
https://ufcpp.net/study/csharp/ap_ver6.html#using-static

936 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 23:31:49.93 ID:1IN8lfJM0.net]
例えば何度も登場するファイル名とかパス名とかって使う時はどのようにします?

937 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 23:33:57.49 ID:caIFgm3n0.net]
>>894
決まった値ならconst stringにしておけば間違う心配がない

938 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 00:08:07.54 ID:VxehPTRB0.net]
>>894
staticのメンバ変数

939 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 00:08:34.88 ID:rsToVW4ga.net]
>>894
そもそも何度も登場させない
クラスに集約する

940 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 07:19:52.76 ID:+iDwScmiM.net]
>>897
俺は何度も登場させた方がいい派
登場させないってことは定数であるにも関わらず変数に突っ込んで色んなとこ回して最後にそこに行き着く的なソースになんだろ?
定数なら検索したときに使用箇所がひと目でわかったほうがいいよ



941 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 07:36:32.18 ID:rsToVW4ga.net]
>>898
そうじゃない
同じファイルをあちこちで突っつき回す設計そのものに再考の余地があるということ

942 名前:デフォルトの名無しさん [2018/07/30(月) 09:05:26.71 ID:Jg26N5KJ0.net]
クラス内で何度も参照する事はあるだろうが、複数のクラスに跨って同じ定数を参照するってのは、
それ、たまたま同じなだけだから、まとめるのは誤りだろ?

943 名前:デフォルトの名無しさん [2018/07/30(月) 09:07:31.01 ID:MG3uyJqBM.net]
899に同意だな。おれがレビューしたら書き直させるわ。

944 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 12:08:02.74 ID:7haz7YgPd.net]
エクセルをデータベース接続して開いて閉じる。までは出来たのですがそこからシート2を選択して最終行まで読み込むにはどうしたら良いですか?

945 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 12:10:36.96 ID:5omRjmvzM.net]
まずVBAで書いて、意図どおりに動いたらそれを同じようにC#で書くだけ
VBAで動かないならスレ違い

946 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 12:14:41.69 ID:KgGKmVLt0.net]
>>902
接続したならシート名をテーブル名としてSELECT使えば最終行まで

947 名前:謔黷驍ヘず []
[ここ壊れてます]

948 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 12:20:48.13 ID:7haz7YgPd.net]
セレクトでググってみます!

949 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 14:16:52.66 ID:7haz7YgPd.net]
さっぱりわかりません。これをC♯でどうすればいいですか?
https://i.imgur.com/XlcEsOK.jpg

950 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 14:49:47.75 ID:yNVCdeG40.net]
窓から投げ捨てろ



951 名前:デフォルトの名無しさん [2018/07/30(月) 15:35:38.43 ID:5x/p7Cmg0.net]
コンボボックスのitem追加してるだけやん

952 名前:デフォルトの名無しさん [2018/07/30(月) 17:13:19.68 ID:fEGsPpBX0.net]
これ、出来上がるまでずっと聞きまくるわけかい?

953 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 17:49:14.69 ID:7NTlHlZ80.net]
とりあえずガチでまったくわからないなら、Do Until とかIf Thenみたいな処理の流れに関するとこから、C#に翻訳してみれ。

954 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 20:38:04.00 ID:jheKbzlL0.net]
>>906
SharpDevelopで変換できたりせんか?

955 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 20:56:43.06 ID:VxehPTRB0.net]
>>911
VB.netならやったことある
VB6はできるんかな?

956 名前:デフォルトの名無しさん [2018/07/30(月) 21:47:46.48 ID:wGxxsVxc0.net]
>>908
コメントにも書いてあるなw

957 名前:デフォルトの名無しさん mailto:sage [2018/07/31(火) 10:42:36.92 ID:2Ex+HyWw0.net]
>>912
VB6から直接はだめだろうな。VB.netを経由させて。

958 名前:デフォルトの名無しさん mailto:sage [2018/07/31(火) 12:16:51.56 ID:U+0KE03Yd.net]
無事なんとか出来ました。
お騒がせしてすみません。

959 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 02:45:49.37 ID:FqdJoFN10.net]
VBを勉強しようかC#を勉強しようか迷ってるんですがVB(およびVBA)でできることはC#でもできると考えていいのでしょうか?

960 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 06:48:32.72 ID:l9oYGZY20.net]
>>916
そんなのお前が出来るか、出来ないかによる



961 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:02:36.02 ID:rdkY69Yn0.net]
>>916
いやc#やればいいよ

962 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:13:07.63 ID:qsg6KMIX0.net]
VBAで出来てC#で出来ないことはある

963 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:19:08.47 ID:rdkY69Yn0.net]
unityでサポートされてるのがc#だった気がする

964 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:29:28.41 ID:Y/cQkN27M.net]
>>916
VBextensionを取り込む事が出来る
コーディング量が少ない
単価が高い

VBを選ぶ理由はほぼ無しかと

965 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:53:12.90 ID:FqdJoFN10.net]
ありがとうございます
迷わずC#を勉強しようと思います

966 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:58:50.19 ID:+mBt06Dyd.net]
RazorもC#

967 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 08:27:33.28 ID:jJEMbL0b0.net]
迷わず逝けよ逝けば分かるさ

968 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 10:13:49.72 ID:xEVWsek0M.net]
VS2013 で Process で別コンソールアプリを実行するプログラムを作っています。
OutputDataReceivedイベントで随時標準出力を取得したいのですがうまくいきません。
同じくVS2013C#で作ったコンソールアプリでのConsole.WriteLineならうまくいくのですが
VC++6.0 で printf 出力だと、ある程度溜まったタイミングでそれまでの出力が一気に来ます。

printfでもリアルタイムで取得できるようにできないでしょうか。

969 名前:デフォルトの名無しさん [2018/08/01(水) 10:16:00.84 ID:bFUL3z7Ep.net]
そりゃあ、ある程度溜まってから表示されるからじゃね?

970 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 10:17:43.78 ID:7O+dWvwKM.net]
flushしろ
対象に手を入れられないなら無理



971 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 10:41:41.93 ID:WxaG7LihM.net]
つ setvbuf

972 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 13:34:26.08 ID:xEVWsek0M.net]
>>928
setvbuf でうまくできました!
ありがとうございました。

973 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 21:13:58.64 ID:htMziwx30.net]
resharper使ってる人感想教えて
勉強になるって書いてるブログもあったから
半額セール中に試してみようかなと

974 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 21:15:10.33 ID:soAz8ZFH0.net]
ブログに書いてるんならそれを参考にすればいいじゃん

975 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 22:14:32.39 ID:+VbRL20ga.net]
resharper重いから嫌い
よく他の拡張と干渉して不具合起こすし、機能の頭数だけ多くて結局vsにデフォルトで搭載されてる機能と似たようなもの以外は滅多に使わなかった
vscodeが快適すぎて最近はC#もほとんどvscodeで書いてるわ

976 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 22:38:33.79 ID:htMziwx30.net]
使用感産休ー
結局使わなくなっちゃうくらいもっさりは躊躇するな
俺のマシンそんな高性能じゃないし

977 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 12:35:14.33 ID:atWDWRRZd.net]
先日のお騒がせものですが、シートの中身入れることはできたんですが、今度はシート名をコンボボックスに入れるのにこれだとシート名が名前順に入るんですがシート順に入れるにはどうしたらできますか?

https://i.imgur.com/LxYIiyg.jpg

978 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 13:28:17.69 ID:CFW8XzdE0.net]
>>932
具体的にどこがcodeの方が良いんだ?
軽さ以外にある?

979 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 14:17:24.55 ID:B5uzr2w20.net]
>>934
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.combobox.sorted(v=vs.110).aspx

980 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 14:19:27.48 ID:5ti5JZJPM.net]
>>935
フォントのレンダリングが美しくて見やすい
プラグインが豊富
一緒に他の言語のソースを編集する必要がある場合に完全にシームレスに行き来できる
プロジェクトファイルを直接テキストとして開ける(.NET Coreなら必須)



981 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 18:24:36.08 ID:IKbU8cfg0.net]
細かい話だけど.csprojのテキスト編集は.NET Coreプロジェクトだと
VSでもコンテキストメニューにあるのよね
まあIDEの立場としてはGUIが未実装故の手抜きと見做すべきだろうけどw

982 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 18:59:54.66 ID:R3xyuwRy0.net]
30年前のプログラミング環境に逆戻りですなw

983 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:09:52.83 ID:5ti5JZJPM.net]
>>939
設定を必要最小限にして極力テキストベースで完結させるのが今時の流行り
新形式のプロジェクトファイルは直接手で編集しやすいように構造が全面的に見直されてるんだよ
gitにコミットするときとかgithub上でレビューしたりするときにどうせ中身を一行一行意識しなきゃいけないんだから、
GUIの設定画面なんかはっきり言って邪魔なだけ

984 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:27:12.70 ID:R3xyuwRy0.net]
30年前と言ってることが同じですな。

985 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:28:34.12 ID:R3xyuwRy0.net]
一度滅んだOSSの糞文化を取り込んだせいでどんどんMSの品質が腐っていく。

986 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:31:53.19 ID:vZ9OA8Bgd.net]
おじいちゃんかわいそうに

987 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:33:26.86 ID:5ti5JZJPM.net]
まあ騙されたと思って新しい形式のプロジェクトファイル使ってみたら?
Coreじゃなくても使えるよ
GUIによる設定は今まで通りにできるし、バージョン管理が楽になって普通に便利

988 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:44:44.63 ID:R3xyuwRy0.net]
>>943
無職乙。C#の案件は見つかりましたか?

989 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:47:31.22 ID:R3xyuwRy0.net]
>>944
結局ゲイツとカトラーがこんなもの使いものになるかとブチ切れしたのが最後、MSの凋落が止まりませんな。
マイナー街道まっしぐらだったヘジをスカウトしたのが失敗の始まりだったな。

990 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:50:04.61 ID:R3xyuwRy0.net]
C#はほぼ壊滅しただがまだVB.netの案件は数多く残っている。

VB >>>> C# これが現実。初心者はVBにしたほうがいい。



991 名前:デフォルトの名無しさん [2018/08/02(木) 19:50:50.20 ID:3eKb6bola.net]
>>947
いいから早く就職しろ

992 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:52:31.24 ID:vZ9OA8Bgd.net]
>>945


993 名前:己紹介かよw []
[ここ壊れてます]

994 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:56:33.48 ID:R3xyuwRy0.net]
ID:vZ9OA8Bgd ←こいつC#しかできないみたいw

何を勘違いしてC#を勉強した知らんが10年前から既にC#はオワコンだから諦めろ。今は採用案件は皆無。

馬鹿なおまえになぜか教えてやろう。C#は糞だから。これが世界中のIT業界の総意。ゲイツやカトラーも含めてな。

995 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:59:03.89 ID:QFtuhP10p.net]
いつものヘジたんラヴおじさんか
ボーランド時代に逆恨みしてメンヘラ化してるというw

996 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:59:47.82 ID:R3xyuwRy0.net]
しかし、今時、30年前の手法でやりましょうって笑えるよな。開発の歴史を全く知らないのだろうか。
それが今の流行ならWindows10やC#も流行ってるはず。だが見向きもされない。むしろ敬遠されてる。

997 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:02:53.83 ID:vZ9OA8Bgd.net]
>>950
なるほどだからあなたは採用されないのですね

998 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:03:34.69 ID:R3xyuwRy0.net]
>>951
はぁ? むしろボーランドこそ革新的なIDEを普及させたんじゃねーか。そんなことも知らないとか無知すぎる。
それがなんでまたGUIは邪魔なんでテキストでやりましょうってw アホですか。どうせエディタもvim設定なんだろ。

時代遅れの骨董品どもが。

999 名前:デフォルトの名無しさん [2018/08/02(木) 20:03:36.14 ID:L2LG0yaW0.net]
え、わからない
VBとC#どっちがいいの?

1000 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:04:45.73 ID:R3xyuwRy0.net]
>>953
キミは煽りばかり全くC#やVSの話はしないのですね。馬鹿がバレるのが怖いんですか?



1001 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:04:48.57 ID:uMr/Fq0h0.net]
ゴミをつついて遊ぶの止めてくれるかなサル君

1002 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:07:45.63 ID:R3xyuwRy0.net]
ワッチョイスレって単発煽り多すぎて議論にならんな。

必死にでネット繋ぎなおしてると思うと笑えるw >> ワッチョイ cf81

1003 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:09:28.08 ID:R3xyuwRy0.net]
ワッチョイって意味ないな。

低脳馬鹿のコード書けない煽り屋とマイナーOSS陣営から流れてきたvi使いの骨董品以外いない。

1004 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:11:37.17 ID:R3xyuwRy0.net]
煽りしかしない奴ってなんで内容ないレスばかりするんだろうと思ったんだけど、
キーボードアレルギーか何かで入力がめっちゃ遅いんだと思うわ。
おれが5レスする間に一行しか打てないトロ臭さ。

リアル低スキルじゃん。今まで碌にコード書いてないのがバレバレだな。

1005 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:15:41.97 ID:R3xyuwRy0.net]
結局、技術的反論は皆無。これが現実。

今のC#信者は低スキル。今時、テキスト最高ってw COM、.net全否定かよwww

1006 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:25:19.02 ID:R3xyuwRy0.net]
単発煽りって急に大量に現れて急にみんな消えるよな。

可能性として考えられるのは、ゆとりで低スキルで無職で同一人物。

1007 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 21:55:18.44 ID:6w1GWseD0.net]
>>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のサンプルもある

1008 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 08:51:02.00 ID:tLm3HHgqd.net]
まあVSつかいたい奴は明らかにVSが向いてないシーンでも

1009 名前:使いたがるからな。
俺も使い分けてるが、netcoreでも案外VS起動する事の方が多い。nuget探しやすいとかそんなレベルだけど。
どっちでも良いものは割とVS Codeで開くな。
とはいえ、mdのライブプレビューとかVSで出来んのかな?
[]
[ここ壊れてます]

1010 名前:デフォルトの名無しさん [2018/08/03(金) 11:29:34.10 ID:am/wpoGlp.net]
VSはIDEの機能を利用したいが為だけに使うことがある。



1011 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 11:34:31.88 ID:U4A077LcM.net]
MDプレビュー&編集はメジャーなVS拡張がある

1012 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 13:57:43.04 ID:tLm3HHgqd.net]
あるんだ。
何が何でもVSの中で過ごせるように出来てんだなぁ、やっぱ。

1013 名前:デフォルトの名無しさん [2018/08/03(金) 19:55:03.42 ID:nRWExeYy0.net]
C#よりVBのが人気って本当ですか?

1014 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 21:05:33.17 ID:C7OuABnlM.net]


1015 名前:デフォルトの名無しさん [2018/08/03(金) 22:34:44.79 ID:pBzQtwq10.net]
if(aaa.bbb.ccc ==null){
 ・・・
}
だと、aaaかaaa.bbbがnullの時にNUll参照エラー出ますよね。
じゃあ、
if(aaa!=null && aaa.bbb!=null && aaa.bbb.ccc ==null){
こう書くしかないですか?
もっとスッキリ書けませんか?

1016 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 22:36:26.80 ID:KKU0/EVq0.net]
null条件演算子が使えるなら使え
どのバージョンで入ったかは忘れた(役立たず)

1017 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 22:43:12.49 ID:ls6gmcCr0.net]
>>970
なんか下のコードって
動いたら不具合臭くない?

if(コードA && コードB && コードC)

ってあったときにコードAがfalseだからってコードCが実行されないとおかしくなる処理もあるんじゃね?
コードABCがそれぞれ結果を保持するような動作をするときもにょる

言語仕様がどうなってようと書いたやつは死刑

1018 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 22:57:30.21 ID:5FtEqA870.net]
>>972
横からですが
> ってあったときにコードAがfalseだからってコードCが実行されないとおかしくなる処理もあるんじゃね?
そういう場合は && ではなく & を使うと良いようです。
よかったら「短絡評価」で検索してみてください。

1019 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 23:23:18.87 ID:zsmRuSg9d.net]
aaa?.bbb?. ccc == null

1020 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 23:36:42.74 ID:ls6gmcCr0.net]
>>973
コードABCがそれぞれ判定結果を保持する処理をしてたら余計なお世話じゃねーか?



1021 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 23:59:44.06 ID:5FtEqA870.net]
>>975
>>973
確かにその場合は短絡評価は余計なお世話と言うか、短絡評価を使うことは間違ってますね。
ただ、>>970 の例では副作用がないのは明らかですし、
C# で短絡評価が用意されている以上、それを使うなというのは酷な話のようにも思います。

今回の問題に関しては >>974 のような & も && も使わない解決策もありますが、
Microsoft の Reference Source でも obj != null && ((int)obj) != 0 のように
短絡評価が積極的に使われてますので、そのようなコードは認められるべきではないでしょうか。

1022 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 00:26:40.78 ID:aY8Umh7+0.net]
>>976
人に優しいコードじゃない
見たらちょっと考えちゃうだろ
俺はそれだけで避ける

1023 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 00:53:29.00 ID:b3FMlOEa0.net]
なんかnull条件演算子が短絡じゃないような言い方をしている人がいますが
null条件演算子は短絡評価なので念のため

仕様の是非については関知しません
勝手にすればよろしい

1024 名前:デフォルトの名無しさん [2018/08/04(土) 09:01:55.83 ID:n5GHf3Ra0.net]
>>974
もし
aaa.bbb= null
だった場合に、
if(aaa?.bbb?. ccc == null)
がtrueになることは無いですか?

1025 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 09:42:38.97 ID:wpkf7FcP0.net]
ならない
もしtrueにしたいのなら if(aaa?.bbb == null || aaa?.bbb?.ccc == null) にする

1026 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 09:49:39.47 ID:L3XBWYHn0.net]
>>979
なるん

1027 名前:じゃね? []
[ここ壊れてます]

1028 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:12:57.05 ID:aY8Umh7+0.net]
>>980
ならないんだ?
なんかあんま使わんほうがいいな
この辺の仕様決めた奴って滅茶苦茶だな

1029 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:16:40.19 ID:wpkf7FcP0.net]
ごめん確認したらtrueになったわ

1030 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:18:40.31 ID:c4yFtWHQ0.net]
Null 条件演算子の結果でnull判定ってなんか使い方おかしくね?
null判定の記述省略が目的だと思ってたわ



1031 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:18:47.38 ID:aY8Umh7+0.net]
>>983
なるのかよ

1032 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:46:26.16 ID:Q3NLupVYM.net]
?.は使える場面が限られすぎてるんだよな
主語が違っても使えるようにしてほしい
employee ?& company.Fire(employee)
// employee != null ? company.Fire(employee) : null と等価
みたいな

1033 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 12:29:39.69 ID:AH7fLvgn0.net]
>>984
> Null 条件演算子の結果でnull判定ってなんか使い方おかしくね?
そんなもん何をやりたいかによるだろ

> null判定の記述省略が目的だと思ってたわ
Null条件演算子自体の目的はそれでいいと思うが

1034 名前:デフォルトの名無しさん [2018/08/04(土) 12:36:27.73 ID:n5GHf3Ra0.net]
>>986
>employee ?& company.Fire(employee)

?& とは何ですか?
ググルキーワード教えて下さい。

1035 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 21:50:20.61 ID:sXotmGKy0.net]
>>979
trueになるけどそれでだめなのかよ
だったら
aaa?.bbb != null && aaa.bbb.ccc == null

1036 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 15:20:33.53 ID:wZ9wDNsY0.net]
俺なら分けてコメントでも書いておくかな
if(aaa == null || aaa.bbb= null){
// Hack aaaとbbbがnullでもOKで、その時は何もしない。設計がゴミ
}
else if(aaa.bbb.ccc == null){
}

1037 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 16:43:04.45 ID:RYmTh0/wr.net]
再帰してNullチェックする関数一つ書けばいいのでは?

1038 名前:デフォルトの名無しさん [2018/08/05(日) 17:47:48.87 ID:76QdhMr90.net]
どうでもいいことになるとレスが増えるな
>>980
テンプレ読んでいるだろ。スレたて

1039 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 18:17:15.11 ID:DE014Z3K0.net]
建てられなかったので別の方お願い

1040 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 18:21:48.75 ID:C8NdcnMU0.net]
>>991
再帰?
何言ってるんだ?



1041 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 18:38:49.57 ID:hZh56vqa0.net]
再帰でnullチェックする関数気になるな

1042 名前:デフォルトの名無しさん [2018/08/05(日) 19:30:23.50 ID:yb/HDiEo0.net]
コンソールプログラミングでは
Application.DoEventsが使えませんが
代わりに処理中の入力を受け付けるようなメソッドはないでしょうか?

時間がかかる処理をESCキーでキャンセルするような処理を
コンソールプログラムで書きたいと思っています

1043 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 19:30:55.99 ID:uVIrroLRM.net]
こうかな
// 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

1044 名前:997 mailto:sage [2018/08/05(日) 19:37:00.55 ID:uVIrroLRM.net]
訂正
obj == null ? level : !next.Any() ? null : AmazingNullCheck(level + 1, next.First().Invoke(obj), next.Skip(1).ToArray());
かな

1045 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 19:43:31.17 ID:uVIrroLRM.net]
>>996
特に何もしなくてもCtrl + Cで止まるだろ?
そのときに独自の処理を挟みたいなら Console.CancelKeyPress イベントを使う

1046 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 19:45:50.96 ID:3KDX12Zf0.net]
1000ならjava民絶滅

1047 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 61日 0時間 13分 9秒

1048 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されてい

1049 名前:ワす []
[ここ壊れてます]






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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