C#, C♯, C#相談室 Part93©2ch.net

■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part92
http://echo.2ch.net/test/read.cgi/tech/1485589613/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

2デフォルトの名無しさん (ワッチョイ de35-HDOw)2017/04/22(土) 10:57:42.55ID:g8ZT1khs0
■過去スレ
C#, C♯, C#相談室 Part89
http://peace.2ch.net/test/read.cgi/tech/1443271409/
C#, C♯, C#相談室 Part90
http://echo.2ch.net/test/read.cgi/tech/1455160063/
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467142749/
C#, C♯, C#相談室 Part91 (実質Part92)
http://echo.2ch.net/test/read.cgi/tech/1467211515/
C#, C♯, C#相談室 Part92 (実質Part93)
http://echo.2ch.net/test/read.cgi/tech/1485589613/

>>1
ここは、実質Part94

■関連スレ
初心者の質問向けはこちら
ふらっと C#,C♯,C#(初心者用) Part127
http://echo.2ch.net/test/read.cgi/tech/1489498042/

>>2
補足thx。見逃していた

おつかれ
キチガイの人(山口人生)は、複数回線もっていそうだからどこまで効果するかは分からんけれど
何もしないよりマシだね、今後もワッチョイ有りで行こう。
死ねばいいのに・・・・

誰だよ山口人生ってww

正しいスレ番と設定で立てました

C#, C♯, C#相談室 Part94
http://echo.2ch.net/test/read.cgi/tech/1492843013/

>>5
ググッてみてば分かるw
東大出でイリノイ大学で不完全性定理で有名なゲーデルの弟子として著名な
竹内外史先生の弟子になってPh.Dを取るも、神奈川大学で万年講師、研究室の壁を蹴って騒音出していたらクビになってしまったヤツwww
経歴だけ見るとスーパーエリートwwww
学歴荒らしがあるところに山口人生あり、酷い学歴厨の60台後半じぃさん
実家はお金持ち、もう親は鬼籍かな?ビル持っていて資産が一億切っているとか、絶対ヤバそうw
P=NPを主張しているが誰にも相手にされず、学会では芸人扱いw

統失くんいらっしゃい、ってかw

敬意が足らないですね、糖質超教授と読んであげましょうwww
いらっしゃらなくていいです、迷惑なので死んでください

10デフォルトの名無しさん (ワッチョイ bb4c-VP69)2017/04/22(土) 19:18:48.92ID:7MQLYtSw0
本当のその山口ってのなのか?

11デフォルトの名無しさん (ワッチョイ 7ff7-/JtG)2017/04/22(土) 19:41:05.45ID:c4VI05+R0
張り付き方が異常、現役じゃ不可能
発言が山口人生と似ているし話が高齢者臭い、中年ですらない
Delphiを使っていて最近C#に移ってきている
ここまでのマジキチには普通日常で出会うことは無い、希少種

そんなヤツがこの日本に何人もいてたまるかwwww

12デフォルトの名無しさん (ワッチョイ bb4c-VP69)2017/04/22(土) 20:05:29.05ID:7MQLYtSw0
このスレ、自分以外は全部同じ人が書き込んでたりしてw

ちょっとしたホラーだな

なんかワッチョイ付いてると気に入らないみたいよ
俺は付いてるほうが好きだからこっちのスレのがいいな

14デフォルトの名無しさん (ベーイモ MM7f-4iqD)2017/05/03(水) 17:15:57.72ID:crwmH6BQM
こっち使おうぜ

15デフォルトの名無しさん (ワッチョイ 93f7-6g+b)2017/05/05(金) 16:32:19.84ID:bVbNjYk40
今日発見した衝撃の事実
なぜWindowsUpdateの時ファイルがぶっ壊れるのかというのがずっと謎だった
Application.ThreadExit イベントで書き出しスレッドの終了処理していたのだが
手動のシャットダウンだと問題なく呼ばれるのに、リブートするとThreadExitが呼ばれない
それどころか、フォアグラウンドで作成していたスレッドが強制終了させられている上
System.Threading.ThreadAbortExceptionmもSystem.Threading.ThreadInterruptedExceptionも送出されないまま
突然中断で終了しやがってた・・・
ひでぇ終了の仕方だ・・・
なんでリブートに限りこんなシーケンスで強制終了しやがるんだ、この糞が・・・

16デフォルトの名無しさん (ワッチョイ 761f-ExUK)2017/05/05(金) 16:49:33.38ID:tHPUBlll0
セキュリティ的にアプデは大事だからね
多少強引な手段で終了してもいいよね仕方ないね

17デフォルトの名無しさん (ワッチョイ e2d4-Ogwz)2017/05/05(金) 17:01:44.90ID:3XrDrf840
シャットダウンと再起動で違うのか

18デフォルトの名無しさん (ワッチョイ 124f-hLQG)2017/05/05(金) 17:10:34.10ID:pBlqXMv00
もっと詳しく知りたい。

SessionEndingイベントとかで捕まれないんか?
それ

19デフォルトの名無しさん (ワッチョイ 93f7-6g+b)2017/05/05(金) 17:16:16.69ID:bVbNjYk40
>>16
セキュリティは最終的には自分のファイルが壊れないことを目的にやるわけだが
そのセキュリティ対策が破壊してくれるのであれば、本末転倒なのでそんな対策は不必要って思うわけだよ。

20デフォルトの名無しさん (ワッチョイ 93f7-6g+b)2017/05/05(金) 17:17:13.60ID:bVbNjYk40
>>18
SessionEndingイベントが来たときはもう殺された後だねw
ここでは対策出来ない。

21デフォルトの名無しさん (ワッチョイ 124f-hLQG)2017/05/05(金) 18:09:02.57ID:pBlqXMv00
>>20
おおう、そうなんか。

>>15
Windows Updateだろうが何だろうがリブート開始時に
ユーザーに確認なくプロセスの強制終了なんてそもそもされないと思うよw

何か勘違いしてない?

ちょっと調べた感じ
http://news.mynavi.jp/column/windows/270/
にあるような感じでレジストリいじっちゃったんだろうねw

24デフォルトの名無しさん (ワッチョイ 323c-10U+)2017/05/05(金) 18:43:02.46ID:PzvORh1V0
>>22
EWX_FORCEとかEWX_FORCEIFHUNGを指定してるんでしょ
https://msdn.microsoft.com/ja-jp/library/cc429713.aspx
セキュリティアップデートは確実にリブートする必要あるから多少の犠牲はやむを得ない
って思ってるんじゃね?

25デフォルトの名無しさん (ワッチョイ 72ac-W+y+)2017/05/05(金) 19:11:23.54ID:FiATWWo80
客側でこれを指定されたらたまらないなー

26デフォルトの名無しさん (ワッチョイ df6c-hLQG)2017/05/05(金) 19:58:14.99ID:ueXs9gXt0
ExitWindowExの英文説明では、DWORD dwReservedのとこがdwReasonになってんね。

このへんかな

27(スフッ Sd52-gZQE)2017/05/05(金) 20:10:07.89ID:05XvGSted
プロセスの終了確認はあるだろうか、その結果タイムアウトした時のスレッドの落とし方はものすごい強引だった気がする。
昔shutdown -s -t 01で落として確認した事ある。

28デフォルトの名無しさん (ワッチョイ 7606-7zcB)2017/05/05(金) 20:14:25.56ID:3cKL/0El0
OSの仕様なのか.NET独特の挙動なのか>>23みたいな話なのかはっきりしないな
.NET独特の挙動だったら業務でアプリ作っている人は死活問題じゃね

29デフォルトの名無しさん (ワッチョイ 323c-10U+)2017/05/05(金) 20:27:56.88ID:PzvORh1V0
>>26
日本語版のドキュメントが更新されてないだけみたい
WindowsXPからdwReasonになってる

いやいやデフォではプロセス強制終了なんてないよ絶対w

Winduws Updateはデフォでは自動になってるんだから、Windows Updateが走るたびに
そんな無茶苦茶やってたら世界中で大騒ぎになってるってw

XPの時代はそんな経験したような記憶もあるけど
少なくともVista以降はないと思うよ

31デフォルトの名無しさん (ワッチョイ 7606-7zcB)2017/05/05(金) 20:34:57.11ID:3cKL/0El0
俺は趣味でやっているだけだしアップデートも任意のタイミングでしかやらないからどうでもいいが
VSの有料ライセンス買っている人がいて心配だったら直にMSに聞いた方がいいな

32(スフッ Sd52-gZQE)2017/05/05(金) 20:48:13.06ID:05XvGSted
>>28
業務アプリが走るような環境は、社内でKB単位で配布して、ログイン前に当たるようにしてると思う。
>>30
本人はプロセスじゃなくてスレッドを問題視してるのでは?

33デフォルトの名無しさん (ワッチョイ df6c-hLQG)2017/05/05(金) 22:27:29.53ID:ueXs9gXt0
>>30
言いたい事はわかるw

まーもちつけ

34デフォルトの名無しさん (ワッチョイ 93f7-6g+b)2017/05/06(土) 07:24:56.49ID:KTPtsEWO0
>>30
10以前はWindowsUpdateをするタイミングをこちらの問題の無いタイミングで出来たから
そもそも問題自体が存在しなかったという事実。

35デフォルトの名無しさん (ワッチョイ 27d4-YAN7)2017/05/06(土) 07:54:55.96ID:rojhZA3i0
適度にトラブル起こしてあげないと窓際族の情シスの仕事がなくなっちゃうからね

36デフォルトの名無しさん (ワッチョイ 124f-hLQG)2017/05/06(土) 08:25:02.90ID:2V5tVO5D0
>>27
これは良いこと聞いた。
うちも似たような仕組み作ってるグループあるから、ExitWindowsExも利用して調査してみるよう伝えてみるわ

37(スフッ Sd52-gZQE)2017/05/06(土) 08:57:56.21ID:BE072L/9d
>>36
UIスレッドでメッセージボックス出しとくと、プロセスを落とす正規ルートからはずれて再現できるとか、なんか色々こねくり回したよ。
今だと仮想マシンあるから、マシンが上がってくるの待つ辛さ無いかもね。

38デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)2017/05/25(木) 06:03:37.70ID:OZ9w4Yf70
ロック処理についてちょっと相談です

●二つ以上のオブジェクトを同時にロックしたい
片側づつ順を追ってロックしていくのはダメ、デッドロックするので。
ロック出来ない状態である限り、ロックは限りなくしないようにしたい。
ロックに失敗までのタイムアウト処理もしたい。

●例えばこれだと、デッドロックを引き起こすので良くない
lock(obj1) lock(obj2) 処理;

●そこで、言語に以下のような構文があれば理想的なのだが
ないので、それらしいヘルパを作りたい、できれば効率的な物。
lock(obj1,obj2, ... ,timeout=1000) {
 ロック成功の場合の処理
}
timeout {
 タイムアウトした場合の処理
}

39デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)2017/05/25(木) 06:03:54.24ID:OZ9w4Yf70
●とりあえず簡単に考えた、しかし無駄が多そうに見える、もっと良いものが欲しい。
DateTime begin = DateTime.Now;
再試行:
bool l1 = Monitor.TryEnter(obj1, 0);
bool l2 = Monitor.TryEnter(obj2, 0);
if (l1 && l2) {
 goto ロック成功;
} else {
 if(l1) Monitor.Exit(obj1); // チェックと共にロックしてしまうので、このコードも残念賞
 if(l2) Monitor.Exit(obj2); // 同上
 if ((DateTime.Now - begin).TotalMilliseconds > 1000) {
  goto タイムアウト;
 } else {
  System.Threading.Thread.Sleep(10); // この待ち方も酷い
  goto 再試行;
 }
}
タイムアウト:
{
 タイムアウト処理
}
ロック成功:

40デフォルトの名無しさん (ワッチョイ 2b75-Muxa)2017/05/25(木) 07:25:50.25ID:zdaQwC0X0
ていうか普通にロック専用のオブジェクト作ってそれをロックすりゃいいんじゃねーの

41デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)2017/05/25(木) 07:32:55.17ID:OZ9w4Yf70
>>40
それだとロック粒度が大きくなりすぎて逆にデッドロックの可能性を拡大してしまいますね。

42デフォルトの名無しさん (ワッチョイ 9f7d-yauO)2017/05/25(木) 07:34:38.83ID:ZdIAUNK00
セマフォ使ったらどう?
資源数もタイムアウトもあるし

43デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)2017/05/25(木) 07:36:13.98ID:OZ9w4Yf70
>>42
セマフォは重いんですよねぇ
それをやるくらいなら>>39の例の方が効率的ですね。

44デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)2017/05/25(木) 07:50:05.84ID:OZ9w4Yf70
>http://article.higlabo.com/ja/thread_locking.html
lock(Monitor.Enter/Monitor.Exit) 同じプロセス 20ns
Mutex 違うプロセスも可能 1000ns
SemaphoreSlim 同じプロセス 200ns
Semaphore 違うプロセスも可能 1000ns
ReaderWriterLockSlim 同じプロセス 40ns
ReaderWriterLock 同じプロセス 100ns

Semaphoreは高機能すぎて、あまり軽々しくは使えない。
そのわりにはlockと違ってスレッドチェックがないので自家中毒を起こしたりするので、別途そのための対処が必要になったりする。
lock 20nsはやはり捨てがたいものです。

45デフォルトの名無しさん (ワッチョイ 4bcd-TmZs)2017/05/25(木) 08:14:43.50ID:CNpknsWj0
見も蓋もないが、設計が間違ってる気がする。

46デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)2017/05/25(木) 08:20:40.14ID:OZ9w4Yf70
>>45
そんな事は無いと思うんだけどな、セマフォに標準で実装されているように
これはマルチスレッドデザインパターンとしては基本になるかと。
というか教科書にある典型ですし。
ところが、Monitorにはなかったので、おや何故ない?となっている所。
せっかく高性能なのに有効活用できないのは勿体ないと。

47デフォルトの名無しさん (スプッッ Sd0f-UmYi)2017/05/25(木) 08:30:18.43ID:a8axhl9cd
>>46
そもそもなぜロックが必要なの?

48デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)2017/05/25(木) 08:34:06.74ID:OZ9w4Yf70
>>47
分からないならレスしないでもらえますか?
流されては叶いません。

49デフォルトの名無しさん (ワッチョイ 4bcd-yumd)2017/05/25(木) 08:52:37.16ID:CNpknsWj0
>>39
みたいなことをするぐらいならSpinLockを使った自前実装で処理したほうが良いかもしれない。

もしくは
>>lock(obj1) lock(obj2) 処理;
これでもデッドロックしないように、Lockする順番を厳格にしてコーディングするとか

というか、言葉遣いに気を付けたほうが良いと思うよ。

50デフォルトの名無しさん (ワッチョイ 2bd4-WXs4)2017/05/25(木) 08:54:51.29ID:foQMlEN20
そんなにパフォーマンスが大事ならオプティミスティックロックも検討したら?
どうせ滅多に競合なんかしないでしょ

51デフォルトの名無しさん (スプッッ Sd0f-UmYi)2017/05/25(木) 09:01:40.08ID:a8axhl9cd
>>48
そもそもロックが必要という判断に至った理由が明らかでない
ロックがベストな選択肢である保証はどこにもない

52デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)2017/05/25(木) 09:04:40.54ID:OZ9w4Yf70
>>49
ここにいる知らなくてもレスしないと死ぬ病気にかかっている奴はどうしょうもない。初心者の上にキチガイなら死ねって感じですが。
とりあえず、スピンロックは使いたくないですね、あれはCPUタイムをすり潰しながら高速動作を確保しようとするものだから
それの主用途は、激重計算タスクを並列処理するための物であって、目的とちょっと違いますね。
あと、排他処理をちゃんと勉強すると、順序等を考えていても意味が無くて
ロックする瞬間に作業に必要になるリソースをすべて確保して、必ず抜けられるという事の方がデッドロックに対する対処としては有用です。
でも、上に書かれているように一つのオブジェクトで粒度を上げてしまったら本末転倒になります。

53デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)2017/05/25(木) 09:05:42.97ID:OZ9w4Yf70
>>51
ちゃんとわかっている人を待っているんだから黙ってろ

54デフォルトの名無しさん (ワッチョイ 2bd4-WXs4)2017/05/25(木) 09:12:36.71ID:foQMlEN20
アイデアを募るならもっと広い視野で考えたほうがいいってことでしょ
矮小な問題に限定されすぎていて、マイクロベンチマークレベルの不毛な議論にしかならない
状況によっては工夫すればロックフリーな実装もできるかもしれないよ

うわあ。これは無視すべき奴だw

56デフォルトの名無しさん (ワッチョイ 4bcd-yumd)2017/05/25(木) 09:24:19.81ID:CNpknsWj0
>>52
https://www.jpcert.or.jp/java-rules/lck07-j.html
ソースはそれっぽいものを適当に引っ張ってきた
ロックする順序は意味あると思うんだけど、、、

デッドロックが怖いってことだと思うんだけどさ
親から子へ順番守ってロックすればデッドロックしないじゃん?

57デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)2017/05/25(木) 09:24:47.08ID:OZ9w4Yf70
>>55
世の中上には上の奴がいるんだよ、俺なんかよりはるかに知識を持っている奴はいくらでも。
お前より俺の方が知識あるが、そんな俺よりもはるかに凄いやつは山のようにいるんだ。
そろそろ、中二病みたいな全能感は捨てな

58デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)2017/05/25(木) 09:32:43.15ID:OZ9w4Yf70
>>56
親子関係があれば、親についている操作ようのメソッドにロック処理をいれれば問題ないですね。
でも、今回のは完全に独立しているオブジェクト間です。
ちょっと難しいですね。
実際問題としては、順序を使う側にすべて守らせるというのは、理屈では語れても実践的ではないかもしれません。
やはり、ロック時間を短くする事が肝要であり、その為には粒度を小さくするのが基本となるかと。
汎用的なやり方としては、この方法がもっとも優れていると思います。
なので、この方法をより高パフォーマンスで実現できるヘルパーを実装して纏めて利用したい訳です。
だから、別の方法は考えていないです。Monitorを使った高速排他処理が今回の最終目標です。

59デフォルトの名無しさん (ワッチョイ 0f75-jnQe)2017/05/25(木) 11:13:36.68ID:5itOJ4P90
楽観的ロックのタイムアウトで、ロールバックするのが確実

人間には絶対にミス・バグがあるから、
デッドロックを100%、起こさないようにする事は、絶対に出来ないから

60デフォルトの名無しさん (ブーイモ MM4f-0Wf4)2017/05/25(木) 11:20:25.49ID:ts6Ek6dYM
これ触っちゃいけないやつじゃん・・・

61デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)2017/05/25(木) 11:39:35.31ID:OZ9w4Yf70
>>59-60
だから、もう来るなって、お前には何も聞きたいことは無いし、そんな話は聞かされたところで新たな何かには全くつながらない。
C#スレには、初心者用じゃないもう一本の匿名ゴミすれあるだろ、そっちいけよ。
分かっている人が来たときにコメントがゴミだらけになる。

たぶん質問者の方が俺よりずっと詳しそうだから釈迦に説法だと思うけど、

>●例えばこれだと、デッドロックを引き起こすので良くない
>lock(obj1) lock(obj2) 処理;

これがデッドロックしうるのはこのスレッドがobj1だけをロックした状態で
別のスレッドがobj2をロックして、そのスレッドがobj1を待機してる場合だよね?

この場合このスレッドがobj1をアンロックしない限りobj2もアンロックされないからデッドロック

だから、ネストの内側のock(obj2) だけをタイムアウト付きのMonitor.TryEnterに置き換えれば
効率的かどうかはどうかはともかく、要件は満たせるんじゃいないの?
知らんけど

63デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)2017/05/25(木) 12:28:42.96ID:OZ9w4Yf70
>>62
まさにその通りです、それが直下に書いた雑な例です。
このヘルパーを作りたいという訳です、見るからに美しくないので詳しい人の登場をお待ちしているという所です。
必要な全ロック取得に失敗したら即座に全て解放して、乱数時間まって次を伺う。
これはよくある教科書通りです。

64デフォルトの名無しさん (スプッッ Sd0f-UmYi)2017/05/25(木) 13:09:08.98ID:a8axhl9cd
>>62
キチガイに触るなよ

65デフォルトの名無しさん (ブーイモ MM4f-ATwg)2017/05/25(木) 13:35:53.97ID:Gj1BXJi/M
基地外大暴れワロタ

66デフォルトの名無しさん (ワッチョイ 4bcd-yumd)2017/05/25(木) 13:51:23.71ID:CNpknsWj0
http://ideone.com/GHvgKN
勢いで書いた。

67デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)2017/05/25(木) 13:59:41.85ID:OZ9w4Yf70
>>66
いいっすね、いいっすね
Thread.Sleep(100); ← ここがもうちょっとマシな待ち方になるといいんですがw
自分はインターフェイスは、IDispose使ってロック範囲を lock で書いたような雰囲気にしてます。
タイマーは、初ロック失敗の後にスタートさせて、ロック成功(大半のケース)でロスが少ないようにしてます。
なかなか素敵な感じになってくれませんw

