18/12/15 11:07:07.89 0aSEF/I+0.net
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part93
スレリンク(tech板)
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
スレリンク(tech板)
■コードを貼る場合は↓を使いましょう。
URLリンク(ideone.com)
URLリンク(dotnetfiddle.net)
■情報源
URLリンク(msdn.microsoft.com)
URLリンク(docs.microsoft.com)
URLリンク(msdn.microsoft.com)
URLリンク(referencesource.microsoft.com)
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2:デフォルトの名無しさん
18/12/15 12:39:46.77 08VjymySM.net
まあこっちかな
時節柄か変な生き物が多いからな
一週間見なくて済むのは嬉しい
3:デフォルトの名無しさん
18/12/15 14:21:33.00 gB7jv9l9p.net
わっチョイありの方が良さげ
4:デフォルトの名無しさん
18/12/15 14:25:47.37 mgmsvi+Ca.net
WinFormsとWPFがオープンソース化されたから、OSS禁止の開発には使えなくなるな
5:デフォルトの名無しさん
18/12/15 16:15:16.93 4D+cqIcW0.net
前スレにも何人かいたが、ここは業界談義や雑談をするスレじゃないから
そういったことはマ板でやってくれ
6:デフォルトの名無しさん
18/12/15 16:30:41.09 brX4Hijtr.net
WinFormにGeckoブラウザをfill表示させてhtmlとcss、jsでUI作るのが一番楽
実質electronみたいなもんだろ
ロジックはc#だし
7:デフォルトの名無しさん
18/12/15 17:50:14.43 u39qPf+R0.net
リストビューの設定のテンプレとかない?
8:デフォルトの名無しさん
18/12/15 18:00:12.39 88lSHx3P0.net
DataGridView使おうぜ
9:デフォルトの名無しさん
18/12/15 21:47:58.45 wbNOQa8W0.net
Consoleアプリで、Main関数から別スレッドを起動して
func1()を一回だけ実行したいんですが、
system.timers.timerとかsystem.threading.threadとかいろいろあるんですが、
初心者向きのお手軽なのはどれでしょうか?
10:デフォルトの名無しさん
18/12/15 21:53:52.41 88lSHx3P0.net
右
11:デフォルトの名無しさん
18/12/15 22:05:51.73 wbNOQa8W0.net
>>10
出来ればサンプルコード教えて下さい。
12:デフォルトの名無しさん
18/12/15 22:40:32.92 2qTL12QJ0.net
>>11
URLリンク(docs.microsoft.com)
13:デフォルトの名無しさん
18/12/16 00:03:32.31 mTL8CX5x0.net
>>9
生のThreadを扱う場面はほとんど無いから、Task覚えた方が良い
static void Main( string[] args )
{
var task = Task.Run( () =>
{
func1();
} );
task.Wait();
}
14:デフォルトの名無しさん
18/12/16 00:25:14.21 y1HWe8yEd.net
>>4
OSS禁止の開発って何で開発すんの?
15:デフォルトの名無しさん
18/12/16 00:27:33.81 y1HWe8yEd.net
既にRyuJitやRoslyn、MSBuildはOSSだから、C#使ってる時点で完全にOSS使わないってのは難しい気がするけど
16:デフォルトの名無しさん
18/12/16 00:42:36.71 Y9KSWbqyM.net
なにで開発すんのって、普通にMSBuildとか使ってますよ
OSS禁止を真面目に言ってる人は本質的に疎い人なんで、その辺は理解できていません
MSBuildが何なのかすら、いや、存在すら知らないでしょうな
17:デフォルトの名無しさん
18/12/16 00:53:23.45 h2N3x2oNa.net
>>13
これ、MSDNのサンプルコードもなぜか必要のないラムダ式をわざわざ作ってるね
18:デフォルトの名無しさん
18/12/16 00:56:38.30 LhVwlQXnM.net
>>17
直接func1を渡す形だとコピペアビリティが低いからだろ
19:デフォルトの名無しさん
18/12/16 12:10:44.01 T0QlLmoR0.net
>>16
OSS使ってることに気づいてないだけよね
20:デフォルトの名無しさん
18/12/16 12:26:28.88 aLTMjJBbM.net
msbuildもcscもビルドに使われるだけで成果物がそれに依存しているわけではないだろう
OSS禁止でもeclipseはOKなのと同じ理屈
WinFormsやWPFという正真正銘のOSSを使うのとはわけが違うよ
21:デフォルトの名無しさん
18/12/16 12:32:02.42 ElY+dogD0.net
OSSが禁止されがちなのはそのライセンス形態にあると思うんだが
WinFormやWPFがいきなりGPLになるわけじゃないし
22:デフォルトの名無しさん
18/12/16 12:51:56.13 mvYA/PaT0.net
Oおっ
Sさんが
Single(一人で作ってる)
アプリ
23:デフォルトの名無しさん
18/12/16 13:01:23.04 mdqjV67R0.net
OSS禁止のひと、そこまで考えてないと思うよ
24:デフォルトの名無しさん
18/12/16 13:25:07.29 /TxtZZ4qd.net
>>20
Ryujitは無視かい?
25:デフォルトの名無しさん
18/12/16 14:27:18.36 7UXd2BE00.net
>>21
だよね
26:デフォルトの名無しさん
18/12/17 07:06:46.48 l0Ihy9e2d.net
数字と英語の組み合わせをバラして配列に格納する時の条件分岐のパターンが分かりません。
組み合わせパターン
①654321
②654321-3
③654321C
④654321あ-12
最初は必ず数字6桁
英語or平仮名orカタカタ一文字があるかないか
ハイフン挟んだあとは数字のみ。
これを配列に[0]~[2]に入れたい。
②の場合
[0] 654321
[1] ""
[2] 3
27:デフォルトの名無しさん
18/12/17 08:26:00.51 i+3tZqHNa.net
>>26
キャプチャに使う正規表現はこう
(?<first>[0-9]{6})(?<second>[ぁ-んァ-ンA-Z])?(-(?<third>[0-9]+))?
使い方が分からないなら「C# 正規表現 キャプチャ」でググれ
28:デフォルトの名無しさん
18/12/17 09:10:18.49 EhwiP59S0.net
5分おきに実行するタイマー作ってるんですが、System.Windows.Forms.Timerって、timer.Enabled = trueにした瞬間に1回目が実行されますよね?
trueにした瞬間は実行してほしくなくて、trueにしてから5分後に1回目を実行してほしいんですが・・・
System.Timers.Timerだと希望通りに動くのですが、理解として間違ってませんよね?
29:デフォルトの名無しさん
18/12/17 09:17:22.05 EhwiP59S0.net
すいません、↑間違えてました。無視してください
30:デフォルトの名無しさん
18/12/17 11:45:43.84 AhT/M622M.net
WinFormsやWPFのライセンスってMITだろ
フル機能の業務向けGUIフレームワークがそんなガバガバなライセンスでOSSとして公開されるなんて前代未聞じゃね
それだけMSにとってPCクライアントアプリのビジネス的価値が低下したということでもあるし、
どうせWinFormsもWPFもWindowsにネッチョネチヨにベッタリと依存していて
他のOSへのポーティングなんかできねえだろうという、ある意味自信の表れでもあるんだろうなw
31:デフォルトの名無しさん
18/12/17 12:02:35.27 oEEuXu5x0.net
業務向け?
32:デフォルトの名無しさん
18/12/17 13:45:24.33 8bFiHPU30.net
>>30
.net core「詳しく聞こうか?」
33:デフォルトの名無しさん
18/12/17 13:54:52.29 joZpwjFkd.net
ポーティングされても惜しくないと言うか、ポーティングしてほしいんだと思うけど。
でなきゃ.net coreでマ
34:ルチプラットフォームなんかやらんのでは?
35:デフォルトの名無しさん
18/12/17 14:02:33.06 AhT/M622M.net
ポーティングは無理やで
.NET Core 3.0 は WPF を動かすために mixed module assembly (つまりC++/CLI)をサポートしたけど、これがWindows限定
36:デフォルトの名無しさん
18/12/17 14:28:01.03 8bFiHPU30.net
>>34
C++/CX「(…俺の事かな?)」
37:デフォルトの名無しさん
18/12/17 19:33:53.46 vIb2V1Gu0.net
monoの人らがやったように、頑張るんじゃ無い?
38:デフォルトの名無しさん
18/12/17 20:36:59.64 5ieiD4LNd.net
>>36
MSはやらないって公言してる
39:
18/12/17 22:03:56.14 TMWWsAye0.net
シャープやフラットで分からないことがあります
どこで聞いていいかわからないので、シャープやフラットがスレ名に含まれているこのスレで聞くことにしました
適切でなければ誘導ください、お願いします
さて本題ですが
URLリンク(www.youtube.com)
をみていて、上と下の音がずれていますが、これでハモっているのはどうしてなのでしょうか?
40:デフォルトの名無しさん
18/12/17 22:09:25.62 xRgn/WkHd.net
>>38
周波数測れてる?
41:デフォルトの名無しさん
18/12/17 22:13:34.85 72hjMHy30.net
OSSにしたとはいえメンテンナンスを放任するってわけじゃないみたいだからね
精々フォークはご自由にってところなんでしょ
monoのように、というよりmonoのWinformsを.NET Coreに合わせる方がまだ可能性はあるのでは
42:
18/12/17 22:21:25.00 TMWWsAye0.net
>>39
そういう意味ではなく、例えば最初の音は、上はラで書いてあるのに下はシです、いくら私が素人でもラとシでは響きようがないと思ってしまいますが、動画の音は三度/六度の和音になっているのはどうしてですか?
43:デフォルトの名無しさん
18/12/17 22:28:26.87 Ubiutx5+0.net
>>38
キチガイじゃん
放置な
44:デフォルトの名無しさん
18/12/17 23:25:54.89 yChZzMqc0.net
>>38
普通のトランペットはB♭管って言って「ド」の音を出すとピアノのシ フラットの音が出る
なのでその楽譜の最初の音はピアノの「ソ」の音
下段のユーフォニウムもB♭管なんだけど歴史的にC管として楽譜が書かれる
なので最初の音は楽譜通り「シ」の音が出るのでハモってる
ちなみにこの時ユーフォニウムの奏者は「ド シャープ」として演奏してる
って流石にスレチだろ
詳しくはこの辺りで聞いてくれ
ユーフォニアム総合スレ
スレリンク(suisou板)
45:
18/12/17 23:50:04.26 TMWWsAye0.net
>>43
ありがとうございます。とてもよくわかりました、移調譜というやつですね、ドの指使いで♭シがでる、だからラの指使いで実音ではソが鳴るんですね
さすがプログラム板、こんな質問でも答えていただけるとは、とてもありがたく感謝しています
46:デフォルトの名無しさん
18/12/18 00:16:32.23 pKwJFJVVp.net
何これ自演?
47:デフォルトの名無しさん
18/12/18 07:08:13.06 dd3VOI3V0.net
たまには外の空気を吸うのもいいものだ
(解決したみたいだが、サッパリわからんw)
48:デフォルトの名無しさん
18/12/18 08:11:44.24 9NtPu5c1d.net
>>37
msがやる必要は無いっしょ…
monoだってまだ生きてるんだぞ。
49:デフォルトの名無しさん
18/12/18 08:24:52.42 wQA6Hr22d.net
>>47
誰がやるのさ
50:デフォルトの名無しさん
18/12/18 08:45:08.87 9NtPu5c1d.net
>>48
monoは誰が作ってきたのさ。
51:デフォルトの名無しさん
18/12/18 08:56:32.82 Aai/8U/Va.net
.NET Coreの特許は互換性のある実装に対してのみ利用が認められるから、
MSがCoreは非Win OSでWinFormsやWPFを動かせるようにはしないと明言してる以上、
法的にはフォークしてポーティングするのはいかにMITライセンスだろうと特許侵害でMSに訴えられるリスクがあるよ
流石にOracleとは違ってそんなことしたら大炎上して窮地に追い込まれることはMS自身がよく理解してるはずだから、現実にはまずありえないけど
52:デフォルトの名無しさん
18/12/18 09:31:19.88 9NtPu5c1d.net
なるほどねー。
mono側は逆に実装が見れちゃうからクリーンルーム実装ではないと言いづらくなるか。
53:デフォルトの名無しさん
18/12/18 09:45:21.25 AYrih+MPd.net
>>49
monoはもうとっくにMSに吸収されてるんだけど
54:デフォルトの名無しさん
18/12/18 09:46:49.03 izY8a/zv0.net
結局、あのザマリン悪ふざけ問題がルート潰しているんだよな
55:デフォルトの名無しさん
18/12/18 11:58:27.91 BVyzn4SQr.net
UIは今後すべてhtmlとcssに統一してほしい
エレクトロンもそうだし
56:デフォルトの名無しさん
18/12/18 12:05:13.35 0SYzzKOXd.net
>>54
変な人
57:デフォルトの名無しさん
18/12/18 12:07:44.45 pKwJFJVVp.net
ザマリンするには人脈が必要だからなあ…
58:デフォルトの名無しさん
18/12/18 17:22:12.17 bwMMSAST0.net
平日にスレ違いの雑談しているってなんなのこいつら
59:デフォルトの名無しさん
18/12/18 18:12:56.00 3CPzSn/FM.net
>>54
でもブラウザのバージョンアップですぐ動かなくなんで
60:デフォルトの名無しさん
18/12/18 22:13:13.75 BVyzn4SQr.net
ブラウザなんか下位互換してるから大丈夫
61:デフォルトの名無しさん
18/12/19 23:04:17.95 1+OCaMKe0.net
C#のコンソールアプリから、
毎日指定した時刻に何らかのプログラムを実行したいのです。
例えば毎日朝10時に実行するなど。
あるいは、1時、2時、3時、、、に実行するなど。
実行時間の誤差は±10分くらいあっても構いません。
どんな手法がお勧めですか?
62:デフォルトの名無しさん
18/12/19 23:13:17.65 6d4NDMwEa.net
C#で完結させようなどという愚かな考えは捨ててタスクスケジューラを使う
ローカルで動かす必要がない物ならAWS LambdaにデプロイしてCloudWatchのスケジュールで動かすなんてのも手軽で良い
63:デフォルトの名無しさん
18/12/19 23:20:08.96 DnYaqc+Z0.net
>>60
無限ループ(=常駐)PGを作って
適当な間隔でシステム時刻と比較して
実行したい時刻を過ぎていたら
Processkクラスを使ってでキックとかが一般的だと思うが
URLリンク(dobon.net)
その常駐PGが落ちた時に実行できないから
結局>>61の話になるな
64:デフォルトの名無しさん
18/12/19 23:23:11.44 9dM2T/kK0.net
そもそもログインしてなかったらどうなる?でサービス化するもんだと思っていた
65:デフォルトの名無しさん
18/12/19 23:23:32.76 fC5Hz5dL0.net
>>60
URLリンク(bbs.wankuma.com)
66:デフォルトの名無しさん
18/12/20 08:16:06.80 As7dWUw1M.net
>>63
ログインしてない時まで実行したいとなるとサービスにして自前でやるかタスクスケジューラに起動してもらうかの2択だわな
67:デフォルトの名無しさん
18/12/20 10:09:55.46 tgiqyGLQ0.net
まぁc#によるサービス作成はNTや2000時代から見れば、
すんげー楽になってるので、余裕が出来れば挑戦お勧め
68:デフォルトの名無しさん
18/12/20 11:20:35.24 0U5kGgIsa.net
スケジュール変えたくなったらソース弄るの?自前で独自cronみたいな設定を実装するの?その使い方サービスごとに覚えなきゃいけないの?
運用が面倒だから安易なサービス化はやめなさい
69:デフォルトの名無しさん
18/12/20 11:35:36.11 NvcSX/Wl0.net
サービスはサービスにしかできないものに限定して、やったとしてもタスクスケジューラに登録するソフトのみかなぁ。
70:デフォルトの名無しさん
18/12/20 12:10:54.56 uRkd43kpd.net
タスクスケジューラに一票。
もしサービス化するとしても、サービスは蹴られるの待つようにして、タスクスケジューラに蹴らせたほうが良い。
どうせ「今すぐもう一度走らせたい」がそのうち出る案件な気がする。
71:デフォルトの名無しさん
18/12/20 12:18:04.50 7E7fQupi0.net
Microsoft自身もWindows Defenderとかタスクスケジューラ依存だから、たぶんこれが一番簡単で安定した方法なんだろうな
72:デフォルトの名無しさん
18/12/20 12:26:42.26 As7dWUw1M.net
>>66-69
まずはケースバイケースという言葉を覚えような
自分の狭い範囲で語られても困る
73:デフォルトの名無しさん
18/12/20 12:45:20.47 04IBENLFM.net
>>71
ここは初心者スレ
どうせ何が善い方法かなんて本人に判断つかないんだから、余計な選択肢は質問者を混乱させるだけ
ベストプラクティスさえ示してやればよい
74:デフォルトの名無しさん
18/12/20 13:03:15.38 IXBzuTcop.net
初心者スレだが初心者以外の人の方が見てるようなスレ
75:デフォルトの名無しさん
18/12/20 14:44:10.36 uRkd43kpd.net
>>71
ケースバイケースを考えられる奴は質問なんかしないだろう。
まずはタスクスケジューラ、
サービス化するとしてもタスクスケジューラから蹴った方がいい、
そんなに変な事言ってるか?2択と対して変わらん事言ってるつもりだが。
76:デフォルトの名無しさん
18/12/20 15:02:05.47 VX0mwZrMM.net
あーはいはい、永遠の初心者はC#なんか使わずに一生javaでもやってろ
77:デフォルトの名無しさん
18/12/20 18:31:34.13 As7dWUw1M.net
>>72, >>74
自称玄人の狭い世界を押し付ける方が混乱するわ
タスクスケジューラからサービス蹴るとかを初心者に薦めるとかバカすぎる
78:デフォルトの名無しさん
18/12/20 19:28:02.27 7wwBVLN+0.net
>自分の狭い範囲で語られても困る
ブーメラン
79:デフォルトの名無しさん
18/12/20 19:38:18.98 m/IwfhEsM.net
大抵の人は最初なんでもモノリシックに作ろうとして、スケジューリングと処理は分けたほうがよいことに自分なりに気付くもんだよね
分けるのダサいと思ってた時期は俺にもあったわ
80:デフォルトの名無しさん
18/12/20 20:16:11.98 hwNgEKL00.net
>>77
俺は押し付けなんてしてないけど?
またバカ晒しちゃったね w
81:デフォルトの名無しさん
18/12/20 20:40:15.88 uRkd43kpd.net
>>76
玄人だって言った?
ってかタスクスケジューラからサービス蹴るってそんなにハードル高くないでしょ。
メッセージ送るなり、サービスでFileSystemWatcherでフォルダ監視して、投入はキューファイル作ってでも良いし。
後者は初心者でもすぐ思いつくし実装できる話だと思うけど。
もしかして自分が出来ないから初心者に勧めるなとか言ってる?
82:デフォルトの名無しさん
18/12/20 21:03:45.16 6fpTh5DCa.net
何を争ってるのかさっぱり分からんけど、双方とも少しも
建設的な意志がないことだけは確実に分かるねw
83:デフォルトの名無しさん
18/12/20 21:05:21.53 tgiqyGLQ0.net
OSに近い所まで楽チンに触れるのがC#の利点の一つ
だと思うけどな。
タイマー使って指定ディレクトリの監視とかはすぐ思い付くでしょ
84:デフォルトの名無しさん
18/12/20 21:40:42.01 hwNgEKL00.net
>>80
> 玄人だって言った?
ひょっとして揶揄って言葉を知らんのか? w
> ってかタスクスケジューラからサービス蹴るってそんなにハードル高くないでしょ。
ハードル以前に送出側も作れとかアホすぎる…
85:デフォルトの名無しさん
18/12/20 21:48:42.95 uRkd43kpd.net
>>83
玄人だって言った?って揶揄なんだけど。
馬鹿すぎてブーメランまた投げてるよ?
送出側って簡単だよね。FileSystemWatcherならファイル置くだけだし。バッチファイルでも良いじゃん。
自分が思いつかなかっただけならそろそろ黙ったら?
86:デフォルトの名無しさん
18/12/20 22:12:15.97 hwNgEKL00.net
せめて揶揄の意味ぐらい調べてこいよ…
マジで恥ずかしすぎる
87:デフォルトの名無しさん
18/12/20 22:27:04.44 6LmbwAzu0.net
お前らなにカリカリしてんの?
88:デフォルトの名無しさん
18/12/20 22:34:02.07 uRkd43kpd.net
>>85
で、送出側作るのは難しいの?
恥ずかしいね。
89:デフォルトの名無しさん
18/12/20 22:46:47.72 hwNgEKL00.net
>>87
日本語理解できないの?
ハードル以前の話って書いてあるんだけど?
なぜそんな面倒なことを初心者にさせようとするのか意味不明なんだが
90:デフォルトの名無しさん
18/12/20 23:07:10.16 7wwBVLN+0.net
>>86
いつものキチガイだからNGしとこう
ほら早速ワッチョイが役に立ったぞ
91:デフォルトの名無しさん
18/12/20 23:43:42.93 uRkd43kpd.net
>>88
無意味だと思ってるのはお前ができないからかつやる必要があるパターンが頭に浮かんでないかだろw
意味不明なのはお前が低レベルだからだよ。
92:デフォルトの名無しさん
18/12/21 05:06:11.42 PkTs+Gix0.net
>>90
初心者にとってそれがベストプラクティスだと言い張るなら根拠書けばいいんじゃね?
書けるならね w
93:デフォルトの名無しさん
18/12/21 20:36:29.06 ulAOiHZ/0.net
便乗で質問です。
ログインしてない状態で指定時間になったら指定のユーザーでログインしてブラウザでスクレイピングしたいです。
サービスやタスクから適当なユーザーでログインするにはどうしたらいいでしょうか?
94:デフォルトの名無しさん
18/12/21 20:59:56.18 rOLcewoyM.net
もっと具体的でないと回答しようがないかな
ログイン認証はWebサーバー側の話ならローカルアカウント
関係ないし
ローカルアカウントの話ならグループポリシーでサービス起動
出来るようにするのが一般的だったけど
OSのバージョンやADが有効なら出来ない場合もあるよ
95:デフォルトの名無しさん
18/12/21 21:01:24.25 ZKr5QUU1a.net
>>92
どうもこうも、それ最初からタスクスケジューラーのオプションに入ってるんじゃないの?
URLリンク(www.atmarkit.co.jp)
96:デフォルトの名無しさん
18/12/22 11:16:46.77 GEVjlJLSd.net
>>92
タスクスケジューラで、誰として実行するか決めれる。
タスクスケジューラ否定してる奴らは、タスクスケジューラ使って言ってるんだろうか?
97:デフォルトの名無しさん
18/12/22 11:47:17.60 h0Ytd2ZqM.net
誰も否定してないと思うが?
どれをそう感じたんだろう?
98:デフォルトの名無しさん
18/12/22 13:29:07.95 MYt604IR0.net
3日間もこの話を続けてるのか
よく飽きないねーガイジか?
99:デフォルトの名無しさん
18/12/22 15:43:19.97 UXm6+Rqz0.net
こういう質問者って解決の道筋を知りたいんじゃないんだよ
WindowsのこともC#も学習する気はまったくなくて、代わりにコードを提示して欲しい人なんだ
なので、「タイムスケジューラ+コードは自分でかけ」とか「自分で書いたコードをサービス化しろ」と回答しても無駄なんだな
誰かが代わりに希望のツールを作ってあげるまで延々と同じ質問をすることになっちゃう
100:デフォルトの名無しさん
18/12/22 16:05:02.26 3FbstdN40.net
今回のは質問者そっちのけで外野が暴走しただけだろ
101:デフォルトの名無しさん
18/12/22 16:17:42.75 iZWJkg8TF.net
いつもだな
102:デフォルトの名無しさん
18/12/22 16:45:04.92 8eMfHdb50.net
いつも同じなのは、問題起こすのが特定の一人なんだろうね
103:デフォルトの名無しさん
18/12/22 16:48:01.85 ejexDqVG0.net
特定の二人の間違いでは?
104:デフォルトの名無しさん
18/12/22 16:59:24.98 Bf3FfKs00.net
昔はそういうの参戦してたけど
俺が最強だとわかってからは興味がなくなった
105:デフォルトの名無しさん
18/12/22 17:01:56.44 h0Ytd2ZqM.net
そろそろ魔板でやって欲しい今日この頃
106:デフォルトの名無しさん
18/12/22 17:19:54.74 UXm6+Rqz0.net
え?これ、便乗を装った本人じゃねえの?
107:デフォルトの名無しさん
18/12/22 18:58:25.03 8REvBzyR0.net
一つのメソッドに処理A、処理B、処理Cがあるんだけど、処理〇と区別できる時点でメソッドとして扱うべきなんかね?
108:デフォルトの名無しさん
18/12/22 19:03:13.59 RR6G3DDfa.net
やってることに意味があり、それに名前が付くなら分ける
個人的には〇〇処理と名前が付くのはメソッドの単位としてはむしろ大きめ
単独で意味のある最小単位まで分けるのが理想
109:デフォルトの名無しさん
18/12/22 19:59:35.81 Bf3FfKs00.net
何を言ってるのかさっぱりわかりませんから設計書を書いてください
110:デフォルトの名無しさん
18/12/22 21:08:41.95 la2rnvqna.net
>>106
馬鹿の一つ覚えの教条主義はよくない
分けた方がそのメソッドの可読性が上がるなら分ける。
可読性に寄与しないなら無理に分けちゃダメ。
なぜならクラス全体の視点ではメンバーは少ない方がいい。
111:デフォルトの名無しさん
18/12/22 23:25:46.03 RR6G3DDfa.net
メソッドの可読性ってセンスが求められるからなあ
端的に言えば、そのメソッド呼び出しを見たときに、その中身をいちいち見に行かなくてもコードを理解できるかどうか、が全てだ
それができるならどこまで細かく分けてもいいし、できないなら分けないほうがマシ
処理の流れがわからんからサブプロシージャやめろおじさんの言い分も、低レベルな現場なら極めて正しい
112:デフォルトの名無しさん
18/12/23 00:20:31.69 pgnM6zpMM.net
そうだよな。calcって名前のメソッドがあれば計算していることはわかる。
113:デフォルトの名無しさん
18/12/23 00:30:49.90 iOIA70EQ0.net
とは言え、ループが把握できる大きさに抑えるのは大事
メソッドの処理の流れが見える範囲に大きさコントロールするように心がけているな
114:デフォルトの名無しさん
18/12/23 00:40:03.70 THpahYm7M.net
>>111
場合によるだろ
「多角形の面積」クラスのcalcメソッドを呼び出してたら面積を計算してるのは明らかであり、面積の計算方法に関心がない限りは中を見る必要はない
それが「多角形」クラスのcalcメソッドだったら意味不明だろう
極端な例だけど、そういうのってセンス無い奴は本当にセンスないから
115:デフォルトの名無しさん
18/12/23 00:44:44.37 744F4yO+0.net
まあそういうところに日本語のコメント書いとけばすむ話だな。
命名センスないからな。自分。。
116:デフォルトの名無しさん
18/12/23 00:55:46.55 iOIA70EQ0.net
メソッド名はわかり易さより英語として恥をかかない程度の単語かどうかってのを気にするな
後で見られたときに笑われたくはない
簡単な単語でもスペルはチェックする
117:デフォルトの名無しさん
18/12/23 08:07:40.95 Qo063XKD0.net
日本語でも良いよ
118:デフォルトの名無しさん
18/12/23 08:42:15.02 +g/rmc35M.net
全角文字でもOK
119:デフォルトの名無しさん
18/12/23 09:14:34.28 Ap3NimBD0.net
絵文字もok
120:デフォルトの名無しさん
18/12/23 19:57:25.95 6n30X/gf0.net
おかわりもOK
121:デフォルトの名無しさん
18/12/24 01:28:35.64 bmrfjFY/0.net
長さが10,15と異なるList<string>が2つあって10のListの値を15のListに先頭から埋めていきたいんだけど、ListでArray.Copyメソッドみたいなのないのかな?
122:デフォルトの名無しさん
18/12/24 01:53:50.78 JltPtxYxa.net
>>120
a10 = a15.GetRange(0, a10.Count);
ボトルネックでないならこんなんで十分
123:デフォルトの名無しさん
18/12/24 02:02:57.20 Z+6dfbfKa.net
120がやりたいのは要素の置換じゃないの?
まあ、組み込みの方法は用意さえてないので自分で書くしかないよね
124:デフォルトの名無しさん
18/12/24 02:11:14.58 Gf2UgbH0M.net
インプレースで置換する必要があるなら a10.Clear(); a10.AddRange(a15.Take(a10.Count)); でいいよ
少々非効率だがどうせこんなもんボトルネックにはならん
125:デフォルトの名無しさん
18/12/24 02:17:03.76 +5I2QCyu0.net
15の方にコピーしたいって言ってるのに逆ばっかじゃねーか
偉そうに答える前に日本語の読み方を覚えろよ
126:デフォルトの名無しさん
18/12/24 07:24:20.71 zs7tYDO50.net
ワラタ
127:デフォルトの名無しさん
18/12/24 07:24:47.31 zs7tYDO50.net
ガイジばっかだな
128:デフォルトの名無しさん
18/12/24 08:28:00.92 KFYgg8m6M.net
よく見ると逆ですらない
121はa15の先頭から10要素のリストだし
123はa10.Clear()後にa10.Countを参照してるので、実行後のa10は空だ
129:デフォルトの名無しさん
18/12/24 08:30:42.16 zs7tYDO50.net
ガイジの宝石箱かよ
130:デフォルトの名無しさん
18/12/24 08:35:25.17 APgc2n6m0.net
>>123
Clearしていいの?
131:デフォルトの名無しさん
18/12/24 08:42:01.70 APgc2n6m0.net
>>120は、こういうことなんだよな??
URLリンク(ideone.com)
132:デフォルトの名無しさん
18/12/24 17:58:02.29 0GmOXyNR0.net
>>127
うける
133:デフォルトの名無しさん
18/12/24 21:29:07.13 wShZDi2Q0.net
a15=a10.AddRange(a15);
で良くね?
134:デフォルトの名無しさん
18/12/24 22:49:22.82 kvP3AY+C0.net
a15は.Skip(a10.Count)が必要だしAddRangeは返値voidだし
a10が破壊されるのは気持ち悪すぎる せめて.Concatでやって
135:デフォルトの名無しさん
18/12/24 23:00:49.18 BVW7JO960.net
a10.Select((v, i) => i).ToList().ForEach(p => a15[p] = a10[p])
136:デフォルトの名無しさん
18/12/25 05:37:13.78 o3bLdzU90.net
質問です
applicationSettingsBaseを使って設定を保存したソフトのフォルダを移動したところ
設定がすべて消えてしまいましたが仕様でしょうか。
これを回避するためにはソフトと同じフォルダにiniを作るなどして設定を保存しないといけないでしょうか。
137:デフォルトの名無しさん
18/12/25 08:31:43.73 Pk7gkPrC0.net
SettingsProviderを自作すれば保存場所は変えられなかったか
138:デフォルトの名無しさん
18/12/25 12:19:27.12 H2h1tiNca.net
>>135
ApplicationSettingsBaseなんて使ったことないのでいい加減に言うけど、
普通に考えれば保存場所は起動したバイナリのパスになんか依存しないはずだと思うけど
URLリンク(www.atmarkit.co.jp)
ここにも書いてあるけど、バージョンとか製品名とかアセンブリの属性を何か変更したから
保存場所も変わったんじゃないの?
139:デフォルトの名無しさん
18/12/25 12:21:30.96 H2h1tiNca.net
ごめん>>137は訂正
俺の記憶違いで、記事にはバイナリのパスにも影響されると書いてあるねw
140:デフォルトの名無しさん
18/12/25 12:25:14.95 yMEv05zrd.net
>>137
いいえexeの絶対パスが変わると保存先も変わります
知らないなら適当に答えるなよ
141:デフォルトの名無しさん
18/12/25 12:49:04.91 H2h1tiNca.net
いいえ私はさそり座の女~
142:デフォルトの名無しさん
18/12/25 20:05:08.93 C73Cga6+0.net
C#スレが伸びてるけど、unityのおかげ?
143:デフォルトの名無しさん
18/12/25 20:36:10.99 bRmFmcZ5r.net
いいえ
144:デフォルトの名無しさん
18/12/25 20:49:56.13 wyvxpdNe0.net
設定の保存ならjson.net使ったほうが幸せになれるね
145:デフォルトの名無しさん
18/12/25 22:00:49.69 nl4zamMYa.net
>>143
保存時のフォーマット?
146:デフォルトの名無しさん
18/12/25 22:03:32.60 cYaw21oJ0.net
イニファイルにしとけ
イニファイルにな
147:デフォルトの名無しさん
18/12/25 22:20:50.60 NRydG5TY
148:M.net
149:デフォルトの名無しさん
18/12/25 22:21:37.22 m1C7tGngd.net
>>145
老害おつ
150:デフォルトの名無しさん
18/12/26 06:18:38.10 1oivSykz0.net
課題で10進数を2進数の文字列に変換したいのですが、これだとびっくりすくらい遅いです。
速くするにはどうしたらいいでしょうか。
class Program
{
public static void Main(string[] args)
{
string input = Console.ReadLine();
int i = Convert.ToInt32(input);
string output = "";
while(i >= 1)
{
output = output.Insert(0,(i % 2).ToString());
i >>= 1;
}
Console.WriteLine(output);
Console.ReadLine();
}
}
151:デフォルトの名無しさん
18/12/26 07:14:08.48 H45VhGP50.net
>>148
stringはほとんどの場合毎回新しいインスタンスが作られるから、代わりにStringBuilder使ってみ
152:デフォルトの名無しさん
18/12/26 07:18:31.50 H45VhGP50.net
あとたぶん普通はこれ
URLリンク(dobon.net)
153:デフォルトの名無しさん
18/12/26 07:35:37.09 gklwQdG7M.net
遅いっつっても一瞬じゃない?
たかが32bit整数くらいで。
試してないけど
154:デフォルトの名無しさん
18/12/26 09:33:17.59 Ts4c5NN9M.net
Stringは吃驚するほど遅いよ
155:デフォルトの名無しさん
18/12/26 10:28:31.49 yGWBBV+aM.net
遅いっつっても一瞬じゃない?
156:デフォルトの名無しさん
18/12/26 11:19:21.70 pZkVuIQAd.net
>>153
ループ一回ならね
157:デフォルトの名無しさん
18/12/26 12:39:12.50 UFWOb61Ja.net
>>150
Convertのそんなのあったな感w
でもこれゼロサプレスされるみたいだな。
まあリーディングゼロ付けるのは簡単だけども
158:デフォルトの名無しさん
18/12/26 19:06:58.35 Dcs5aUpT0.net
Windowsフォームアプリケーションで、
「ボタン上をドラッグしてる間(左クリック押下中、かつボタン上にカーソルがある時)」に音を鳴らしたいんだけど
Button1.MouseDownで再生、Mouseupで停止させるまでは出来ても
MouseLeaveに停止処理書いて、クリックしたままボタンからカーソル外したときには音がなり続けてしまいます
どういう記述がいいんでしょうか?
159:デフォルトの名無しさん
18/12/26 20:13:17.23 /gJf0JvK0.net
>>156
クリックしたままだとMouseLeaveが動かないみたいだな
URLリンク(ideone.com)
これは音を鳴らす代わりにフォームのタイトルにMouse On/Offと表示する
MouseDownとMouseMoveでカーソルの場所を見てボタンの範囲外だと無条件でOffにする
イベントとしてのMouseLeaveは外せそうな気がするしフラグ作ってもっと作りこめると思うけど面倒だからここまで
160:156
18/12/26 21:13:57.82 0HU+mpFl0.net
ありがとうございます!
入門したて故コード読んでも理解できないけど、丸写しからの改変で勉強しながらやってみます
161:デフォルトの名無しさん
18/12/26 21:40:59.20 sOj8GKWaa.net
>>156
やらずに適当に言うけど、MouseDownのイベントハンドラか何かで
Captureの値をfalseにしてやったら望んでるような動作になるんと違う?
162:デフォルトの名無しさん
19/01/03 03:05:05.68 2jZ78iU60.net
dotnet new webapp コマンドでプロジェクト生成した時に Controllers も Models も Views も作られないので、ちょっと面食らっています。
ASP.NET Core で Razor Page を使ったアプリを作る際は、ASP.NET でいう Controllers と Models に該当するフォルダはどこに作ったらいいんでしょうか?
特にビジネスロジック部分はどこにまとめるの
163:がいいのでしょうか?
164:デフォルトの名無しさん
19/01/03 05:32:43.60 ZmWGvR5ia.net
splitcontainerのpanel1に30個程度のボタンを設置し、それらは一つのイベントハンドラにまとめてて
押したボタンの色を変えるということをしようとしています
splitContainer1.Panel1.Controls[●].backColor = Color.Red ;
●の位置に入る数字はどのボタンと対応しているかがイマイチわかりません。
タブインデックスの数値とは別のようですし、どの数値の事を言っているのでしょうか。
165:デフォルトの名無しさん
19/01/03 06:22:31.48 2jZ78iU60.net
>>161
期待通りの回答じゃないかもしれないけど、これでもいいんでは?
protected void button_Click(object sender, EventArgs e)
{
((Button)sender).BackColor = Coler.Red;
}
166:デフォルトの名無しさん
19/01/03 09:33:34.04 mzbwP5/d0.net
>>160
dotnet new
167:デフォルトの名無しさん
19/01/03 09:49:03.47 92o1UEKg0.net
>>160
dotnet new mvc
ASP.NET Coreは3.0以降でfull .NET Frameworkを切り捨てるから、必ず.NET Coreを使うように
168:デフォルトの名無しさん
19/01/06 07:48:04.81 ys0B5FJg0.net
>>148
遅い原因は
>string input = Console.ReadLine();
じゃね?
ユーザーが全文字入力するのをぼんやり待ってないで
1文字でも入力された時点でその桁に関する処理を開始しとかないと
169:デフォルトの名無しさん
19/01/06 10:33:12.47 ijGp0fE40.net
>>165
>>149で解決すると思ったけど、その最後の行の実装例出せる?
170:デフォルトの名無しさん
19/01/06 10:50:54.92 SZQOw9ve0.net
>>166
件のプログラムで一番処理時間が長いのは起動だと思うから
実際にはその程度やっても変わらんでしょ
171:デフォルトの名無しさん
19/01/06 13:46:05.21 s+NsL/70M.net
>>165てネタじゃなかったのか?
172:デフォルトの名無しさん
19/01/06 15:10:03.44 yoKg5XOLM.net
何でもかんでもまずネタだと考えるのやめた方がいいですぞ
173:デフォルトの名無しさん
19/01/06 16:43:50.05 Dx0jhieJ0.net
ASP.NET Coreを使う練習してるんだけどさあ
実機で動かしてみるに当たって、手元のVisualStudioやVSCodeからLAN上にあるサーバ(Ubuntu)に配置して実行するまでって結構面倒に感じてしまう・・・・
これってなにかVisualStudioに配置実行を楽にする手段があるのかな?
それとも楽をしたければJenkinsかなにか勉強しなきゃあかんのかな・・・・
174:デフォルトの名無しさん
19/01/06 16:54:31.32 YMMAI1S40.net
今はどんな手順でやってるん?
175:デフォルトの名無しさん
19/01/06 18:18:02.00 Dx0jhieJ0.net
今のところ、「手元でビルド→SCPコマンドで転送→SSHで実行」みたいにしてるんだけど・・・・やっぱもっといい方法あるよな
176:デフォルトの名無しさん
19/01/06 18:22:43.98 SgRztK6B0.net
LINQの質問です
list1とlist2はList<int>型だとして
foreach(var value1 in list1) {
foreach(var value2 in list2) {
Console.WriteLine(value1 * value2);
}
}
これと同じことをLINQを使ってやるとしたらどう書けばいいですか?
Zipを使ってみたのですが同じインデックス同士しか掛け合わせてくれませんでした
177:デフォルトの名無しさん
19/01/06 20:09:56.59 NF88G39c0.net
linqでブロードキャストできたっけ?
178:デフォルトの名無しさん
19/01/06 20:11:35.37 YeoWOZf6a.net
>>173
メソッド構文ならSelectManyを使う
foreach (var v in list1.SelectMany(v1 => list2, (v1, v2) => v1 * v2))
{
Console.WriteLine(v);
}
この場合はクエリ構文の方が分かりやすいかも
var q = from v1 in list1
from v2 in list2
select v1 * v2;
foreach (var v in q)
{
Console.WriteLine(v);
}
179:デフォルトの名無しさん
19/01/06 20:13:20.52 NF88G39c0.net
>>173
URLリンク(dobon.net)
これでいけんじゃね?
ConvertAll
180:デフォルトの名無しさん
19/01/06 21:11:45.37 iQ1zVEqTM.net
>>170
AWSとか使えば簡単だよ
MSの推奨はもちろんAzureだけど、単なるVMのホスティングサービスとして使う以上のことを期待すると正直ゴミカスなので全くお薦めできない
181:デフォルトの名無しさん
19/01/06 21:17:12.87 iQ1zVEqTM.net
>>176
今時ConvertAllとか紹介してるゴミサイトはさっさと閉鎖すべき
182:デフォルトの名無しさん
19/01/07 00:48:07.98 voJmrOTp0.net
>>178
今だと何がベスト?
183:デフォルトの名無しさん
19/01/07 09:13:26.65 yGBdcOaa0.net
>>175>>176
いけました!
ありがとうございます
今回はSelectManyを使おうと思います
184:デフォルトの名無しさん
19/01/07 09:34:56.37 z57KVTQ70.net
>>166
考え方としては、例えば「3」が入力された時点で
次の入力結果は「3」か「30」~「39」しかありえないから
11通りの2進数表示を用意しておいて次のキーが押されたらそこで合うものを選んで表示する
どんなに10進数の入力桁数が増えても毎回11通り用意すればいいのは一緒なのと
10進数が1桁増えるときに2進数表示で最後の4桁以外の文字列は使い回せるから文字列連結処理は多少減らせる
この処理がユーザーのキー入力速度より早くCPUが処理できれば多少意味がある程度だろうけど
185:デフォルトの名無しさん
19/01/07 10:20:00.74 e8LT8JMZa.net
>>181
そのためにReadKeyを繰り返してたらそのオーバーヘッドの方が効果を圧倒的に上回ります
出直してきてください
186:デフォルトの名無しさん
19/01/07 10:28:19.23 3j9bnJUUM.net
>>181について更にツッコむと、1文字ずつ処理するなら単に入力されたキーの値を普通に反映させていけばよい
わざわざ候補を事前に用意してGCに負担をかける意味は全く無い
187:デフォルトの名無しさん
19/01/07 15:22:57.85 Nhl1xZLpa.net
チラシを見てキャベツが1円安いからと電車賃300円払って遠くのスーパーまで買いに行くような無駄な努力に思える。
188:デフォルトの名無しさん
19/01/07 19:03:54.28 RNZAQQS50.net
ネタを元にボケてるだけかと思ったら
189:デフォルトの名無しさん
19/01/07 19:56:07.52 ukOyD8nn0.net
Json.NETを使ったデシリアライズについて教えてください。
以下のようなJsonファイルを読み込んで、リストにデシリアライズをしたいです。
[
{
"email": "foo.example.com",
"active": true,
},
{
"email": "bar.example.com",
"active": false,
}
]
しかし、デシリアライズ時に、オブジェクトが2つ以上会い場合に例外が発生します。
using ( var sr = new StreamReader( @".\accounts.json" ) )
{
var accounts = JsonConvert.DeserializeObject<List<Account>>( sr.ReadToEnd() );
}
例外
Newtonsoft.Json.JsonSerializationException
エラーの原因はわかるのですが、解決策が思いつきません。
よろしくお願いします。
190:デフォルトの名無しさん
19/01/07 20:12:15.21 RNZAQQS50.net
デシリアライズではまる前に
オブジェクトをシリアライズして、どういうjsonが出来るか確認することを勧める
191:デフォルトの名無しさん
19/01/07 20:34:39.02 ukOyD8nn0.net
>>187
オブジェクトが単体の時は[]で囲まれていなかったので、
配列として認識されないような気がします。
もう一度考え直してみます。
ありがとうございました。
192:デフォルトの名無しさん
19/01/07 20:52:50.47 voJmrOTp0.net
parser通さずに自力解析した方が早そうw
193:デフォルトの名無しさん
19/01/07 21:41:14.56 EmaCRb9M0.net
>>186
うちの環境ではそのままで読み込めた。w
ああ、json ファイルのパスや、クラスをフルパスで書くように直したりはしたけど。
あと List<Account> を Account[] に変えてみても動作した。
json パーサは Newtonsoft.Json でいいんだよね?
ひょっとして json ファイルの文字コードや改行コードの問題だったりして。VS2017 で試した。
194:デフォルトの名無しさん
19/01/07 22:00:13.12 RNZAQQS50.net
まあ結論としては只の配列よねw
List<>が勝手に出てくる訳もなく
195:デフォルトの名無しさん
19/01/07 22:27:36.78 LR2ZtPQc0.net
>>181
「10進数が1桁増えるときに2進数表示で最後の4桁以外の文字列は使い回せるから文字列連結処理は多少減らせる」
の意味がわからない。
196:デフォルトの名無しさん
19/01/07 22:49:30.37 ZGeLga+2M.net
BCD?
197:デフォルトの名無しさん
19/01/07 23:07:28.05 7iifCEQOa.net
>>191
アホ?
デシリアライズ先の型としてList<>を指定してるんだからどう見ても勝手に出てきてはいないでしょ
普通にデシリアライズできるよ
198:デフォルトの名無しさん
19/01/07 23:26:43.60 PUyuVhSj0.net
>>192
単純に勘違いだろ。16進数から2進数への変換なら成立するけど
例えば251と256の2進数の下4桁が違うのはすぐわかる
質問引っ張るのもまずいけど元の質問者もフィードバックくらいしてほしいな
199:デフォルトの名無しさん
19/01/07 23:45:26.56 RNZAQQS50.net
json.netはList指定いけたわ
低速過ぎて最近使ってなかった
失礼した
200:デフォルトの名無しさん
19/01/08 01:42:19.06 +TBsMqqs0.net
9時と13時に定期的に作業を実行させたいので、タイマーを使ってプログラムを書きました。
似た部分が多いのでタイマー自体を配列化したのですが、「動作を停止しました」とエラーが出て動きませんでした。
タイマーの配列化って無理なんでしょうか?
System.Windows.Forms.Timer[] timerOnce = new System.Windows.Forms.Timer[2];
public GetControlsList()
{
myTimerOnce(timerOnce[0], "9:00");
timerOnce[0].Tick += new EventHandler(timerOnce_Tick);
}
// 指定時刻までの時間を計算して、Intarvalにセット
private void myTimerOnce(System.Windows.Forms.Timer thisTimer, string setTime)
{
//現在の時刻から、ターゲット時刻までのインターバルを算出
TimeSpan mySpan = DateTime.Parse(DateTime.Now.ToString("yyyy/MM/dd ") + setTime) - DateTime.Now;
int sleepSec = (int)mySpan.TotalMilliseconds;
thisTimer.Enabled = true;// タイマ ON
thisTimer.Interval = sleepSec; // 更新間隔
}
// 指定時刻になったらmethodを実行
void timerOnce_Tick(object sender, EventArgs e)
{
//実行したいメソッド
}
201:デフォルトの名無しさん
19/01/08 06:44:44.69 dT41V3TC0.net
アドバイス頂いた通りシリアライズを見直したところ解決しました。
var account = new Account { Email = "hogehoge.example.com", Active = true, };
using ( StreamWriter sw = File.CreateText( @".\accounts.json" ) )
{
var jw = new JsonTextWriter( sw ) { Formatting = Formatting.Indented };
new JsonSerializer().Serialize( jw, account );
}
このように書いていたので、accountをリストに変換してから行うようにしました。
new JsonSerializer().Serialize( jw, new List<Account> { account } );
レスくれた皆さん、ありがとうございます。
こちらもVS2017なのできっと文法違いが原因です。
Json形式を勉強し直します。
202:デフォルトの名無しさん
19/01/08 08:12:51.74 mtJIt88ca.net
>>197
そもそもWinFormsのタイマーは精度や信頼性がとても低く、時間の計測に使ってはいけない
あくまで「時々処理をさせたい」だけのときに使うもの
あなたのケー�
203:Xならタスクスケジューラを使うのが定石です
204:デフォルトの名無しさん
19/01/08 09:49:22.14 Sw3FA19SM.net
>>197
配列をnewしただけで中身のTimerをnewしてないからじゃないの
205:デフォルトの名無しさん
19/01/08 09:53:57.24 Sw3FA19SM.net
まずデバッグ実行することを覚えた方がいい気がしないでもない
206:デフォルトの名無しさん
19/01/08 12:12:53.32 +TBsMqqs0.net
>>200
まさにそれでした。
1行加えただけで解決しました。ありがとうございました。
207:デフォルトの名無しさん
19/01/09 07:23:03.10 fI4baLQf0.net
本当に初心者質問ですが、ライブラリはimportとnamespaceから書いていくのと、どちらが良いのでしょうか
もしくは使い分けがあるのでしょうか
208:デフォルトの名無しさん
19/01/09 07:48:48.51 c4aAB3Aqd.net
>>203
ここC#スレやで
209:デフォルトの名無しさん
19/01/09 12:18:51.14 fI4baLQf0.net
>>204
C#はusingですけどスコープ内でオブジェクト破棄する機能もusingと呼称してるので混乱しないようにimportと表現しました
なんで2つの記述方法を許しているのか、何か意味があるのか気になりまして
210:デフォルトの名無しさん
19/01/09 12:21:16.40 c4aAB3Aqd.net
>>205
c#にもimportはあるから余計混乱するだけ
名前空間とusingsは全然用途違うでしょ?
211:デフォルトの名無しさん
19/01/09 12:21:41.32 c4aAB3Aqd.net
C#というかMSBuildだけど
212:デフォルトの名無しさん
19/01/09 14:41:58.83 2h2JyjUc0.net
>>203
名前空間の全表記は可読性下げるので使ってないな
VSでカーソル当てれば名前空間表示されるし、今時テキストエディタでゴリゴリ書いている人でもなければ全表記する必要ないと思う
213:デフォルトの名無しさん
19/01/09 14:52:14.20 TKkGGOqYM.net
>>208
MediaのcolorとDrawingのcolorが混在してるときはぶっ潰したくなる
214:デフォルトの名無しさん
19/01/09 14:55:45.81 TKkGGOqYM.net
pathってファイルパスじゃなくて
曲線かよ死ねよとか
省略形でも違いがあったほうが絶対いい
215:デフォルトの名無しさん
19/01/09 19:11:30.62 5txyXp0A0.net
>>203
URLリンク(docs.microsoft.com)
usingでググればここに理由も呼び分け方(using ディレクティブ)も出ている
一般的な呼び名を使わないと調べることすらできなくなるよ
216:デフォルトの名無しさん
19/01/10 13:13:55.78 lMztlpGar.net
>>209
そういうの他にもある
217:デフォルトの名無しさん
19/01/10 20:09:22.40 9xQ4gBbQa.net
P/InvokeやCOM相互運用を書くときに
System.Runtime.InteropServices.ComTypes以下の構造体やインターフェースを使う時があるんだけど
System.Runtime.InteropServices以下に同名の物があるから、大体の場合で完全修飾かusing alias directiveが必要になって面倒なんだよなあ
.Net1.1時代の後方互換性のためにObsolete付きで残してあるんだろうけど邪魔で仕方がない
218:デフォルトの名無しさん
19/01/11 12:39:13.44 qc15f1nfD.net
>>211
その名前を知る事が大変ですよね
沢山本読むしかないんでしょうけど
219:デフォルトの名無しさん
19/01/11 12:57:28.29 RbVY6SmB0.net
>>214
この話はusingの話で質問した人もわかっているし
わからないなら分からないなりに説明したらいいだけ
オレオレ用語使ってこんなところで質問するのは普通におかしい
220:デフォルトの名無しさん
19/01/11 13:29:58.48 5RUmP2fm0.net
スレ間違えたことを嘘に嘘を塗り固めるのは朝鮮人の始まり
221:デフォルトの名無しさん
19/01/11 14:37:44.48 225AU0sE0.net
ちょっと教えろください。
int型変数二つの足し算でオーバーフローするかどうかチェックしたいのですが、
①decimalに�
222:Lャストして足し算した結果がintの範囲に収まっているかif文で判断 ②try catchで例外をつかまえる どっちがいいのでしょう?
223:デフォルトの名無しさん
19/01/11 14:40:44.08 86XGb19RM.net
>>217
③decimalではなくlongにキャストして足し算した結果がintの範囲に収まっているか判断
224:デフォルトの名無しさん
19/01/11 15:54:41.82 r18fheRy0.net
>>217
int_max - a < bなら
a + b < int_maxが成り立つ
でも>218のほうがわかりやすいとは思う
225:203
19/01/11 17:49:49.09 1orv+xc30.net
俺がjavaerという事がバレちまったらしょうがねえ
なんだよusingってよ
vb如きだってjavaリスペクトしてんぞ
226:デフォルトの名無しさん
19/01/11 18:29:52.22 KWycMyC0a.net
>>217
オーバーフローは同じ符号の値を足した時にしか起こらず、起こった場合は前後で符号が変わる。
他の人が見ても何やってるか分かることが重要ならそれで判定するのが一番だと思う
227:デフォルトの名無しさん
19/01/11 18:33:43.65 KnmjjSvJM.net
ラップアラウンドとサチュレーションって学生のときに聞いたのが最後だ
228:デフォルトの名無しさん
19/01/11 18:40:14.66 fFtOgUz40.net
すみません、初めて見る構造体が出て来たのですが
[StructLayout(LayoutKind.Sequential)]
struct INITCOMMONCONTROLSEX
{
public int dwSize;
public uint dwICC;
}
これは何構造体と読むのですか?
229:デフォルトの名無しさん
19/01/11 18:45:24.19 1+lzGhU1M.net
つまらん!
お前の話はつまらん!
230:デフォルトの名無しさん
19/01/11 18:46:13.28 eF6moy/g0.net
>>223
URLリンク(ufcpp.net)
>Sequentialレイアウトでは、複合型のフィールドは宣言した順序通りにレイアウトされます。
231:デフォルトの名無しさん
19/01/11 18:49:12.65 1+lzGhU1M.net
イニシャライズコモンコントロールズイーエックス構造体
232:デフォルトの名無しさん
19/01/11 18:51:24.03 zVvjOIcHa.net
>>223
構造体名で検索したらInitCommonControlsEx関数が出てくるじゃろ
233:デフォルトの名無しさん
19/01/12 00:09:08.43 iaJ8ArIE0.net
VS2017でC#のプログラムを組んでます。
はじめてVS2017を使うのですが、画面の下に
準備完了 ↑ソース管理に追加
という邪魔なバーが表示されてます。
VS2010にはありませんでした。目障りなのでこれを消したいのですが何か方法はありますか?
234:デフォルトの名無しさん
19/01/12 00:20:55.22 Fl9Ups4U0.net
>>228
ツール->オプション、環境->全般、ステータス バーを表示するのチェックを外す
235:デフォルトの名無しさん
19/01/12 00:21:44.23 iaJ8ArIE0.net
>>229
ありがとうございます!!目障りだったんですよね。
236:デフォルトの名無しさん
19/01/12 01:04:45.40 CChJ5ept0.net
色々迷ったけど
オートフォーマットはOFFにした
237:デフォルトの名無しさん
19/01/12 03:22:33.67 S1bCJ3S10.net
例外処理(に限らず、エラー処理)ってどこまで徹底して行うべきなんでしょうか?
下みたいに、使うインスタンス片っ端から毎回nullチェックとかしてたら、凄まじいコード量になるんですが・・・・・
if(obj == null)
{
return msg;
}
238:デフォルトの名無しさん
19/01/12 03:53:00.80 ejfouP+Ya.net
>>232
さあ。
でもバグと例外は区別した方がいいんじゃないか。
そのコードは多分バグを想定してるんだよね?
絶対にとは言い切れないが、バグを想定してそれを検出するifは書かないのが普通じゃないか
いやライブラリみたいなものを作ってるならバグを想定して例外を投げるのは普通だけど
239:デフォルトの名無しさん
19/01/12 03:58:46.63 ejfouP+Ya.net
最後の行は引
240:数のチェックの話ね
241:デフォルトの名無しさん
19/01/12 04:03:08.28 2xT9w9620.net
return msg
してるから まず例外をちゃんと使えてないんじゃ疑惑
242:デフォルトの名無しさん
19/01/12 04:04:51.50 DC6KrvaN0.net
デザインパターンでnullオブジェクトパターンみたいの参考にするのは?
243:デフォルトの名無しさん
19/01/12 04:12:05.96 DC6KrvaN0.net
nullが入るケースがあることを想定している場合にnullチェックを全部書くのがめんどいならnullオブジェクトパターン適用すればいいし
本来はnullが入ってたらおかしいケースならエラーを起こして拾わせるのが正しい構造って回答でいいのかな?
244:デフォルトの名無しさん
19/01/12 04:17:50.15 2xT9w9620.net
・nullが来ない想定ならチェック不要
・nullケース考慮したくないならnullオブジェクトパターン
・null来た場合にぬるり以外で知らせるならチェックする
・nullのネスト面倒ならnull条件演算子
こんな感じやろか
null非許容参照型使うという手もあるが
245:デフォルトの名無しさん
19/01/12 08:05:30.51 VHzQIvd20.net
読んでる入門書のLINQとラムダうんたらってのが分からなくて
手がstopしてしまっているのですが入門者向けに分かりやすく解説されてるページなど教えていただけないでしょうか?
メソッドの使い方はある程度分かったのですがそれじゃ駄目なんすかね…
246:デフォルトの名無しさん
19/01/12 08:39:26.90 0dPYYJK00.net
>>239
LINQやらラムダ使えなくても動くものはつくれるからまぁまずは作ってみよう
247:デフォルトの名無しさん
19/01/12 10:13:12.90 iaJ8ArIE0.net
最近は、自分でプログラム組まずにランサーズでハイスキルな奴に外注してるわw
中抜きでうま~~~
248:デフォルトの名無しさん
19/01/12 10:35:45.31 e9xF8Gpoa.net
>>232
チームの方針次第
うちの場合は
nullを許可しない引数と返り値は基本的に全てチェックして例外を投げてる
めんどくさいと思うかもしれないがFluentAssertionのようなライブラリを使えばそこまで大きな負担にはならない
nullオブジェクトパターンはやればわかるがチェックするよりも手間がかかる
また必ずしもnullの場合の適切な動作を定められるとは限らない
適切でない場合にパターンを適用するとそれがnullオブジェクトかどうかチェックするといった本末転倒なことになりかねない
なのでこれが最も適切と確実に判断できる場合を除いて使用しない
C# 8.0が待ち遠しいね
249:デフォルトの名無しさん
19/01/12 10:44:33.52 CChJ5ept0.net
>>232
仕様と設計で解決する問題
エラーが出たときどうしたいの?
エラー出たときに別に原因とかわからんでええなら一連の処理をtrycatchで囲ったらええやん
なんか起きたらcatchに入ってくるで
250:デフォルトの名無しさん
19/01/12 17:18:08.40 XDHakXaX0.net
>>232
外部とのやりとりの場所は結構厳重にチェックを入れる。
自分で書いているところは適当に流す。
外部とは当該館数のパラメータや、呼び出す関数とかの戻り値ね。
try catch で囲んで、チェックして例外発行して、catch 内でまとめてトレース情報込みでログ出してスローするくらいなら大した手間じゃないじゃない。
その例なら if( obj == null ) throw new ArgumentNullException("ぼーっと生きてんじゃねーよ!"); で済む話じゃん。
>>239
コピペでもいいからたくさん書いてみる。で解決するよ。
やってるうちに理屈が分かるようになる。
251:デフォルトの名無しさん
19/01/12 17:23:52.90 iaJ8ArIE0.net
昔は開発現場でこっそりExcel型の2chブラウザでネットサーフィンばかりしてたな~
座ってるだけで月70万むっちゃらくやった
252:デフォルトの名無しさん
19/01/13 00:23:58.00 X0+RFgX60.net
>>239
駆け出し時代オー�
253:vンソース改造してた時にLINQはパフォーマンス悪いと思って見つけ次第foreachに手直しするという逆工程でLINQとラムダ式マスターした
254:デフォルトの名無しさん
19/01/13 00:46:53.42 IIPQpabmp.net
使えば勝手にlinqの快感にハマって抜け出せなくなる
255:デフォルトの名無しさん
19/01/13 04:21:19.42 qwE0jZig0.net
麻薬のような機能だなw
256:デフォルトの名無しさん
19/01/13 09:07:48.83 Xn8IPTP50.net
LINQもRxも使いだすと元に戻れなくなる
でも性能気にしてstructとforeachに書き直し始めると時間足りない
257:デフォルトの名無しさん
19/01/13 09:32:12.32 Z+h8nfOL0.net
>>246
パフォーマンスのためならなんでforにしなかったん?
258:デフォルトの名無しさん
19/01/13 18:27:15.40 X0+RFgX60.net
>>250
Listはしてたよ
あとラムダ式はLINQ→foreachより行数減らす意識持って1行メソッドを見つけ次第ラムダ式に直す工程で習得したな
259:デフォルトの名無しさん
19/01/14 23:20:39.35 3wGjtMyb0.net
ComboBoxに例えばA~Dと4つ項目が入っていて、A~Cは同一計算方法でDのみ特別な計算方法でコード内容が異なり且つ色んな計算をする為コードが長くなる場合の見やすくする為の最初の分岐方法とか書き方とかありませんか?
今はifで分岐した中にあれこれ結果を取ってきて結果を出してるのでifがやたら長く見辛いです。なんかいい方法があれば教えて頂きたいです。
260:デフォルトの名無しさん
19/01/14 23:31:33.99 CBheeOs80.net
LINQ使うと元に戻れなくなるのはわかるんだけどデバッグしづらくね?
デバッグを想定する時点で初心者なのかな...教えてエロい人
261:デフォルトの名無しさん
19/01/15 00:45:24.53 DUfu4s9fa.net
>>252
4っつぽっちの分岐で何がそんなに見づらくなるのかちょっと理解できんよ。
いや、煽ってるわけじゃなく本当に
各分岐先のコードが長くなるっていうのならそれぞれメソッドに切り分けるだけじゃないの?
262:デフォルトの名無しさん
19/01/15 02:09:17.70 gvlEsXBIp.net
>>252
if(value == d){
d用処理またはメソッド
}else {
a~c用処理またはメソッド
}
これじゃダメなの?
263:デフォルトの名無しさん
19/01/15 04:09:30.23 Vsgk6Uc3K.net
>>252
ComboBoxにブチ込むためのクラスを書いてDは継承
264:デフォルトの名無しさん
19/01/15 06:09:12.86 rjgxVR8i0.net
LINQはなかなか身につかんなあ。
とりあえずforで書いといて見直してこれLINQで一行になるんじゃね?と気付いたらいそいそと書き直す感じ。
LINQ脳になってない
265:デフォルトの名無しさん
19/01/15 06:39:49.84 OSSPo6bD0.net
例えば処理順を意識しなくて良い場合、通常のforまたはforeachで処理するのと、Parallel.ForEachで並列処理するのはやはり並列処理の方が早い?
266:デフォルトの名無しさん
19/01/15 07:24:38.34 ohj/8QmzM.net
>>255
質問者の意図とは違うかもしれんがそういうコード書くと怒るやつがいた職場がある
わざわざ継承してうにゃうにゃやらんと怒る
んでできたコードが何がいいのか考えてもさっぱり意味がわからん
本人にメリットを聞いてもさっぱり理解できんというかメリットの話になると必ずボケた返しをする
ありもしない改修を想定してキチガイとしか思えない発言を連発する
そもそも仕様書や設計書に処理がその数で分岐するってあるのに
なんで普通に書いたら怒るんだよ
もうお前とはやってられん
ってとこまでいって仕様書や設計書通りに組んでるのに工数が増えてるのはあんたのせいだ
って会社間の会議になってもまだグチグチ言ってる
その場にいる全員?な状態だった
267:デフォルトの名無しさん
19/01/15 08:37:28.18 biF
268:9zsRRd.net
269:デフォルトの名無しさん
19/01/15 08:41:56.04 AEHaNlhRa.net
>>259
条件分岐が減るとかじゃないの?
それだけ不具合が減る理屈だが、工数が増えてるんじゃ意味ないな
270:デフォルトの名無しさん
19/01/15 08:50:45.78 OahWWfOzM.net
普通のケースでは継承にしても
条件分岐が別の場所に移動するだけだべ
271:デフォルトの名無しさん
19/01/15 09:24:06.17 n85zJfLmM.net
>>258
Parallel.ForEachはオーバーヘッドが大きい
一周に数百ミリ秒かかるくらいの粒度の大きなループでない限りは普通のforeachより確実に遅くなる
272:デフォルトの名無しさん
19/01/15 10:26:04.16 fix0rts+0.net
多態性は手間がかかる割に恩恵が少ないよな
273:デフォルトの名無しさん
19/01/15 16:18:48.41 R0UqBAnw0.net
>>257
foreachならともかくforで書いているなら苦労するだろう
274:デフォルトの名無しさん
19/01/15 16:22:04.50 R0UqBAnw0.net
>>259
逆のパターンなら数多見てきたけど、そのパターンは珍しいな
if分岐が10以上になるからなんとかしてと言われて継承使ったプロトタイプ渡したら、なぜか基底クラスでif文復活してたことならあるけど
275:デフォルトの名無しさん
19/01/15 16:36:00.01 0qvQfApDM.net
C#のforeachってpythonみたいに定義しないでindex取得出来ませんか?forにするしかないでしょうか?
276:デフォルトの名無しさん
19/01/15 16:37:26.00 Oh+57Mh2M.net
[_]
277:デフォルトの名無しさん
19/01/15 16:53:35.12 XrO54/Dg0.net
>>267
foreach単体じゃ無理
Enumerable.Select Method
URLリンク(docs.microsoft.com)
278:デフォルトの名無しさん
19/01/15 17:42:13.30 AbSveg4gd.net
>>267
上のSELECT使った実装例はこんな感じ
foreach (var x in items.Select((item, index) => new { item, index }))
{
Console.WriteLine($"index: {x.index}, value: {x.item}");
}
Listか配列かIEnumerabelどれでやってるかは知らないけどもこれで行けるはず
279:デフォルトの名無しさん
19/01/15 17:49:07.53 u2JtKhAa0.net
forが完全上位互換なのになんで
foreach使うのか?
って今でも思ってるよ俺は
ループにインデックスが必要になったというただそれだけで変更するんだぜ
280:デフォルトの名無しさん
19/01/15 17:55:58.21 AbSveg4gd.net
indexが必要でCountもできる時はわざわざindex生成してforeach使う必要無いと思うけどもLinq使いたい時とかIEnumerabelに実装してるものにわざわざfor使わない派
281:デフォルトの名無しさん
19/01/15 17:58:55.44 AbSveg4gd.net
というか戻り値をIEnumerabelにして抽象化しておく事が多いから余計にforeach使うのはあるかもしれない
Linq拡張メソッド作る時とか諸々
282:デフォルトの名無しさん
19/01/15 19:24:57.54 Kk36dR3w0.net
とりまLINQ使って富豪的に組むだろ
283:デフォルトの名無しさん
19/01/15 20:11:07.93 LAAyKIEna.net
>>252
int CalcDefault();
int CalcSpecial();
int Calc() {
if (IsSpecialCase()) return CalcSpecial();
else return CalcDefault();
}
bool IsSpecialCase() => combo.SelectedValue == "D";
とりあえず最初はこれでいいよ
似たような条件分岐が増えてきたらリファクタリングしてポリモー対応できないか検討
最初からポリモーは大げさだからやらなくていい
でも後でリファクタリングしやすいように責務指向でメソッドを切っておくぐらいはやっておいたほうがいい
このへんのさじ加減は経験則だな
284:デフォルトの名無しさん
19/01/15 20:18:43.20 ToRrrvnYa.net
switchを無くすのに多態
285:なんか使う必要ないね。 すくなくともC#にはデリゲートがあるんだから多態使うぐらいならComboBoxのアイテムに デリゲート持たせた方がいいよ。 個人的にはこれも本当に可読的か疑問だけど。 分岐素直に分岐で書いた方が分かりやすいって
286:デフォルトの名無しさん
19/01/15 20:29:43.48 u2JtKhAa0.net
テストするときに圧倒的にわかりにくいコードになんの意味があるの?
バカのやることは本当にわからない
287:デフォルトの名無しさん
19/01/15 20:31:56.84 LAAyKIEna.net
確かに
分岐が多いとテストしにくい
少しならいいけど限度がある
288:デフォルトの名無しさん
19/01/15 20:50:47.00 u2JtKhAa0.net
設計書で分岐が100個あったらswitchcaseかifで100個書けよ
それが気に入らないなら設計書直せよ
そういう当たり前の手続きを無視してコード書いてる雑魚に俺は超えられねぇ
289:デフォルトの名無しさん
19/01/15 20:54:23.73 ShjRgn6y0.net
switch vs 多態って結局プログラムがDRY & SOLIDになってるかどうかって問題に帰着すんだよな
>>255はDRYでもSOLIDでもない
>>275はSOLIDではあるがDRYではない
多態までいけば完全にDRYでSOLIDなプログラムになる
そのコードが一回こっきりで重複がないという前提だと、DRYのありがたみを実感しにくい
だからswitch派が一定数居るのだろうね
290:デフォルトの名無しさん
19/01/15 20:58:26.66 AbSveg4gd.net
インターフェイス厨だから似たような分岐はインターフェイスで分けて個別実装か本当に共通してるなら継承でなんとかしたくなる
それと見返したら俺酷いスペルミスしててワロタ
291:デフォルトの名無しさん
19/01/15 22:25:49.08 rPJfKlkHp.net
cしか知らないのです
vsをダウンロードして独学でc#勉強し始めたのですが、どうにもなりませんです
オブジェクトだのラムダ式だのデザインパターンだの文法的な要素以外に勉強しないとなにを言ってるのかわからない事が多くて、勉強の進め方が間違ってるのだろうと思いました。
初心者丸出しの質問で恐縮ですが、どんな順で何を勉強したら良いでしょう?
また、良書、良いウェブページなどご存知でしたら、ご教示いただければ幸いです
よろしくお願いします。
292:デフォルトの名無しさん
19/01/15 22:32:18.90 2N1r/ZHN0.net
>>282
物まねでもなんでもいいから何か作りまくれ
用語とかから勉強しなくていい。色々調べるうちに覚える
わからなくなったらやりたいことの頭にC#+スペース入れて検索
293:デフォルトの名無しさん
19/01/15 22:33:11.37 p93FMJH30.net
必要性がわからない概念を理解するのは難しい
それはコード書いた経験が少なすぎるから
Cもほぼ入門書読んだだけでしょ
とりあえず自分が理解できる範囲の知識でなにか作りたい物つくった方がいい
294:デフォルトの名無しさん
19/01/15 22:52:10.98 qux9+5740.net
>>282
主にオブジェクト指向関係が分からないみたいだから
オブジェクト指向入門系の本やウェブサイトを探せばいいんじゃないか?
あるいはC#にこだわらないのであればC++の入門書はC言語との違いとして
オブジェクト指向向けの機能に触れているものが多いと思う
実際にプログラム作ってオブジェクト指向の感覚掴みたいなら
個人的にはちょっとしたゲーム作ってみるのもオススメだな
UnityならC#使えるし
295:デフォルトの名無しさん
19/01/15 23:25:56.04 Zm1dLYXR0.net
>>282
勉強の進め方というか基本的な理解が浅いのでは
Cでも構造体ネストして疑似継承くらいするだろうし
ラムダにしてもクロージャ要素はともかく匿名関数
とりあえずクラスは関数を纏めているのではなく
型を作りデータと結び付けているという事だね
URLリンク(docs.microsoft.com)
翻訳が割と酷いが公式にもドキュメントはあるよ
296:デフォルトの名無しさん
19/01/15 23:31:48.76
297:grH+sReD0.net
298:デフォルトの名無しさん
19/01/15 23:33:48.23 grH+sReD0.net
図々しいお願いで恐縮です
299:デフォルトの名無しさん
19/01/15 23:35:09.56 opRVBBPd0.net
デザパタは経験積まないと有り難味が判らないから放置でいいよ
作りたいものを完成させるにはどうすれば近道かだけ考えろ
300:デフォルトの名無しさん
19/01/15 23:40:43.54 grH+sReD0.net
>>289
デザイパターンはある程度蓄積が出来てないとありがたみがわからない、だから、後回しでも良いと言う意見ですね
クラスを作る定石集のようなものだと思ったので、先に勉強した方が良いのかとも思っておりました
定石知らなくても、楽しく将棋はできるのだから、後回しでも良さそうですね
ご意見ありがとうございます
301:デフォルトの名無しさん
19/01/15 23:50:54.16 u2JtKhAa0.net
vector3Dクラスの内部に
vector2Dクラスは普通は作らないんだぞ
知ってた?
しかし、両クラス共にメンバx,yを保持する
そう、お前らの大っっっっっっっ嫌いな重複だw
しかし、極上のバカでもない限り
vector3Dをvector2D+zで作るやつなんてこの世にいないんだよ
わかるな?
この例ではわかりやすく
XYZで説明してやったが
世の中ってのはこういうもので満ち溢れてるんだよ
xyでもyzでも計算するときがあるのさ
わかりにくいだけで
xyをvector2Dで作ってしまったオブジェクトのyzの計算は不格好なのさ
オブジェクト指向は破綻している
そこをわかった上で付き合うんだ
302:デフォルトの名無しさん
19/01/16 00:03:56.21 9UhWNW230.net
>>287
物に例えるってのは常々ダメだと思うわ、関係ない要素が絡んできて
人に依ってはマイクロウェーブとか出るの?とか思うだろうし
クラス設計としちゃフィールドは構造体と一緒だけどメソッドは…
うん、とりあえず手続き型っぽく作っても良いだろう\(^o^)/
多態性は+演算子の数値なら加算が文字列だと連結になるとかね
C経験はCUIのみという事かな?.NET Frameworkなんか知らん!という事であれば
Visual C++ Windows デスクトップアプリを従来通りWin32で作っても良いと思うけど
手っ取り早くダイアログベースで作成してメッセージハンドラに渡ってきたIDで振り分ける
ぶっちゃけ.NET FrameworkもWin32 APIをラップしてるだけなのでC#も基本は変わらない
フォームデザイナーで弄くってコントロールにイベントハンドラ割り当てるだけ
303:デフォルトの名無しさん
19/01/16 00:44:36.48 RsJGf8R10.net
>>292
制御系のプログラムばかり書いているのです
どうかするとロジアナ見てる方が多いかもしれませんが
パソコンの世界はほとんどわからないです
304:デフォルトの名無しさん
19/01/16 01:02:27.00 NripHWV9a.net
>>293
制御系ならCでも自然とオブジェクト指向的な設計でコード書いてたはずだと思う。
「キーをスキャンしてデバウンス処理を担当するコード」とか「LCDドライバーへの表示データの転送を担当するコード」
とか、そういう仮想機械をコード上にいっぱい作ってたはず。
オブジェクト指向のオブジェクトって要はこの仮想機械のこと。
クラスはそれを書きやすくするための仕組みに過ぎん。
だからたぶん心配してるよりずっと簡単な話だと思うよ
305:デフォルトの名無しさん
19/01/16 01:07:11.33 RsJGf8R10.net
>>294
私の頭の中はオブジェクト指向とは無縁です。
設計そのものに、そんな考え方を取り入れていないので、どこまでも手続き型で考えてしまうのです。
強いて言えば、状態遷移を作るときに少し似たような考え方になるだろうか、という程度ですね
なにをクラスとすれば良いのか、そういうところがピンとこないので、わからないのです。
306:デフォルトの名無しさん
19/01/16 01:13:49.60 9UhWNW230.net
いわゆる組み込み系か、それだと逆にこっちが経験乏しいけど、Cライブラリなら馴染みはあるのかな
するとまずはVisual C++からWindowsコンソールアプリをC/C++ライブラリで作ってみるとかかねぇ?
APIとかはC#にしろMSDN…今はMicrosoft Docs?を見るしかないね、C#ならIntelliSenseにも詳細出る
でもC#からなんか制御するとかだと結局プラットフォームのネイティブAPIや専用ライブラリになるか?
とりあえずオブジェクト指向とかを学びたいのであればC++や他スクリプト言語とかでも良さそうな
307:デフォルトの名無しさん
19/01/16 01:15:08.32 NripHWV9a.net
>>295
でもキュー(リングバッファー)ぐらい実装したことあるでしょ?
端的に言えばあれがオブジェクトの一例っすよ。
データ(配列 + 読み出しポインタ + 書込みポインタ)と、
それをリングバッファーに見せかけるコードの組み合わせ
簡単でしょ
308:デフォルトの名無しさん
19/01/16 01:30:35.70 RsJGf8R10.net
>>296
言語そのものはどれでも良いと考えています
vsのヘルプを読む限り、同じことができてるようですから
どうせなら、c#を勉強してみたいなと考えております
309:デフォルトの名無しさん
19/01/16 01:36:56.53 RsJGf8R10.net
>>297
リングバッファがオブジェクト指向の考え方なのですか。
なるほど。
仮装化したデバイスのようなもの、ということなのでしょうか。ハードディスクのドライバやNICのドライバは確かにアプリケーションからみると仮想的で、実際のハードウェアの持つ機能とは関係なくつかえるようにしますね
少し例えがわかった気がします
ありがとうございました
今日は遅いので、この辺で失礼します
310:デフォルトの名無しさん
19/01/16 02:56:08.32 JSfUU2TA0.net
private Task<int> hoge{....}
というメソッドがあって
var t=hoge();
でタスク走らせた後、ちょっと別の処理してから
t.ContinueWith(()=>...);
と継続タスクを付け足した場合、
付け足した時点でhogeが終わってれば
すぐ継続タスクの処理を開始してくれますか?
311:デフォルトの名無しさん
19/01/16 08:32:38.24 vAlWKxD3a.net
>>300
はい
312:デフォルトの名無しさん
19/01/16 09:09:41.77 CvIYGZ/W0.net
なんならTask.CompletedTaskからでもContinueWithできる
313:デフォルトの名無しさん
19/01/16 11:29:57.72 O5e9hp9mM.net
>>299
オライリーのヘッドファーストオブジェクト指向がおすすめ
314:デフォルトの名無しさん
19/01/16 16:28:16.62 UcQqPOFa0.net
ついでに、ユニットテストを身につける本をだれか教えてくれんかな
どの入門書もテストについて全く教えてくれんがどうなってんだ・・・・
315:デフォルトの名無しさん
19/01/16 16:40:21.97 vTKVQdGXF.net
そのうちテストのテストも書きたくなってくる
316:デフォルトの名無しさん
19/01/16 18:30:37.61 rdmn+dmd0.net
なかなかゲームの自動プレイを実装するの難しいな~
317:デフォルトの名無しさん
19/01/16 19:00:09.87 uHZTYjv/a.net
>>241 >>245 >>306
>>1
318:デフォルトの名無しさん
19/01/16 19:04:33.77 rdmn+dmd0.net
1は俺の書き込みちゃうでぇ
319:デフォルトの名無しさん
19/01/16 20:32:03.28 LiM0dr73p.net
>>303
どうもありがとうございます
java c#を習得している人が前提の書籍のようですね
オブジェクト指向の勉強には良さそうな本で助かります
javaも知らないので、今度丸善にでも行って太刀打ちできそうか、少しみてから判断しようと思います
320:デフォルトの名無しさん
19/01/16 21:05:07.42 wbo0XsPzd.net
>>301
>>302
ありがとうございました
321:デフォルトの名無しさん
19/01/18 05:08:46.83 bjcECFHM0.net
すまんが、VisualStudio2017についてる.NET Core2.1って、2.2にするにはどうすればいいの?
勝手に入ったんだからVisualStudio周りからアップグレードする方法があって良いような気がするものの・・・・どこにあるんだろ!?
URLリンク(dotnet.microsoft.com)
それともこっからダウンロードしてきて入れちゃえば良いのかな?
322:203
19/01/18 07:03:56.21 3+zdHjT80.net
>>287
動物スーパークラス作って猫クラスと犬クラス作って猫にニャーニャー 犬にワンワンと鳴かせるプログラム作りな
完成したらオブジェクト指向習得
これで月18万の8次請非正規になれるよ
面談では経験8年で勘定系COBOLの経験有りと答えてね
323:デフォルトの名無しさん
19/01/18 07:26:09.39 UV6kIYNk0.net
>>311
VSのインストーラから入れられるのはLTSだからか知らんが今のところ2.1まで
2.2はSDKで入れてプロジェクト毎にターゲットとして指定すればおk
324:デフォルトの名無しさん
19/01/18 07:46:49.16 tSI143EMa.net
>>312
意地が悪いな
325:デフォルトの名無しさん
19/01/18 09:51:47.00 LKOsIFRz0.net
オブジェクト指向は色々勉強するより
ちょっとしたゲームでも作ったほうが分かりやすいと思うわ
モンスターとヒーローを作って相手を攻撃するメソッドと攻撃を受けたときにダメージを受けるメソッドを書いて 終わり
326:デフォルトの名無しさん
19/01/18 11:05:46.51 OxZoH0bi0.net
非同期のファイル検索処理を途中でキャンセルしたいのですが
時間がかかる処理はDirectory.GetFilesなので
CancellationPendingをどこに書いても処理が終わるまでキャンセルされないのですが
どう書けばよいでしょうか
URLリンク(dotnetfiddle.net)
327:デフォルトの名無しさん
19/01/18 12:09:48.64 FhyCLWa9d.net
>>316
こういうやつ?
URLリンク(qiita.com)
328:デフォルトの名無しさん
19/01/18 12:11:43.78 70siMoMg0.net
>>316
Directory.GetFiles()の代わりにDirectory.EnumerateFiles()を使う
329:デフォルトの名無しさん
19/01/18 13:00:12.01 Xg90leRQM.net
>>315
ゲームはオブジェクトと環境との間のインタラクションが多すぎるからオブジェクト指向を学ぶには適さない
プロでも結局全部グローバルスコープでアクセスできるようにしとけみたいな設計にしかならん
330:デフォルトの名無しさん
19/01/18 14:06:54.39 LKOsIFRz0.net
じゃあやっぱ>>312がベストアイディアだな
331:デフォルトの名無しさん
19/01/18 17:53:25.90 3+zdHjT80.net
俺が先輩なら新人に自動車クラスとタイヤクラス作らせて型継承でタイヤ交換
332:は容易にするようにと課題出す 出来たら6年選手として売る
333:デフォルトの名無しさん
19/01/18 17:56:23.24 3+zdHjT80.net
新人言うても30歳超えの中途ね
コスパ良いんだわ
年食ってると従順でパワハラにも耐える
そう言えば20代新人とか見たことない
存在するのかね
334:デフォルトの名無しさん
19/01/18 18:53:47.09 LKOsIFRz0.net
すまんがIT企業の闇と経験年数詐欺の手法はマ板でやってくれんか?
ム板は数年後のプログラミング教育必修化に向けてフレッシュでさわやかな若者向けの板に改装する予定なんだが
335:デフォルトの名無しさん
19/01/18 19:22:42.59 LUo6T6YMr.net
おまえが改装するの?
336:デフォルトの名無しさん
19/01/18 19:45:43.10 adSAogxL0.net
マ板話をム板でするなハゲ
337:デフォルトの名無しさん
19/01/18 19:57:21.94 zUd1LnnRd.net
>>325
ハゲ・ヅラ板の話をム板でやるなよ