68デフォルトの名無しさん (ワッチョイ 1f1b-6//c)2017/07/11(火) 08:22:12.16ID:MCsEtOKi0
↓のテンプレートとジェネリックの違い、にある
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/generics/differences-between-cpp-templates-and-csharp-generics
トップ項目にある
・C# ジェネリック クラスでは、ユーザー定義演算子は呼び出すことができますが、算術演算子を呼び出すことはできません。
"算術演算子を呼び出すことはできません"ってどーいう意味っすか?
算術演算子って+-*/のこと?

遠まわしに制約について言ってるのかな。

算術演算子が使える型のみ受け入れるような制約はできないから
自動的に算術演算子は使えないことになるわけだけど...

70デフォルトの名無しさん (ワッチョイ 5eea-bL4e)2017/07/16(日) 01:54:50.85ID:mMdQfX5s0
楽しそうだな。w

71デフォルトの名無しさん (ワッチョイ 6a90-qWRz)2017/07/29(土) 20:36:18.47ID:Gw88XuqA0
ジェネリックに算術演算子を使うなら、そんなに速度が要求されないんなら
(dynamic)にキャストしてからなら演算子が使える
まあこれキャッシュ付きのリフレクションだから速度は期待しないでよー

72デフォルトの名無しさん (ワッチョイ 331b-z1u6)2017/08/21(月) 18:56:43.94ID:LgNyTwHt0
C++ではテンプレートに焦点をあてた書籍はいくつかあるけど
C#でジェネリックに絞ったオススメ書物ってのはありますか?
C++のテンプレートテクニックのどれが使えないか?ってのは知りたい。

C#のジェネリックって1時間で読める記事で網羅されるぐらいの内容しかないっすよ

74デフォルトの名無しさん (ワッチョイ 11aa-8gPR)2017/08/21(月) 20:02:09.15ID:vP5jpteT0
テンプレートテクニックとか全部忘れてOK

75デフォルトの名無しさん (ワッチョイ 6171-3KK3)2017/08/21(月) 21:10:14.69ID:qdRqCzb30
プレートテクトニクス

76デフォルトの名無しさん (ワッチョイ da1b-KdCs)2017/08/27(日) 02:29:03.34ID:/hywh0UG0
式テンプレートジェネリックでどー書くんだよ

77デフォルトの名無しさん (アウアウウー Sa39-B8PL)2017/10/09(月) 21:40:27.74ID:dzl0TrLma
すみません。ちょっと急いでいます。

C#でクラスを宣言する際に、
class {...} とpublic class {...}
このふたつの違いが判りません。
教えてください。

78デフォルトの名無しさん (ワッチョイ dad2-B8PL)2017/10/09(月) 21:54:29.58ID:rAF1hT8M0
お願いします。同じものですか?

79デフォルトの名無しさん (ワッチョイ 75e8-LiJ6)2017/10/09(月) 21:56:31.06ID:28tAbNEV0
アクセス修飾子を省略したクラスは internal になる
public とか internal とかの意味については↓

アクセス修飾子 (C# プログラミング ガイド) | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers

80デフォルトの名無しさん (ワッチョイ 469f-N4fM)2017/10/09(月) 21:56:50.83ID:u67WqECL0
>>77
外部から見えるか見えないか

81デフォルトの名無しさん (ワッチョイ dad2-B8PL)2017/10/09(月) 22:03:58.01ID:rAF1hT8M0
ありがとうごぜます。
internalですね。アセンブリ言語レベルの話のようなので
まだそこまで至ってないのでpublic, private, protectedだけ使います。
すみませんでした。

82デフォルトの名無しさん (ワッチョイ 769a-XSap)2017/10/09(月) 22:12:08.58ID:Y4203ffV0
「アセンブリ」ってみて「アセンブリ言語」って理解するのは先が思いやられるな。全然意味が違う話なのに

83デフォルトの名無しさん (ワッチョイ 75e8-LiJ6)2017/10/09(月) 22:16:05.20ID:28tAbNEV0
>>81
上記のページで「アセンブリ」と言ってるのはアセンブリ言語のことではなくて
「exe」とか「dll」とかのファイル単位での機械語のまとまりのことだよ

84デフォルトの名無しさん (ワッチョイ dad2-B8PL)2017/10/09(月) 22:41:05.37ID:rAF1hT8M0
ありがとう。
今自分でも調べていてなんか違うなーって思ってました。

85デフォルトの名無しさん (ワッチョイ 7680-HC+h)2017/10/09(月) 23:04:42.97ID:/pZGRYTm0
bin

バイナリ・ファイル

86デフォルトの名無しさん (ワッチョイ 7d80-Wlpn)2017/10/10(火) 00:40:47.02ID:pliWVB3X0
今となっては、いや初めから忘れてもいい話だったけど
ファイル単位の物理的なまとまりはモジュール(.netmodule)で
モジュールをまとめた論理的まとまりがアセンブリ(.dll/.exe)
Visual Studioが2002の初めから一貫してサポートしてないこのモジュールって単位をMSはどう使うつもりだったんだろう

87デフォルトの名無しさん (ワッチョイ 718a-QWl5)2017/10/10(火) 21:13:43.71ID:9Raz+qz10
最終的に1つのライブラリにしたいものをC#とF#で部分ごとに書き分けるとかそういう例は見た事あるけど
(ものによってはF#のほうが書きやすいとか)
実際それが必要なユーザがどれだけいるのかって話な

88デフォルトの名無しさん (ワッチョイ b66c-XSap)2017/10/10(火) 23:25:11.21ID:I+aeGBiR0
C++/CLIとC#の組み合わせがある。

最終的な呼び出し元はネイティブと同じ口なんだけど、
dynamicやasync/awaitなどを使いたいため、
dllexport付近の薄皮一枚だけ C++/CLI、
残りは全部C#で記述して1つの.dllにってのに.netmoduleを使う。

C#とF#の組み合わせとか、ほとんど無意味に思えるが…

iron python も?

90デフォルトの名無しさん (ワッチョイ 0b7a-7iB9)2017/10/18(水) 13:52:47.94ID:ufsScDVj0
event解除ってnullぶっこんでもいいのかしら?
何処見ても-=でしろってのばかりで全解除の適切なやり方載ってないんだけど
一応null代入で動いてるぽいけどちと不安

まいなすはそれだけ消す、nullはすべて消す
できわるいコードだとnull入れると落ちるw

92デフォルトの名無しさん (ワッチョイ 0b7a-7iB9)2017/10/18(水) 14:18:32.71ID:ufsScDVj0
全解除ってそれなりに需要あると思うんだが何処も扱ってない不思議
+=って内から外へ処理出しする訳だから
インスタンスが破棄されたら当然破棄されるべきなのにどうもそうなってない
nullぶっこめばGC回収されるみたいだけど正しいやり方なのかな

設計次第じゃないの

購読側じゃなく発行側が勝手に解除ってのがちょっと...
むしろどういう場面で必要になるのか想像できないな

> +=って内から外へ処理出しする訳だから
> インスタンスが破棄されたら当然破棄されるべきなのにどうもそうなってない
ここは何を言ってるのかよく分からない

まあ、イベントというかデリゲートのマルキチャストの仕組みが分かりづらいのはわかる

>>92
正しいというかとりあえず安全なのは何もしないの放り込んどく
それでも勝手に消されて困るのがあるかもしれんがw

96デフォルトの名無しさん (ワッチョイ 0b7a-7iB9)2017/10/18(水) 16:11:03.50ID:ufsScDVj0
>>94
例えば非同期通信でデシリアライズ終わったらイベント投げて後は勝手に死ね、って場合
-=だと発行側で解除するのが困難でリークしちまう
最新VerC#ならTaskで後処理書けばいいけど、Unityだとつい最近まで3.5だったから

>>96
俺の理解不足だったらごめん

リークするのはイベントの購読側のオブジェクトLがイベントの購読を解除しないまま
Lを参照する変数がなくなった場合で、発行側のオブジェクトPのイベントに
Lのメソッドが登録されたままPへの参照がなくなってもそれはリークにならないと思うんですが

98デフォルトの名無しさん (ワッチョイ 0b7a-7iB9)2017/10/18(水) 16:39:10.41ID:ufsScDVj0
>>97
そう思ってた時期が俺にもありました
しかし実際はリークしてOutofMemoryが出る
どうも購読側参照が残ってると到達可能と見られてGC回収されないぽい
本当にそういう理屈かは知らんけどnullぶち込むと例外でなくなる

99デフォルトの名無しさん (ワッチョイ 797e-lqEX)2017/10/18(水) 17:26:02.20ID:jNhOnQNR0
思い込みって怖いネー

100デフォルトの名無しさん (ワッチョイ 93b3-meYy)2017/10/18(水) 17:46:05.16ID:GswCLlj60
>>98
>どうも購読側参照が残ってると到達可能と見られてGC回収されないぽい

登録解除してないから購読側は発行側から参照されてて回収されない
その状態で購読側が発行側を参照してるんなら発行側も回収されないよね

101デフォルトの名無しさん (ワッチョイ 7996-lqEX)2017/10/18(水) 19:19:26.31ID:j/PgXgnk0
循環参照しててもルートから到達不能なら回収されるよ
されないなら単に循環参照以外の参照が何かしら残ってるだけ

いいや解放されないね!とかいう思い込みに付き合う気はないから
口ごたえがしたければ、VSのメモリーアナライザーで
リークしているというオブジェクトの参照状態のスナップショットを撮って
ここに貼り付けてから続けるように

102デフォルトの名無しさん (ワッチョイ 93b3-meYy)2017/10/18(水) 21:18:06.23ID:GswCLlj60
>>101
すまんすまん、他の言語と勘違いしてた。

103デフォルトの名無しさん (ワッチョイ 318a-SWEl)2017/11/07(火) 14:20:16.62ID:7CEykIkZ0
WebBrowserコントロールを使うと、レジストリ編集しないと自動的にIE7相当になってしまうんですが、
レジストリ編集無しでIE11相当にするにはどうしたらいいでしょうか?

もしくは、dllファイル1つで済むなら、他のブラウザコンポーネントでもいいです。

104デフォルトの名無しさん (ワキゲー MM8a-9Rqp)2017/11/07(火) 14:42:48.60ID:uJ4GX7RNM
IEは他にはhtmlのmeta要素使うとか
レジストリっていってもHKCUなんだからアプリ起動時に書き込むだけのことだけど

105デフォルトの名無しさん (ワッチョイ 2e81-TtNK)2017/11/07(火) 18:40:38.64ID:MJK6I9RA0
>>103
CefSharpっていうChromiumの実装がNuGetにあるよ
AnyCPUに対応してないんで導入が若干手間だけど気合いでがんばれ

106デフォルトの名無しさん (ワッチョイ 794f-mNd+)2017/11/08(水) 00:31:11.06ID:NuL34q9d0
>>103
CoInternetSetFeatureEnabled

107デフォルトの名無しさん (ワッチョイ dfb3-iA8U)2017/12/18(月) 07:59:20.53ID:mWvJQqvN0
#EntityFrameworkの質問ってここでよいですか?

EFCore+Sqliteで開発してるんですが、".db"ファイルのパス指定で困ってます。

コネクション作成時に、以下でdbパス指定をしています。
var connectionString = new SqliteConnectionStringBuilder { DataSource = @"./app.db" }.ToString();

この場合、理由がよく分かってないのですが、
Update-Databaseを実行した時(CreateDatabaseが発行される時)、プロジェクトフォルダからの相対パスになり、
SaveChangesを実行した時(Insert文が発行される時)、/bin/debugからの相対パスになります。

毎回相対パス指定を変えるのが面倒で、かつ絶対パス指定はしたくないもので。
何か良い方法はありませんでしょうか。

108デフォルトの名無しさん (ブーイモ MM63-9jqv)2017/12/18(月) 13:46:10.03ID:325qmzymM
ここじゃないと思うの

109デフォルトの名無しさん (ワッチョイ 1e9e-rCI4)2017/12/18(月) 14:56:45.39ID:dTBoNCZ50
>>107
で、app.dbはどこに有るのよ、

俺ならexeパス取得して絶対パス作ってそれ使うけど、
絶対パスいやならカレントフォルダ変更したら?

111107 (ワッチョイ dfb3-iA8U)2017/12/18(月) 23:30:30.75ID:mWvJQqvN0
>>109
プロジェクトフォルダにできます。
ただ、プログラム実行時は別のパス見てるからDBないエラーになります。

>>110
あー、それいいかもです。
やってみます。

112デフォルトの名無しさん (ワッチョイ cbb3-RYVm)2017/12/31(日) 15:13:16.63ID:n7dS7ECy0
個々の人ってWinFormとWPFどっちで作ってる?

113デフォルトの名無しさん (ワッチョイ 06ed-FiVz)2017/12/31(日) 15:13:40.84ID:K0nOGJob0
WPF

何度聞かれてもformだ

115デフォルトの名無しさん (ブーイモ MM76-cnjM)2017/12/31(日) 16:16:35.61ID:PdI3PgJiM
オレも2年前からWPFにした。

116デフォルトの名無しさん (ワッチョイ 67f2-RYVm)2017/12/31(日) 16:35:43.42ID:GvxCaHuK0
新規は基本的にWPFだけど、使い捨てのツールはFormsのことも多い。

117デフォルトの名無しさん (アウウィフ FF2f-gocz)2017/12/31(日) 16:54:40.12ID:Jm0z8SXaF
昔はVSが何かっつと即堕ちして使いもんにならんかったが
今はまともになったんかねWPF

118デフォルトの名無しさん (ワッチョイ cbb3-RYVm)2017/12/31(日) 17:32:53.36ID:n7dS7ECy0
WPFって技術資料があんまないから、つっかかりにくいんだよなあ

119デフォルトの名無しさん (ワッチョイ decc-vQtD)2017/12/31(日) 18:07:24.15ID:jSVu2Yi+0
>>118
日本語が変だな
外国人?

120デフォルトの名無しさん (アークセー Sx03-tbBN)2017/12/31(日) 18:22:11.56ID:OKQGXBiEx
>>119
あれだ外人からみれば
そうみえんじゃねw

121デフォルトの名無しさん (ワッチョイ decc-vQtD)2017/12/31(日) 20:17:21.07ID:jSVu2Yi+0
つっかかりにくい→つかえやすいorつっかえやすい
それとも
つっかかりにくい→とりつきにくいorとっつきにくい

あんまない→あまりないorあんまりない

読解力ないな
外国人?

123デフォルトの名無しさん (ワッチョイ 4ae1-uLLi)2017/12/31(日) 20:26:45.27ID:sT88mvz00
読解力が無かったら修正例は書けないと思う

124デフォルトの名無しさん (ワッチョイ 5f81-Ixt9)2017/12/31(日) 21:26:10.60ID:mh0j3eXv0
どこかの田舎もんが書いた文章なんだろ

125デフォルトの名無しさん (ワッチョイ cbb3-RYVm)2018/01/01(月) 08:43:08.79ID:qva7Cn1y0
そんな事にも突っ込まないといけないほど余裕がないんだろうな

126デフォルトの名無しさん (ワッチョイ 7b17-Ogju)2018/01/08(月) 21:07:22.93ID:ff9XOb220
ILMergeについて質問です

例えば自作アプリ X.EXE に外部ライブラリ A.DLL と B.DLL を結合して X2.EXE を作ったとします
この X2.EXE を配布する場合、A.DLL と B.DLL の著作権情報を明記すれば問題ないという認識で合っていますか?

127デフォルトの名無しさん (ワッチョイ 0f9a-+W2v)2018/01/08(月) 21:23:20.13ID:/QyX6ETP0
>>126
それはILMerge関係なくA.DLL と B.DLL のライセンスの問題です
結合が禁止されていなければ添付して配布するのと同じになります
どんなライセンスかによって違うので
【License】ライセンス総合【利用許諾】
https://mevius.5ch.net/test/read.cgi/tech/1266247461/
へどうぞ

128デフォルトの名無しさん (ワッチョイ 9fb3-TPPA)2018/01/08(月) 21:33:00.91ID:7hYpzMEE0
>>126
> この X2.EXE を配布する場合、A.DLL と B.DLL の著作権情報を明記すれば問題ないという認識で合っていますか?
各々のライセンスを確認するしかない

129デフォルトの名無しさん (ワッチョイ 7b17-Ogju)2018/01/08(月) 22:13:04.36ID:ff9XOb220
>>127-128
レスありがとうございます

130デフォルトの名無しさん (ワッチョイ bad2-4vN5)2018/01/31(水) 23:46:33.39ID:3zSQiFnB0
ラムダ式から右辺の情報を取得する事は出来ますか?

.net MVC のソースコードを見ていて思ったのだけど、たとえば razor の Html.LabelFor メソッドは第一引数に
m => m.name などと書いて、引数 m で示すクラスインスタンスの name プロパティの DisplayName 属性の値を
ラベルとして表示していたりします。

ということは、ラムダ式 m => model.name から name プロパティの属性情報を取得しているのだと思うのですが、
どうやってるのかさっぱり分からず。
調べるべきキーワードだけでもいいので、ヒントをいただけませんか。

131デフォルトの名無しさん (ワッチョイ d780-miZj)2018/02/01(木) 01:19:13.10ID:7ACR6glp0
ラムダ式を受け取るメソッドの引数を
Func<String>の代わりにExpression<Func<String>>にしたりする
キーワードは式ツリー

132130 (ワッチョイ 9fd2-K3c3)2018/02/02(金) 00:27:05.13ID:eoTWLp2s0
>>131
ありがとー。
軽く見てみましたが、Expression ってよく分からないですね。。
式ツリーでも、もっと調べてみます。

133デフォルトの名無しさん (ワッチョイ 6eed-nHV3)2018/02/13(火) 16:59:47.00ID:KbLCHvlc0
サイズ、位置が固定されているウィンドウを外部プログラムから移動、サイズ変更する方法を教えてください

134デフォルトの名無しさん (ワキゲー MM8a-/z5x)2018/02/13(火) 20:22:55.89ID:ElvL/+ZbM
とりあえず一般的には
FindWindowやEnumWindowsで目的のウィンドウのウィンドウハンドルを手に入れて
SetWindowPosする
>>133のウィンドウがこれでできるかどうかはそのプログラムの作り次第

135デフォルトの名無しさん (ワッチョイ 6eed-nHV3)2018/02/13(火) 20:56:39.50ID:KbLCHvlc0
>>134
ありがとうございます
それで移動、サイズ変更できないウィンドウをどうにかできないかなと思い質問してみました
ユーザーが移動サイズ変更できないウィンドウでも強引にしてしまうプログラムがあるらしいので、どうしてるのかな?と

136デフォルトの名無しさん (ワッチョイ 2e9a-jA6l)2018/02/13(火) 21:00:42.72ID:00bUqpHu0
>>135
とりあえず直接のC#の話でなくWinAPIなんだからそっちで調べた方がいいと思うよ

137デフォルトの名無しさん (ワッチョイ 6eed-nHV3)2018/02/13(火) 21:21:31.71ID:KbLCHvlc0
>>136
ありがとうございます

138デフォルトの名無しさん (ワッチョイ f7e0-T3WU)2018/02/16(金) 06:01:32.86ID:W1XJdyx10
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆

139デフォルトの名無しさん (ワッチョイ c67a-Uf7X)2018/04/09(月) 14:21:53.70ID:hXBdpr6O0
厳密に言うとC#の話じゃないんだけど
TcpClientでコネクション使い回しというか
開けっ放しでデータ送り切るって出来ない?
flushしてもデータ残っててCloseしないと全部送られない

140デフォルトの名無しさん (ワッチョイ 698a-VY9m)2018/04/09(月) 15:36:40.77ID:Cpp6LEO80
ソースで説明してくれ

141デフォルトの名無しさん (ワッチョイ c67a-Uf7X)2018/04/09(月) 15:51:30.50ID:hXBdpr6O0
そんな複雑な話じゃないんだ
GetStream()でストリーム取ってWrite()するだろ
でもClose()しないとケツのいくばくかはいつまで経っても送られない
断続的に送りたいから、いちいちClose()してからConnect()やり直すとかしないで済む方法あるか知りたい

142デフォルトの名無しさん (ワッチョイ c1fa-zXvJ)2018/04/09(月) 15:59:29.12ID:uvdwBq6N0
NoDelay=true

143デフォルトの名無しさん (ワッチョイ c67a-Uf7X)2018/04/09(月) 16:03:49.46ID:hXBdpr6O0
おおサンクスやってみる

144デフォルトの名無しさん (ワッチョイ ffe7-UPLz)2018/04/16(月) 21:16:34.15ID:f86xegYk0
質問です。

非同期実行について勉強中です。

以下のサイトの内容なんですが、

https://ufcpp.wordpress.com/2012/11/12/asyncawait%E3%81%A8%E5%90%8C%E6%99%82%E5%AE%9F%E8%A1%8C%E5%88%B6%E5%BE%A1/

ページ中ほどにある
"スレッド プール実行"

"一方、内側は、スレッド プール上での実行になりますが、スレッド プール上のコンテキストではawaitしてもスレッド プール上のどこかで実行されるだけで、決してUIスレッドには戻らなくなります。"
の意味が理解できません。プール上のどこかで何が実行されるのでしょうか?


また、その下の”問題となる書き方の例”

”Task.Runの中のawaitでは、単一スレッド実行にはならないので、lockが必要になることがあります。”

理解が出来ませんでした。

2連続someTask()は同時に実行されるという意味でしょうか?

スレッドは使い捨ての領域だから、
その中で遅延実行しても戻り値は受け取れないよ
だって戻る領域が数秒後も存在しているか分からないからね
って意味だと思う

146デフォルトの名無しさん (ワッチョイ cf80-SL3i)2018/04/16(月) 23:04:11.81ID:qlfABgAK0
マルチスレッドなんて、素人がやるものじゃない。
Ruby を作った、Matz でさえ、何十年もやっていないのに

OS・CPU が今、どのプロセスのどのスレッドの、どの実行コードを実行しているのか、
君のプロセスのスレッドから、わかるわけないでしょ

同期処理じゃないのに。
バラバラに、無関係に動いているのに

逆に言えば、バラバラに動くスレッドの、
現在実行中のコードがわかるのなら、それは同期処理になる

これがシングルスレッドおじさん再登場の瞬間であった

148144 (ワッチョイ ffe7-UPLz)2018/04/17(火) 06:32:51.54ID:/3sDS4fX0
どうもありがとう

149デフォルトの名無しさん (ブーイモ MMff-C98h)2018/04/17(火) 08:18:31.78ID:iJwyhGM3M
シングルスレッドだけで出来る仕事って限られてないか。通信なんか絡んだらマルチスレッド必須でしょう。私の現場は.net3.5なんでback|ground work|er使ってるよ。

150デフォルトの名無しさん (ブーイモ MMff-v/YJ)2018/04/17(火) 08:24:21.80ID:AgNOdAZLM
>>149
taskって4.0からだっけ?

151デフォルトの名無しさん (ブーイモ MMff-C98h)2018/04/17(火) 10:03:57.21ID:iJwyhGM3M
>>150
確かそうです。
taskとか使えると楽なんですが4.0強制もできない案件なんで。

152デフォルトの名無しさん (スップ Sd1f-mjbK)2018/04/17(火) 10:50:32.95ID:EhGIAhyrd
どうしても.net3.5を使わないといけないんだったらRxで処理するわん

153デフォルトの名無しさん (ブーイモ MMff-C98h)2018/04/17(火) 11:51:31.97ID:iJwyhGM3M
おっ!
いいこと教えてもらった。
Rxってsilverlightだけじゃないんだ。

そんなの使えるなら.NET4だって使えるでしょw
3.5が使えて4が使えないプラットフォームは存在しないと思うけど

そういう問題じゃないんだよ・・・

156デフォルトの名無しさん (ブーイモ MMff-C98h)2018/04/17(火) 13:03:19.02ID:iJwyhGM3M
お客様のPCがWindows7ならデフォルトで3.5が入ってるでしょう。4.0にしてから使ってくださいとは言いずらい。

157デフォルトの名無しさん (ワッチョイ cf7a-RWFh)2018/04/17(火) 13:07:10.43ID:rojjHsw+0
ちょっと前までUnityも3.5止まりだったから多少はね?

158デフォルトの名無しさん (ブーイモ MMff-v/YJ)2018/04/17(火) 16:37:52.80ID:joazaAE7M
Rxってなんぞや!!

gugure

160デフォルトの名無しさん (ワッチョイ b39f-C98h)2018/04/17(火) 19:00:52.03ID:F4BOoGzu0
ググれは正論だけど、せっかく話題になったんだからここの住民の意見も聞いてみたい。使ってる人の感想とか。

161デフォルトの名無しさん (ブーイモ MMff-v/YJ)2018/04/17(火) 19:14:49.95ID:joazaAE7M
せや!Rxについて詳しく

全然関係ないけど、receiveの略が何でRxなのか昔から結構謎

163デフォルトの名無しさん (ワッチョイ b39f-C98h)2018/04/17(火) 20:38:22.07ID:F4BOoGzu0
それ組み込みの世界だね。送信ポートはTxだ。スレチだね。

インストールされている証明書の読み取り、エクスポートをやりたいんだけどさ
ググるといろいろ出てきてX509とかってのを使うと良いとある
まだ実装とか全然なんだけど、この情報だけだと不安なのでだれかやったことのある人いない?

X509Cartificate.Exportはバイトデータを吐き出してそのままファイルに保存できるるっぽいけど、秘密キーを設定したいとかあったりしてモヤモヤしてる

165デフォルトの名無しさん (ワキゲー MM42-pKnf)2018/05/03(木) 18:58:35.37ID:+FWBwd0JM
ワッチョイなしスレが1000行ったからこっちをage

166デフォルトの名無しさん (ワキゲー MM42-pKnf)2018/05/03(木) 18:59:21.23ID:+FWBwd0JM
ageられてなかった…

167デフォルトの名無しさん (ワッチョイ 1e96-XJxX)2018/05/04(金) 20:04:32.00ID:hRV05sGM0
windowformアプリケーションで

form1 ディスプレイの解像度等を入力する。入力したデータをもとにform2に表示する長方形の大きさ(rx,ry)を算出
form2 form1で算出した(rx,ry)をもとに長方形を表示

ってしたいんだけど

A. rx,ryをpublicで定義してform2.csから参照する
B. form1のrx,ryを求める計算式をクラスにしてform2からインスタンス生成して求める

のどちらがお作法的に正しいんでしょう?

データとUIを分離するとして、データ保持と計算用のクラス、formは入力のみ、表示のみって感じになるのかな
でも、まぁそんなのAでもBでもいいだろ

関係ないが解像度ぐらい自動で取得してくれると楽

169デフォルトの名無しさん (ワッチョイ 1e81-IfVY)2018/05/04(金) 20:14:46.22ID:QSaueu9Z0
なんとなく、こういうのを"お作法"と呼ぶマにはいいイメージがない

170デフォルトの名無しさん (ワッチョイ 1e96-XJxX)2018/05/04(金) 20:20:22.68ID:hRV05sGM0
>>168
ありがとうございます。
解像度は自動取得なのでディスプレイのoサイズでした。

171デフォルトの名無しさん (ワッチョイ 1e96-XJxX)2018/05/04(金) 20:22:53.75ID:hRV05sGM0
>>169
すいません。
プログラミング初めて勉強なので、なるべくへんなコーディングしないように可読性高くと考えてまして、
普通はどう描くんだろうなというところが気になって仕方ない。
public変数作りすぎると、後でどこかで変に触るとわけわからんことになるのかなと極力使わないように心がけてます。

172デフォルトの名無しさん (ワッチョイ 53b3-wAnw)2018/05/04(金) 20:37:07.58ID:HEa1U9rI0
何かフリーソフトを作ってみたくて勉強しているところなのですが、GUI?を学ぶ上で良い本があれば教えていただきたいです

173デフォルトの名無しさん (ワッチョイ bb65-f8tT)2018/05/04(金) 20:55:12.49ID:L0LZvRGB0
>>171
フォームは入力の受付と出力の描画だけをする
内部で使うデータはモデル側で持つ

174デフォルトの名無しさん (ワッチョイ 1e96-XJxX)2018/05/04(金) 21:33:04.91ID:hRV05sGM0
>>173
それでいってみます。
ありがとうございます。

175デフォルトの名無しさん (ワッチョイ 1e96-XJxX)2018/05/04(金) 21:34:38.54ID:hRV05sGM0
連投すいません。

ユーザー側でフォームのサイズを変えたとしても
常にフォーム右端にボタンを固定する方法ってないでしょうか?

176デフォルトの名無しさん (ワッチョイ 1e9a-XJxX)2018/05/04(金) 21:39:42.44ID:EvkA5vHv0
>>175
ボタンのAnchorのプロパティをTop, Rightに変更

177デフォルトの名無しさん (ワッチョイ 1e96-XJxX)2018/05/04(金) 22:00:01.60ID:hRV05sGM0
>>176
Anchorって設定があったんですね。
できました!
ありがとうございます。

178デフォルトの名無しさん (ワッチョイ 1e96-XJxX)2018/05/04(金) 22:18:10.81ID:hRV05sGM0
Form1で作成したmethod1をForm2で使用したい場合どのようにすればいいのでしょう?

Form1.method1();

だとエラーなのですが、form自体がクラスだからインスタンス生成が必要ということでしょうか?
本当に初歩的な質問ばかりですいません。

179デフォルトの名無しさん (ワッチョイ 1e96-XJxX)2018/05/04(金) 23:14:52.98ID:hRV05sGM0
駄目だ煮詰まってきた。

Visualstudioで新規ソリューションを作成して、既存のソリューションからフォームを追加したのですが、
フォームデザインでは新規フォームが表示されているだけ、.Designer.csを除くときちんとコードが記載されているのですが、
[デザイン]:の画面では反映されておらず、この画面でコントロールを追加などするとエラーがでてビルドできなくなります。
フォームの追加の仕方が間違ってるのかなぁ。

180デフォルトの名無しさん (ワッチョイ 274a-8sqF)2018/05/04(金) 23:16:00.99ID:o0wzY09D0
煮詰まる=完成する

181デフォルトの名無しさん (ワッチョイ 1ed3-XJxX)2018/05/05(土) 01:05:27.05ID:i9GeFih30
>>179
エラーの内容は?

182デフォルトの名無しさん (ワッチョイ 1e96-XJxX)2018/05/05(土) 08:03:54.33ID:CBIAOUw10
>>181

エラー CS0121 次のメソッドまたはプロパティ間で呼び出しが不適切です:
'InitalMonitorSetteing.InitializeComponent()' と 'InitalMonitorSetteing.InitializeComponent()'

エラー CS0111 型 'InitalMonitorSetteing' は、'InitializeComponent'
と呼ばれるメンバーを同じパラメーターの型で既に定義しています。

です。

183デフォルトの名無しさん (ワッチョイ 1e96-XJxX)2018/05/05(土) 08:08:30.21ID:CBIAOUw10
ソリューションエクスプローラーで
追加→既存の項目
でフォーム一切合切を取り込むと
フォームの[デザイン]タブのところで新規のフォームが表示され、これをいじると上記エラーが出ます。
フォームの[デザイン]タブをいじらなければ正常に実行されます。

.Designer.csを見るときちんとコードが書かれているので
[デザイン]と.Designer.csが一致していない状態になっているようです。

184デフォルトの名無しさん (ワッチョイ 1e96-XJxX)2018/05/05(土) 08:36:55.68ID:CBIAOUw10
地道に

フォームのデザインすべてコピー貼り付け
コードすべてコピー貼り付け

ってやって追加しました。
なんかネットで見ると、

ソリューションエクスプローラーで
追加→既存の項目
でフォーム一切合切を取り込む

ってやると後々まで得体のしれないエラーに悩まされるので、上の方法を推奨している方がいました。
Visual Studioかフォーム自体の持つバグなんですかね…。

〜VS2015しか使ってないが俺はエラー起きたことないよ。原因分からないけど、何かやらかしてるんでしょ

186デフォルトの名無しさん (ワッチョイ 1e98-5GkY)2018/05/05(土) 09:57:21.01ID:+PUGPCx60
無闇にコピペした結果を環境のバグとか
プログラム向いてないよお前

187デフォルトの名無しさん (ワッチョイ 1e96-XJxX)2018/05/05(土) 10:00:36.87ID:CBIAOUw10
失礼しました。
私がよく理解していないために、しなければいけない作業をしていないのかもしれませんね。

むしろしちゃいけない作業をしてるような気がする...

189デフォルトの名無しさん (ワッチョイ 1e81-YjVT)2018/05/05(土) 11:08:14.41ID:T9f+iK/r0
>>178
そもそもこの質問の時点でFormsのコード部分が何をやってるのか理解できてない可能性がある

190デフォルトの名無しさん (ワッチョイ 7f23-x94l)2018/05/05(土) 11:25:44.32ID:qEM4shRT0
いきなり難しいことをやろうとするとダメやね

基礎も身につけずに一端のフリして解決しようとして、半端で折れるバカってのはよく聞く話

とりあえず何か入門書籍に頼って動くものを作れ
話はそれからだ

192デフォルトの名無しさん (ワッチョイ 1e9a-XJxX)2018/05/05(土) 20:20:18.85ID:xedbZMvy0
>>184
情報共有する場所なんだからこういったいいかげんなこと書くのやめてほしいな
まずソースをそのまま取り込みたいのならプロジェクトに追加で何も不具合は起こらない
それでデザイナが反映されないのならDesigner.csを直接書き換え(認識できなくなるような書き換え)やっているはず
あとユーザーコントロールを内部で追加している場合は一度ビルドするとデザイナで反映される
プロジェクトでなくソリューションにソース追加しても当然何も起こらない
最初からふらっとにいけばいいのに

WinFormのデザイナは中途半端に内部実行するからしょっちゅうトラブるんだよな
コンストラクタでなんかやってる奴は特に要注意

194デフォルトの名無しさん (ワッチョイ cf17-jSUp)2018/05/05(土) 22:08:57.94ID:1Zee5iE50
デザイナかどうか判断するコードを書くのは飽きた

195デフォルトの名無しさん (ワッチョイ 1e81-YjVT)2018/05/05(土) 22:38:59.04ID:T9f+iK/r0
そんなあなたに!WPF!

196デフォルトの名無しさん (ワッチョイ 1e96-XJxX)2018/05/05(土) 22:40:45.58ID:CBIAOUw10
フォームをコントロール含めて継承すると継承先でコントロールの編集ができなかったり云々
という書き込みを見たので、
そこで提案されていた新規フォーム作成して
そこにコピペとしてみて結果オーライだったのでそれで良しとしたのですが、
私の方でなにか既存のフォームを取り込むのにまずいことをしてたのかもしれません。
記憶にないけどDesigner.csを直接書き換えしたかなぁ・・・。

フォームで作成するかWPFを使うかを悩んでた時にフォームは放置されたバグが多いと警告されていたので、
単純にバグなのかと思いましたが根拠なくソフトのバグと書き込むのはまずかったですね。
失礼しました。

197デフォルトの名無しさん (ワッチョイ 8f9f-80IO)2018/05/06(日) 07:44:34.64ID:8BI4PAGy0
FormかWPFか悩んでるならWPFを推す。
最初は難しいがXAMLはUWPでも使っていて今後につながると思う。

198デフォルトの名無しさん (ワッチョイ bbb5-MrO9)2018/05/06(日) 15:08:05.14ID:gzoDeGmX0
今後ピクセル単位でのUI作成は完全に無くなるからなぁ

多段継承してるカスタムコントロールはぶっ壊れやすい
Winアプリ作らにゃならんならWPFのがマシってのはまあそうだ
でも将来性あるとは思わんな

200デフォルトの名無しさん (ブーイモ MMc7-80IO)2018/05/06(日) 17:34:01.02ID:ZPoK8KSTM
WPFそのものの将来性はともかくとして、その技術のエッセンスが次代に引き継がれると思うんです。
今後もWinアプリを開発することになるんで、なるべく将来性と言うか潰しのきく技術に投資したいと思ってWPFにしたんだけど。

>>199
それはないよw
継承の段数は関係なくて、単にコントロールのカスタマイズは意外と難しいってだけの話

俺も経験があるけど簡単にシステム側のバグを疑いたくなる現象にぶち当たるけど、
ほとんどの場合はプログラマの理解不足によるユーザーコード側のバグが原因

潰しがきくってんならなおさら独自仕様なんぞあかんやろ
WPF出てから何年経ってるよ
他に採用してるとこないのはそういうことだ

203デフォルトの名無しさん (ワッチョイ 23d2-xC2/)2018/05/06(日) 17:39:54.31ID:YMV7ENjt0
>>202
XAML

>>201
いや正確にはシステムがぶっ壊してるんじゃなく
レイアウト決定だの初期化順番だので罠にはまる確率がガンと上がるって話
コントロール1種を少々カスタマイズしたくらいじゃあんまハマらんさ

205デフォルトの名無しさん (ワッチョイ bf8a-+yEv)2018/05/06(日) 17:43:51.97ID:EPydt9+c0
GDIが使えない時点でゴミ
WPFでCADを提供してみろ

206デフォルトの名無しさん (ワッチョイ 8f9f-80IO)2018/05/06(日) 18:14:23.28ID:8BI4PAGy0
>>202
対案示してくれると検討もできるんですけど。

>>206
オプショナル独自仕様なんぞわざわざ覚えんでもC#だけ抑えときゃいいじゃん

formとwpfどっちかじゃなくて、状況に応じてどっちか使えばいい
言語だってそうだ。c#に拘らず、必要に応じてほかの言語も使えば楽になるぞ
縛りプレイとか馬鹿臭くてやってられん

209デフォルトの名無しさん (ワッチョイ 277b-gjEc)2018/05/06(日) 18:18:35.39ID:gpR98zCG0
何でこのスレ来てるの?

210デフォルトの名無しさん (ワッチョイ bbb5-MrO9)2018/05/06(日) 18:21:30.52ID:gzoDeGmX0
xamlが単なるコードトランレート言語だったなんて知らなかったんだよ。

211デフォルトの名無しさん (ワッチョイ 8f9f-80IO)2018/05/06(日) 18:31:06.82ID:8BI4PAGy0
>>207
まさかの浅い答えでしたね。
今時、なんか開発する時は言語だけじゃなくAPIとかプラットホームとのセットじゃないの?

212デフォルトの名無しさん (ワッチョイ 1ec9-XJxX)2018/05/06(日) 18:36:24.83ID:Yj4OtQcz0
最近form触る機会あったけど、WPFになれた後だとバインディングが面倒でならない
formはformでわざわざ部品探したり作る必要ないから良いんだけどね

213デフォルトの名無しさん (ワッチョイ deed-pRpi)2018/05/06(日) 18:49:36.56ID:c85H7Qr90
Bindingが遅すぎて使い物にならない

214デフォルトの名無しさん (ワッチョイ 8f9f-80IO)2018/05/06(日) 19:05:20.38ID:8BI4PAGy0
なんか変なイチャモン付けてる人いるけど。
CAD作れるかとか、Formならできるの?
Windows、.net、C#でGUIアプリ作るならFormかWPFしかないじゃん。
Formは終わった技術で行き止まり、WPFは普及しなくて過渡的な技術になるかも知れないがその先につながりそうでって言ってんです。
もっと論理的に反論して欲しいです。

215デフォルトの名無しさん (ワッチョイ 03c3-m5Zl)2018/05/06(日) 19:06:34.14ID:lPSPWHr00
昔から居ついてるから一々突っからなくて宜しい

216デフォルトの名無しさん (ワッチョイ 8f9f-80IO)2018/05/06(日) 19:13:48.84ID:8BI4PAGy0
>>215
昔から居てもアホな書き込みすると初学者は惑わされるのよ。
自分が理解出来ない技術はみんなダメって言ってないか?
ちゃんと論理的に反論してよ。
出来ないなら駄まってろ。

formでCAD作ってる奴ぐぐると日本人でも複数いるよ

218デフォルトの名無しさん (ワッチョイ 0e33-Tk2U)2018/05/06(日) 19:17:40.07ID:OZSh5wZJ0
>>214
お前さんみたいな銀の弾丸求める奴ぁ先がないぞ
XAMLは文字列だらけで設計の筋がいいとは到底言えない
もし次があるなら全然違うもん出してくるんじゃないの

219デフォルトの名無しさん (ワッチョイ 8f9f-80IO)2018/05/06(日) 19:21:54.60ID:8BI4PAGy0
>>217
FormでできるならWPFでもできるだろう。
Formの優位性は何?

220デフォルトの名無しさん (ワッチョイ 8f9f-80IO)2018/05/06(日) 19:24:56.35ID:8BI4PAGy0
>>218
XAMLは面倒よ、たしかに。
でもね、オレは使ってないがGUIのリソースエディタがあるんじゃないか?
なくても直ぐにできるよ。

221デフォルトの名無しさん (ワッチョイ 8f9f-80IO)2018/05/06(日) 19:27:17.19ID:8BI4PAGy0
>>218
UWPもXAMLだよ。
MSは当面これでいくんじゃないの。
あんたよりMS信じる。

222デフォルトの名無しさん (ワッチョイ 0e33-Tk2U)2018/05/06(日) 19:34:40.78ID:OZSh5wZJ0
XAMLの筋が悪い一例としてIDEサポートがHTMLにすら劣る点が上げられる
今でも時々vsごと落ちる
まあ次が出る前にWinアプリ自体がオワコンになる可能性も低くないけどな
あんたの人生だから好きにしたらいいよ

223デフォルトの名無しさん (ワッチョイ 8f9f-80IO)2018/05/06(日) 19:44:28.98ID:8BI4PAGy0
>>222
XAMLでの開発3年弱だがVS落ちた経験ないよ。
Winアプリがオワコンになるんだったら、早いとこ他の言語・環境に移行したら?
オレはWinアプリだけじゃなくタブレットとかスマホにも適用できると思ってるから、この道行くよ。

224デフォルトの名無しさん (ワッチョイ 23d2-xC2/)2018/05/06(日) 19:47:05.22ID:YMV7ENjt0
>>222
俺も落ちたことないんだけど、どんな環境で何したん?

225デフォルトの名無しさん (ワッチョイ 1e81-YjVT)2018/05/06(日) 19:59:30.59ID:P5UQ0avb0
WPFはもちろん最良ではないけど
すくなくとも現行のUWPと共通のXAML使ってるぶんFormsよりは十倍マシ

226デフォルトの名無しさん (ワッチョイ 0e33-Tk2U)2018/05/06(日) 20:10:59.67ID:OZSh5wZJ0
メモリ8Gで5段くらいネストした奴編集してたらストンと落ちたぞ
vs2015だ

>>225
「現行では」比較論でまあせやな
将来性は怪しいが

227デフォルトの名無しさん (ワッチョイ 23d2-xC2/)2018/05/06(日) 20:17:33.07ID:YMV7ENjt0
>>226
ハードウェアアクセラレーションの問題ではなくて?

228デフォルトの名無しさん (ワッチョイ 8f9f-80IO)2018/05/06(日) 20:19:15.57ID:8BI4PAGy0
>>226
すごいな。なかなか落とせるもんじゃない。
そんなにWinの将来に悲観的なら、本当にどこかに行ってください。
間違った書き込みを堂々と恫喝的にされると初学者の道を誤らせるよ。
それって罪なことです。
このスレタイでは。

229デフォルトの名無しさん (ワッチョイ 23d2-xC2/)2018/05/06(日) 20:22:22.92ID:YMV7ENjt0
>>228
落ちるときは落ちるさ
こんな風にその問題を追及しないのがアレ
https://stackoverflow.com/questions/31021049/visual-studio-2015-crashes/33182194#33182194

230デフォルトの名無しさん (ワッチョイ 8f9f-80IO)2018/05/06(日) 20:28:51.95ID:8BI4PAGy0
>>229
他の環境はそんなに安定してるのか?
VSが特別に酷いとは思わないけど。
MSデスってなんでここにいるの?

231デフォルトの名無しさん (ワッチョイ 23d2-xC2/)2018/05/06(日) 20:30:40.96ID:YMV7ENjt0
>>230
俺がいつMSをデスった?いつ他の環境と比較した?
ID:OZSh5wZJ0と間違えなさんな

232デフォルトの名無しさん (ワッチョイ 8f9f-80IO)2018/05/06(日) 20:37:41.43ID:8BI4PAGy0
>>231
Winアプリはオワコンって言ったろ。
それより、CAD作ってみろ、って恫喝的に書いたろ。
あのフォローをしてくれ。論理的に。

233デフォルトの名無しさん (ワッチョイ 8f9f-80IO)2018/05/06(日) 20:39:01.49ID:8BI4PAGy0
>>213
ごめん。
人違いだった。

234デフォルトの名無しさん (ワッチョイ 8f9f-80IO)2018/05/06(日) 20:40:12.87ID:8BI4PAGy0
>>233
たびたび訂正ですがアンカ間違えた。
すまん。

235デフォルトの名無しさん (ワッチョイ 0e33-Tk2U)2018/05/06(日) 20:46:08.35ID:OZSh5wZJ0
わかりやすく発狂してんなー
初学者どうたら言うんならもっと普及してるもん押すべきじゃあないの?
言っとくけどC#自体は他でも使われてるからなUnityとか

>>229
毎度再現するんでもないからなー
Formでは一回も落ちたことないからXAML関係が比較的不安定なのはそうじゃないの

236デフォルトの名無しさん (ワッチョイ 8f9f-80IO)2018/05/06(日) 20:58:22.97ID:8BI4PAGy0
>>235
見っともないぞ。
昔からいる古狸かも知れないが、もっとちゃんとしろ。
初学者惑わす書き込みを堂々とするのはやめて、自分の考え披露するのは構わないけど。

237デフォルトの名無しさん (ワッチョイ 23d2-xC2/)2018/05/06(日) 21:16:41.42ID:YMV7ENjt0
>>232
だから俺は違うってばwww

238デフォルトの名無しさん (ワッチョイ 1ecc-ALiW)2018/05/06(日) 21:31:09.89ID:JjviwauC0
アンカさえまともに書けないやつがコード書けるのか?

239デフォルトの名無しさん (ワッチョイ 8f9f-80IO)2018/05/06(日) 21:39:39.84ID:8BI4PAGy0
>>237
ごめん。
ちょっと酔っ払って熱くなった。
もうここらで寝ます。
>>238
ご心配いただきありがとうございます。

わたし錯乱某

241デフォルトの名無しさん (ワッチョイ 7bd6-pRpi)2018/05/08(火) 02:53:46.31ID:EHD0XpOQ0
わい、コンソールアプリしか作ってない

242デフォルトの名無しさん (ワッチョイ 0ad2-xC2/)2018/05/08(火) 03:04:56.28ID:wFWfdcvC0
>>241
.NET Core Global Toolsおもしろいよね

243デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/11(金) 22:56:53.52ID:oqUyZvi20
フォームアプリケーションで

A.初期設定画面
表示する円の大きさ、数、表示座標の範囲などの初期値を設定

B.ゲーム画面
初期設定画面からAの初期値を取得し、メンバ変数に代入して
円を表示する
円を消去する
円の当たり判定をする
などの3つぐらいのメソッドで使用しています。
Bのコードが長くなって200行ぐらいになると、
メンバ変数をどこで使ってるのか全部見なければいけないのは
可読性が悪いのかなと思うようになってきました。
3つのメソッドそれぞれのグループ変数として
それぞれ3つのメソッド内でAの初期値を見に行くコーディングをしたほうが良いのでしょうか?

メンバ変数の方が冗長性はないけど可読性が低くて、
メソッドないのグループ変数にしたほうが冗長性が高いが可読性も高い気がします。

独学でコーディングしているので、お仕事でプログラミングされている方のご意見を伺いたいです。

244デフォルトの名無しさん (ワッチョイ 2565-5o/y)2018/05/11(金) 23:05:04.79ID:KxM4SNOx0
>>243
Aが入出力と, モデルのデータ保持という3役を担っているのが良くない。
出力が本業なので可能ならばそれに特化するが, 差し当たってはデータ保持を分離して別クラス(モデル)に切り出す

245デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 08:19:23.20ID:RvuVG0qm0
Aは
public int GetTimeLimit
{
bool resultOfGetTimeLimit = int.TryParse(this.timeLimit.Text, out int timeLimit);
if (resultOfGetTimeLimit)
  return timeLimit;
else
return 0;
}

が10個ぐらいあるだけで、Aの可読性はいいのですが。

Bのクラスから→Aのインスタンス生成→フォーム表示しているので、

Bが
1. Aからの初期値取得
2. 取得した初期値でゲーム画面表示
3. ゲーム中の処理
4. スコアデータとAの初期値テキストファイルへの書き出し

という4つの異なった処理(特に2,3のコードが長い)をしているのと、
Aのコードの量も400行近くになっているのが可読性低下の原因かと思います。

246デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 08:19:38.98ID:RvuVG0qm0
Bの別のクラスを作って分離させたいんだけどBからAのインスタンス生成しているので、
BAの画面処理に基づいた1234はすべてBに入れることになってるんですよね。

これって画面遷移が良くないってことなのかなぁ?

一般的に1234の処理を一つのフォームクラスに押し込んでクラスメンバ変数10個程度、
400行のコードって可読性の観点から許容されるものなんでしょうか?

チームでプログラミングされているプロの方の意見をお伺いできればと思います。
(長文本当に申し訳ありません)

247デフォルトの名無しさん (ワッチョイ cb81-nFcL)2018/05/12(土) 08:45:11.14ID:KCIDKf2Q0
人の話聞いてないねw
じゃあもう好きにしたらいいと思うよ

248デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 09:11:24.66ID:RvuVG0qm0
>>247
私の説明か理解が悪いのでしょうか?

Aは100行未満のコード245のコードの連続なので簡単に読めます。
Bが読みづらいのが問題なので、Aの機能を分離しても解決にはならないような。

BがAが取得したデータ保持とゲーム内でのデータ処理の二つを担っているのがまずいとのご指摘であれば、
それはそうかと思いますが、データ保持と処理が画面と密接に関係しているので分離し難いというか・・・。

コード全部見せないで質問すること自体に無理があるのかもしれませんね。
すいません。

249デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 09:18:34.84ID:RvuVG0qm0
たぶん端的にこう質問すればよかったのかと思います。

フォームを生成しているクラスのコードが400行、メンバ変数が10個、メソッドが8個、で、
メンバ変数はそれぞれのメソッドで3個ぐらい引用しています。

こういうコードってチームで作業してるプロから見て許容できる範囲でしょうか?
処理が多少冗長になってもメンバ変数を少なくして、メソッド内でグローバル変数として定義するべきでしょうか?

>>248
Aを入出力専門のAViewとデータ保持専門のDataHolderに分離
Bをゲーム画面描画専門のBViewと実際の内部処理を行うGameModel, 各種書き出しを行うWriterに分離

Windowのインスタンスの内部で色々な処理を行うのがそもそも間違ってる
描画と変更の通知以外何もさせるな

251デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 10:01:27.82ID:RvuVG0qm0
>>250
ありがとうございます。
理解できました。

フォーム生成するクラスはフォームの描画、変更に特化

A 初期値入力フォームを生成するクラス
B データを保持するクラス
C ゲーム画面表示クラス
D ゲームのルールに基づいてBを更新するクラス

分かりやすい。
これがオブジェクト指向ってやつか・・・。

252デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 10:07:34.76ID:RvuVG0qm0
自分は成り行きでBの機能の一部をCに放り込んでしまったから、
Bを処理するDも必要に迫られてCに入れざるを得なくなってたんですね。

入門書にあったサンプルプログラムはコード数が少なかったから、
BをCに入れてるものが結構あったので無意識にこんなもんだと思ってました。

こういうのって本では学びづらいですね。
勉強になりました。
ありがとうございます。

253デフォルトの名無しさん (ワッチョイ 059f-YHaA)2018/05/12(土) 11:04:14.67ID:PbE4ojLD0
>>251
それはOOPではなくMVCな。一応。

まぁGUIアプリケーションでのOOPの具体的なアーキテクチャだから

255デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 11:23:13.92ID:RvuVG0qm0
MVCは初耳で今ググって勉強しました。

やはり自分のコードは人と共有できるレベルではなかったですね。
MVCの設計で修正してみます。

手続き型言語しかやってないので、
手続きで処理していって
「なんども同じ手続き出てくるな。」
と思ったらクラスにして分離する思考になってたんですけど、
それじゃだめですね。

こういうのが学べるいい本があったらいいなぁ。

256デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 11:32:37.31ID:RvuVG0qm0
dataHolderクラスってABCDどれからもアクセスすることになるんですが、
パブリックにして、どこからでも読み書きできるようにしていいんでしょうか?

バグの温床になるからダメ?

257デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 11:36:18.82ID:RvuVG0qm0
マイクロソフトのホームページだとPublicにしてますね。

これだとどこからでもすべてのデータにアクセスできるから便利だし可読性もいいけど、
どこかでうかつにdataHolderの変数に変な値を入れると、
どこがバグになっているのか全コード読まなければいけないですね。

うーん・・・。
世の中そんなもんなのか?

>>256
お好きに
結局は書きやすさと安全性のトレードオフ

ガッチガチに書くならgetterだけのImmutableオブジェクトを表すインターフェイスとそれを実装する具体クラスに分離してViewにはインターフェイスだけ教えるとか(あまりやらない)
作る人数とか規模によってどの程度強制するか変わってくるから程よくやるのが重要, 一貫性は重要だが徹底しすぎるとしんどい

259デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 11:57:15.21ID:RvuVG0qm0
>>258
immutableなんてものがあるんですね。
ごく一部の変数以外はimmutableで事足りるから、immutable設定にします。
publicでdataHolderクラス作ってメンバ変数はすべてimmutableにすれば、

可読性、コーディングの利便性、安全性

全部満たせますね。
なんて便利なんだ…。( ゚д゚)

>>259
残念ながらC#では上手くImmutableに出来ない(出来るかもしれないが最近やってないので詳しい人教えて)
TypeScriptとかなら既存の型にReadonlyを再帰的に付けた型が簡単に作れるんだけどなぁ

MVCって、VとCの境界が曖昧になりがちだよな。
ってか、VとCを分ける様な事するからUIが使い辛い物になるんだよな。

>>261
せやな
MVVMとかあるしな

そそ、MVCやMVPってのは、オンラインサービスみたいにデータ管理と画面操作が隔離してる様なコンピュータサービスでなら適してるけど、スマホとかパソコンの中で完結した操作性重視のアプリの設計には適して無いんだよな。

264デフォルトの名無しさん (ワッチョイ 4d9f-VJWb)2018/05/12(土) 12:25:35.08ID:CthSiE230
厳密に言えば readonly と immutable は別
interface で表現出来るのは readonly

265デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 12:57:15.57ID:RvuVG0qm0
残念・・・

bool resultOfGetTimeLimit = int.TryParse(this.timeLimit.Text, out constant.timeLimit);

みたいに定数をフォームから取得できればありがたいんだけどなぁ。
そういう需要ってあんまりないんだろうか。

>>265
何いってるのかわかりません

267デフォルトの名無しさん (ブーイモ MM19-GlfE)2018/05/12(土) 14:55:22.20ID:5EDA9IkjM
それに変数名長すぎ

268デフォルトの名無しさん (ブーイモ MM19-GlfE)2018/05/12(土) 14:55:53.42ID:5EDA9IkjM
しかもbool型に見えない

269デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 17:01:44.57ID:RvuVG0qm0
なんかもうMVCに従って書き直すの不可能な気がしてきた・・・
初めから作り直すほうが早いかも・・・。

270デフォルトの名無しさん (ワッチョイ 23d2-UqMB)2018/05/12(土) 17:16:54.39ID:15xgRckc0
>>269
MVCは基本的にWebだかんね…

271デフォルトの名無しさん (スップ Sd03-Rh4P)2018/05/12(土) 17:19:31.54ID:VhwAlNWxd
設計思想根本から変えるのに小手先の修正で済むわけないよw

272デフォルトの名無しさん (ブーイモ MM19-obfm)2018/05/12(土) 17:32:27.30ID:XEHHkDisM
初心者が勉強のためにゲームプログラムを作るのにMVCなんてナンセンスです。
先ず、何でもいいから動くものを作る。プログラムスタイルはそれからいろんなな本で学べばいい。

273デフォルトの名無しさん (ブーイモ MM19-RhzA)2018/05/12(土) 17:33:18.63ID:oxtjRRByM
まず設計からやり直さないと無理だと思うよ

274デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 18:06:22.88ID:RvuVG0qm0
頭の中がどぁーっとなってきました。
とりあえずゲーム本体は完成したんですが、一部改変しようとしたらかなりの機能がすべてゲーム画面フォームにくっついてるので読みづらいことこの上ないなと。
データ部分を別構造にしたかったんですが、ほぼ句見直しに近い改変であたまがわやになってます。

275デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 18:11:39.59ID:RvuVG0qm0
すんごい読みづらいコードなんだけどこのまま進めていいのかな・・・。
とりあえず力業で進めることは可能なんですけど気持ち悪い。

276デフォルトの名無しさん (ブーイモ MM19-GlfE)2018/05/12(土) 18:12:38.37ID:5EDA9IkjM
>>274
で、でたーオブジェクト指向不出来form.cs全部書込奴w

277デフォルトの名無しさん (ワッチョイ 25b5-4FyP)2018/05/12(土) 18:16:14.33ID:XIsYMxrj0
動くコード書ける奴の方が神だからな。
設計どうのこうのなんて、動くコード書ける様になってから理解すれば良い。
何なら作った後で反省的を挙げながらここはこう言う構造の方が良かったんじゃね?
なんてやるのが一番設計の知識ぐ身につく。

278デフォルトの名無しさん (ブーイモ MM19-obfm)2018/05/12(土) 18:23:40.04ID:XEHHkDisM
自分のプログラムが汚いわかりにくいと思ったのなら、あなたはセンスがあるんだよ。
汚いプログラム書いて平気なプロもいるからね。
後はいろんなサンプルプログラムを検索して読んだらいい。あっ、これがいいとか気付きがあると思う。

279デフォルトの名無しさん (ブーイモ MM19-obfm)2018/05/12(土) 18:26:39.51ID:XEHHkDisM
プログラマの能力を試すには書かせるより読ませるのがいいからね。
人のプログラム読めない奴は進歩ないから。

280デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 18:31:48.49ID:RvuVG0qm0
あれ、根本的なことが分かってないことが分かりました。

B DataHolder
C ゲーム
D スコア記録

CからBのインスタンスを生成
DataHolder dataHolder1=new DataHolder();
すればCのpublic変数aにアクセスするときはdataHolder.a=hoge;とかでいいけど、
DからBのdataHolder1の変数aにアクセスってできるんですか?

CからDにdataHolder1の参照を渡すってこと??

281デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 18:33:40.32ID:RvuVG0qm0
>>276
全部ではないけどほぼご指摘あってます・・・。
本に書いてある小さなプログラムはほとんどform.csに放り込んでたので、そんなものかと思ってた。

282デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 18:34:30.46ID:RvuVG0qm0
>>277
ありがとうございます。
今ようやっと設計の大事さを学習しました。
レベル0から0.01ぐらいには成長できた気がします。

283デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 18:35:15.53ID:RvuVG0qm0
>>280
そもそもこれが分かってなかったから一つのフォーム画面にいろいろ機能を盛り込みすぎたんだと。

284デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 18:37:29.64ID:RvuVG0qm0
>>280

間違いました。

あれ、根本的なことが分かってないことが分かりました。

B DataHolder
C ゲーム
D スコア記録

CからBのインスタンスを生成
DataHolder dataHolder1=new DataHolder();
すればCのpublic変数aにアクセスするときはthis.a=dataHolder.a;とかでいいけど、
DからBのdataHolder1の変数aにアクセスってできるんですか?

CからDにdataHolder1の参照を渡すってこと??

まあなんだよ
今の君に必要なのは鉛筆と紙だ
なんたらチャートのお作法なんぞ知らんでいいから、まずは機能を書き出して丸で囲め
それからどの機能が何処から必要になるかを線引っ張って繋げ
めちゃくちゃ線がごちゃごちゃするだろう?
それをなるべく少ない線で済むように書き直すんだ何回でも

286デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 23:33:51.06ID:RvuVG0qm0
>>285
自分で書いててこんがらがってきますね。
でもまずやってみます。

287デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/12(土) 23:36:15.36ID:RvuVG0qm0
Aフォームのメンバ変数、メソッドを
BCフォームからも使用できるようするにはどうすればいいのでしょう。

Bだけで使用するならB内でAのインスタンス生成→ShowでAフォームを表示させればいいと思うのですが、
Cフォームでも使用するとなると、Cフォームで新たにAのインスタンスを生成するわけにもいかないですよね。

288デフォルトの名無しさん (ワッチョイ cb9a-k37M)2018/05/12(土) 23:44:08.44ID:7v9y2RSd0
>>287
ググるなりして調べた?そろそろ初心者スレでやって
インスタンスを渡せばいいだけなのに

289デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/13(日) 11:04:57.10ID:ySggkKZM0
>>288
すいません。
ググってもよくわからなかったので質問したのですが安易に人に頼りすぎてましたね。

昨夜からわからないところを実際にコードで打ち込んでみて実験重ねて理解できました。
インスタンスの参照渡すって言っても

フィールド渡し
プロパティ渡し
メソッド渡し

と色々方法あるんですね。インスタンスの参照を渡す方法が分かってなかったから一つのクラスに一杯盛り込むことになってたんだと理解できました。

290デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/13(日) 11:06:37.40ID:ySggkKZM0
こういうのってCやってれば常識なんですね。
どこからC#でどこまでCの質問か分からずこちらで何でも聞いていました。

次から初心者板に移動してみます。

でも、みなさんのおかげでだいぶいろいろなことを学べました。
ありがとうございます。

291デフォルトの名無しさん (ワッチョイ 25b5-4FyP)2018/05/13(日) 13:59:35.41ID:23x2pXKw0
〇〇する機能みたいにして、重要だと思う機能ほど大きく書いて相関関係を、ドラマの登場人物の関係図みたいに描いたらなんとなくクラス図の基本が出来上がる。

292デフォルトの名無しさん (ワッチョイ cb96-k37M)2018/05/13(日) 14:41:31.02ID:ySggkKZM0
>>291
ありがとうございます。
クラス図についても勉強してみます。

293デフォルトの名無しさん (ワッチョイ 89fa-9WOx)2018/05/23(水) 19:32:08.48ID:Au5e7VGg0
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

094C5

294デフォルトの名無しさん (ワッチョイ c1f7-Ockd)2018/05/25(金) 17:55:34.06ID:kaJ5fQAg0
あくまでわかりやすくするために分けるのであって、クラスを分けることが目的になってしまってはいけない
余計わからん構造になる可能性があるからね

295デフォルトの名無しさん (ワッチョイ f103-cS+N)2018/05/25(金) 23:51:50.59ID:q1degsPf0
わかりやすくする為にわけるのではない
問題が適切に表現される様に自ずとにわかれるのだ
それが本質的にわかりにくい問題であるならば
わかれた結果わかりにくいのは当然の帰結である
己の能力をわかるまで高めるしかあるまい
わかめ

296デフォルトの名無しさん (ワッチョイ 0181-2S6i)2018/05/26(土) 08:31:56.50ID:Mb7u4pS+0
なんか偉そうなこと言ってる

297デフォルトの名無しさん (ラクッペ MM25-sRwd)2018/05/26(土) 10:29:20.38ID:Qkk0DhfZM
ナイーブすぎ

298デフォルトの名無しさん (ワッチョイ 918d-dk08)2018/05/26(土) 16:16:32.23ID:nVIiMXOl0
桃とアロエのカネボウ

299デフォルトの名無しさん (JP 0Hcd-ftu6)2018/05/28(月) 11:28:40.07ID:vRphuiRoH
ゲームくんのゲームは完成したのだろうか?
そもそもGameManagerクラスみたいなゲームを管理するクラス作ってないのが不思議
ゲーム管理クラス通して設定画面開いたり設定値を取得すればいいのに

300デフォルトの名無しさん (ワッチョイ 49bb-sRwd)2018/05/28(月) 18:36:44.90ID:rzi0Cqlc0
どんだけ連打してんだよ

301デフォルトの名無しさん (ワッチョイ b1d2-Du++)2018/05/29(火) 12:36:07.71ID:0Vp36Os40
C#の勉強を講習会なりでお金を払う方式でレクチャーを受けたいのですが、どういった所が良いでしょうか?
ドットインストールやプロゲートの様な既にある動画を有料で見るのではなく、
欲を言えば1対1で即座に質問できる方式が良いのですが探してみたところ見つけられず、
初心者〜中級者を対象にした評判の良い講習会の様なものがあれば教えて頂けないでしょうか
東京都の渋谷区に住んでいます

302デフォルトの名無しさん (ブーイモ MMcd-DqgS)2018/05/29(火) 13:37:15.19ID:dUPfr/v4M
もったいないね
マンツーマンで一時間5千円〜1万はらって12〜36時間でC#を勉強するくらいなら
入門書を3冊ぐらい買って1週間で何度も読めばいいのに

303デフォルトの名無しさん (ワッチョイ 0b7a-kBfl)2018/05/29(火) 13:45:33.86ID:iBcg+dk20
しかし新しいC#の作法にのっとった良い入門書なんてあるかね?

304デフォルトの名無しさん (ブーイモ MMcd-DqgS)2018/05/29(火) 13:47:56.92ID:dUPfr/v4M
新しい作法にのっとった講師のほうが少ないと思うよ

305デフォルトの名無しさん (ワッチョイ d99a-/e5m)2018/05/29(火) 17:24:32.50ID:0Rufp4wm0
>>301
趣味目的なら金余っているバカだし就職目的なら手に負えないバカ
そんなことで身につかないからパソコン教室にでも通ってろ

306デフォルトの名無しさん (ワッチョイ 39b5-cBpb)2018/05/29(火) 18:15:54.45ID:5CF0lkGw0
パソコン教室じゃ、最高でエクセルの使い方くらいしか教えてくれねーだろ。

>>301
金と時間の無駄って意見に俺も一票。

学校の勉強でもそうだけど、だいたい独習の方が効率が高いよ。
分からないところを質問できる人がいるとはかどるのは確かだと思うけど、
そんなの今はネットで代替できるし(しかもタダ)

子供の習い事みたいにモティベーション不足を金で補うっていうのはありかもしれないけど。

308デフォルトの名無しさん (ワッチョイ 39b5-cBpb)2018/05/29(火) 18:38:51.88ID:5CF0lkGw0
何とか教室や何とかスクールって、出逢いを求めて通うものだろ?

309デフォルトの名無しさん (ワッチョイ 0b7a-kBfl)2018/05/29(火) 18:39:33.21ID:iBcg+dk20
云うてもプログラムって何すんの状態だと独学とか無理やん
まあ講習受けて出来るようになるかったら確率低いが

310デフォルトの名無しさん (ワッチョイ b117-DqgS)2018/05/29(火) 18:51:29.09ID:b3SRNDoC0
>プログラムって何すんの状態だと独学とか無理やん
そんな人はプログラムを触ることはないので問題なし

C#プログラマの求人いきゃいい
マンツーマンでみっちり教えてくれてしかも金ももらえるぞ

312デフォルトの名無しさん (ブーイモ MMcd-hdXW)2018/05/29(火) 21:20:40.23ID:Zh8oS8xcM
>>302
>>307
でもさ、メンターがほしい気持ちは解るよ。独学で始めて今でこそイメージしたアプリは大体作れるようになったけど。

313デフォルトの名無しさん (ワッチョイ c1f7-Ockd)2018/05/29(火) 21:22:39.57ID:tOEtldFh0
教えてくれる人がいなくてもできるぐらいのやる気は持ってないと
教えてくれる人がいてもできない気がする

314デフォルトの名無しさん (アウアウカー Sa95-9DOT)2018/05/29(火) 21:30:02.17ID:+v4yesMaa
独学でやってると自分のやり方が正しいのか確認が出来ない不安があるのはわかる
とにかくプログラムを書くこと、実務を重ねるとその不安は経験値でだんだん消えていく
とにかく経験を積むしかない

315デフォルトの名無しさん (ワッチョイ 8b9a-vxiR)2018/05/29(火) 21:34:05.00ID:T0OOxyUA0
>>313
スレ違いになるけどモチベーション保つのが一番大事だからな
わからなくなるとやる気無くすから誰かに教えてもらいたい、って気持ちはわかるが

316デフォルトの名無しさん (ワッチョイ 8b81-hdXW)2018/05/30(水) 01:10:37.65ID:eBpQDrsU0
メンターってか、語れる仲間がほしい・・
だが人付き合いはめんどくせーw

317デフォルトの名無しさん (ワッチョイ 8be8-vxiR)2018/05/30(水) 01:15:01.88ID:9LsQ0F9t0
だから皆ここへ集うのですね

メンター(導師)ってリアルで言ってる人を見ると笑うけど
意識高い系ですかって
メンターは技術面より精神的な面のよりどころだな
わけわからんけどこの人は正しい導いてくれるって人って思いこむ相手

c#入門にメンターがいる必要はないね
中級以上ならまだしも

入門者には導師より同志が必要かな

メンターなんて初めて聞いた
グルなら知ってる

jai guru deva om

320デフォルトの名無しさん (ブーイモ MM33-hdXW)2018/05/30(水) 12:16:35.68ID:4fnC318RM
>>318
とりあえず中途半端な改行やめたら?

321デフォルトの名無しさん (スップ Sd73-tjGw)2018/05/30(水) 12:53:27.56ID:2+ZWaFznd
メンター初耳って…
そりゃ昔はあまり使わなかったが今の20代なら大学で大方耳にしたことあるんじゃない?

ゲームの初心者指導機能以外で聞いたことない

323デフォルトの名無しさん (ワッチョイ 518a-RIxT)2018/05/30(水) 14:44:19.09ID:zGXcDYuB0
ちょまど神に帰依するべきです

324デフォルトの名無しさん (アメ MMcd-a81N)2018/05/30(水) 15:57:46.68ID:OvgslO8CM
CodeMentorっていう英語のメールニュース取ってるんだが?

325デフォルトの名無しさん (ワッチョイ a9cc-FQx2)2018/05/30(水) 17:39:32.49ID:zRdb0GuK0
ぼくはメンタリストですが、何か?

326デフォルトの名無しさん (スッップ Sd9a-faVr)2018/05/31(木) 18:07:05.50ID:ZDpw5PAMd
引数ありのdelicateでデリゲートをnewする段階で
関数に引数渡しておくことはできますか?

使うときは引数関係なく実行するだけにしたい

delicateじゃなくてもそういう方法があれば教えてほしいです

327デフォルトの名無しさん (ワッチョイ 1dbb-gTal)2018/05/31(木) 18:49:53.75ID:YepGdlhS0
ない

>>326
たとえばこれを、
Action<string> a = Console.Write;

こうするだけと違うの?
Action a = () => Console.Write("Hage");

329デフォルトの名無しさん (アウアウカー Sa5d-SvXf)2018/05/31(木) 20:29:05.32ID:XpaqSCj3a
>>328
普通に考えたらそうなるわな
何がいいたいんやろ

330デフォルトの名無しさん (スッップ Sd9a-faVr)2018/05/31(木) 21:18:37.12ID:ZDpw5PAMd
>>328
わかりづらくてすみません
Actionですね
これでちょっとやってみます
ありがとうございます

331デフォルトの名無しさん (ワッチョイ 3a96-msj4)2018/06/01(金) 00:56:14.18ID:v9HhHj/a0
もしかして delegate? > delicate

332デフォルトの名無しさん (ワッチョイ d567-AJiq)2018/06/01(金) 01:50:30.82ID:Kjs/aFNB0
痒くなってきた

333デフォルトの名無しさん (ワッチョイ fa23-i+D0)2018/06/02(土) 01:19:12.37ID:te+Rl8LG0
もうふらっとと統合しろよ

334デフォルトの名無しさん (ワッチョイ d69a-msj4)2018/06/02(土) 14:30:29.50ID:sz40x79U0
隔離用のスレを本スレに統合って斬新だな

デリケートって結局なんねことなんや

336デフォルトの名無しさん (ワッチョイ 7ad2-OufX)2018/06/05(火) 23:17:30.29ID:vNq9k7GF0
>>335
関数ポインタ

337デフォルトの名無しさん (ワッチョイ f1c3-HHL/)2018/06/06(水) 11:05:26.21ID:kgKhbEIB0
わかるように説明しろや!

338デフォルトの名無しさん (ワッチョイ 018a-75sl)2018/06/06(水) 11:13:20.04ID:Glbjy1Oa0
赤ん坊が庖丁持ったからと言って何かを生み出せるわけでは無し

>>337
「〜とは何か」って哲学論争はたぶん時間の無駄w
実際の使われ方を見て何に使えるかを理解するのがいいよ

禅問答みたいに聞こえるかもしれんが、デリゲートのメリットは
デリゲート型の変数を作れること。

デリゲートの使えない従来の言語は、コードの中にdoubleのリテラルしか書けず
doubleの変数が作れないようなものだった

340デフォルトの名無しさん (ワッチョイ cd2b-faVr)2018/06/06(水) 22:58:53.30ID:x4kBoo940
>>330です
Actionでできました!ありがとうございます。
クロージャー(?)っていうんですかね?
関数の外の値を引数で渡さずに関数内で使うやり方が知りたかったんです。

341デフォルトの名無しさん (ワッチョイ 09c3-Ihiv)2018/06/07(木) 21:28:18.26ID:HziEaPXa0
デリゲート型の変数?????
デリゲート型にすると何かいいことあるのか?
デリゲート型にすると何がいいんだ??????何が使えるんだ?????

342デフォルトの名無しさん (ワッチョイ e181-fzvG)2018/06/07(木) 21:34:22.85ID:9x16GWRr0

343デフォルトの名無しさん (アウアウカー Sa2d-SmnY)2018/06/07(木) 21:34:36.55ID:uqa5AZHUa
あーこういうの出来たら便利なのにー
って思ったら調べて使えばいいよ
使わんと頭入らないし

344デフォルトの名無しさん (ワッチョイ b1b5-pwhw)2018/06/07(木) 21:41:39.12ID:muNvrUxm0
デリゲート、デリゲートって、おまえら
青空球児・好児かよ。

>>341
そうじゃなくて、上に書いたように、もしdoubleのリテラルしかコード中に書けなくて
doubleの変数が使えなかったらどう困るか考えて

346デフォルトの名無しさん (ワッチョイ 09c3-Ihiv)2018/06/07(木) 23:51:09.11ID:HziEaPXa0
図にしてくれ

347デフォルトの名無しさん (ワッチョイ ebd3-DGJA)2018/06/08(金) 00:56:57.47ID:057UgUqy0
数値を格納する変数は int 型
文字を格納する変数は string 型
メソッドを格納する変数が デリゲート型

348デフォルトの名無しさん (ワッチョイ 09c3-Ihiv)2018/06/08(金) 01:01:01.34ID:7BdVtDm70
なんで
メソッドを
格納する
必要が
あるんだよ

だから、どうして実数を変数に入れる必要があるの?
入るのはメソッド自身ではなくその参照だけどね

350デフォルトの名無しさん (スップ Sd73-x2t7)2018/06/08(金) 07:41:09.77ID:V2PqzfzLd
>>348
自分の場合はある関数にある処理を追加したい場合とか

ある処理は呼び出しもとによって変わったり

351デフォルトの名無しさん (ワッチョイ eb98-3KXI)2018/06/08(金) 07:54:30.62ID:VEbWNRWu0
>>350
ピンとこない

処理を追加したいならメソッド自体に書くか、overloadとかを考えちゃう
呼び出し元で処理変えるなら引数で、みたいな

352デフォルトの名無しさん (アウアウカー Sa2d-SmnY)2018/06/08(金) 07:59:48.51ID:FRxZCKgGa
メソッドを引数にして渡してあげられると、実行する側は何をするか気にしないでいいじゃない

353デフォルトの名無しさん (ブーイモ MM05-OWkY)2018/06/08(金) 08:15:18.51ID:H4l6t16fM
なぜデリゲートがあるか?
君も大人になったらわかるよ。
ママ、なんでボクはおチンチン付いてるの?
この疑問、時間が解決したろう。

354デフォルトの名無しさん (スップ Sd73-x2t7)2018/06/08(金) 08:30:05.85ID:V2PqzfzLd
>>351
今までの処理は極力変えたくない

引数にAction渡して関数はそれを実行
引数のActionはデフォルトにnullをいれておく
nullだったら処理しないようにすれば呼び出し元は必ずしも変更する必要がなくなる

なんでこうするかってテストするのがめんどいからとか色々

>>354
さっぱりわからない

処理変えたくないメソッド実行
 ↓
その結果次第で別のメソッド実行

何故これで済まないの?

それでも済むよ

例えば繰り返し処理
forなくても書けるだろ。だからforなんて要らないって言ってるようなもん
なくてもプログラミングできるが、あれば楽できる

済まないw

>>355-356は-π/2〜π/2の範囲の実数の数だけ、それに対応する
sinの値を返すメソッドを用意すれば汎用的なsin関数なんかなくて済むと言ってるのと同じ。

だから、どうしてdoubleの変数が必要なのかと。

っていうかこの質問者、本当は分かってて質問してる変な奴だろうね8割方w
たぶん2chの他の板によくいる、サヨクを演じて自作自演やってる頭のおかしいネトウヨと似たようなメンタルの持主なんだろうと想像

358デフォルトの名無しさん (スップ Sd73-x2t7)2018/06/08(金) 13:02:11.32ID:V2PqzfzLd
>>355
voidだったら"その結果"ってどう受けとる?

359デフォルトの名無しさん (ワッチョイ 09c3-Ihiv)2018/06/08(金) 13:04:11.27ID:7BdVtDm70
図にしろ・・・・・・・・・ッッツ!!!

360デフォルトの名無しさん (ワッチョイ 01bb-XZeD)2018/06/08(金) 13:14:18.16ID:0qxXZgjd0
アウアウアーの見本市

361デフォルトの名無しさん (ワッチョイ 118a-LHz9)2018/06/08(金) 19:39:57.11ID:tyJ42miy0
なんか揚げ足取りしようとして引っ込みつかなくなってる感

362デフォルトの名無しさん (ワッチョイ a98a-Duqg)2018/06/08(金) 19:42:51.67ID:sQqhvtlW0

363デフォルトの名無しさん (ワッチョイ 09c3-Ihiv)2018/06/08(金) 20:48:10.00ID:7BdVtDm70
つまりメソッドにラムダ式を渡して処理した結果を使ってメソッドの処理をさせるのか?

364デフォルトの名無しさん (アウアウカー Sa2d-SmnY)2018/06/08(金) 20:53:34.63ID:KYYD9BLCa
ごめん。ちょっと何言ってるかわかんない

365デフォルトの名無しさん (ワッチョイ ebe8-LHz9)2018/06/08(金) 21:00:06.62ID:E4qbFGXm0
結局デリゲートの非同期処理BeginInvokeを使用するってのが
従来大きな役割だったんじゃない?
でも今Taskクラスできたから必要なくなった

つまりクラス間通信。

367デフォルトの名無しさん (ブーイモ MM33-EqDK)2018/06/09(土) 12:11:29.33ID:VOfp/P7BM
デリゲート(委譲)って名前が悪いのかな
メソッドを他に渡しておいて適宜実行してもらうから委譲ともいえるけどそれは機能の一面しか表してない
MVPの人も過去にデリゲートいらねえって言ってたけど理解力が足りてない

c#は結構いろんなものがオブジェクトだけどメソッドはオブジェクトじゃない
デリゲートを使えばメソッドをオブジェクト(変数)みたいな感じで扱える
普通の変数とは違って+=で複数のデリゲートをいれることができるのが特徴的

コールバックとして使えるしeventはデリゲートをもとに作られてるので基本的な使用範囲は広い

>>367
真面目な話、そういう衒学趣味の文系学生みたいな
文章が一番人を混乱させる。

「c#は結構いろんなものがオブジェクトだけどメソッドはオブジェクトじゃない 」って何やねんw

関数ポインタが分かればデリゲートがどんなものかはその類推でだいたいイメージできる。
機械語をやった経験があれば、関数ポインタなんか、なんだこんなのただのcall命令の
アドレッシングモードのことかってすぐわかる

でも重要なのは、「デリゲートとは何か」なんか分からなくてもデリゲートは使えるってこと。
「何か」なんか理解しなくていい。それを使って何が出来るかだけ理解すればいい。

そう。ホビープログラマならね

370デフォルトの名無しさん (ワッチョイ b167-LxN6)2018/06/09(土) 13:02:40.19ID:Cz/ni8by0
ホビーじゃないプログラマ「c#は結構いろんなものがオブジェクトだけどメソッドはオブジェクトじゃない 」

371デフォルトの名無しさん (ワッチョイ b1b5-pwhw)2018/06/09(土) 13:05:05.70ID:oQlrsJoz0
それは無能プログラマ

372デフォルトの名無しさん (ワッチョイ e181-fzvG)2018/06/09(土) 13:31:49.04ID:kvLDmgw/0
>>370
この文何か変か?
メソッドはobject型から派生したクラスではないっていう当たり前のことを言ってるだけだろ

373デフォルトの名無しさん (ブーイモ MM33-EqDK)2018/06/09(土) 13:40:09.88ID:VOfp/P7BM
>>368
他の言語ではメソッドもオブジェクトとして扱えるものもある
c#はメソッドはオブジェクトじゃない

その類推が間違ってるからダメなんだけどなあ…
デリゲートは関数ポインタじゃない
callでもアドレッシングとも全然無関係だわ

機能的には似たようなものに見えるけど全然別物だ

374デフォルトの名無しさん (ワッチョイ d19f-NuDx)2018/06/09(土) 13:51:37.94ID:MhKfyDgC0
>>368
文系学生もプログラミングする時代になったって事だよ。

> 「何か」なんか理解しなくていい。それを使って何が出来るかだけ理解すればいい。
これな。最近の「○○って何ですか」っていう奴らは何なんだ?
お前らだって、日本語の全ての漢字を読めるわけでもないだろうに。

「デリゲート」は失敗作だから新言語を作る気がないのなら理解する必要はない。
あれはthis+関数ポインタで、一番近いのはC++の「メンバ関数ポインタ」だが、
無駄に「クラス」「関数ポインタ」「ラムダ」を抽象化しようとしておかしくなってる。
結局ラムダを導入してしまったし、当初の方針は間違いだと認められたことになる。
今後「デリゲート」を採用する言語はないだろうよ。

375デフォルトの名無しさん (ワッチョイ 8917-LHz9)2018/06/09(土) 13:57:35.17ID:1jan2CXL0
.NET Core で過去の遺産が全て無くなるかと思ったけどそんなことはなかったぜ

376デフォルトの名無しさん (ブーイモ MM33-EqDK)2018/06/09(土) 13:59:17.43ID:VOfp/P7BM
>>374
誤解したままで最後までつづけるんか?

377デフォルトの名無しさん (ブーイモ MM33-EqDK)2018/06/09(土) 14:07:54.32ID:VOfp/P7BM
もともと関数がオブジェクトである言語はデリゲートを導入するメリットは少ない
c#にデリゲートが無かったらjavaの様に専用のインターフェイスを継承した無駄なクラスを作らなければならなかった

ActionやFuncやラムダがあればデリゲートが必要なかったと言ってるのは何かを誤解してる

378デフォルトの名無しさん (ワッチョイ d19f-NuDx)2018/06/09(土) 14:19:40.58ID:MhKfyDgC0
>>376
理解してなくても使えれば問題ないんだよ。
お前だってPCの起動方法(BIOSとか)知らなくてもPC使ってるだろ。
MSIL読めなくてもC#使えるだろ。
CPUの例外/割り込み機構を知らなくてもtry/catch使えるだろ。
一般プログラマにとってはプログラミング言語は道具であって、それ以上でも以下でもない。
新言語を作りたいのなら学術的に正確に理解することが必要だが、普通の人はそうではない。

それ以前にC#が死ぬ可能性を考えた方がいい。
C#専用の「デリゲート」の理解はつぶしが利かない。
他言語にもある「ラムダ」の理解のほうが重要だ。

デリゲートは「クラス」と「関数ポインタ+バインド」で対応した方が良かったと思う。
C#には未だに「バインド」がない=デリゲートでの対応になるが、
実際、後付でバインドすることが出来ないだけ不便だろ。

>>377
Javaみたいなそもそも「関数ポインタ」がなかった糞言語と比較したら駄目だよ。
Cには関数ポインタはあった。
C#はそれを「デリゲート」として拡張した。
他言語は「第一級オブジェクト」として拡張した。
今のところ、後者の方が正解っぽいだろ。
(俺自身にはイマイチ「第一級オブジェクト」である利点/必然性は見えないのだが)

379デフォルトの名無しさん (ブーイモ MM33-EqDK)2018/06/09(土) 14:24:48.97ID:VOfp/P7BM
関数がもしobjectクラスから派生したオブジェクトになるとメンバーを持てることになるんだけど
A.B().ToString()のToStringが
B()というメソッド自体に係ってるのか
B()の返した戻り値にかかってるのかがよくわからないことになる

Javaってstaticメソッドを関数インターフェースに渡すときは最適化してくれんの?

1+2*3
こんな計算式があったときに1+2をしてから3かけて答えは9
こうはならないだろ。それは優先順位を定めてるから。(1+2)*3のようにかけば期待通りになる

それと同じで関数がオブジェクトでメンバー持ててもそれに合わせた処理の優先順位を定めればいいだけ

382デフォルトの名無しさん (ブーイモ MM33-EqDK)2018/06/09(土) 14:32:21.62ID:VOfp/P7BM
理解しないのと誤解してるのではわかっていないという点では同じだけど
理解してない場合は理解していない前提で行動できる
一方の誤解してる場合は悲惨だ

383デフォルトの名無しさん (ワッチョイ d19f-NuDx)2018/06/09(土) 14:33:21.85ID:MhKfyDgC0
>>379
お前は右結合と左結合を勉強しろ

384デフォルトの名無しさん (ブーイモ MM33-EqDK)2018/06/09(土) 14:35:46.47ID:VOfp/P7BM
>>383
じゃあどういう風に記述したらオブジェクトである関数のプロパティやメソッドにアクセスできるかここに書いてもらいたいが

385デフォルトの名無しさん (ワッチョイ d19f-NuDx)2018/06/09(土) 14:36:40.18ID:MhKfyDgC0
>>382
お前は日本語を勉強しろ。

俺達は「理解しなくていい」=「完全に理解してはいないという自覚の元で使え」と言っているのであって、
それは「誤解」には繋がらない。
「誤解」ってのは、「理解してない馬鹿が理解しているつもりになっている」事を言う。
例えば、右結合と左結合を知らないお前みたいな馬鹿のことだ。

386デフォルトの名無しさん (ワッチョイ d19f-NuDx)2018/06/09(土) 14:39:35.51ID:MhKfyDgC0
>>384
意味不明。何を書いて欲しいのか分からん。

> A.B().ToString()
これはAのメソッドB()を呼んでその戻り値に対してToString()を呼ぶ。
少なくともJavaScriptではそう。

で、何をしたい場合の記述が欲しいんだ?

387デフォルトの名無しさん (ブーイモ MM33-EqDK)2018/06/09(土) 14:48:14.18ID:VOfp/P7BM
>>386
思い違いをしていた
A.B().ToString()とA.B.ToString()で区別できる
クラスにフィールドとメソッドを同名にできないから区別できる
右結合と左結合は関係なかったけど

388デフォルトの名無しさん (ワッチョイ d19f-NuDx)2018/06/09(土) 14:54:44.86ID:MhKfyDgC0
>>384
エスパーすると、言いたいことは分かった。
お前は「第一級オブジェクト」も理解しておらず、「誤解」している。ちゃんと勉強しろ。

「第一級オブジェクト」ってのは、通常のオブジェクトと関数オブジェクトを区別しない。
だから書式は当然同じだし、正しく理解していればこの点が疑問になりようもない。


>>387
なら日本語を勉強しろ
> B()というメソッド自体に係ってるのか
これで何を表現しようとしたか言ってみろ。それは
> A.B.ToString()
ではないだろ。

389デフォルトの名無しさん (ブーイモ MM33-EqDK)2018/06/09(土) 15:04:32.47ID:VOfp/P7BM
>>385
誤解は悲惨
delegateを削除しろと言って削除してみたらActionもFuncも使えませんでした
eventも使えませんでした

もちろん言語レベルで変数としてのデリゲートの代わりになるものもありません

>>388
> > A.B.ToString()
> ではないだろ。
いやいやそこはそのままであってるし普通にそう理解できないのか?
A.B.ToString()が正解
逆にどう勘違いしたのか聞きたい

390デフォルトの名無しさん (ブーイモ MM33-EqDK)2018/06/09(土) 15:06:54.66ID:VOfp/P7BM
本当にC#からdelegateを削除しろって言ってるんだったらどこかおかしい
何にも理解してない

プロパティなんて関数オブジェクトみたいなもんだな
プロパティに引数渡してぇ

392デフォルトの名無しさん (ブーイモ MM33-EqDK)2018/06/09(土) 15:07:41.71ID:VOfp/P7BM
>>391
っVB.net

393デフォルトの名無しさん (ワッチョイ d19f-NuDx)2018/06/09(土) 15:18:29.92ID:MhKfyDgC0
>>389
日本語で言うと、
> B()というメソッド自体に係ってるのか
と理解したって事だよ。

>>390
お前がな。
他言語にはdelegateなんて無いが、何も問題ないだろ。
あれ?って思えないのか?
(今すぐ廃止していいかどうかはまた別だが)

>>387
> クラスにフィールドとメソッドを同名にできないから区別できる
これは先見の明があったかもな。
関数を「第一級オブジェクト」に昇格させるのに文法的制約がない。
Javaに対しての利点にはなり、生き残る道かも。

394デフォルトの名無しさん (ワッチョイ d19f-NuDx)2018/06/09(土) 15:25:50.19ID:MhKfyDgC0
>>391
JavaScriptではオーバーライドすれば出来る。
フィールド/メソッドの区別がなく、名前だけだから。
C#的には派生クラスで「プロパティ」「を同名の「メソッド」でオーバーライドだが、
これが型チェック的に無理なのか?
しかし名前の重複を許していないのだから、今後の拡張は可能のはずだが。

JavaScriptのデタラメ文法はどうかという奴もいるが、慣れてしまうと、
型あり言語の「型が違うだけ」で色々制約されるのも相当な糞だと気づけるぞ。
型検査はエラーではなく警告に留めるべきで、
プログラマがOKすれば型が不一致でも通してくれた方がマジで楽。
一番近いのはCってことになってしまうが。

395デフォルトの名無しさん (ワッチョイ eb81-XZeD)2018/06/09(土) 15:29:15.96ID:a58WBe6r0
ア土曜の昼間からウアウアーの見本市

396デフォルトの名無しさん (ワッチョイ eb81-XZeD)2018/06/09(土) 15:29:59.09ID:a58WBe6r0
友人ゼロのキモオタオッサンは他にやることないのかい

397デフォルトの名無しさん (ワッチョイ e181-fzvG)2018/06/09(土) 16:02:02.79ID:kvLDmgw/0
他の言語はともかくC#はGUIのイベントの管理にデリゲートのマルチキャスト使ってるんだから無かったら困るだろ

だからメソッドがオブジェクトかどうかなんて話はただの衒学趣味的な無益な話w
そんな話は「ではオブジェクトって何?」って不毛な議論になるだけでしょw
初心者がデリゲートを理解して使えるようになるための屁の役にも立たないよw

>>397
素直に考えればデリゲート自身にマルチキャストの機能を持たせるんじゃなく、
シングルキャストのデリゲートのリストとして実装する方法もあったはず

なんか理由があって「こういう」風になってるんだろうが俺には積極的理由はよくわからんね。
ジェネリックをデリゲートで制約できないことと関係があるのかもしれないが

なまじマルチキャストなんて機能があるせいで何だかわかりづらくなってる面は否定できないと思う

399デフォルトの名無しさん (ワッチョイ d19f-NuDx)2018/06/09(土) 17:08:52.90ID:MhKfyDgC0
>>397
GUIに関してはdelegateの導入は不要だったで決着してる。
GUIにはOOPよりMVCの方が数段マシで、WPFもそうなってるだろ。
onclickにthisがバインドされている意味がそもそも無いんだよ。

決着が付いてないのはデータフロープログラミングをするときだ。
JavaScriptではObject.observeの導入が計画され、一部フィーバーしていたが、ポシャった。
https://www.html5rocks.com/ja/tutorials/es7/observe/
以下によると、非同期なのが使えなかったらしい。
http://tech.nitoyon.com/ja/blog/2015/11/18/death-of-oo/
JavaScriptの非同期は最早宗教だが、
はっきり言って無駄に非同期すぎて、余計にやりにくくなっているケースもある。これもそう。

C#は独自eventを実装出来るし、そのためにdelegateが用意されているから、
「データフロープログラミング」を文法的にサポートしているとは言える。
ただ、それ以前に、「データフロープログラミング」が主流ではないが。
お前らも実際、やってないだろ。
関数型の次に来るって事もなさそうだし。

とはいえ、上記の通り、今のJavaScriptではデータフロープログラミングは面倒だし、
getter/setterを頑なに拒むC++ではものすごくウザくなって事実上無理だ。
次の波が来ればevent/delegateも再評価されるかもしれん。

400デフォルトの名無しさん (ワッチョイ d19f-NuDx)2018/06/09(土) 17:12:21.10ID:MhKfyDgC0
>>398
> シングルキャストのデリゲートのリストとして実装する方法もあったはず
同感。

401デフォルトの名無しさん (ワッチョイ 139d-yf7r)2018/06/09(土) 17:15:16.30ID:bMpGWGQ30
理解してなくても問題なく使えるからって、それを理解しようとするのは悪い事じゃないけど
もとの発端はなんだったんだこれ

デリケートじゃないか?w

403デフォルトの名無しさん (ワッチョイ 8917-LHz9)2018/06/09(土) 17:32:16.71ID:1jan2CXL0
>>401
>>326 のデリケートが事の発端

404デフォルトの名無しさん (ブーイモ MM33-EqDK)2018/06/09(土) 17:43:13.42ID:VOfp/P7BM
誰かさんの大好きなLinqはdelegateの塊なんだけどdelegateなくなっていいのかな
他の実装ではdelegate使ってないけど今の.netではデリゲートで実装されている

405デフォルトの名無しさん (ブーイモ MMeb-OWkY)2018/06/09(土) 18:48:11.73ID:0oARoVrcM
デリゲートにラムダ式にLinq大好きだ!
これ無くして生きてけない!
チームの誰も読めないから放置されて我が道を歩んでいる。
生産性と品質が高いから客には好評です。

406デフォルトの名無しさん (ワッチョイ e1cc-G+KY)2018/06/09(土) 20:25:40.95ID:7jH+OfQ/0
>>405
チームの誰もが読めないという事は保守性に欠けると言う事ですね

407デフォルトの名無しさん (ブーイモ MMeb-OWkY)2018/06/09(土) 20:33:41.95ID:0oARoVrcM
そうだね。
でも、Linqバリバリ使ったらそうなるよね。
みんなの勉強しろよってこと。

408デフォルトの名無しさん (ワッチョイ 2923-29AL)2018/06/09(土) 20:39:16.25ID:h8CnrujR0
Linqが分からないってのはラムダ式を理解できないってことなの?

行列計算ライブラリ書いてるときに
おれ掛け算わからんからおれに合わせて全部足し算で実装して
おれはいまお前の案件に関わってないけど将来そのライブラリメンテするかもしれんからヨロシクな
とか言う同僚がいたらこいち頭おかしいのかなって思うじゃん
いやいや掛け算を勉強してからっていうか最低限の単位を取ってからメンテしろよってなるじゃん普通
これがLinqやλやデザインパターンになると当たり前のように底辺至上主義がまかり通る不思議な業界

410デフォルトの名無しさん (ワッチョイ e181-fzvG)2018/06/09(土) 20:47:26.87ID:kvLDmgw/0
LINQはC#にしかないからまだわかるけどラムダ式はいまどきの言語ならほぼ実装してるから知ってないとまずいよね

411デフォルトの名無しさん (ワッチョイ d19f-5xV6)2018/06/09(土) 20:50:03.81ID:2splWvty0
linqてC#にしかないのか

Linqにも類似品あるよ
Javaのstreamやpythonのリスト内包表記など
というかそもそも単なるiterator patternでしかないからC#が起源ってわけでもない

413デフォルトの名無しさん (ワッチョイ ebc9-LHz9)2018/06/09(土) 21:00:28.55ID:4y2IVpvw0
Linq以前にIEnumerableの意味が解らない人がいるからどうしようもない
.NET2.0から順に教えろってことかよ・・・

414デフォルトの名無しさん (ワッチョイ d19f-NuDx)2018/06/09(土) 21:03:28.98ID:MhKfyDgC0
>>409
と、底辺至上主義がまかり通る所の意識高い系が申しております

>>412
どう見てもSQLが起源だろ

>>414
クエリ形式の文法はSQLが起源かもしれんが
実装はSQLとは全く関係がないよ
C#などの実装はまさしくiterator patternだけど
SQLの実装をiterator patternでやろうとしたら遅すぎる

そもそも書けない奴は論外として、使うなってのは同意できる
簡潔に判りやすいラムダ書いてくれりゃいいが、わざとやってんじゃねってぐらい難読化する奴いるからな
正規表現、SQ、掲示板の長文も同じだな

417デフォルトの名無しさん (ブーイモ MMeb-OWkY)2018/06/09(土) 21:12:52.02ID:0oARoVrcM
Linqに限らず最近のソフトウェア技術は高度で生産性も高くなってる。
昔も人によって生産性に差が出たが、最近だと理解出来るか出来ないか?ぐらいの圧倒的な格差だ。
理由出来ない人は辞めればいい。
生産性が飛躍的に上がってるので理解出来る奴だけで間に合うよ。

418デフォルトの名無しさん (アウアウカー Sa2d-SmnY)2018/06/09(土) 21:17:22.22ID:ekScYlKMa
自称プログラマー(趣味)ならともかく職業プログラマーでLinqすら理解出来ないやついんの?

419デフォルトの名無しさん (ワッチョイ e1cc-G+KY)2018/06/09(土) 21:23:52.36ID:7jH+OfQ/0
Linqを十分に理解できても、可読性や保守性を大事にする人は
多少冗長でも他人が理解しやすい易しいコードを書くんじゃないの?

420デフォルトの名無しさん (ワッチョイ d19f-5xV6)2018/06/09(土) 21:25:54.76ID:2splWvty0
Linqてそんな可読性悪くないと思うけどなぁ
コメント書いときゃ何となくわかるべ

421デフォルトの名無しさん (ワッチョイ 0b9f-SAfv)2018/06/09(土) 21:26:49.03ID:v7FNkyrH0
>>417
出来ない人にも生活あるから辞めろとは言えないけどチームは分けて欲しい
使えて使いたい人がどんどん流出して出来ない人だけの会社になると悲惨

422デフォルトの名無しさん (ブーイモ MMeb-OWkY)2018/06/09(土) 21:30:02.70ID:0oARoVrcM
>>419
圧倒的に生産性が高かったらどうなの。
最近の案件は短納期になってるし、昔のコボルみたいに何十年もメンテして使うシステムも少ないと思う。

423デフォルトの名無しさん (ラクッペ MM7d-XZeD)2018/06/09(土) 21:32:37.20ID:VrCE6n6GM
ゴミのようなやりとり
いや、ゴミに失礼だな

424デフォルトの名無しさん (ブーイモ MMeb-OWkY)2018/06/09(土) 21:33:12.66ID:0oARoVrcM
LinqよりSQLの方が難しいぞ。
SQLは難しいから使うなって言うのか?

425デフォルトの名無しさん (スップ Sd33-YtUU)2018/06/09(土) 21:35:27.62ID:ZDY9COOVd
業務でいじるレベルのコードなんて知らないものでもグーグル先生いりゃ大抵なんとかならない?
linqも初めて見たときはとっつきにくくてわかりづらかったけど使ってりゃ嫌でも覚えちゃうよ
つっても当然すべてを使いこなしてるわけじゃなくて自分に必要な範囲のみ理解してる程度
業界によってだいぶ差はありそうだけど

426デフォルトの名無しさん (ワッチョイ e1cc-G+KY)2018/06/09(土) 21:35:56.65ID:7jH+OfQ/0
生産性は保守運用まで含めてトータルで考えるべきで
保守性が損なわれればトータルコストも引き上がる

427デフォルトの名無しさん (ブーイモ MMeb-OWkY)2018/06/09(土) 21:36:22.73ID:0oARoVrcM
>>423
あんたの書き込みがゴミだから。
オレらのやりとりがゴミだって言うなら、そう感じさせる様な高踏的な書き込み頼む。

428デフォルトの名無しさん (ワッチョイ d1d2-m221)2018/06/09(土) 21:51:21.02ID:lCnNI9uz0
保守性の低い Linq のコードってたとえばどんなの?
自分は他人のを読む場合でも特に困ったことないけどな〜。

429デフォルトの名無しさん (ワッチョイ d19f-NuDx)2018/06/09(土) 22:13:44.82ID:MhKfyDgC0
>>415
イテレータの起源なら、C++(1983)は最初から持ってた。
C++のOOPはSimula発で、そっちが持ってたかは知らん。

いずれにしても、Java発の技術は存在しないぞ。
C#はLinqと、多分asyncもか?頑張ってる方だと思うが。
(あとちょっと違うがIDEのインテリセンスもC#が初のはず)

430デフォルトの名無しさん (ワッチョイ eb81-XZeD)2018/06/09(土) 22:18:01.39ID:a58WBe6r0
クソカスの分際で人間様に話しかけてくるな
クソカスが引っ付くわ

431デフォルトの名無しさん (ワッチョイ 13b3-Chll)2018/06/09(土) 22:36:24.46ID:d5fCz/GJ0
>>429
> (あとちょっと違うがIDEのインテリセンスもC#が初のはず)
インテリセンスはVB5.0の時代からあるんだが...

432デフォルトの名無しさん (ワッチョイ d19f-NuDx)2018/06/09(土) 22:41:24.00ID:MhKfyDgC0
>>425
> 自分に必要な範囲のみ理解してる程度
多分これくらいが適正で、これなら大して問題にならないんだよ。

問題は、意識高い系馬鹿の>>417
> 昔も人によって生産性に差が出たが、最近だと理解出来るか出来ないか?ぐらいの圧倒的な格差だ。
みたいな、おかしな奴がいることだよ。

Linq自体でそんなに格差が出来るはずもない。
仮に、Linq部分を関数呼び出しに変えたところで、本体のコード構造は全く変わらないだろ。
便利機能だが、その程度でしかないんだよ。
逆に言うと、制御構造の違いで勝負出来ない、
新文法が読めることしか威張れない馬鹿がそこに無駄に拘っている気がする。

433デフォルトの名無しさん (ワッチョイ 497f-LHz9)2018/06/09(土) 23:00:28.94ID:0BGOlb7W0
linq で Where と OrderBy 使ったところをチームリーダーから For と List<T>.Sort() に書き換えられたことはある。理由は「他と違うから」
他と書き方を合わせておくのが大事なのはわかるけど…

434デフォルトの名無しさん (ワッチョイ 8917-LHz9)2018/06/09(土) 23:10:59.82ID:1jan2CXL0
コーディング規約があるのならそれに合わせろよ

435デフォルトの名無しさん (ワッチョイ 0b9f-SAfv)2018/06/09(土) 23:45:05.02ID:v7FNkyrH0
>>433
他と違うからって理由で直すのは良くないと思うな
本来関係ないはずのクラスの間に存在しないはずの関係性を作りこんでしまう
その結果、必要ない作業や、縛りを生み出して生産性を下げることになる
俺が経験したものだと
すでに書き終えたforeachをすべてforに統一
テスト済のDAO、DTOのsnake_caseを他レイヤに合わせてCamelCaseに統一
この2つが最高にバカバカしかった

カプセル化を知らない人が少なくないのかな
「publicメンバーはクラス間のコミュニケーション円滑化のために規約として形式化しましょう」ぐらいならまあ理解できるが
「Linqはやめてループにしてくれ」なんて内部実装の形式にまで踏み込んでくるなよな
クラススコープで違和感なければそれでいいだろ

437デフォルトの名無しさん (ワッチョイ d19f-NuDx)2018/06/09(土) 23:59:33.29ID:MhKfyDgC0
>>433
俺はC#erではないが…。

単発のLinqも認めてもらえないのならご愁傷様。あれは普通に読める範囲だ。
見た目、Linq自体にはサブクエリ無しか?ならそんな酷いことにはならないはずだが、
例えばSQLでは再帰呼び出しが出来たりして、
マンデルブロだパズル解くだとか、おかしな事になってる。
https://www.sqlite.org/lang_with.html
Linqでどこまで出来るか知らんが、こんなん書かれたら殴りたくもなるだろ。

基本的には関数呼び出しにしてその先は隠蔽、
つまりLinq実装かFor/List/Sort実装かは上位からは見えない、ってことにすれば関係ないはずだ。
ただ、その場にベタで「何を選択しているか」が書かれている方が読みやすいことは多々あり、
Linqもその局面で使われているとは思うので、全面書き直しだと余計に読みにくくなるとも思うが。

438デフォルトの名無しさん (ワッチョイ a98a-Duqg)2018/06/10(日) 00:07:12.73ID:wNo6w9bX0
LINQってCube扱えるんだっけ?

>>436
どうでもいい議論だけど、一言。
カプセル化っていうのは「メソッドの中は可読性考えなくてよい」って意味じゃないよw

LINQ(というかクエリ式)嫌いの大半は批判してる人間がそもそも理解してないだけだと思うが一理はある。
それは使い方によっては複数の処理が有機的につながった、適切に分割統治されてない、
可読性の低いコードになるからだ

実際、筋の悪いプログラマが好む100行オーバーのメソッドに近い物になりうる

>>439
どう読んだら「メソッドの中の可読性は考えなくていいよ」になるんだろ
外部の都合を内部実装にまで持ち込むな
クラス内での可読性が十分ならそれでいいだろ
って主張な
正しく動いて綺麗なコードを他のクラスの都合で書き直す
俺はこれある意味カプセル化破壊と言っていいと思う
もちろん本来の意味でのカプセル化とは違うのはわかってる

>>440
どう読んでもそうとしか読めません
自分で自分の書いてあることが理解できないのかw

「メソッドの中は可読性考えなくてよい」と言っているのでなければ
>>436の1行目と4行目はつながらない。

カプセル化を理解していてもメソッドの中の可読性、例えば
「Linqはやめてループにしてくれ」と言うことはあり得る。

なぜなら、カプセル化とは「メソッドの中の可読性は考えなくていいよ」という意味ではないからだ

>>441
いきなり訂正

× >>436の1行目と4行目はつながらない。
>>436の1行目と3行目はつながらない。

443デフォルトの名無しさん (ワッチョイ 09c3-Ihiv)2018/06/10(日) 05:17:43.99ID:4PiVyKtW0
ランダムな指定回数オブジェクトを作成する方法ないですか
7時まで待つ

444デフォルトの名無しさん (ワッチョイ 2923-29AL)2018/06/10(日) 06:46:45.50ID:Kj8YEAmO0
>>441
横からだけど、そう思えるのはお前さんがLinq使ったら可読性悪くなるって決めつけてるからじゃないの?

445デフォルトの名無しさん (ワッチョイ 13d2-fSec)2018/06/10(日) 06:46:55.66ID:CFkipoua0
Random

446デフォルトの名無しさん (ワッチョイ 13b3-Chll)2018/06/10(日) 08:32:28.14ID:RI4Vnlqm0
>>435
コーディング規約を読んでないお前か
コーディング規約を定めてないお前の組織がバカなだけ

447デフォルトの名無しさん (ワッチョイ e181-fzvG)2018/06/10(日) 08:41:39.38ID:HMOXZXoS0
この話いつまでやるの?

>>446
コーディング規約がバカなんだよ

就職できるように頑張れ

450デフォルトの名無しさん (ワッチョイ 13e3-LHz9)2018/06/10(日) 09:35:53.15ID:0WF1gq+N0
スレにも規約作って変な奴は矯正しないといかんな。

変数を関数の先頭に書く
returnは1つまで
変数名の先頭に型の略字を書く
varは使ってはいけない

こういうひと昔前まで大衆が信じてたバカ規約
システム全体で統一感のあるコードを書くって規約もいずれその仲間入りするとおもう
いまはまだIT業界全体が未熟だからみんな気付いてないだけ

452デフォルトの名無しさん (ブーイモ MMeb-OWkY)2018/06/10(日) 10:22:35.79ID:YCs8n+CmM
ちょっといいですか、この関数100行超えてます。
規約違反で可読性なくなります!
レビューで積極的に発言するサル、何も知らないで自分は立派なプログラム書いてると思っている。
ちなみににLinqの方が可読性上がるよ。
Linqはやりたいことをズバッと書ける。
古いやり方だと、このforループなに?ってなる。
forループは実装手段であって目的じゃないから。
単に慣れ、新しいこと勉強したくない連中が可読性だの規約だの持ち出す。

453デフォルトの名無しさん (ワッチョイ 8917-LHz9)2018/06/10(日) 10:39:02.74ID:0nkwjY0q0
分割すれば良いじゃん
それが出来ないことを相手のせいにするな

454デフォルトの名無しさん (ワッチョイ a98a-Duqg)2018/06/10(日) 11:01:43.43ID:wNo6w9bX0
魔板でやれや

>>444
どこが決めつけてる>>439

456デフォルトの名無しさん (ブーイモ MM05-UL3Q)2018/06/10(日) 13:05:02.68ID:fXHYwG6AM
C#のLinqを使っているのならPythonの方が2倍速くなる
https://qiita.com/yniji/items/6585011633289a257888

C# の Linq が python の2倍遅い、は嘘
https://qiita.com/Akira_Kido_N/items/d9519b05ccee6a67158f

俺が知りたいのは、オブジェクトをx回作るやり方なんだよ

458デフォルトの名無しさん (ブーイモ MM15-EqDK)2018/06/10(日) 13:47:05.85ID:FyF+mujLM
for(var i=0;i<n;i++)Days[i]=new Day(i);

459デフォルトの名無しさん (ワッチョイ 0b33-maCT)2018/06/10(日) 14:27:51.17ID:A9qrJ+Er0
linqで発狂してるジジイはSQL絡みでよくわからないエラーに出くわして理解できなかったんじゃないの

460デフォルトの名無しさん (ブーイモ MMeb-lRLg)2018/06/10(日) 17:59:54.77ID:Nj3/us+lM
もう全部varでええやろ

461デフォルトの名無しさん (ワッチョイ d1d2-m221)2018/06/10(日) 18:16:30.94ID:Ve8EHXbu0
保守性の低い Linq を使ったコードの実例を見たいんだけど。

462デフォルトの名無しさん (ブーイモ MM15-LHz9)2018/06/10(日) 18:55:50.21ID:FyF+mujLM
クエリ式を使ったのは単純なのはわかりやすいけど複雑になるとお手上げ
メソッド形式で使ったとしても逆にクエリ式のfromを二重の使ったほうがいいのにSelectManyを使ってるやつは非常に醜い
JoinやAggregateも可読性が以上に低い

意見は分かれると思うが、川俣大先生が連載記事で引用してた
このサンプルあたりがボーダーラインかね
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/concepts/linq/how-to-query-for-duplicate-files-in-a-directory-tree-linq

個人的にはこれも読みづらい

実にどうでもいい話だが、LINQは頭字語のはずなのでLinqって表記には違和感しか感じない。
あと、これもくどいが、LINQじゃなくてクエリ式の話をしてるんじゃないのかと

464デフォルトの名無しさん (ブーイモ MM15-LHz9)2018/06/10(日) 19:04:29.50ID:FyF+mujLM
>>463
これはだめな例じゃないかな?
何をやってるかがわからない

465デフォルトの名無しさん (ワッチョイ 8917-LHz9)2018/06/10(日) 19:22:31.41ID:0nkwjY0q0
これの事?
var queryDupNames =
  from file in fileList
  group file.FullName.Substring(charsToSkip) by file.Name into fileGroup
  where fileGroup.Count() > 1
  select fileGroup;

基礎的なものだけで構築されていて何をやっているか一目瞭然じゃん

466デフォルトの名無しさん (ワッチョイ eb81-YtUU)2018/06/10(日) 19:59:10.70ID:7XGbwrsW0
これがわかんないって言うならもうlinq禁止しか無いね
そんな人間がいるプロジェクトには関わりたくないけど

全員linq読めても将来読めない人がメンテするかもしれないから禁止
実際にあった話

468デフォルトの名無しさん (ワッチョイ d1d2-m221)2018/06/10(日) 20:19:14.72ID:Ve8EHXbu0
ああこれが分からないってんなら確かに LINQ 禁止だわ。w
でもそんなのに付き合ってやる義理はないんじゃね? あとは規約の問題だな。

469デフォルトの名無しさん (ブーイモ MM15-LHz9)2018/06/10(日) 20:29:40.62ID:FyF+mujLM
自分ならメソッド構文で書く

470デフォルトの名無しさん (ワッチョイ e12b-x2t7)2018/06/10(日) 21:47:34.28ID:WVhS1nfV0
分からないなら勉強するなり聞くなりすればいいじゃんとは思うけどな
可読性あげるのは理解できるが便利な関数を規制するのはおかしいくない?
いつまでたっても個人の技術力上がらなくなるけどいいの?とは思う

471デフォルトの名無しさん (ブーイモ MM15-LHz9)2018/06/10(日) 21:54:10.88ID:FyF+mujLM
わからないって意味を誤解してるだろ

var queryDupNames = fileList.Groupby(f=>略, f=>略).Where(g=>g.Count>1);

メソッドだとほぼ一瞬で何をやってるかわかるだろ
わざわざ行数を割いて理解に時間のかかるクエリ式を使う意味はねえよ

472デフォルトの名無しさん (ワッチョイ e12b-x2t7)2018/06/10(日) 22:13:28.91ID:WVhS1nfV0
あークエリ式じゃなくてラムダで書いた方が見やすいって話?
それなら同意

473デフォルトの名無しさん (ワッチョイ eb81-YtUU)2018/06/10(日) 22:39:32.51ID:7XGbwrsW0
そんなんリファクタすりゃ済む話じゃん

474デフォルトの名無しさん (ワッチョイ ebc9-LHz9)2018/06/10(日) 22:43:36.88ID:mLmPdblh0
リファクタリングするにもユニットテストで担保取れないレベルの酷いプログラム沢山あるからなあ

低レベルなプログラマに合わせたコードはテストしにくいひどいコードになりがち
インターフェース禁止だとか当たり前のように言ってくるからねあいつら

476デフォルトの名無しさん (ワッチョイ eb81-XZeD)2018/06/10(日) 22:54:32.29ID:SjjA9sVt0
今日も自閉症の見本市

477デフォルトの名無しさん (ワッチョイ 8917-LHz9)2018/06/10(日) 23:06:57.39ID:0nkwjY0q0
低レベルなプログラマとの話し合いは無駄だと言うことがよくわかった

478デフォルトの名無しさん (ワッチョイ 9396-DGJA)2018/06/11(月) 14:37:15.67ID:dC6OTsii0
リファクタリングをリファクタ言うの非常に気持ち悪い
refactor は refactoring から派生した単語
refactor という動詞は使われだして日も浅く、まだ技術系のスラングの域でしかない

VS には「リファクター」としてリファクタリングを行うメニューが提供されているが
小洒落た動詞として使用される分には気にならないが、
日本人が「リファクタする」とか使ってると「カンパニーのコンプライアンスをガバナンスする」とかと同様に見える
いやもっとあれか「コンプラをガバーンする」とかと同じレベルかな? (govern は正しい動詞)

https://english.stackexchange.com/questions/57750/is-there-a-verb-refactor-meaning-doing-refactoring-in-english

……MSのスペルチェッカで引っかかってたのか(現在は知らんが)

479デフォルトの名無しさん (ワッチョイ f3e9-YtUU)2018/06/11(月) 17:24:57.86ID:FO+2sVJQ0
カタカナ表記する時点で英語のことなんて気にしてちゃやってられんよ

唐突に何なんだろうねw
まあ、某社のVS用のリファクタリングツールの旧名がRefactor !"だったね。

英語はよく知らんが 〜ing から派生して 〜 ができるとかあり得るのか?

482デフォルトの名無しさん (ワッチョイ 9396-DGJA)2018/06/11(月) 22:30:32.76ID:dC6OTsii0
うん、そもそも refactoring が造語

初出が誰なのか不明(Martin Fowler ではない)だが、
1992年には論文で見られるっていうほんとに新しくできた単語なのよ

新しい(26年前)

接頭辞と接尾辞を付けただけだから別に造語ってほどじゃ無いだろ?

485デフォルトの名無しさん (ブーイモ MM05-dEMp)2018/06/12(火) 13:31:08.41ID:l5O6ZBmRM
もとの言葉がfactor、factoringで、factorは動詞としても使われているのだから、
英語圏ならrefactoringという言葉が登場した時点でrefactorという言葉も同時発生的に生まれていると思うが…

どうでもいい話だけど、派生した順番はたぶん

factor(名)→ factoring → re-factoring

なんだろう。

完全に想像で何の根拠もないけど、computingが動詞のcomputeの動名詞ではない(たぶん...)
ように、factoringも動詞のfactorの動名詞ではないような気がする

487デフォルトの名無しさん (ワッチョイ e1cc-G+KY)2018/06/12(火) 21:59:47.02ID:tBKs/ecm0
>>447
factorizeはなぜ使われなかったんだろう

488デフォルトの名無しさん (ブーイモ MM05-dEMp)2018/06/12(火) 23:00:33.34ID:KC1Yqp3NM
まずは英英辞書引こうよ…

489デフォルトの名無しさん (ワッチョイ e9e3-LHz9)2018/06/13(水) 07:49:48.39ID:GuprKmCG0
英英辞書ってやっぱりエイッエイッて引くのなのかな

490デフォルトの名無しさん (ブーイモ MM05-pFsR)2018/06/13(水) 08:29:12.19ID:o1Fw+zabM
一晩考えてそれか。。

491デフォルトの名無しさん (ワッチョイ 81b3-eEtL)2018/06/13(水) 17:13:37.26ID:LyYtEKg40
こういうやつってC#に向いてるんだろうか
https://i.imgur.com/XbewmEQ.jpg
でもUnityとかでゲーム作りたいね思ってるのってこのタイプだろうなと思うし。

492デフォルトの名無しさん (ワッチョイ 81b3-eEtL)2018/06/13(水) 17:14:09.95ID:LyYtEKg40

493デフォルトの名無しさん (ブーイモ MM05-Duqg)2018/06/13(水) 17:20:21.24ID:yGCmXdsAM
C#より丸鋸とか旋盤の方が向いているんじゃね?

494デフォルトの名無しさん (ワッチョイ 81b3-eEtL)2018/06/13(水) 17:22:01.32ID:LyYtEKg40
3DCGはうまいけどなw

495デフォルトの名無しさん (ワッチョイ 81b3-eEtL)2018/06/13(水) 17:24:47.33ID:LyYtEKg40
図面はやってたけど、なんでもアバウトで絵をかいてるんじゃないからとかボロカス言われた。

496デフォルトの名無しさん (ブーイモ MM05-dEMp)2018/06/13(水) 19:08:31.55ID:TJmxm3LHM
近年、そもそも右脳左脳自体がエセ科学だったんじゃないかって言われてるけどね。

ここのサイトのconsoleって書いてあるところに自分のrwitterアカウント打ち込むと、性格にマッチした言語がわかるよ。IBM製。
http://hello-new-world.mybluemix.net/top

497デフォルトの名無しさん (ワッチョイ e9e3-LHz9)2018/06/13(水) 19:10:58.93ID:tfOKWYs/0
>>490
やーごめん。このスレ今日初めて見たの。ちゃちゃいれてもうしわけなす。

498デフォルトの名無しさん (ワッチョイ c908-tDoJ)2018/06/13(水) 23:36:14.69ID:AGR+xSSx0
>>496
IBM製じゃなくてBluemix使ったアプリなだけやん

499デフォルトの名無しさん (ブーイモ MM6d-Z/ei)2018/06/14(木) 08:07:40.99ID:TG8lbF0sM
>>498
いんや、公開したのは日本IBMだよ

500デフォルトの名無しさん (ワッチョイ c21b-U+xr)2018/06/14(木) 12:02:14.52ID:ZrVl35qK0
自分、ブックオフで買ってきたOS無しのPCにUbuntu入れてるんですが、
Pythonとか面白いので、C#もやってみたいと思っているんですが、

Mono入れれば、書店で売ってるVisualC#の本とか出来ますか・・?

501デフォルトの名無しさん (アウアウカー Sa69-qcd4)2018/06/14(木) 12:26:43.19ID:ZNAi3suja
C#やるなら普通にWindows機でやったほうがいいと思うけど

502デフォルトの名無しさん (スッップ Sd62-bwM/)2018/06/14(木) 12:28:45.35ID:IAs3lrtOd
>>500
C#で何がしたいの?

左は約30年前の 稲川会 三日月一家 小原忠悦組長
https://imgur.com/a/MlKixgw

504500 (ワッチョイ c21b-CUAo)2018/06/14(木) 17:14:29.50ID:ZrVl35qK0
>>501
どうもありがとうございます。Windows機は父親のしかありません・・。強奪してこようかな・・。父親全然使っとらん。。

>>502
本のプログラムを打ち込んでみたいです。Pythonとか面白かったのでC#も挑戦してみたいという感じです。なんかいけそうっぽい

505デフォルトの名無しさん (ブーイモ MM6d-C226)2018/06/14(木) 17:17:13.41ID:cv3CkBmoM
>>499
あら、そうなのか
すまんかった

>>504
本がVisual Studioを使う前提で書かれていたら無理

507デフォルトの名無しさん (スッップ Sd62-bwM/)2018/06/14(木) 17:59:42.71ID:IAs3lrtOd
>>504
だから具体的に何をしたいの?(何を作りたいの?)

書いてある通りだろ

本を読んでその通りなぞりたいんだろ

509デフォルトの名無しさん (ワッチョイ 2e9a-gvEZ)2018/06/14(木) 18:19:58.04ID:T0JMmz9y0
>>506
猫でもわかるシリーズならそんな心配はないな!
>>504
お父さんのPCで間違ってエロコレクションとか見つけたら鬱になるのでやめたほうがいい
ただVisual Studio(VScodeでもいいかも)使えない環境でC#やるのはめんどくさいと思うよ

猫でもわかるシリーズは今はもう古いと思う(※個人の感想です)

511デフォルトの名無しさん (スッップ Sd62-bwM/)2018/06/14(木) 18:22:19.44ID:IAs3lrtOd
>>508
本によるやろそんなもん

>>511
だから馬鹿な質問するのはやめとけよ

513デフォルトの名無しさん (ワッチョイ 2e9a-gvEZ)2018/06/14(木) 18:23:51.86ID:T0JMmz9y0
>>510
>>509はC#の本なんかまったく読んでいない無責任な個人の感想です

514デフォルトの名無しさん (スッップ Sd62-bwM/)2018/06/14(木) 18:28:25.08ID:IAs3lrtOd
>>512
本によるから実際にやりたいこと聞くことの何が悪いんかい?

ここで聞くようなレベルの人が使うもんじゃないと思う ⇒ Mono

初心者がc#が何かよくわからないけど本を読んでなぞって体験したい
そんな感じだろ
それ以上何がある

517デフォルトの名無しさん (スップ Sdc2-bwM/)2018/06/14(木) 18:35:19.36ID:Cyktia16d
>>516
キチガイ

>>517
自分がプログラム入門者だとして何がしたいと答えるつもりだ?

519デフォルトの名無しさん (ブーイモ MMb6-pk7F)2018/06/14(木) 18:39:04.95ID:KqjFIT9WM
世界征服

520デフォルトの名無しさん (スップ Sdc2-bwM/)2018/06/14(木) 18:40:09.93ID:Cyktia16d
>>518
いくらでもあるやろwww

>>520
やっぱり答えられないじゃないか

pythonの本を読んでその通り打ち込んで楽しかった
次はc#だって感じだろ

何か作りたいものがあるならpythonでやるだろ

522デフォルトの名無しさん (スップ Sdc2-bwM/)2018/06/14(木) 18:44:53.14ID:Cyktia16d
>>521
ありすぎてひとつに絞る意味がない
おばかさん

>>522
結局答えられないくせに偉そうだな

524デフォルトの名無しさん (スップ Sdc2-bwM/)2018/06/14(木) 18:47:04.68ID:Cyktia16d
>>523
ぼくとりあえず簡単なWebアプリがつくりたいのー

525デフォルトの名無しさん (スップ Sdc2-bwM/)2018/06/14(木) 18:47:24.43ID:Cyktia16d
>>523
アンドロイドアプリモンスターズつくりたいなー

526デフォルトの名無しさん (スップ Sdc2-bwM/)2018/06/14(木) 18:47:59.25ID:Cyktia16d
>>523
家計簿つくりたいー

527デフォルトの名無しさん (スップ Sdc2-bwM/)2018/06/14(木) 18:48:16.72ID:Cyktia16d
>>523
テトリスつくりたいなあ

528デフォルトの名無しさん (スップ Sdc2-bwM/)2018/06/14(木) 18:50:17.14ID:Cyktia16d
>>523
まだ必要?

>>528
じゃあそれを質問する意味はなんだ?

530デフォルトの名無しさん (ワッチョイ 2e9a-gvEZ)2018/06/14(木) 18:51:45.04ID:T0JMmz9y0
両方NGでいいや

>>524-527を作るための本を紹介するのか?
本をなぞると言ってるのに?

532デフォルトの名無しさん (スップ Sdc2-bwM/)2018/06/14(木) 18:55:45.38ID:Cyktia16d
>>529
はいキチガイ

533デフォルトの名無しさん (スップ Sdc2-bwM/)2018/06/14(木) 18:56:08.99ID:Cyktia16d
>>531
だから本によるんやろw

534デフォルトの名無しさん (ワッチョイ 313f-LKVd)2018/06/15(金) 06:51:22.33ID:7Iypneqg0
ここまで1人の自演

535デフォルトの名無しさん (ワッチョイ 4269-m0US)2018/06/17(日) 07:44:22.33ID:R12hw8Jz0
.hstファイルを読み取りたいので質問です。
C#でやるのに参考になるサイトかコードはないかな?

536デフォルトの名無しさん (ワッチョイ 9d17-Bw3Y)2018/06/17(日) 08:44:00.21ID:aVMObWbK0
hstって何さ

537デフォルトの名無しさん (ワッチョイ 4269-m0US)2018/06/17(日) 09:14:51.45ID:R12hw8Jz0
HSTファイル
調べた限りだとHiSTory fileでFXの履歴を記録したファイルで使われることが多いのかな?
自分が使いたいのはFXの履歴ではないくてカメラの履歴などの情報を取りたいです。C++などのコードで書いてるサイトはあるけどC#が見つからない

538デフォルトの名無しさん (ワッチョイ 9d17-Bw3Y)2018/06/17(日) 10:00:34.77ID:aVMObWbK0
.hst file format . . . Old and New (Jan 2014)
https://www.mql5.com/en/forum/149178

上のアドレスで説明されているフォーマットだったら普通にBinaryReaderで読み込めば良いんじゃないの
単純な構造だから苦労することも無いと思うよ

539デフォルトの名無しさん (ワッチョイ 42b3-SMjQ)2018/06/17(日) 10:05:01.86ID:brTRb0Nk0
>>537
> C++などのコードで書いてるサイトはある
ならそれ真似ればいいだけじゃねーの?

540デフォルトの名無しさん (ワッチョイ 4269-m0US)2018/06/17(日) 21:31:13.88ID:R12hw8Jz0
HSTファイルもC++ほぼわからないので、参考になるのがあればと思ったんです。
BinaryReader使って試してみます。
ありがとうございました!

541デフォルトの名無しさん (スップ Sdc2-sRUJ)2018/06/17(日) 22:18:28.81ID:qGzm+MRqd
そのC++ライブラリはそんな複雑なことしてんの?
数千行あるなら心折れるかもしれんが、自分で移植するほうが早い気がするけど
C#かけるなら余裕でしょ

byte[]からstructにマーシャリングするのが簡単かな
あ、でも最近のC#はマルチプラットフォームだからバイトオーダーも気にしないとダメなのかな
地味にめんどくせえな

543デフォルトの名無しさん (ワッチョイ 4269-m0US)2018/06/17(日) 22:37:48.08ID:R12hw8Jz0
内容しっかり見てなかったけど100行なかったははず
C#もどこかあるだろで探してたけどC#だけまったく見当たらなかったので、結果的には自分で移植のほうが早かったかな

544デフォルトの名無しさん (ワッチョイ 9dd2-cPc7)2018/06/18(月) 00:31:09.66ID:6KD+nJyx0
どなたか助けてください

PaSoRiでFelicaのReadをしたいのです。
winscard.dllを利用し
ScardTransmitにてADPUを送信することで
非暗号化領域のREAD/WRITEをすることはできました

追加で、暗号化領域のREADをしてほしいと言われ、
Group Service KeyとUser Service Keyという2つの鍵を渡されました。
どうやらこの2つの鍵を使って暗号化領域のREADを行うようなのですが
それに該当する情報が見つかりません。

この2つの鍵と縮退鍵の関連もわかりません。
2つの鍵を使って縮退鍵を合成する???
合成したとしてどういうAPDUコマンドを送る???

ご存知の方がいらっしゃいましたらご教授ください。

545デフォルトの名無しさん (ワッチョイ 4981-9ghk)2018/06/18(月) 00:46:54.25ID:jPyv6U8B0
それC#の質問か?

546デフォルトの名無しさん (ワッチョイ 9dd2-cPc7)2018/06/18(月) 01:05:06.10ID:6KD+nJyx0
>>545
ごめんなさい。C#で書いてるのでC#で質問しました。
他に適当なスレが見つからなかったもので。。。

547デフォルトの名無しさん (ワッチョイ 99b3-8opj)2018/06/18(月) 14:58:19.26ID:Pxwa7YvH0
ライセンス契約の無い奴にそこから先は教えられねーわ。

548デフォルトの名無しさん (ブーイモ MM6d-2ITt)2018/06/18(月) 15:38:53.66ID:XzDxjxqSM
バイナリファイルをバイト配列に一気に読み込んでLINQでゴリゴリするなんてC#って言うか.netの醍醐味だね。
C、C++と歩んできて正直C#なめてたが、プログラムの書き方変わったよ。

549デフォルトの名無しさん (ワッチョイ 0296-gvEZ)2018/06/18(月) 19:59:56.07ID:YV8aSpRw0
バイナリファイルのバイト配列はストリーム(BinaryReader/Writer)経由でしか扱ったことないな
浅学ですまないが非常に興味があるので、何をする処理にLINQを使っているのか教えてほしい

550デフォルトの名無しさん (ワッチョイ 2e9a-gvEZ)2018/06/18(月) 20:21:08.97ID:xPHPGLWh0
>>549
横レスだけど「読み込んでLINQ」だからパーサーの部分だろ

551デフォルトの名無しさん (ワッチョイ dd9f-2ITt)2018/06/18(月) 20:48:17.73ID:Dbb+UGxb0
スキップ.テイク.リバースでバイトオーダー反転してデータ取り込むとかだ。

552デフォルトの名無しさん (ワッチョイ dd9f-2ITt)2018/06/18(月) 20:55:37.17ID:Dbb+UGxb0
テキストファイルを一行ずつ読み込むとか、バイナリファイルを1フレームずつ読み込むなんてのは時代遅れなんじゃねかと。
最近は一括読み込みしかしないな。
パフォーマンスはライブラリやOSが担保してくれる。

時代遅れかどうかは知らんけど(そういうネトウヨチックな「俺スゲー」という間抜けな自己陶酔、俺は大嫌いだがw)
富豪的であってもそれが一時的(たとえばメソッドの中だけ)なら何も問題ないね。

その方がより簡潔だったり可読的に書けるなら否定する理由は何もない

554デフォルトの名無しさん (ブーイモ MMb6-pk7F)2018/06/18(月) 21:36:42.05ID:C5OiN+R5M
webのアクセスログとかもそんな事するのけ?

555デフォルトの名無しさん (アメ MM6d-pvX8)2018/06/18(月) 21:40:28.88ID:ltR7ddTWM
時系列データのリアルタイム処理とかどうやって一括で読み込むんだ??

巨大な高速RAMストレージを特注

557デフォルトの名無しさん (ワッチョイ dd9f-2ITt)2018/06/18(月) 21:46:48.35ID:Dbb+UGxb0
時系列的に増えていくファイルだとか、ソケット通信のバイトストリートだとかは順次読み込みするしかないよ。
だけどドライブにあるファイルは一括読み込みの方が簡単だよ。1ステップだからね。それをソートするなりデータ抽出するなりLINQ使えば簡単だよ。
それを知ってから逐次読み出しなんか面倒くさくアホらしくなったよ。

558デフォルトの名無しさん (ワッチョイ dd9f-2ITt)2018/06/18(月) 21:50:28.19ID:Dbb+UGxb0
>>556
プログラム上に巨大な配列生成しても、それだけRAMに割り付けられると思うのは大間違いだよ。
メモリの階層化とかで勉強してね。

>>556には「高速RAMストレージ」って書いてあるけどw

>>558
ストレージと書いてるだろw
外部記憶装置のアクセスの高速化しか考えてねーよw

561デフォルトの名無しさん (ワッチョイ 2ec9-Bw3Y)2018/06/18(月) 21:56:24.93ID:DGcX/y5w0
LINQのメリットの一つに IEnumerable<T>があるのになんで一括読み込みに拘るんや

562デフォルトの名無しさん (ブーイモ MMb6-pk7F)2018/06/18(月) 21:57:36.33ID:C5OiN+R5M
痴性溢れる御意見ですね

563デフォルトの名無しさん (ワッチョイ dd9f-2ITt)2018/06/18(月) 22:00:34.70ID:Dbb+UGxb0
一括読み込みしたものがアイエニュメラブルになるから。

564デフォルトの名無しさん (ワッチョイ dd9f-2ITt)2018/06/18(月) 22:04:21.91ID:Dbb+UGxb0
>>560
最近のパソコンは速いぞ。
試しにやってみなよ。

まったく関係ないが、そういや、この手のデバイスって結局実用化せずに消えたのかね
まったく聞かないな
http://blog.livedoor.jp/dankogai/archives/50560934.html

読んだのずいぶん前とは思ったがもう12年前か...

>>564
高速flash memoryでraid組んでもRAMの速度には負けるだろ。

567デフォルトの名無しさん (ブーイモ MM85-SFwM)2018/06/19(火) 23:13:11.27ID:BrsQYlEtM
>>565
PRAMのSSD版ならもう出てる
DIMMは今年度中にサンプル出荷のはず

STTやRe、Mは頑張ってるがまだ先だろうね

新着レスの表示
レスを投稿する