X



ふらっと C#,C♯,C#(初心者用) Part141
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん (ワッチョイ 2317-qMUn)
2018/12/15(土) 11:07:07.89ID:0aSEF/I+0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
https://mevius.5ch.net/test/read.cgi/tech/1538646998/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0009デフォルトの名無しさん (ワッチョイ ff9e-3Pua)
2018/12/15(土) 21:47:58.45ID:wbNOQa8W0
Consoleアプリで、Main関数から別スレッドを起動して
func1()を一回だけ実行したいんですが、
system.timers.timerとかsystem.threading.threadとかいろいろあるんですが、
初心者向きのお手軽なのはどれでしょうか?
0016デフォルトの名無しさん (ラクッペ MMb3-76+Y)
2018/12/16(日) 00:42:36.71ID:Y9KSWbqyM
なにで開発すんのって、普通にMSBuildとか使ってますよ
OSS禁止を真面目に言ってる人は本質的に疎い人なんで、その辺は理解できていません
MSBuildが何なのかすら、いや、存在すら知らないでしょうな
0020デフォルトの名無しさん (ブーイモ MMaa-MGZ2)
2018/12/16(日) 12:26:28.88ID:aLTMjJBbM
msbuildもcscもビルドに使われるだけで成果物がそれに依存しているわけではないだろう
OSS禁止でもeclipseはOKなのと同じ理屈
WinFormsやWPFという正真正銘のOSSを使うのとはわけが違うよ
0026デフォルトの名無しさん (スプッッ Sdb3-n1dS)
2018/12/17(月) 07:06:46.48ID:l0Ihy9e2d
数字と英語の組み合わせをバラして配列に格納する時の条件分岐のパターンが分かりません。
組み合わせパターン
@654321
A654321-3
B654321C
C654321あ-12

最初は必ず数字6桁
英語or平仮名orカタカタ一文字があるかないか
ハイフン挟んだあとは数字のみ。
これを配列に[0]〜[2]に入れたい。
Aの場合
[0] 654321
[1] ""
[2] 3
0028デフォルトの名無しさん (ワッチョイ 8374-6Jay)
2018/12/17(月) 09:10:18.49ID:EhwiP59S0
5分おきに実行するタイマー作ってるんですが、System.Windows.Forms.Timerって、timer.Enabled = trueにした瞬間に1回目が実行されますよね?
trueにした瞬間は実行してほしくなくて、trueにしてから5分後に1回目を実行してほしいんですが・・・
System.Timers.Timerだと希望通りに動くのですが、理解として間違ってませんよね?
0030デフォルトの名無しさん (ブーイモ MM47-MGZ2)
2018/12/17(月) 11:45:43.84ID:AhT/M622M
WinFormsやWPFのライセンスってMITだろ
フル機能の業務向けGUIフレームワークがそんなガバガバなライセンスでOSSとして公開されるなんて前代未聞じゃね
それだけMSにとってPCクライアントアプリのビジネス的価値が低下したということでもあるし、
どうせWinFormsもWPFもWindowsにネッチョネチヨにベッタリと依存していて
他のOSへのポーティングなんかできねえだろうという、ある意味自信の表れでもあるんだろうなw
0031デフォルトの名無しさん (ワッチョイ 2bda-vjmv)
2018/12/17(月) 12:02:35.27ID:oEEuXu5x0
業務向け?
0033デフォルトの名無しさん (スププ Sdaa-sY6B)
2018/12/17(月) 13:54:52.29ID:joZpwjFkd
ポーティングされても惜しくないと言うか、ポーティングしてほしいんだと思うけど。
でなきゃ.net coreでマルチプラットフォームなんかやらんのでは?
0038 ◆QZaw55cn4c (ワッチョイ aa60-D8NS)
2018/12/17(月) 22:03:56.14ID:TMWWsAye0
シャープやフラットで分からないことがあります
どこで聞いていいかわからないので、シャープやフラットがスレ名に含まれているこのスレで聞くことにしました
適切でなければ誘導ください、お願いします

さて本題ですが
https://www.youtube.com/watch?v=Pv-zYCNh8TY
をみていて、上と下の音がずれていますが、これでハモっているのはどうしてなのでしょうか?
0040デフォルトの名無しさん (ワッチョイ ffd3-2dqZ)
2018/12/17(月) 22:13:34.85ID:72hjMHy30
OSSにしたとはいえメンテンナンスを放任するってわけじゃないみたいだからね
精々フォークはご自由にってところなんでしょ

monoのように、というよりmonoのWinformsを.NET Coreに合わせる方がまだ可能性はあるのでは
0041 ◆QZaw55cn4c (ワッチョイ aa60-D8NS)
2018/12/17(月) 22:21:25.00ID:TMWWsAye0
>>39
そういう意味ではなく、例えば最初の音は、上はラで書いてあるのに下はシです、いくら私が素人でもラとシでは響きようがないと思ってしまいますが、動画の音は三度/六度の和音になっているのはどうしてですか?
0043デフォルトの名無しさん (ワッチョイ 8ab3-skpA)
2018/12/17(月) 23:25:54.89ID:yChZzMqc0
>>38
普通のトランペットはB♭管って言って「ド」の音を出すとピアノのシ フラットの音が出る
なのでその楽譜の最初の音はピアノの「ソ」の音
下段のユーフォニウムもB♭管なんだけど歴史的にC管として楽譜が書かれる
なので最初の音は楽譜通り「シ」の音が出るのでハモってる
ちなみにこの時ユーフォニウムの奏者は「ド シャープ」として演奏してる

って流石にスレチだろ
詳しくはこの辺りで聞いてくれ

ユーフォニアム総合スレ
https://lavender.5ch.net/test/read.cgi/suisou/1538816683/
0044 ◆QZaw55cn4c (ワッチョイ aa60-D8NS)
2018/12/17(月) 23:50:04.26ID:TMWWsAye0
>>43
ありがとうございます。とてもよくわかりました、移調譜というやつですね、ドの指使いで♭シがでる、だからラの指使いで実音ではソが鳴るんですね
さすがプログラム板、こんな質問でも答えていただけるとは、とてもありがたく感謝しています
0050デフォルトの名無しさん (アウアウエー Sa82-MGZ2)
2018/12/18(火) 08:56:32.82ID:Aai/8U/Va
.NET Coreの特許は互換性のある実装に対してのみ利用が認められるから、
MSがCoreは非Win OSでWinFormsやWPFを動かせるようにはしないと明言してる以上、
法的にはフォークしてポーティングするのはいかにMITライセンスだろうと特許侵害でMSに訴えられるリスクがあるよ
流石にOracleとは違ってそんなことしたら大炎上して窮地に追い込まれることはMS自身がよく理解してるはずだから、現実にはまずありえないけど
0060デフォルトの名無しさん (ワッチョイ 239e-3Pua)
2018/12/19(水) 23:04:17.95ID:1+OCaMKe0
C#のコンソールアプリから、
毎日指定した時刻に何らかのプログラムを実行したいのです。
例えば毎日朝10時に実行するなど。
あるいは、1時、2時、3時、、、に実行するなど。
実行時間の誤差は±10分くらいあっても構いません。
どんな手法がお勧めですか?
0061デフォルトの名無しさん (アウアウエー Sa82-MGZ2)
2018/12/19(水) 23:13:17.65ID:6d4NDMwEa
C#で完結させようなどという愚かな考えは捨ててタスクスケジューラを使う
ローカルで動かす必要がない物ならAWS LambdaにデプロイしてCloudWatchのスケジュールで動かすなんてのも手軽で良い
0062デフォルトの名無しさん (ワッチョイ 8ad2-A9YR)
2018/12/19(水) 23:20:08.96ID:DnYaqc+Z0
>>60
無限ループ(=常駐)PGを作って
適当な間隔でシステム時刻と比較して
実行したい時刻を過ぎていたら
Processkクラスを使ってでキックとかが一般的だと思うが
https://dobon.net/vb/dotnet/process/shell.html
その常駐PGが落ちた時に実行できないから
結局>>61の話になるな
0067デフォルトの名無しさん (アウアウエー Sa13-MBvZ)
2018/12/20(木) 11:20:35.24ID:0U5kGgIsa
スケジュール変えたくなったらソース弄るの?自前で独自cronみたいな設定を実装するの?その使い方サービスごとに覚えなきゃいけないの?
運用が面倒だから安易なサービス化はやめなさい
0069デフォルトの名無しさん (スププ Sd43-9cAm)
2018/12/20(木) 12:10:54.56ID:uRkd43kpd
タスクスケジューラに一票。
もしサービス化するとしても、サービスは蹴られるの待つようにして、タスクスケジューラに蹴らせたほうが良い。
どうせ「今すぐもう一度走らせたい」がそのうち出る案件な気がする。
0072デフォルトの名無しさん (ブーイモ MM59-MBvZ)
2018/12/20(木) 12:45:20.47ID:04IBENLFM
>>71
ここは初心者スレ
どうせ何が善い方法かなんて本人に判断つかないんだから、余計な選択肢は質問者を混乱させるだけ
ベストプラクティスさえ示してやればよい
0074デフォルトの名無しさん (スププ Sd43-9cAm)
2018/12/20(木) 14:44:10.36ID:uRkd43kpd
>>71
ケースバイケースを考えられる奴は質問なんかしないだろう。
まずはタスクスケジューラ、
サービス化するとしてもタスクスケジューラから蹴った方がいい、
そんなに変な事言ってるか?2択と対して変わらん事言ってるつもりだが。
0078デフォルトの名無しさん (ブーイモ MM59-MBvZ)
2018/12/20(木) 19:38:18.98ID:m/IwfhEsM
大抵の人は最初なんでもモノリシックに作ろうとして、スケジューリングと処理は分けたほうがよいことに自分なりに気付くもんだよね
分けるのダサいと思ってた時期は俺にもあったわ
0080デフォルトの名無しさん (スププ Sd43-9cAm)
2018/12/20(木) 20:40:15.88ID:uRkd43kpd
>>76
玄人だって言った?
ってかタスクスケジューラからサービス蹴るってそんなにハードル高くないでしょ。
メッセージ送るなり、サービスでFileSystemWatcherでフォルダ監視して、投入はキューファイル作ってでも良いし。
後者は初心者でもすぐ思いつくし実装できる話だと思うけど。

もしかして自分が出来ないから初心者に勧めるなとか言ってる?
0083デフォルトの名無しさん (ワッチョイ 23b3-ckn8)
2018/12/20(木) 21:40:42.01ID:hwNgEKL00
>>80
> 玄人だって言った?
ひょっとして揶揄って言葉を知らんのか? w

> ってかタスクスケジューラからサービス蹴るってそんなにハードル高くないでしょ。
ハードル以前に送出側も作れとかアホすぎる…
0084デフォルトの名無しさん (スププ Sd43-9cAm)
2018/12/20(木) 21:48:42.95ID:uRkd43kpd
>>83
玄人だって言った?って揶揄なんだけど。
馬鹿すぎてブーメランまた投げてるよ?

送出側って簡単だよね。FileSystemWatcherならファイル置くだけだし。バッチファイルでも良いじゃん。

自分が思いつかなかっただけならそろそろ黙ったら?
0092デフォルトの名無しさん (ワッチョイ ab33-4M5M)
2018/12/21(金) 20:36:29.06ID:ulAOiHZ/0
便乗で質問です。
ログインしてない状態で指定時間になったら指定のユーザーでログインしてブラウザでスクレイピングしたいです。
サービスやタスクから適当なユーザーでログインするにはどうしたらいいでしょうか?
0093デフォルトの名無しさん (ブーイモ MM59-Z9RU)
2018/12/21(金) 20:59:56.18ID:rOLcewoyM
もっと具体的でないと回答しようがないかな
ログイン認証はWebサーバー側の話ならローカルアカウント
関係ないし
ローカルアカウントの話ならグループポリシーでサービス起動
出来るようにするのが一般的だったけど
OSのバージョンやADが有効なら出来ない場合もあるよ
0098デフォルトの名無しさん (ワッチョイ abeb-6UAB)
2018/12/22(土) 15:43:19.97ID:UXm6+Rqz0
こういう質問者って解決の道筋を知りたいんじゃないんだよ
WindowsのこともC#も学習する気はまったくなくて、代わりにコードを提示して欲しい人なんだ
なので、「タイムスケジューラ+コードは自分でかけ」とか「自分で書いたコードをサービス化しろ」と回答しても無駄なんだな
誰かが代わりに希望のツールを作ってあげるまで延々と同じ質問をすることになっちゃう
0100デフォルトの名無しさん (ロソーン FF59-1q7i)
2018/12/22(土) 16:17:42.75ID:iZWJkg8TF
いつもだな
0105デフォルトの名無しさん (ワッチョイ abeb-6UAB)
2018/12/22(土) 17:19:54.74ID:UXm6+Rqz0
え?これ、便乗を装った本人じゃねえの?
0107デフォルトの名無しさん (アウアウエー Sa13-o5ET)
2018/12/22(土) 19:03:13.59ID:RR6G3DDfa
やってることに意味があり、それに名前が付くなら分ける
個人的には〇〇処理と名前が付くのはメソッドの単位としてはむしろ大きめ
単独で意味のある最小単位まで分けるのが理想
0109デフォルトの名無しさん (アウアウエー Sa13-pYn4)
2018/12/22(土) 21:08:41.95ID:la2rnvqna
>>106
馬鹿の一つ覚えの教条主義はよくない

分けた方がそのメソッドの可読性が上がるなら分ける。
可読性に寄与しないなら無理に分けちゃダメ。
なぜならクラス全体の視点ではメンバーは少ない方がいい。
0110デフォルトの名無しさん (アウアウエー Sa13-o5ET)
2018/12/22(土) 23:25:46.03ID:RR6G3DDfa
メソッドの可読性ってセンスが求められるからなあ
端的に言えば、そのメソッド呼び出しを見たときに、その中身をいちいち見に行かなくてもコードを理解できるかどうか、が全てだ
それができるならどこまで細かく分けてもいいし、できないなら分けないほうがマシ
処理の流れがわからんからサブプロシージャやめろおじさんの言い分も、低レベルな現場なら極めて正しい
0113デフォルトの名無しさん (ブーイモ MM43-o5ET)
2018/12/23(日) 00:40:03.70ID:THpahYm7M
>>111
場合によるだろ
「多角形の面積」クラスのcalcメソッドを呼び出してたら面積を計算してるのは明らかであり、面積の計算方法に関心がない限りは中を見る必要はない
それが「多角形」クラスのcalcメソッドだったら意味不明だろう
極端な例だけど、そういうのってセンス無い奴は本当にセンスないから
0115デフォルトの名無しさん (ワッチョイ 2306-q1e7)
2018/12/23(日) 00:55:46.55ID:iOIA70EQ0
メソッド名はわかり易さより英語として恥をかかない程度の単語かどうかってのを気にするな
後で見られたときに笑われたくはない
簡単な単語でもスペルはチェックする
0120デフォルトの名無しさん (ワッチョイ 35c9-5YD5)
2018/12/24(月) 01:28:35.64ID:bmrfjFY/0
長さが10,15と異なるList<string>が2つあって10のListの値を15のListに先頭から埋めていきたいんだけど、ListでArray.Copyメソッドみたいなのないのかな?
0123デフォルトの名無しさん (ブーイモ MMeb-o5ET)
2018/12/24(月) 02:11:14.58ID:Gf2UgbH0M
インプレースで置換する必要があるなら a10.Clear(); a10.AddRange(a15.Take(a10.Count)); でいいよ
少々非効率だがどうせこんなもんボトルネックにはならん
0135デフォルトの名無しさん (ワッチョイ 6d81-q1e7)
2018/12/25(火) 05:37:13.78ID:o3bLdzU90
質問です
applicationSettingsBaseを使って設定を保存したソフトのフォルダを移動したところ
設定がすべて消えてしまいましたが仕様でしょうか。
これを回避するためにはソフトと同じフォルダにiniを作るなどして設定を保存しないといけないでしょうか。
0137デフォルトの名無しさん (アウアウエー Sa13-pYn4)
2018/12/25(火) 12:19:27.12ID:H2h1tiNca
>>135
ApplicationSettingsBaseなんて使ったことないのでいい加減に言うけど、
普通に考えれば保存場所は起動したバイナリのパスになんか依存しないはずだと思うけど

http://www.atmarkit.co.jp/fdotnet/dotnettips/438winsettings/winsettings.html
ここにも書いてあるけど、バージョンとか製品名とかアセンブリの属性を何か変更したから
保存場所も変わったんじゃないの?
0148デフォルトの名無しさん (ワッチョイ 658a-6UAB)
2018/12/26(水) 06:18:38.10ID:1oivSykz0
課題で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();
}
}
0156デフォルトの名無しさん (ワッチョイ 35eb-hpOi)
2018/12/26(水) 19:06:58.35ID:Dcs5aUpT0
Windowsフォームアプリケーションで、
「ボタン上をドラッグしてる間(左クリック押下中、かつボタン上にカーソルがある時)」に音を鳴らしたいんだけど

Button1.MouseDownで再生、Mouseupで停止させるまでは出来ても

MouseLeaveに停止処理書いて、クリックしたままボタンからカーソル外したときには音がなり続けてしまいます

どういう記述がいいんでしょうか?
0157デフォルトの名無しさん (ワッチョイ 459a-9nMG)
2018/12/26(水) 20:13:17.23ID:/gJf0JvK0
>>156
クリックしたままだとMouseLeaveが動かないみたいだな
https://ideone.com/c67R3i
これは音を鳴らす代わりにフォームのタイトルにMouse On/Offと表示する
MouseDownとMouseMoveでカーソルの場所を見てボタンの範囲外だと無条件でOffにする
イベントとしてのMouseLeaveは外せそうな気がするしフラグ作ってもっと作りこめると思うけど面倒だからここまで
0158156 (ワッチョイ 6deb-hpOi)
2018/12/26(水) 21:13:57.82ID:0HU+mpFl0
ありがとうございます!
入門したて故コード読んでも理解できないけど、丸写しからの改変で勉強しながらやってみます
0160デフォルトの名無しさん (ワッチョイ f9da-ikDe)
2019/01/03(木) 03:05:05.68ID:2jZ78iU60
dotnet new webapp コマンドでプロジェクト生成した時に Controllers も Models も Views も作られないので、ちょっと面食らっています。
ASP.NET Core で Razor Page を使ったアプリを作る際は、ASP.NET でいう Controllers と Models に該当するフォルダはどこに作ったらいいんでしょうか?
特にビジネスロジック部分はどこにまとめるのがいいのでしょうか?
0161デフォルトの名無しさん (アウアウエー Sae3-xhm2)
2019/01/03(木) 05:32:43.60ID:ZmWGvR5ia
splitcontainerのpanel1に30個程度のボタンを設置し、それらは一つのイベントハンドラにまとめてて
押したボタンの色を変えるということをしようとしています

splitContainer1.Panel1.Controls[●].backColor = Color.Red ;


●の位置に入る数字はどのボタンと対応しているかがイマイチわかりません。
タブインデックスの数値とは別のようですし、どの数値の事を言っているのでしょうか。
0165デフォルトの名無しさん (ワッチョイ 1301-aNo7)
2019/01/06(日) 07:48:04.81ID:ys0B5FJg0
>>148
遅い原因は
>string input = Console.ReadLine();
じゃね?
ユーザーが全文字入力するのをぼんやり待ってないで
1文字でも入力された時点でその桁に関する処理を開始しとかないと
0170デフォルトの名無しさん (ワッチョイ 332d-ikDe)
2019/01/06(日) 16:43:50.05ID:Dx0jhieJ0
ASP.NET Coreを使う練習してるんだけどさあ
実機で動かしてみるに当たって、手元のVisualStudioやVSCodeからLAN上にあるサーバ(Ubuntu)に配置して実行するまでって結構面倒に感じてしまう・・・・
これってなにかVisualStudioに配置実行を楽にする手段があるのかな?
それとも楽をしたければJenkinsかなにか勉強しなきゃあかんのかな・・・・
0172デフォルトの名無しさん (ワッチョイ 332d-ikDe)
2019/01/06(日) 18:18:02.00ID:Dx0jhieJ0
今のところ、「手元でビルド→SCPコマンドで転送→SSHで実行」みたいにしてるんだけど・・・・やっぱもっといい方法あるよな
0173デフォルトの名無しさん (ワッチョイ 9168-RM76)
2019/01/06(日) 18:22:43.98ID:SgRztK6B0
LINQの質問です
list1とlist2はList<int>型だとして

foreach(var value1 in list1) {
foreach(var value2 in list2) {
Console.WriteLine(value1 * value2);
}
}


これと同じことをLINQを使ってやるとしたらどう書けばいいですか?
Zipを使ってみたのですが同じインデックス同士しか掛け合わせてくれませんでした
0175デフォルトの名無しさん (アウアウウー Sa9d-Y2fC)
2019/01/06(日) 20:11:35.37ID:YeoWOZf6a
>>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);
}
0177デフォルトの名無しさん (ブーイモ MM8d-ahzL)
2019/01/06(日) 21:11:45.37ID:iQ1zVEqTM
>>170
AWSとか使えば簡単だよ
MSの推奨はもちろんAzureだけど、単なるVMのホスティングサービスとして使う以上のことを期待すると正直ゴミカスなので全くお薦めできない
0181デフォルトの名無しさん (ワッチョイ 9101-aNo7)
2019/01/07(月) 09:34:56.37ID:z57KVTQ70
>>166
考え方としては、例えば「3」が入力された時点で
次の入力結果は「3」か「30」〜「39」しかありえないから
11通りの2進数表示を用意しておいて次のキーが押されたらそこで合うものを選んで表示する
どんなに10進数の入力桁数が増えても毎回11通り用意すればいいのは一緒なのと
10進数が1桁増えるときに2進数表示で最後の4桁以外の文字列は使い回せるから文字列連結処理は多少減らせる

この処理がユーザーのキー入力速度より早くCPUが処理できれば多少意味がある程度だろうけど
0183デフォルトの名無しさん (ブーイモ MM33-ahzL)
2019/01/07(月) 10:28:19.23ID:3j9bnJUUM
>>181について更にツッコむと、1文字ずつ処理するなら単に入力されたキーの値を普通に反映させていけばよい
わざわざ候補を事前に用意してGCに負担をかける意味は全く無い
0186デフォルトの名無しさん (ワッチョイ d348-xhm2)
2019/01/07(月) 19:56:07.52ID:ukOyD8nn0
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

エラーの原因はわかるのですが、解決策が思いつきません。
よろしくお願いします。
0188デフォルトの名無しさん (ワッチョイ d348-xhm2)
2019/01/07(月) 20:34:39.02ID:ukOyD8nn0
>>187
オブジェクトが単体の時は[]で囲まれていなかったので、
配列として認識されないような気がします。

もう一度考え直してみます。
ありがとうございました。
0190デフォルトの名無しさん (ワッチョイ 99d2-tvdn)
2019/01/07(月) 21:41:14.56ID:EmaCRb9M0
>>186
うちの環境ではそのままで読み込めた。w
ああ、json ファイルのパスや、クラスをフルパスで書くように直したりはしたけど。
あと List<Account> を Account[] に変えてみても動作した。

json パーサは Newtonsoft.Json でいいんだよね?
ひょっとして json ファイルの文字コードや改行コードの問題だったりして。VS2017 で試した。
0195デフォルトの名無しさん (ワッチョイ c17b-lUsO)
2019/01/07(月) 23:26:43.60ID:PUyuVhSj0
>>192
単純に勘違いだろ。16進数から2進数への変換なら成立するけど
例えば251と256の2進数の下4桁が違うのはすぐわかる
質問引っ張るのもまずいけど元の質問者もフィードバックくらいしてほしいな
0197デフォルトの名無しさん (ワッチョイ a994-mHCk)
2019/01/08(火) 01:42:19.06ID:+TBsMqqs0
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)
{
//実行したいメソッド
}
0198デフォルトの名無しさん (ワッチョイ d348-xhm2)
2019/01/08(火) 06:44:44.69ID:dT41V3TC0
アドバイス頂いた通りシリアライズを見直したところ解決しました。

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形式を勉強し直します。
0199デフォルトの名無しさん (アウアウエー Sae3-ahzL)
2019/01/08(火) 08:12:51.74ID:mtJIt88ca
>>197
そもそもWinFormsのタイマーは精度や信頼性がとても低く、時間の計測に使ってはいけない
あくまで「時々処理をさせたい」だけのときに使うもの
あなたのケースならタスクスケジューラを使うのが定石です
0205デフォルトの名無しさん (ワッチョイ 8901-gZzt)
2019/01/09(水) 12:18:51.14ID:fI4baLQf0
>>204
C#はusingですけどスコープ内でオブジェクト破棄する機能もusingと呼称してるので混乱しないようにimportと表現しました

なんで2つの記述方法を許しているのか、何か意味があるのか気になりまして
0208デフォルトの名無しさん (ワッチョイ 69e3-RM76)
2019/01/09(水) 14:41:58.83ID:2h2JyjUc0
>>203
名前空間の全表記は可読性下げるので使ってないな
VSでカーソル当てれば名前空間表示されるし、今時テキストエディタでゴリゴリ書いている人でもなければ全表記する必要ないと思う
0213デフォルトの名無しさん (アウアウウー Sa89-xTYM)
2019/01/10(木) 20:09:22.40ID:9xQ4gBbQa
P/InvokeやCOM相互運用を書くときに
System.Runtime.InteropServices.ComTypes以下の構造体やインターフェースを使う時があるんだけど
System.Runtime.InteropServices以下に同名の物があるから、大体の場合で完全修飾かusing alias directiveが必要になって面倒なんだよなあ
.Net1.1時代の後方互換性のためにObsolete付きで残してあるんだろうけど邪魔で仕方がない
0215デフォルトの名無しさん (ワッチョイ 557b-5zJT)
2019/01/11(金) 12:57:28.29ID:RbVY6SmB0
>>214
この話はusingの話で質問した人もわかっているし
わからないなら分からないなりに説明したらいいだけ
オレオレ用語使ってこんなところで質問するのは普通におかしい
0216デフォルトの名無しさん (ワッチョイ a57c-Iup+)
2019/01/11(金) 13:29:58.48ID:5RUmP2fm0
スレ間違えたことを嘘に嘘を塗り固めるのは朝鮮人の始まり
0217デフォルトの名無しさん (ワッチョイ a161-Fjw0)
2019/01/11(金) 14:37:44.48ID:225AU0sE0
ちょっと教えろください。
int型変数二つの足し算でオーバーフローするかどうかチェックしたいのですが、
@decimalにキャストして足し算した結果がintの範囲に収まっているかif文で判断
Atry catchで例外をつかまえる
どっちがいいのでしょう?
0220203 (ワッチョイ dd01-42Wh)
2019/01/11(金) 17:49:49.09ID:1orv+xc30
俺がjavaerという事がバレちまったらしょうがねえ

なんだよusingってよ
vb如きだってjavaリスペクトしてんぞ
0221デフォルトの名無しさん (アウアウエー Sa22-j/vx)
2019/01/11(金) 18:29:52.22ID:KWycMyC0a
>>217
オーバーフローは同じ符号の値を足した時にしか起こらず、起こった場合は前後で符号が変わる。
他の人が見ても何やってるか分かることが重要ならそれで判定するのが一番だと思う
0223デフォルトの名無しさん (ワッチョイ 7a01-ae4N)
2019/01/11(金) 18:40:14.66ID:fFtOgUz40
すみません、初めて見る構造体が出て来たのですが

[StructLayout(LayoutKind.Sequential)]
struct INITCOMMONCONTROLSEX
{
public int dwSize;
public uint dwICC;
}

これは何構造体と読むのですか?
0228デフォルトの名無しさん (ワッチョイ 867d-Fjw0)
2019/01/12(土) 00:09:08.43ID:iaJ8ArIE0
VS2017でC#のプログラムを組んでます。

はじめてVS2017を使うのですが、画面の下に


準備完了 ↑ソース管理に追加

という邪魔なバーが表示されてます。
VS2010にはありませんでした。目障りなのでこれを消したいのですが何か方法はありますか?
0232デフォルトの名無しさん (ワッチョイ 55da-RNo8)
2019/01/12(土) 03:22:33.67ID:S1bCJ3S10
例外処理(に限らず、エラー処理)ってどこまで徹底して行うべきなんでしょうか?
下みたいに、使うインスタンス片っ端から毎回nullチェックとかしてたら、凄まじいコード量になるんですが・・・・・
if(obj == null)
{
return msg;
}
0233デフォルトの名無しさん (アウアウエー Sa22-j/vx)
2019/01/12(土) 03:53:00.80ID:ejfouP+Ya
>>232
さあ。
でもバグと例外は区別した方がいいんじゃないか。

そのコードは多分バグを想定してるんだよね?
絶対にとは言い切れないが、バグを想定してそれを検出するifは書かないのが普通じゃないか
いやライブラリみたいなものを作ってるならバグを想定して例外を投げるのは普通だけど
0237デフォルトの名無しさん (ワッチョイ dd01-trTt)
2019/01/12(土) 04:12:05.96ID:DC6KrvaN0
nullが入るケースがあることを想定している場合にnullチェックを全部書くのがめんどいならnullオブジェクトパターン適用すればいいし
本来はnullが入ってたらおかしいケースならエラーを起こして拾わせるのが正しい構造って回答でいいのかな?
0238デフォルトの名無しさん (ワッチョイ 8e7d-DANP)
2019/01/12(土) 04:17:50.15ID:2xT9w9620
・nullが来ない想定ならチェック不要
・nullケース考慮したくないならnullオブジェクトパターン
・null来た場合にぬるり以外で知らせるならチェックする
・nullのネスト面倒ならnull条件演算子

こんな感じやろか
null非許容参照型使うという手もあるが
0239デフォルトの名無しさん (ワッチョイ 7aad-RNo8)
2019/01/12(土) 08:05:30.51ID:VHzQIvd20
読んでる入門書のLINQとラムダうんたらってのが分からなくて
手がstopしてしまっているのですが入門者向けに分かりやすく解説されてるページなど教えていただけないでしょうか?
メソッドの使い方はある程度分かったのですがそれじゃ駄目なんすかね…
0242デフォルトの名無しさん (アウアウウー Sa89-gnS9)
2019/01/12(土) 10:35:45.31ID:e9xF8Gpoa
>>232
チームの方針次第
うちの場合は

nullを許可しない引数と返り値は基本的に全てチェックして例外を投げてる
めんどくさいと思うかもしれないがFluentAssertionのようなライブラリを使えばそこまで大きな負担にはならない

nullオブジェクトパターンはやればわかるがチェックするよりも手間がかかる
また必ずしもnullの場合の適切な動作を定められるとは限らない
適切でない場合にパターンを適用するとそれがnullオブジェクトかどうかチェックするといった本末転倒なことになりかねない
なのでこれが最も適切と確実に判断できる場合を除いて使用しない

C# 8.0が待ち遠しいね
0243デフォルトの名無しさん (ワッチョイ a161-QFwb)
2019/01/12(土) 10:44:33.52ID:CChJ5ept0
>>232
仕様と設計で解決する問題
エラーが出たときどうしたいの?
エラー出たときに別に原因とかわからんでええなら一連の処理をtrycatchで囲ったらええやん
なんか起きたらcatchに入ってくるで
0244デフォルトの名無しさん (ワッチョイ a5d2-SD/a)
2019/01/12(土) 17:18:08.40ID:XDHakXaX0
>>232
外部とのやりとりの場所は結構厳重にチェックを入れる。
自分で書いているところは適当に流す。

外部とは当該館数のパラメータや、呼び出す関数とかの戻り値ね。
try catch で囲んで、チェックして例外発行して、catch 内でまとめてトレース情報込みでログ出してスローするくらいなら大した手間じゃないじゃない。
その例なら if( obj == null ) throw new ArgumentNullException("ぼーっと生きてんじゃねーよ!"); で済む話じゃん。

>>239
コピペでもいいからたくさん書いてみる。で解決するよ。
やってるうちに理屈が分かるようになる。
0252デフォルトの名無しさん (ワッチョイ 551f-M1d3)
2019/01/14(月) 23:20:39.35ID:3wGjtMyb0
ComboBoxに例えばA〜Dと4つ項目が入っていて、A〜Cは同一計算方法でDのみ特別な計算方法でコード内容が異なり且つ色んな計算をする為コードが長くなる場合の見やすくする為の最初の分岐方法とか書き方とかありませんか?
今はifで分岐した中にあれこれ結果を取ってきて結果を出してるのでifがやたら長く見辛いです。なんかいい方法があれば教えて頂きたいです。
0254デフォルトの名無しさん (アウアウエー Sa22-j/vx)
2019/01/15(火) 00:45:24.53ID:DUfu4s9fa
>>252
4っつぽっちの分岐で何がそんなに見づらくなるのかちょっと理解できんよ。
いや、煽ってるわけじゃなく本当に

各分岐先のコードが長くなるっていうのならそれぞれメソッドに切り分けるだけじゃないの?
0257デフォルトの名無しさん (ワッチョイ a161-PaIb)
2019/01/15(火) 06:09:12.86ID:rjgxVR8i0
LINQはなかなか身につかんなあ。
とりあえずforで書いといて見直してこれLINQで一行になるんじゃね?と気付いたらいそいそと書き直す感じ。
LINQ脳になってない
0259デフォルトの名無しさん (ドコグロ MM9d-QFwb)
2019/01/15(火) 07:24:38.34ID:ohj/8QmzM
>>255
質問者の意図とは違うかもしれんがそういうコード書くと怒るやつがいた職場がある
わざわざ継承してうにゃうにゃやらんと怒る
んでできたコードが何がいいのか考えてもさっぱり意味がわからん
本人にメリットを聞いてもさっぱり理解できんというかメリットの話になると必ずボケた返しをする
ありもしない改修を想定してキチガイとしか思えない発言を連発する
そもそも仕様書や設計書に処理がその数で分岐するってあるのに
なんで普通に書いたら怒るんだよ
もうお前とはやってられん
ってとこまでいって仕様書や設計書通りに組んでるのに工数が増えてるのはあんたのせいだ
って会社間の会議になってもまだグチグチ言ってる
その場にいる全員?な状態だった
0266デフォルトの名無しさん (ワッチョイ 4de3-Fjw0)
2019/01/15(火) 16:22:04.50ID:R0UqBAnw0
>>259
逆のパターンなら数多見てきたけど、そのパターンは珍しいな
if分岐が10以上になるからなんとかしてと言われて継承使ったプロトタイプ渡したら、なぜか基底クラスでif文復活してたことならあるけど
0268デフォルトの名無しさん (ブーイモ MM9a-RNo8)
2019/01/15(火) 16:37:26.00ID:Oh+57Mh2M
[_]
0270デフォルトの名無しさん (スップ Sd7a-trTt)
2019/01/15(火) 17:42:13.30ID:AbSveg4gd
>>267
上のSELECT使った実装例はこんな感じ

foreach (var x in items.Select((item, index) => new { item, index }))
{
Console.WriteLine($"index: {x.index}, value: {x.item}");
}

Listか配列かIEnumerabelどれでやってるかは知らないけどもこれで行けるはず
0271デフォルトの名無しさん (ワッチョイ a161-QFwb)
2019/01/15(火) 17:49:07.53ID:u2JtKhAa0
forが完全上位互換なのになんで
foreach使うのか?
って今でも思ってるよ俺は
ループにインデックスが必要になったというただそれだけで変更するんだぜ
0272デフォルトの名無しさん (スップ Sd7a-trTt)
2019/01/15(火) 17:55:58.21ID:AbSveg4gd
indexが必要でCountもできる時はわざわざindex生成してforeach使う必要無いと思うけどもLinq使いたい時とかIEnumerabelに実装してるものにわざわざfor使わない派
0275デフォルトの名無しさん (アウアウウー Sa89-gnS9)
2019/01/15(火) 20:11:07.93ID:LAAyKIEna
>>252
int CalcDefault();
int CalcSpecial();
int Calc() {
if (IsSpecialCase()) return CalcSpecial();
else return CalcDefault();
}
bool IsSpecialCase() => combo.SelectedValue == "D";

とりあえず最初はこれでいいよ
似たような条件分岐が増えてきたらリファクタリングしてポリモー対応できないか検討
最初からポリモーは大げさだからやらなくていい
でも後でリファクタリングしやすいように責務指向でメソッドを切っておくぐらいはやっておいたほうがいい
このへんのさじ加減は経験則だな
0276デフォルトの名無しさん (アウアウエー Sa22-j/vx)
2019/01/15(火) 20:18:43.20ID:ToRrrvnYa
switchを無くすのに多態なんか使う必要ないね。
すくなくともC#にはデリゲートがあるんだから多態使うぐらいならComboBoxのアイテムに
デリゲート持たせた方がいいよ。

個人的にはこれも本当に可読的か疑問だけど。
分岐素直に分岐で書いた方が分かりやすいって
0279デフォルトの名無しさん (ワッチョイ a161-QFwb)
2019/01/15(火) 20:50:47.00ID:u2JtKhAa0
設計書で分岐が100個あったらswitchcaseかifで100個書けよ
それが気に入らないなら設計書直せよ

そういう当たり前の手続きを無視してコード書いてる雑魚に俺は超えられねぇ
0280デフォルトの名無しさん (ワッチョイ a602-XKp7)
2019/01/15(火) 20:54:23.73ID:ShjRgn6y0
switch vs 多態って結局プログラムがDRY & SOLIDになってるかどうかって問題に帰着すんだよな

>>255はDRYでもSOLIDでもない
>>275はSOLIDではあるがDRYではない
多態までいけば完全にDRYでSOLIDなプログラムになる

そのコードが一回こっきりで重複がないという前提だと、DRYのありがたみを実感しにくい
だからswitch派が一定数居るのだろうね
0281デフォルトの名無しさん (スップ Sd7a-trTt)
2019/01/15(火) 20:58:26.66ID:AbSveg4gd
インターフェイス厨だから似たような分岐はインターフェイスで分けて個別実装か本当に共通してるなら継承でなんとかしたくなる
それと見返したら俺酷いスペルミスしててワロタ
0282デフォルトの名無しさん (ササクッテロレ Sp85-NsAs)
2019/01/15(火) 22:25:49.08ID:rPJfKlkHp
cしか知らないのです
vsをダウンロードして独学でc#勉強し始めたのですが、どうにもなりませんです
オブジェクトだのラムダ式だのデザインパターンだの文法的な要素以外に勉強しないとなにを言ってるのかわからない事が多くて、勉強の進め方が間違ってるのだろうと思いました。
初心者丸出しの質問で恐縮ですが、どんな順で何を勉強したら良いでしょう?
また、良書、良いウェブページなどご存知でしたら、ご教示いただければ幸いです
よろしくお願いします。
0283デフォルトの名無しさん (ワッチョイ d67b-92yO)
2019/01/15(火) 22:32:18.90ID:2N1r/ZHN0
>>282
物まねでもなんでもいいから何か作りまくれ
用語とかから勉強しなくていい。色々調べるうちに覚える
わからなくなったらやりたいことの頭にC#+スペース入れて検索
0284デフォルトの名無しさん (ワッチョイ 81da-Fjw0)
2019/01/15(火) 22:33:11.37ID:p93FMJH30
必要性がわからない概念を理解するのは難しい
それはコード書いた経験が少なすぎるから
Cもほぼ入門書読んだだけでしょ
とりあえず自分が理解できる範囲の知識でなにか作りたい物つくった方がいい
0285デフォルトの名無しさん (ワッチョイ 6d5f-VK1S)
2019/01/15(火) 22:52:10.98ID:qux9+5740
>>282
主にオブジェクト指向関係が分からないみたいだから
オブジェクト指向入門系の本やウェブサイトを探せばいいんじゃないか?

あるいはC#にこだわらないのであればC++の入門書はC言語との違いとして
オブジェクト指向向けの機能に触れているものが多いと思う

実際にプログラム作ってオブジェクト指向の感覚掴みたいなら
個人的にはちょっとしたゲーム作ってみるのもオススメだな 
UnityならC#使えるし
0286デフォルトの名無しさん (ワッチョイ 4a32-kZrb)
2019/01/15(火) 23:25:56.04ID:Zm1dLYXR0
>>282
勉強の進め方というか基本的な理解が浅いのでは
Cでも構造体ネストして疑似継承くらいするだろうし
ラムダにしてもクロージャ要素はともかく匿名関数

とりあえずクラスは関数を纏めているのではなく
型を作りデータと結び付けているという事だね
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/index
翻訳が割と酷いが公式にもドキュメントはあるよ
0287デフォルトの名無しさん (ワッチョイ 8dad-NsAs)
2019/01/15(火) 23:31:48.76ID:grH+sReD0
ご教示ありがとうございます
いわゆるコンソール用のアプリケーションなら、cで充分私が必要とする程度のものは作れるので、わざわざ新しい言語なんか習得したいとは思わないんですが。
やっぱり、GUIのアプリケーションの方が使うとき楽だとら思いまして、なんとかc#勉強して作れるようになりたいなと言うのが発端なんです

vsで参考になるようなところを参照してつまみ食いで作ったのですが、少しでも自分で機能を追加しようとすると、マイクロソフトのクラスライブラリなんか知らないので、なかなか困難で。
おまけにクラスというかオブジェクト指向って奴だと、無闇矢鱈と真似すれば良いという手法が私では通用しなかったのです。

どのようにクラスを作って良いのか基準もわからないですし。
オライリーのc++の本があるので読んだのですが、そこでは電子レンジをモデルにしてオブジェクトの説明をしてくれたのですが、なかなか良く分からず

デザインパターンとやらを先に勉強しておくべきなのかとチラホラ読んだのですが、これもまた実装とは程遠い座学の世界でピンと来なくて泣きそうです。

みなさん、ある程度使えるようになるまでどんな順序でなにを学んだのか、ご教示いただければたすかります
0290デフォルトの名無しさん (ワッチョイ 8dad-NsAs)
2019/01/15(火) 23:40:43.54ID:grH+sReD0
>>289
デザイパターンはある程度蓄積が出来てないとありがたみがわからない、だから、後回しでも良いと言う意見ですね
クラスを作る定石集のようなものだと思ったので、先に勉強した方が良いのかとも思っておりました
定石知らなくても、楽しく将棋はできるのだから、後回しでも良さそうですね

ご意見ありがとうございます
0291デフォルトの名無しさん (ワッチョイ a161-QFwb)
2019/01/15(火) 23:50:54.16ID:u2JtKhAa0
vector3Dクラスの内部に
vector2Dクラスは普通は作らないんだぞ
知ってた?
しかし、両クラス共にメンバx,yを保持する
そう、お前らの大っっっっっっっ嫌いな重複だw
しかし、極上のバカでもない限り
vector3Dをvector2D+zで作るやつなんてこの世にいないんだよ
わかるな?

この例ではわかりやすく
XYZで説明してやったが
世の中ってのはこういうもので満ち溢れてるんだよ
xyでもyzでも計算するときがあるのさ
わかりにくいだけで
xyをvector2Dで作ってしまったオブジェクトのyzの計算は不格好なのさ
オブジェクト指向は破綻している
そこをわかった上で付き合うんだ
0292デフォルトの名無しさん (ワッチョイ 4a32-kZrb)
2019/01/16(水) 00:03:56.21ID:9UhWNW230
>>287
物に例えるってのは常々ダメだと思うわ、関係ない要素が絡んできて
人に依ってはマイクロウェーブとか出るの?とか思うだろうし
クラス設計としちゃフィールドは構造体と一緒だけどメソッドは…
うん、とりあえず手続き型っぽく作っても良いだろう\(^o^)/
多態性は+演算子の数値なら加算が文字列だと連結になるとかね

C経験はCUIのみという事かな?.NET Frameworkなんか知らん!という事であれば
Visual C++ Windows デスクトップアプリを従来通りWin32で作っても良いと思うけど
手っ取り早くダイアログベースで作成してメッセージハンドラに渡ってきたIDで振り分ける

ぶっちゃけ.NET FrameworkもWin32 APIをラップしてるだけなのでC#も基本は変わらない
フォームデザイナーで弄くってコントロールにイベントハンドラ割り当てるだけ
0294デフォルトの名無しさん (アウアウエー Sa22-j/vx)
2019/01/16(水) 01:02:27.00ID:NripHWV9a
>>293
制御系ならCでも自然とオブジェクト指向的な設計でコード書いてたはずだと思う。

「キーをスキャンしてデバウンス処理を担当するコード」とか「LCDドライバーへの表示データの転送を担当するコード」
とか、そういう仮想機械をコード上にいっぱい作ってたはず。

オブジェクト指向のオブジェクトって要はこの仮想機械のこと。
クラスはそれを書きやすくするための仕組みに過ぎん。
だからたぶん心配してるよりずっと簡単な話だと思うよ
0295デフォルトの名無しさん (ワッチョイ 8dad-NsAs)
2019/01/16(水) 01:07:11.33ID:RsJGf8R10
>>294
私の頭の中はオブジェクト指向とは無縁です。

設計そのものに、そんな考え方を取り入れていないので、どこまでも手続き型で考えてしまうのです。
強いて言えば、状態遷移を作るときに少し似たような考え方になるだろうか、という程度ですね

なにをクラスとすれば良いのか、そういうところがピンとこないので、わからないのです。
0296デフォルトの名無しさん (ワッチョイ 4a32-kZrb)
2019/01/16(水) 01:13:49.60ID:9UhWNW230
いわゆる組み込み系か、それだと逆にこっちが経験乏しいけど、Cライブラリなら馴染みはあるのかな
するとまずはVisual C++からWindowsコンソールアプリをC/C++ライブラリで作ってみるとかかねぇ?
APIとかはC#にしろMSDN…今はMicrosoft Docs?を見るしかないね、C#ならIntelliSenseにも詳細出る

でもC#からなんか制御するとかだと結局プラットフォームのネイティブAPIや専用ライブラリになるか?
とりあえずオブジェクト指向とかを学びたいのであればC++や他スクリプト言語とかでも良さそうな
0297デフォルトの名無しさん (アウアウエー Sa22-j/vx)
2019/01/16(水) 01:15:08.32ID:NripHWV9a
>>295
でもキュー(リングバッファー)ぐらい実装したことあるでしょ?
端的に言えばあれがオブジェクトの一例っすよ。

データ(配列 + 読み出しポインタ + 書込みポインタ)と、
それをリングバッファーに見せかけるコードの組み合わせ

簡単でしょ
0299デフォルトの名無しさん (ワッチョイ 8dad-NsAs)
2019/01/16(水) 01:36:56.53ID:RsJGf8R10
>>297
リングバッファがオブジェクト指向の考え方なのですか。
なるほど。
仮装化したデバイスのようなもの、ということなのでしょうか。ハードディスクのドライバやNICのドライバは確かにアプリケーションからみると仮想的で、実際のハードウェアの持つ機能とは関係なくつかえるようにしますね
少し例えがわかった気がします

ありがとうございました
今日は遅いので、この辺で失礼します
0300デフォルトの名無しさん (ワッチョイ 4eda-asVD)
2019/01/16(水) 02:56:08.32ID:JSfUU2TA0
private Task<int> hoge{....}
というメソッドがあって

var t=hoge();
でタスク走らせた後、ちょっと別の処理してから
t.ContinueWith(()=>...);
と継続タスクを付け足した場合、
付け足した時点でhogeが終わってれば
すぐ継続タスクの処理を開始してくれますか?
0304デフォルトの名無しさん (ワッチョイ c52d-RNo8)
2019/01/16(水) 16:28:16.62ID:UcQqPOFa0
ついでに、ユニットテストを身につける本をだれか教えてくれんかな
どの入門書もテストについて全く教えてくれんがどうなってんだ・・・・
0305デフォルトの名無しさん (アウウィフ FF89-RNo8)
2019/01/16(水) 16:40:21.97ID:vTKVQdGXF
そのうちテストのテストも書きたくなってくる
0309デフォルトの名無しさん (ササクッテロル Sp85-NsAs)
2019/01/16(水) 20:32:03.28ID:LiM0dr73p
>>303
どうもありがとうございます
java c#を習得している人が前提の書籍のようですね
オブジェクト指向の勉強には良さそうな本で助かります
javaも知らないので、今度丸善にでも行って太刀打ちできそうか、少しみてから判断しようと思います
0310デフォルトの名無しさん (スップ Sd7a-asVD)
2019/01/16(水) 21:05:07.42ID:wbo0XsPzd
>>301
>>302
ありがとうございました
0311デフォルトの名無しさん (ワッチョイ 512d-qnWR)
2019/01/18(金) 05:08:46.83ID:bjcECFHM0
すまんが、VisualStudio2017についてる.NET Core2.1って、2.2にするにはどうすればいいの?
勝手に入ったんだからVisualStudio周りからアップグレードする方法があって良いような気がするものの・・・・どこにあるんだろ!?
https://dotnet.microsoft.com/download
それともこっからダウンロードしてきて入れちゃえば良いのかな?
0312203 (ワッチョイ c101-drjx)
2019/01/18(金) 07:03:56.21ID:3+zdHjT80
>>287
動物スーパークラス作って猫クラスと犬クラス作って猫にニャーニャー 犬にワンワンと鳴かせるプログラム作りな
完成したらオブジェクト指向習得

これで月18万の8次請非正規になれるよ
面談では経験8年で勘定系COBOLの経験有りと答えてね
0315デフォルトの名無しさん (ワッチョイ 615f-fAiL)
2019/01/18(金) 09:51:47.00ID:LKOsIFRz0
オブジェクト指向は色々勉強するより
ちょっとしたゲームでも作ったほうが分かりやすいと思うわ

モンスターとヒーローを作って相手を攻撃するメソッドと攻撃を受けたときにダメージを受けるメソッドを書いて 終わり
0319デフォルトの名無しさん (ブーイモ MM33-0Knw)
2019/01/18(金) 13:00:12.01ID:Xg90leRQM
>>315
ゲームはオブジェクトと環境との間のインタラクションが多すぎるからオブジェクト指向を学ぶには適さない
プロでも結局全部グローバルスコープでアクセスできるようにしとけみたいな設計にしかならん
0322デフォルトの名無しさん (ワッチョイ c101-drjx)
2019/01/18(金) 17:56:23.24ID:3+zdHjT80
新人言うても30歳超えの中途ね
コスパ良いんだわ
年食ってると従順でパワハラにも耐える

そう言えば20代新人とか見たことない

存在するのかね
0323デフォルトの名無しさん (ワッチョイ 615f-fAiL)
2019/01/18(金) 18:53:47.09ID:LKOsIFRz0
すまんがIT企業の闇と経験年数詐欺の手法はマ板でやってくれんか?
ム板は数年後のプログラミング教育必修化に向けてフレッシュでさわやかな若者向けの板に改装する予定なんだが
0327デフォルトの名無しさん (ワッチョイ 615f-fAiL)
2019/01/18(金) 20:48:28.34ID:LKOsIFRz0
早いところプログラミング必修化してほしいもんだぜ
会社の愚痴とブラック会社アピールが「プログラミングのお話」だと思ってるオッサン多すぎ
0332デフォルトの名無しさん (ワッチョイ f11f-t+p0)
2019/01/18(金) 22:57:58.37ID:1ZiD/8V00
文字列から数字をtmpWとtmpHに抜き出すクラスを作りたいのですがどうしたらいいですか?
演算子記号は+−もある、数字の桁数は不明で小数点もあり、数字が入るときは小文字一字始まり、引数はw or hで抜き出す戻り値を示す。


対象文字
@w900×HH
AWW×h1000
BWW×HH
Cw900/h100
結果 引数がwなら左  hなら右
@tmpW=900 tmpH=WW
AtmpW=WW tmpH=1000
BtmpW=WW tmpH=WW
CtmpW=900 tmpH=1000
0336デフォルトの名無しさん (アウアウエー Sa23-/e0v)
2019/01/18(金) 23:58:07.57ID:JDQsFvp5a
フォルダの中に万単位でファイル作ってGetFiles()テストしたことがあったけど
10年以上前のPCでも非同期にしなきゃならんほど遅くなかったと思ったけどなあ

普通に遅い原因はユーザーコードの方にあるんじゃないの
0339デフォルトの名無しさん (アウアウエー Sa23-qnWR)
2019/01/19(土) 01:20:56.46ID:2Tiw7zAQa
>>336
誰と話してるの
0340デフォルトの名無しさん (ワッチョイ 1b02-T05w)
2019/01/19(土) 05:18:33.12ID:M8Q3zGyy0
>>332
今ちょうど過疎ってるお題スレにちょうど良さげなのでお題スレにコピペさせてもらおう。
0346デフォルトの名無しさん (ワッチョイ f1da-qnWR)
2019/01/19(土) 17:07:22.10ID:FJgPPckz0
脊髄反射で書いたので添削頼む。

public static string[] GetHW(string input)
{
string[] returnval = new string[2];
string[] temp = input.Split('+','-','*','/');

if (temp[0].StartsWith("w", StringComparison.Ordinal))
temp[0] = temp[0].TrimStart('w').Insert(0, "tmpW=");
else if (temp[0].StartsWith("WW", StringComparison.Ordinal))
temp[0] = "tmpW=\" \"";
else
temp[0] = "それ以外の何か";

if (temp[1].StartsWith("h", StringComparison.Ordinal))
temp[1] = temp[1].TrimStart('h').Insert(0, "tmpH=");
else if (temp[1].StartsWith("HH", StringComparison.Ordinal))
temp[1] = "tmpH=\" \"";
else
temp[1] = "それ以外の何か";

return temp;
}
0348デフォルトの名無しさん (ワッチョイ f1da-qnWR)
2019/01/19(土) 17:39:42.56ID:FJgPPckz0
1文で
public static string GetHW(string input)
{
return input.Replace("w", "tmpW=",StringComparison.Ordinal)
.Replace("h", "tmpH=", StringComparison.Ordinal)
.Replace("WW", "tmp=\" \"", StringComparison.Ordinal)
.Replace("HH", "tmp=\" \"", StringComparison.Ordinal)
.Replace("+", " ", StringComparison.Ordinal)
.Replace("-", " ", StringComparison.Ordinal)
.Replace("*", " ", StringComparison.Ordinal)
.Replace("/", " ", StringComparison.Ordinal);
}
0349デフォルトの名無しさん (アウアウエー Sa23-/e0v)
2019/01/19(土) 18:47:09.81ID:jmND9WvPa
>>332
質問内容はともかく、プログラマならもうちょっと読み手が推測で補完しなくても
内容を過不足なくきっちり読み取れるような文章を書いた方がいいと思う。

ってういか、率直に言って日本語変だよw
0352デフォルトの名無しさん (マクド FFed-Z+78)
2019/01/19(土) 19:36:35.93ID:PaRH8QDQF
独学手探りで勉強しながら作っていたアプリケーションが一応形になったので
折角だから公開してみようと思っているんですが、
デバッグやライセンス確認など、リリース前に確認する事、の知識が全くないことに気づきました
少額ながら有料公開にしようと考えている為、
最低限これとこれは確認しないと、って物を教えて頂きたいです
0357デフォルトの名無しさん (ワッチョイ 512d-qnWR)
2019/01/19(土) 20:31:17.01ID:h4R+weTi0
>>313
今の所、普通に使っていて2.2にはならないのか
ありがとう
0360デフォルトの名無しさん (ワッチョイ 13ad-BMYs)
2019/01/19(土) 21:59:06.23ID:+chQE6yt0
>>352
・C#で作ってるならデコンパイルされても大丈夫か確認しておく
・GPL汚染に注意する
0364 ◆QZaw55cn4c (JP 0Ha3-hFsF)
2019/01/21(月) 05:02:51.88ID:BX1YVz9RH
>>362
業務にての使用を公認されるためには、有料(シェア)ソフトの方が有利なようですよ、秀丸とか
0372デフォルトの名無しさん (ワントンキン MM53-m16F)
2019/01/21(月) 10:03:06.25ID:HJdNRmJRM
開発マシン XP32bitでVS2005で作ったC++のdllを同じくVS2005で作ったC# WinFormアプリでDllImportを使って利用しています。

Win10 64bitで実行するとC++の関数をコールすると
間違ったフォーマットのプログラムを読み込もうとしました。(HRESULTからの例外: 0x8007000B)
となります。

同じ事をwin7 64bitのVS2013で作ったアプリでしても(当然)問題なく動きます。

VS2005で作ったアプリで動かす方法はないでしょうか。
0375デフォルトの名無しさん (ワッチョイ c101-drjx)
2019/01/21(月) 12:12:30.14ID:1DQQx7qk0
新規プロジェクトをVBでやりたがるPMにC#をオススメしたいのですが、C#が決定的に優れてる点はあるでしょうか?
VB読みにくいなんて言っても苦しむのはお前だろ関係ないという雰囲気で
0380デフォルトの名無しさん (アウアウエー Sa23-/e0v)
2019/01/21(月) 13:48:30.91ID:NM3vIbDMa
日本人を説得するのはこれが一番
http://yellow.ribbon.to/~joke/tobikome.html

実際問題.NETの世界ではC#が標準で「みんな」が使ってる。
逆にあえて非標準のVBを使う理由って何なんですかと聞いてやればいい

もう少し合理的な人なら、ラムダ式とか、デリゲートのadd/removeに演算子が使えることとか、
三項演算子とか、null合体演算子とか、代入演算子が右辺の値を返す式であるとか、
プロパティーのいろんな省略記法とか、C#ならいかに簡潔にかけて同じことをVBでやるといかに冗長になるか
具体例を見せてやればいいよ
0381デフォルトの名無しさん (ワッチョイ 1301-HxQ/)
2019/01/21(月) 14:10:03.70ID:NbFzEAOW0
>>380
> ラムダ式とか、デリゲートのadd/removeに演算子が使えることとか、
> 三項演算子とか、null合体演算子とか、代入演算子が右辺の値を返す式であるとか、
> プロパティーのいろんな省略記法とか、
単なる印象だけど>>375のところのPMはそう言うのを嫌いそうな気がする
0383デフォルトの名無しさん (アウアウエー Sa23-/e0v)
2019/01/21(月) 17:01:29.53ID:NM3vIbDMa
>>382
デザイナで以下のどれかの操作をする
(a) [ctrl] + z
(b) マウスでそのラベルがあったあたりをドラッグ
(c) [ctrl] + [alt] + t
(d) プロパティウィンドウの上部のドロップダウンで選択
0385375 (ワッチョイ c101-drjx)
2019/01/21(月) 18:26:05.83ID:1DQQx7qk0
PM的にはVBのが簡単で人員の確保が容易との理由ですが、イベントリスナにクラスレスで全処理書くベテランエンジニアの意向を汲んでるんだと思います

自分はサンプルの多さとC系で無い記述に不慣れという理由でC#を希望しましたが、ベテランに寄せられるんだろうなと諦めムードです

ちなみにベテランのスマートUIは芸術の域で若輩の自分には追従不可です

コード量も多く見積りが高く出来るとPMからも信頼されています
0386デフォルトの名無しさん (ワッチョイ 9300-0y6D)
2019/01/21(月) 18:37:52.16ID:PrrgsGFM0
今2019年やぞ……。
生産性を上げる技術を入れる気が無い、そのPMにはC#のメリットはメリットに見えないだろうなぁ。
ベテランは古い技術と心中できるけども……
0387デフォルトの名無しさん (ワッチョイ c101-fAiL)
2019/01/21(月) 19:12:08.60ID:R3pW/ayE0
ループ内で一時変数宣言したらコストが増えるってのを知って
新しいブロック作って変数宣言してみたけどなんか見た目がすっきりしない
ループ内の変数宣言の新機能とかないのかな
0391デフォルトの名無しさん (ワッチョイ 3332-F2Ks)
2019/01/21(月) 19:36:49.44ID:lF845d4L0
>>387
コストが増えるってローカル変数が増える事?
初期化するスタックの増加やレジスタに乗りづらくなるとか?
さほど気にするもんでも…とりあえずAnyCPUで64bit優先オヌヌヌ
0392デフォルトの名無しさん (アウアウウー Sa15-l8G4)
2019/01/21(月) 19:59:33.83ID:2/OM9doDa
>>386
意識高めても虚しいだけだよ
10年この仕事して啓蒙もしたけどなにも変わらなかった
9割5分の人材はそもそもシステム開発に興味ないから啓蒙しても無駄
転職するか割り切るかどちらかしかない
環境を変えようと思ったら負け
0394デフォルトの名無しさん (アウアウエー Sa23-/e0v)
2019/01/22(火) 12:26:50.15ID:vFo5wc3/a
パズル言うほど難しい問題出てない気が...
どっちかっていうと質問自体の方がハズ(

正規表現便利だけど他人の書いたの読むのキツいよねw
しょっちゅう使ってれば違うのかもしれんが
0397デフォルトの名無しさん (ワッチョイ 6946-Z+78)
2019/01/22(火) 17:14:18.11ID:4H8Bkb5P0
フォームアプリケーションにtrackbarを2つ用意して、
pcに接続されたモノラルマイクの音量(感度?)とパンニングをそれぞれ操作したいんですが
適当な検索ワードがわからずにたどり着けませんでした
できるだけシンプルに、どう書けば可能でしょうか?
0399デフォルトの名無しさん (ワッチョイ 6963-fAiL)
2019/01/22(火) 18:36:37.95ID:NN+MTXVc0
質問です
ファイルの移動を扱う自作メソッドの結果を扱うクラス(Aとする)を作りました
このクラスに
class A{
...
public static A Output_IsCanceled(string 元のファイル) {
//引数を受けて動作をキャンセルしたことを示す結果を返す。
}
}

のように典型的な結果を出力するメソッドを追加したのですが、
このAを継承したクラスBにこのメソッドもこのメソッドを上書きしたメソッドも実装させたくありません。
なにかスマートな解決方法はあるでしょうか。

私には大人しく別のクラスに移すくらいしか思いつかないのですが。
0403デフォルトの名無しさん (ワッチョイ 21e5-zveU)
2019/01/22(火) 22:12:29.98ID:ttdon+q40
object型の変数に入れた匿名クラスのプロパティを取得する方法で
詰まっております。

object hoge = new { fuga = 1 };
int a = hoge.fuga ←こういうイメージで取得したかったのですが。。。

ご教授よろしくお願いいたします。
0405デフォルトの名無しさん (ワッチョイ 21e5-zveU)
2019/01/22(火) 22:25:46.51ID:ttdon+q40
>>404
Dapperの引数がobject型だったのですが、Dapperに渡す前の
匿名クラスのプロパティの値を元に一つ条件式を作りたかったんです
object型の匿名クラスからどうやって値を取るのか興味もありまして
0410デフォルトの名無しさん (ワッチョイ 512d-qnWR)
2019/01/22(火) 22:47:54.29ID:N3agGC610
>>409
これは全く頭になかったわ
0411デフォルトの名無しさん (ワッチョイ 21e5-zveU)
2019/01/22(火) 23:01:01.54ID:ttdon+q40
>>409
値が取れました。ありがとうございます。
結構トリッキーになるみたいなので
多用は避けた方が無難かと学びました

しかし、Dappreはさらにプロパティ自体も自前で取得するので
手練れの外人は違うなと
0412デフォルトの名無しさん (ワッチョイ 495f-zveU)
2019/01/22(火) 23:21:33.35ID:0fUOX4Xc0
>>411
Type.GetProperties()でプロパティの一覧が取得出来るよ。
foreach ( var propertyInfo in hoge.GetType().GetProperties() )
{
var value = propertyInfo.GetValue( hoge );
Debug.WriteLine( $"{propertyInfo.Name}={value}" );
}
0413デフォルトの名無しさん (ワッチョイ 21e5-zveU)
2019/01/22(火) 23:32:00.27ID:ttdon+q40
>>412
なるほどそうやるのですね
知らないことが多いので参考になります
0414デフォルトの名無しさん (ワッチョイ 2961-r1Xg)
2019/01/23(水) 00:01:29.03ID:n+ibBTmv0
Androidの実機持って無いんだけど、もし、完成したC#のアプリが有った場合、
DownLoad から、実行まではどうすればいい?
.Net のインストールから始まるの?
C#アプリはGooglePly からDLするの? それとも自前のWebサイト?
0415デフォルトの名無しさん (ワッチョイ f1da-qnWR)
2019/01/23(水) 03:41:42.64ID:g/jeFpr60
WPFって、最初のGUIデザインはデザイナで出来ますが、ユーザーの入力に応じてGUIを変化させたい場合
(例えば、テキストボックスに3と入力したらラベルを3つ追加するとかの場合)
xamlではなくC#のソースコードでコントロール追加せざるを得ないのでしょうか?
0418デフォルトの名無しさん (アウアウエー Sa23-0Knw)
2019/01/23(水) 08:30:39.69ID:YOQQL4jNa
>>415
よく考えよう
その例の場合、お前はコントロールを追加したいんじゃなくて表示対象の文字列を増やしたいんだろ?
C#からは「表示対象の文字列を追加する」操作だけをして、コントロールを追加するのはバインディングに任せるのがWPFの思想だ
>>417は間違いで、ググるべきキーワードは DataTemplate
コレクションに文字列を追加するだけで勝手にコントロールが追加されるようになる
0419デフォルトの名無しさん (アウアウエー Sa23-0Knw)
2019/01/23(水) 08:36:51.99ID:YOQQL4jNa
ちなみにWebなら上記のようなまどろっこしいことをしなくてもRazorテンプレートの中に直接forループを記述するだけだ
WPFの難解なバインディングは概念ばかりが先行してユーザーを置き去りにする典型的なMSの失敗作
0425デフォルトの名無しさん (ワッチョイ c101-drjx)
2019/01/23(水) 17:42:05.37ID:yPNynzM60
最近、業務システムはデータベースとデータ操作言語が8割でC#はさほど重要じゃないんじゃ。。。

と疑うようになってきました

C#が主役の開発って、ゲームくらいですかね
0426デフォルトの名無しさん (ワッチョイ 2961-TTNp)
2019/01/23(水) 17:50:21.87ID:qdiHHHQi0
>>425
それも統計に嘘がある可能性あり。以下、各社各様、自分に都合の良いことを行っている:

一般人:「Androidのアプリの大部分は Java である」
Unity:「百万種類以上あるゲームアプリの半数が Unity(C#)製である」
Adobe:「Flash製ゲームが、100万種類を超えた。」
日本人:「日本の歴代で一番売れたゲームは、Final Fantasy xx で、700万本(売り上げにして500億円程度)」
外人:「MineCraft というゲームの売り上げが一兆円越えた。」
0427デフォルトの名無しさん (ワッチョイ 2961-r1Xg)
2019/01/23(水) 19:31:40.08ID:qdiHHHQi0
誤: 外人:「MineCraft というゲームの売り上げが一兆円越えた。」
正: 外人:「MineCraft というゲームの売り上げ本数が一億本越えた。」

Flash に関しては、「one million games」みたいな言葉を使って、
Adobe が「自慢」していたんだそうだ。
0429デフォルトの名無しさん (ワッチョイ 2961-qnWR)
2019/01/23(水) 21:24:52.01ID:xzA+L1aD0
SQL手書き最高ひゃっはp
0430デフォルトの名無しさん (ワッチョイ 134f-m9BR)
2019/01/23(水) 22:51:20.49ID:xSBZbPpe0
C#のデバッグ画面の診断ツールについて質問です

メモリ使用量のプロファイルはデフォルトで無効だと思うんですが、いつの間にかクリックしてしまって
有効になったまま無効に戻せません

VCの場合はクリックすると元に戻す出来る場所があるのですが

レジストリをいじらないと駄目なんでしょうか?
0431デフォルトの名無しさん (ワッチョイ be7c-mcSo)
2019/01/24(木) 18:07:50.56ID:+k418LkV0
とりあえずVisual Studio Community 2017だと
診断ツールウィンドウの左上の歯車クリックで出るドロップダウンの
メモリ使用量のチェック外したら次のデバッグから消える
つかデフォルト有効じゃなかったっけ オンにした記憶ないし
0432デフォルトの名無しさん (ワッチョイ e12d-L3L3)
2019/01/24(木) 22:08:23.88ID:nbtsb27b0
C#の話じゃないのかもわかんないけど、ちょくちょく出てくる「コンテキスト」ってのが何者なのか未だに理解できん
プログラムの単位で!?処理の中断・継続等を担ってる!?!?とかなんとか説明されてるけど意味がわからん
こいつは一体どういうもんなんじゃい?
0434デフォルトの名無しさん (ワッチョイ e12d-L3L3)
2019/01/24(木) 22:23:04.95ID:nbtsb27b0
>>433
ASP.NETでもEFでもXamarinでのモバイル開発でも、何しててもコンテキストが出て来まくるじゃない
0435デフォルトの名無しさん (ワッチョイ 4de3-cDLG)
2019/01/24(木) 22:34:05.54ID:KQvEosKo0
>>432
「文脈」という意味で、例えば、Graphic の Context の場合なら、
・現在の foreground color
・現在の background color
・現在の font
・「カレント座標」 (MoveTo() などで設定する LintTo() の開始座標)
・現在の Clipping 領域。
・現在の 原点の位置。

などを記録しているオブジェクトのようなこと。だから、もし、同じ
Window に対して 2つの Graphic Context を持てば、それぞれで別々の
カレント座標や、foreground color、Clipping Region を持つことが
できて、瞬時に切り替えたりできる。これが、Win32 の Device Context
に相当する。

---------------------------------------
CPU の Cotext の場合、IA32BIT の場合なら、
汎用レジスタ: EAX, EBX, ECX, EDX, ESI, EDI、EBP
命令ポインタ: EIP
スタックポインタ: ESP
フラグ: EFALGS
セグメントレジスタ: CS, DS, ES, FS, GS
浮動小数点レジスタ: ST0〜ST7

などが該当する。この Context を細かく時間を区切って切り替えることで、
MultiTask が実現できる。MultiCore CPU の場合は、それぞれの Core が
別々の Context を同時に持っていることになる。
0436デフォルトの名無しさん (ワッチョイ 4d61-cDLG)
2019/01/24(木) 22:36:47.07ID:/05KE7l40
>>435
ただし、JS の canvas の context は、1つの canvas に対しては、1つしか
持つことが出来ないとされており、
var ctx1 = canvas.getContext("2D");
var ctx2 = canvas.getContext("2D");
のようにしても、ctx1 と ctx2 は同じ値が返ってくることになっているらしい。
0438デフォルトの名無しさん (ワッチョイ e12d-L3L3)
2019/01/24(木) 23:11:19.24ID:nbtsb27b0
ふえるわけわかめ
0441デフォルトの名無しさん (ワッチョイ 4d61-cDLG)
2019/01/25(金) 06:33:11.37ID:58XK3b4v0
>>438
紙に絵を書く場合に、色んな筆に予め色を載せておいて、必要なときにすぐに
目的の筆を選べるようにしておくと便利。その筆が context。
これだけだと単なる「brush」に過ぎないという突っ込みも有り得る。
実際のcontextは筆だけでなく、場所まで覚えてくれていたりする。
0444デフォルトの名無しさん (ワッチョイ 4d61-cDLG)
2019/01/25(金) 09:01:53.98ID:58XK3b4v0
日本語で、「この文脈では」「文脈をわきまえて」というものがあるけど、
直前に直線の描画を終えたばかりの「最後の座標」を覚える、っていうのが
それに近い。最後に使った色を今後も使う、最後に使った座標から、
また、直線を描き始める・・・。

お葬式では暗い顔して暗い服を着る、結婚式では明るい顔する・・・。
悪いニュースは暗い顔で読み、良いニュースは楽しそうに読む・・・。
それが文脈、context。
0445デフォルトの名無しさん (ワッチョイ 4d61-cDLG)
2019/01/25(金) 09:13:33.36ID:58XK3b4v0
それはそうと、.Netで書かれてるらしい MasterSeeker.exe と HNXgrep.exe
がWin7で劇遅になった。特に起動。XPではとても快適だったのに。
起動速度が多分、3〜5倍くらいになった気がする。

Win32/MFCで書かれたアプリでは経験したことの無い現象だと思う。
0446デフォルトの名無しさん (アウアウエー Sa4a-QJWZ)
2019/01/25(金) 12:14:00.12ID:qfUC5qIOa
>>432
そんなこと考えても時間の無駄。
contextの意味もcontext依存だから。
その文脈でどういう意味で使われてるか読み取るしかない。
英語ってそういう言葉でしょ?

コンピュータプログラムのcode、暗号のcode、符号のcode、
これらから還元してcodeが何を意味してるのか考えても意味ないのと同じ
0448デフォルトの名無しさん (ワッチョイ c6da-uJAn)
2019/01/25(金) 14:04:22.53ID:HDgzt9Ph0
管理者権限を必要としないで動作するソフトを作成しました、。
仮にバグがあったとして、そのバグを突かれて攻撃された場合に権限昇格等の事態は発生しますか?
0449デフォルトの名無しさん (ワッチョイ e9d4-h/iE)
2019/01/25(金) 14:31:21.79ID:NjeEwFLO0
アプリケーション1とアプリケーション2の間でメッセージをやり取りする必要が出てきたので、SendMessageを使ってもう一方のテキストボックスに
メッセージを送り、TextChangedのイベントで受け取りを判断するようにしました。
ところが、アプリケーション1→2は成功するのに、2→1はうまく動作してくれません
(テキストボックスに送られたメッセージは表示されますが、テキストボックスがChangeしたとは判断されていないようです)。

原因がわかる方いらっしゃったら教えてください。
0450デフォルトの名無しさん (ワッチョイ 8201-tKkQ)
2019/01/25(金) 16:06:37.52ID:ihVRaCqt0
formにフォーカスしたときにスペースキーを押すとkeydownで拾って処理ということをやってるけど
スペースを押すタイミングでform内のチェックボックスがチェックされたり消したりするけど止めることは出来ますか?
ヒントを教えてください。
0452デフォルトの名無しさん (ブーイモ MMb6-awm2)
2019/01/25(金) 16:35:10.05ID:cY+a6SZrM
>>448
所詮ローカルアプリだろ?
そんなもんにセキュリティの考慮なんぞ要らん
正当なユーザーに悪意があれば自分のPCの権限制御なんぞどうとでもなるし、
権限のない第三者が悪戯できない程度には今のWindowsのセキュリティは堅固だ
0458デフォルトの名無しさん (ワッチョイ 2e7b-hIZr)
2019/01/25(金) 22:02:24.78ID:RIyzEPA40
>>450
・KeyDown用のコントロールを設定しForm全体でキーを受けるのをやめる
・別のコントロールに常にフォーカスが当たるようにする
 具体的にはクリックイベントやForm.Shownのイベントメソッドを全部作ってControl.Select()かControl.Focus()を入れる
・Formからチェックボックスを無くす
下に行くほど下策。他にもあるだろうけど他の人に任せる
0459デフォルトの名無しさん (アウアウエー Sa4a-QJWZ)
2019/01/25(金) 22:36:20.38ID:0+JzU8ara
>>450
基本的にはそれあなたの仕様そのものがバグってる。
WindowsのUIのお約束に反するようなUIを作ったらあかん。
どうしてもならSetStyleを呼んでCheckBoxが入力フォーカスを持たないようにするのが筋だと思う。
0462デフォルトの名無しさん (ワイーワ2 FF8a-L3L3)
2019/01/28(月) 16:43:45.23ID:ji//xT0NF
TCPsocketとか使う
0463デフォルトの名無しさん (ワッチョイ 5902-beQY)
2019/01/29(火) 18:28:09.44ID:lSFWGay90
質問です
100msとかの短い間隔で繰り返す場合、
Systems.Timers.Timerを使って処理を繰り返すのと
while中にSleepかTask.Delayで間隔をとって繰り返すのとでは
どっちが処理がはやくて負荷が少ないですか?

またそれぞれのメリット・デメリットがあれば教えて欲しいです
0465L (ワッチョイ 4d61-cDLG)
2019/01/29(火) 18:47:23.89ID:8rAEnTT80
>>463
Sleep() 自体はそんなに積極的に使うべきものではない。ただし、
「逐次処理」で書いたほうが書きやすいような場合に使うと便利
な場合がある。例えば、単なる繰り返しではない、以下のように順にコードを
実行していくような場合:
(処理1)
(何かのフラグが変化するか、または単に時間が経つまで待機)
(処理2)
(何かのフラグが変化するか、または単に時間が経つまで待機)
(処理3)
・・・

ここで、処理1、処理2・・・の内容がほとんど同じような場合は、Timer を
使うべきだが全く違うようなものが10個も並ぶような場合だったら、Sleep()
を使うと楽。

SetEvent() などの同期オブジェクトを待つ WaitForSingleObject() などがサポート
されてない環境において、何かのフラグが立つのをポーリングして待たざるを得ない
ような時に、間に何も「はさまない」でループするとCPUがフルパワー状態で回って
しまって電気の無駄使いになるのが、Sleep() を「はさむ」と、Sleep()に指定する
待ち時間がたとえ短時間であっても、Sleep() の中で待ってる間は CPU が HLT 状態
になるので、電力消費を劇的に抑えることが出来る。
WaitForSingleObject() などが存在する環境では、Sleep() は余り使わないで良い。
0466デフォルトの名無しさん (ワッチョイ 317b-S0HC)
2019/01/29(火) 18:47:44.92ID:aKVTslCz0
>>463
役割が全部違う
Sleep
指定時間の間は同じスレッドでのGUI等の入力が停止する
Sleep/Task.Delay
(実行後に)確実に指定した時間が停止する
Timer
指定した間隔で実行される
0467デフォルトの名無しさん (ワッチョイ 4d61-cDLG)
2019/01/29(火) 18:59:35.28ID:8rAEnTT80
【参考】
Sleep() の意味は、待つときに、HLT 命令を使うこと。HLT 命令は、特権命令なので
ユーザーランド(一般アプリ)のプロセスでは実行できないため、OSのAPIで実行して
貰うしかない。なお、マルチタスクOSで、HLT 命令を実行すると、他のプロセスに実行が
移ることが多い。

多くのアーキテクチャに置いて、HLT 命令は、「busy wait」で待つよりも、
劇的に電力消費と熱の発生を抑えることが出来る:

https://en.wikipedia.org/wiki/HLT_(x86_instruction)

Almost every modern processor instruction set includes an instruction or
sleep mode which halts the processor until more work needs to be done.
In interrupt-driven processors, this instruction halts the CPU until an
external interrupt is received. On most architectures, executing such
an instruction allows the processor to significantly reduce its power
usage and heat output, which is why it is commonly used instead of
busy waiting for sleeping and idling.
0468デフォルトの名無しさん (アウアウエー Sa4a-QJWZ)
2019/01/29(火) 19:19:24.76ID:BTNuwc+5a
>>463
どっちにしろそんな違いがプログラムのパフォーマンスに影響なんかしないw
そもそも可読性よりパフォーマンスを優先する時代じゃない。
つまりより可読的な方法を選択すべき。

一定間隔で処理を繰り返すなら普通はタイマーを使った方が可読的でしょう、
繰り返し終了後に別の処理を継続させたい、みたいな事情があればあえてループ(つまりSleep)を
選択する場合もあるかもしれない
0469デフォルトの名無しさん (ワッチョイ 5902-beQY)
2019/01/29(火) 20:17:02.92ID:lSFWGay90
>>465-468
みなさまありがとうございます。
特にSleepの解説は勉強になりました。

パフォーマンスも特に影響無いようで、
一定間隔で処理するのでTimerを利用することにします。
0472デフォルトの名無しさん (ワッチョイ 2ef2-aSpO)
2019/01/30(水) 01:49:16.67ID:DZ6eQREq0
WinFormsのデスクトップアプリでVSyncを待つコードを教えてください
Unityなとのフレームワークやゲームエンジ、DirectXラッパーを
使うことは許されていません
0474デフォルトの名無しさん (ワッチョイ ed0c-wD8z)
2019/01/30(水) 07:29:11.42ID:foE0k69S0
>>472
P/Invoke禁止とは言われてないのだな

ではD3DKMTWaitForVerticalBlankEventを使いましょう
名前はD3Dとありますがgdi32にある関数なのでDirectXではないと
糞ルールを決めた上司に主張しましょう
0477デフォルトの名無しさん (スップ Sd62-OaRE)
2019/01/30(水) 08:46:16.74ID:hYqQd3E1d
あるフォルダ(A)内に不定期に作成されるファイルを、ローカルのフォルダ(B)に一定間隔でコピーします(フォルダ内全てではなく、前回からの差分ファイルをコピー)。

今回コピーしたファイルを使って後続処理をしたいのですが、どのようにしたら今回コピーしたファイルだと判別できますか?ファイル名にはタイムスタンプが入っています。
コピー後にA内のファイルを削除などできず、コピーのみ可能です。
0480デフォルトの名無しさん (スップ Sd62-OaRE)
2019/01/30(水) 18:35:51.42ID:hYqQd3E1d
>>477
ありがとうございます。
コピー済みのファイル名をDBに保存しておき、そこにないファイルは新規ファイルとして処理する。
こんな判断になりそうです。
0483デフォルトの名無しさん (ワッチョイ 7f2d-V2CY)
2019/01/31(木) 17:28:39.66ID:hO+r/SI90
Dictionary 型の自動ってないですか。

とあるキーに対してInsert/Updateするとき、
いちいち ContainKeys してから Add するかしないか、ってのがイケてないと思うのですが

dicHoge["Key"] = "hoge";

ってしたとき、Key がなかったら Add して、あったら値を差し替える、みたいな動きする標準クラスないですか?
0486デフォルトの名無しさん (アウアウエー Sa7f-dgou)
2019/01/31(木) 17:46:25.97ID:+2lIT2P6a
>>483
自動って表現が新しいw

確かにそんなメソッドがあってもよさそうだけど、
たぶん分かりやすい命名がしづらい割には単純にRemove後のAddで
実現できちゃうから用意されてないんじゃないかなと想像
0489デフォルトの名無しさん (ワッチョイ ff2c-ebk0)
2019/01/31(木) 19:16:07.42ID:Is8hbjin0
>>483
> dicHoge["Key"] = "hoge";
> ってしたとき、Key がなかったら Add して、あったら値を差し替える、みたいな動きする標準クラスないですか?
Dictionary<TKey, TValue>はまさにその挙動だが
0490デフォルトの名無しさん (ワッチョイ 5fda-vS77)
2019/01/31(木) 19:16:34.95ID:nQoHUWUF0
何か別の言語と勘違いしてんのかな
C++のmapみたいに存在しないキーにアクセスしたら自動的に初期値が入ればいいなと思ったことはある

var d = new Dictionary<string, int>();
d["a"]++;

こういうのできたら楽
0494デフォルトの名無しさん (ワッチョイ dfd2-O2h2)
2019/02/01(金) 00:37:05.77ID:SfS6VrgI0
そーいえば、ちょっと便利な Dictionary を作りたくて、これの完全ラッパーなクラスを作ったことあったな。
いまから考えれば無駄な労力だと思うが。w
0498デフォルトの名無しさん (ワッチョイ fff2-vS77)
2019/02/01(金) 12:54:05.03ID:hIHuQnKx0
>>474
ありがとうございます
D3DKMTWaitForVerticalBlankEvent に渡す
D3DKMT_WAITFORVERTICALBLANKEVENT の
以下の3つはどのように取得すればよいのでしょうか
D3DKMT_HANDLE hAdapter;
D3DKMT_HANDLE hDevice;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
0502デフォルトの名無しさん (ドコグロ MM7f-vGUq)
2019/02/03(日) 12:37:02.16ID:ZxPovaO5M
>>495
俺も最近似たようなもんが欲しくなったときがある

・重複したときに別の処理が必要
・登録した順番が重要

ってときにDictionary自体使わんで
KeyValuePairのListばっかり使うようになった
つーのはログの出力まで出したいときに登録した順に出したいから
ログ出力するもんにはDictionary使わなくなった
0512デフォルトの名無しさん (アウアウエー Sa7f-S1Ul)
2019/02/04(月) 13:36:44.96ID:AKeTBC2ia
ReadOnly=trueのテキストボックスをクリックしてしまった時に
フォーカス映ってカーソルがチカチカしないようにしたいのですがプロパティ上で設定できないのでしょうか?
0514デフォルトの名無しさん (アウアウエー Sa7f-dgou)
2019/02/04(月) 14:07:22.27ID:/rUNKcNUa
>>512
コピーを想定してそうなってるので、TextBoxを使うならその仕様は買えない方がよいのでは。
コピーなんかできなくてもいいなら素直にLabelを使いましょう。
BorderStyleやBackColorをいじればTextBoxに近い外見にも出来る
0515デフォルトの名無しさん (アウアウエー Sa7f-S1Ul)
2019/02/04(月) 15:54:30.95ID:AKeTBC2ia
テキストボックスの上に後付けでボタン配置したので、ポインタずれて押しそこなった時にそんな感じになってしまったのです
まあ動作的にはなんの問題もないのではあるけど>>513のイベントハンドラ作ってみます
ありがとうございました
0524デフォルトの名無しさん (ワッチョイ 7f4b-ordn)
2019/02/05(火) 15:40:50.37ID:3J1ruy+d0
>>519
回答ありがとうございます。

SevenZipExtractorですが、プロジェクトにNugetで取り込んでも正常に認識してくれず使えませんでした。
SharpCompressですが、(まだファイルの一覧だけしか試していませんが)RAR5での圧縮ファイルを扱えました。
SharpCompressは前に使っていたことがあるので(当時はRAR5が使えなかった)、こちらを使おうと思います。
0527デフォルトの名無しさん (アウウィフ FFa3-zGAl)
2019/02/05(火) 17:28:38.13ID:dQJUt0gZF
ライブラリいっぱいあるで
0530デフォルトの名無しさん (スップ Sd1f-DeEq)
2019/02/06(水) 12:34:37.03ID:ymLQaaTBd
C#で書いたコードをVBAから呼び出す際のC#でのやり方を教えてください。

例えば、MessageBoxで「Hello!」と表示するには何をどうすれば出来ますか?
使ってるのはVisualStudio2017です。
0536デフォルトの名無しさん (ササクッテロレ Spb3-MXrN)
2019/02/06(水) 18:30:37.80ID:1DcU3Gnhp
コードコピペして自分の使ってるクラスに直せば出来ると思うけど
インターフェース作ってなければクラスから作って置き換えればサンプルコード通りに動くはず
0538デフォルトの名無しさん (ワッチョイ ff2c-IxnT)
2019/02/06(水) 21:20:24.24ID:SSakxrcH0
>>534
GetPrivateProfileStringの定義がCharSet.Unicode指定してるから
第5引数のnSizeはwchar_tの個数を指すことになる
wchar_tは2バイトだからnSizeに16指定したらlpReturnedStringは32バイトあることになる
でも実際にはその半分の16バイトしか確保してないから
GetPrivateProfileStringが17バイト目以降に書き込もうとしてヒープ破損する
0539デフォルトの名無しさん (ワッチョイ a1e8-7AZF)
2019/02/07(木) 10:39:20.42ID:BTY8+ybz0
>>538
文字セットのことがすっかり頭から抜けてました
WinAPIを使うなら真っ先に気を付けないといけない部分なのになあ

・ReAllocCoTaskMemで確保するサイズをlength*2に変更
・GetPrivateStringのCharSetをAnsiに変更、文字列への変換をPtrToStringAnsiに変更

上記2通りの修正でどちらも正常動作することが確認できました
回答ありがとうございました
0540デフォルトの名無しさん (スップ Sd82-Q5xa)
2019/02/07(木) 18:21:29.96ID:yK9ubdQXd
VS2017使用。
ADOを使ってエクセルのシート名を読んだりセルのデータを読み取りたい。
対象エクセルブックは〇〇.xlsのみ

ネットのサンプルコードをコピペして使ってもエラーでさっぱりです。
何かインストールが必要なんですか?それとも参照設定とか必要なんですかね?

なんか雛形のコードでもあればいただけませんか?
0547デフォルトの名無しさん (ワッチョイ a1f0-38JT)
2019/02/07(木) 22:23:39.18ID:iyj2o48P0
こんばんはよければ教えてください
c#で社内用のソフトをしこしこ作っているものなのですが、同じ境遇の方ヘルプファイルはどの形式で
作っていますか? chmファイルは今時便利なツールもないので作りにくいのですが、pdfではなんか味気ない

今回新たなソフトを社内でリリースするので悩んでいます。

あ、ちっちゃい会社です。
0561デフォルトの名無しさん (アウアウエー Sa0a-OF6d)
2019/02/08(金) 06:02:12.24ID:86VvLP3ma
簡単なゲーム作ってみたのだけど仮にこれを配布するとしたら
動作環境は何を基準にして明記したらいいのでしょうか

Windowsの人なら特になにか入れてもらわなくてもだいたい動くってことでしょうか
0563デフォルトの名無しさん (スッップ Sd22-lwMy)
2019/02/08(金) 07:20:35.11ID:Weq4zX9xd
対処にした.netでしょう。

win7はデフォだと3.5
win8がデフォだと4.5
win10はデフォ4.6がはいってる。
win8とwin10は3.5系はデフォでは入ってない。
一般的には、4.5で作っておけばトラブルは少ない。
async awaitも使えるし、入ってることが期待できる。

.net coreは開発者でないと、入れてることは期待できないので、入れてもらう形かね。
一般の非開発者は、.net framework と .net coreの二系統に大きく別れてるとか
知らないので、coreは注意が必要かもねぇ
0564デフォルトの名無しさん (ワッチョイ cd0c-feI+)
2019/02/08(金) 07:33:47.03ID:JXgoNARF0
むしろCoreはランタイムをSelf-containedにできるから実行環境の状況を気にせず済むでしょ
(まだデスクトップアプリの開発環境として整ってるとは言えないけどそれはそれ)
0566デフォルトの名無しさん (ドコグロ MMd5-/S9r)
2019/02/08(金) 14:02:16.37ID:wLzz2paeM
今更新規でFull .NET使うのはお勧めできないな
結局.NET standardはMSが早くも投げ出して崩壊し、今後は.NET Coreに一本化される
既存の.NETアプリは全てレガシーの産廃だ
0568デフォルトの名無しさん (ワッチョイ a205-BpIe)
2019/02/08(金) 16:42:05.01ID:DCBa2RJt0
指定のdatetimeまで待つ処理はどのように書けばよいでしょうか?
GUIアプリケーションで出来れば待っている間も操作可能
なるべくcpuの負担が軽くなる方法が良いです
よろしくお願い致します。
0569デフォルトの名無しさん (ワッチョイ 2d61-VUEs)
2019/02/08(金) 16:47:22.48ID:xI0+6qTx0
>>568
それは、まず、タイマーを起動して、1秒間に一回程度、自前の関数が
呼び出されるようにしておく。そして、その自前の関数で現在の日時を
取得して、条件に合う日時になっているか調べる。そして、条件に合って
いれば、好きな処理をする。そうすればいい。
0576デフォルトの名無しさん (ワッチョイ 2d61-VUEs)
2019/02/08(金) 17:48:48.00ID:xI0+6qTx0
マルチ・スレッドというのは、プログラミング経験を沢山積んだ人が使うもので、
非常に原因の特定が難しいバグを引き起こすことがあるので、初心者には
お勧めできない。同期オブジェクトや atomic アクセス、volatile などを
正しく理解してからでないと危険を伴うことがある。

async も独特で複雑なことをやっているので、プログラミング初心者が、何が起きて
いるのかを理解するのは難しい。なんとなく動くかもしれないがうかつに使うのは
やめたほうがいいと思う。
0578デフォルトの名無しさん (ワッチョイ cd0c-feI+)
2019/02/08(金) 18:11:51.00ID:JXgoNARF0
GUIちゅーてんだから普通にWinforms/WPFのTimer/DispatcherTimerを紹介すりゃええんでないの
数日間待機させたいとかになるとまた話が違ってくるしもうちょい質問の要件をハッキリさせて欲しいけど
0579デフォルトの名無しさん (ブーイモ MMcd-FdHg)
2019/02/08(金) 18:25:10.33ID:ccTwL3cjM
指定日時後の起動はタスクスケジューラに任せた方が良いと思う
GIU側の仕事はスケジューラヘの登録と指定日時にスケジューラが起動したプロセスとの通信
0583デフォルトの名無しさん (ドコグロ MMd5-/S9r)
2019/02/08(金) 18:56:00.90ID:wLzz2paeM
JavaScriptそっくりもクソも、JavaScriptのasync/awaitはC#が発祥だぞ
それをJavaScriptもPythonもKotlinもそっくりそのまま真似した
汚い機能だと感じる君の感覚は否定しないが、好みは別にして非同期プログラミングのデファクトスタンダードであるのは事実だ
0584デフォルトの名無しさん (ワッチョイ a1d2-hHwN)
2019/02/08(金) 19:49:11.94ID:lL88DpXz0
割り込んですまない。
SolrNet を使ったことあるヤツがいたら知恵を貸して欲しい。

SolrNet を使ってこんなことをやってみた。

Startup.Init<[適当なモデルクラス]>( [SolrのサーバーURL] );
var solr = ServiceLocator.Current.GetInstance<ISolrOperations< [適当なモデルクラス] >>();

まあごく当たり前の初期処理なのだが、実行すると2行目の Current の中身が null でヌルポエラーになる。

原因がわからなくてしばらく悩んで、GitHub にあるサンプルコードをダウンロードしてきてコピペしても同じだったのだが、
ダウンロードしたソリューションをビルドして実行するとこの部分を問題なく通過する。
またしばらく悩んで、nuget でダウンロードしてくる SolrNet のバージョンに違いがあることに気がついた。
どうやらバージョンが 0.5 以下だと通過し、それ以降のバージョンだとヌルポエラーになるようだ。

最新のは 1.0.1 だったか、このバージョンで上の部分を通過させるに必要な事はなんだろう。心当たりがあったら教えて欲しい。
0.5 の辺りって、その辺りを境に他のパッケージを参照するようになってるぽいのだけど関係があるだろうか。
これを使えってご指定なんだよな。。
0585デフォルトの名無しさん (アウアウエー Sa0a-gVV1)
2019/02/08(金) 20:41:31.54ID:OM4aCJGta
>>568
一応これでできるけど、これがベストかどうかは知らん
private static async Task WaitTillAsync(DateTime dt)
{
  var now = DateTime.Now;
  var span = dt > now ? dt - now : TimeSpan.Zero;
  await Task.Delay(span);
}

private async void button1_Click(object sender, EventArgs e)
{
  await WaitTillAsync(DateTime.Now.AddSeconds(10));
  MessageBox.Show("10秒後にこんにちは");
}

>>566
マジですかw
0586デフォルトの名無しさん (ワッチョイ aeda-OF6d)
2019/02/08(金) 21:46:41.47ID:tTA+g4g80
>>585
それだとNTPで時計合わせが発生したらズレる
素直にSystem.Timers.Timerで500ms位ごとにElapsedさせて、
指定時刻を過ぎてないか見るのが簡単。

マイクロ秒まで精度出したいっていうのなら、そもそも使うOS間違ってる。
0588デフォルトの名無しさん (ワッチョイ a205-BpIe)
2019/02/08(金) 22:27:25.20ID:DCBa2RJt0
みなさんありがとうございます。
一応自分で書いていたのは>>585さんに近くて設定時刻前ならそのまま、設定時刻を過ぎてたら一日足して現在時刻との差をawait Task.Delayしました。
タイマーの精度はそんなに必要なく1分間隔で大丈夫で、24時間起動で毎日朝8時から夕方17時までプログラムを止めるみたいな感じです。
同じプログラムを大量に起動するので処理はなるべく軽いのが希望で
ループ処理で毎分チェックするようなのは重いイメージがあるのですが大丈夫でしょうか?
また、時計合わせが発生したらズレるというのはどういうことでしょう?
0592デフォルトの名無しさん (オッペケ Srd1-da9w)
2019/02/08(金) 23:32:28.45ID:Waqd0NNdr
どのへんでプロセス落ちるの?
0593デフォルトの名無しさん (ワッチョイ a205-BpIe)
2019/02/08(金) 23:33:09.16ID:DCBa2RJt0
>>590
Thread.Sleepの所Task.Delayにしても大丈夫でしょうか?
0595デフォルトの名無しさん (アウアウエー Sa0a-gVV1)
2019/02/09(土) 00:44:22.99ID:jhOjUKEBa
>>593
もちろんいいと思うけど、

() => { while (dt > DateTime.Now) Thread.Sleep(500); }

async () => { while (dt > DateTime.Now) await Task.Delay(500); }

に文字数が増えて、使うTaskも増えて、かといってメリット無いような気が
0597デフォルトの名無しさん (ワッチョイ 2d61-VUEs)
2019/02/09(土) 00:52:22.81ID:8aikkfMy0
C#は、もはや、C++やCとは似ても似つかなくなってしまってる。
control flow がめちゃくちゃ複雑で、何をやってるのかわからなくて
生ポインタの1,000倍危険。
0599デフォルトの名無しさん (ワッチョイ 9140-/WZR)
2019/02/09(土) 01:13:05.43ID:dvMZ7Shb0
PDFファイルからテキストを抽出する方法でオススメはありますか?
調べたところiTextSharpとPDFBoxは見つかりましたが、たまに読めないPDFがあるのが残念です。
0603デフォルトの名無しさん (ワッチョイ 9140-/WZR)
2019/02/09(土) 01:55:33.22ID:dvMZ7Shb0
>>601
私の技術力が低いので初心者用スレで質問させていただいたのですが、それを購入したとして初心者でもネットで調べる程度で可能ですか?
上に書いたiTextSharpとPDFBoxは、ネットに転がってたソースを丸パクリでやりました。
0606デフォルトの名無しさん (ワッチョイ bd5f-FtKs)
2019/02/09(土) 02:40:17.09ID:UMSUoHVI0
後、細かいことを言うと、
Task.Run()でThread.Sleep()だとSleep()してる間もThreadPoolのThreadを1つ占有してしまうが、
Task.Delay()ならその間はThreadPoolのThreadが開放される。
0607デフォルトの名無しさん (アウアウエー Sa0a-gVV1)
2019/02/09(土) 02:47:07.48ID:jhOjUKEBa
>>602
スリープするのはUIスレッドじゃないのでそれはありませんよw

これ、ちょっと前にも書いたけど、Timerを使った方が可読的になる場合ももちろんあるし、
そうでない場合もある。

つまり、別に車輪を再発明してるんじゃありません。

質問者がどっちのケースかは分からない
0610デフォルトの名無しさん (ワッチョイ 412d-Ctdi)
2019/02/09(土) 07:11:19.34ID:Bzu1ndzH0
待つだけの処理で1スレッド消費しちゃうのは良くないな
かといって単純にAwaitを使っただけのコードだと、どこかでデッドロックが生まれる可能性が増えたり、待てずにメインスレッドが抜けてしまったりする危険が出てくる
ここはコルーチンしか無いでしょ!!コルーチン最高!!!!
0612デフォルトの名無しさん (ワッチョイ 412d-Ctdi)
2019/02/09(土) 07:35:28.00ID:Bzu1ndzH0
タスクスケジューラはC#自体の機能じゃないからな、漢は黙ってコルーチン!!!
0614デフォルトの名無しさん (オッペケ Srd1-da9w)
2019/02/09(土) 08:32:22.73ID:6iVlgEPUr
>>594
それ非同期関係なくない?
0622デフォルトの名無しさん (ワッチョイ 6e7b-HWB1)
2019/02/09(土) 11:31:34.31ID:k4TwxJVN0
>>621
opengl c# でググったらいろいろヒットするが
DllImportがめんどくさいのはわかるが避けて通れない理由があるのか?
C++でやらなきゃって思うのならC++のスレへどうぞ
0624デフォルトの名無しさん (ワッチョイ cd0c-feI+)
2019/02/09(土) 11:39:46.24ID:U3ljW3xz0
>>621,623
> 個人で使うものではない感じですか?
個人で使うのになんら障害はない

> openglを扱うためには裂けては通れないようですが
OpenTKとかあるし別に必須じゃない

> ラッパーのほうが情報すくなくて難しそうなので
じゃあC++で学習すれば?
0629デフォルトの名無しさん (ワッチョイ 412d-Ctdi)
2019/02/09(土) 13:27:48.74ID:Bzu1ndzH0
やっぱコルーチンだわ
コルーチン質問がいくらあっても全くロックが起きとらん!スレッドを丸々潰してもいない!最強!!
0630デフォルトの名無しさん (ワッチョイ 2d61-VUEs)
2019/02/09(土) 14:30:31.24ID:8aikkfMy0
>>620
そんなかからん。せいぜい 2割り増し程度。
でも、ブラックボックスが少なくて何やってるのか分かりやすいので、
はまりにくいかも。

C#のasync, awaitなんて初心者が理解できるものではない。
0634デフォルトの名無しさん (ワッチョイ 8261-VUEs)
2019/02/09(土) 22:52:17.77ID:5t5ZiBxh0
WPF, Windows Form の二種類があったり、Xamarineを使うかどうかが
あったり、C#も複雑極まりないんだね。GDI がセンスがない関数群だったので
嫌われたこと、MFCが汚かったこと、Direct3Dが汚かったこと、COMが
汚かったこと、ActiveX がさらに訳分からなかったこと、の再来を感じる。
「非同期処理」もスレッドをいくつでも起こすタイプや、Poolみたいな
ことをやるタイプ、以外にいくつもあって、さらに最後に async, await
が Synax Suger になっているんだね。なんという複雑さ・・・。
また、スレッドを起こすのに 1MB もメモリが必要・・・・。
なんという無駄使い。
0635デフォルトの名無しさん (ワッチョイ 8261-VUEs)
2019/02/09(土) 22:54:12.95ID:5t5ZiBxh0
結局、.Net Standard が破棄されて、.Net Core だけが残るといううわさを聞いた
けど、やっぱり Xamarine が捨てられていくのかな。買収時点で最初から
予想されたことだけど。
0637デフォルトの名無しさん (ワッチョイ a1e7-snZf)
2019/02/09(土) 23:07:49.24ID:HZrCyM150
>>634
> 「非同期処理」もスレッドをいくつでも起こすタイプや、Poolみたいな
> ことをやるタイプ、以外にいくつもあって
具体的には?
いくつもあるなら2,3挙げてみてよ
0639デフォルトの名無しさん (ワッチョイ 8261-VUEs)
2019/02/10(日) 00:09:30.45ID:P1Q5YmOJ0
多分、
1. Thread
2. ThreadPool
3. Event-based
4. Async Programming Model
5. Reactive Extensions
6. Task-based
7. async/await

の 7種類だと思う。もっとあるかも知れないけど。
0640デフォルトの名無しさん (ワッチョイ 9232-/WZR)
2019/02/10(日) 00:09:35.84ID:XpZrG1uz0
APM、EAP、TAPなんかを言ってるのかね? 単に時代の流れじゃないの
レガシーをタスクにする方法もあるし、.NETはネイティブスレッドではなかろう
開始元へ差し戻しが多いからawaitがあるだけで結局Task推奨になってると思うけど

議論が活発なのは結構だが、ぽこぽこ増えていく言語バージョンを見てると不安は抱く
0653デフォルトの名無しさん (オッペケ Srd1-da9w)
2019/02/10(日) 08:46:39.23ID:uz05qYWIr
c#にはあってVBにはないものってないんだよな
.net CoreでもVB採用されてるし
0655デフォルトの名無しさん (ワッチョイ 2d61-VUEs)
2019/02/10(日) 09:08:02.67ID:YTe/5aEc0
>>651
スパゲッティーなアルゴリズムを作ってしまっただけなのに気付いてない。
理解できないのではなく、馬鹿馬鹿しくて腹が立つだけ。
頭のいい人は、もっと良い方法がすぐにひらめくから。
0656デフォルトの名無しさん (ワッチョイ 822f-1zeQ)
2019/02/10(日) 09:09:03.29ID:o5rWkmWO0
>>653
unsafe
0657デフォルトの名無しさん (ワッチョイ 412d-Ctdi)
2019/02/10(日) 09:21:34.97ID:0K2cdDeF0
>>655
君は「高卒の天才」ってやつかい?
0658デフォルトの名無しさん (ワッチョイ 2d61-VUEs)
2019/02/10(日) 09:24:33.66ID:YTe/5aEc0
C# のこの書き方は、35年前の Microsofot の N88-BASIC の
def fn にそっくり

[C#]
int f(int n) => n >= 1 ? n * f(n - 1) : 1;

[N88-BASIC]
DEF FN名前 [ ( 引数名 { , 引数名 } ) ] =式

10 DEF FNZEIKOMI(P)=P*1.08
20 INPUT "zeinuki kakaku";KAKAKU
30 PRINT "zeikomi kakaku";FNZEIKOMI(KAKAKU)
0661デフォルトの名無しさん (ワッチョイ 2d61-VUEs)
2019/02/10(日) 13:18:41.19ID:YTe/5aEc0
アメリカって、バイナリだと信用されないんだろうか。
アメリカは悪い人だらけなので武器を持たなきゃならないのが、それが安全な日本にまで波及していて、
セキュリティーソフトのせいでPCの能力は結構落ちるし、自作プログラムが誤検出されて
風評被害は出るしでいやな時代になったな。
0662デフォルトの名無しさん (ワッチョイ 2d61-VUEs)
2019/02/10(日) 13:20:59.07ID:YTe/5aEc0
アメリカじゃ、大手企業から以外はバイナリが信用できないから、
無料ソフトのバイナリが入手できない。それで日本まで生産性が下がって来た。
いつのまにか、そんな必要のない日本まで巻き添えになってる。
それに日本人は気づいてない。
0675デフォルトの名無しさん (ワッチョイ 86ef-gf/b)
2019/02/10(日) 18:17:02.13ID:6Yt6QBhU0
ツリーを表示する部分はtreeviewですが、treeviewの中身を表示する領域はどのツールを使う運でしょうか
エクスプローラのメイン画面のことですね
0680デフォルトの名無しさん (ワッチョイ 8dba-Vc6s)
2019/02/11(月) 08:30:23.01ID:sPHRyGkO0
textBoxコントロールでスクロールバーが表示されている状態で
スクロールバー上で右クリックするとスクロールバーのコンテキストメニューが出ますが
richTextBoxコントロールだと出ません。textBoxでは出る標準の右クリックメニューも同様に出ません。
どうすればrichTextBoxで標準コンテキストメニューとスクロールバーのコンテキストメニューを出せるでしょうか
0684デフォルトの名無しさん (ワッチョイ 86ef-gf/b)
2019/02/11(月) 20:34:36.03ID:Q8pHabNH0
listviewの使い方について、超初心者向けに解説してるサイトを教えてください
vs2017を使用しています
いろんなサイトやyoutubeで調べてたんですが、わからないです
0686デフォルトの名無しさん (ワッチョイ 6e7b-HWB1)
2019/02/11(月) 21:09:13.65ID:+GND3QEg0
>>684
知りたいのこの辺りじゃない?
ListViewコントロールへ項目を追加するには?
http://www.atmarkit.co.jp/ait/articles/0502/04/news121.html
ListViewのアイテムがポイントで選択、シングルクリックでアクティブにできるようにする
https://dobon.net/vb/dotnet/control/lvpointselection.html
Drag drop ListView Item from one listView to another
https://stackoverflow.com/questions/38162479/drag-drop-listview-item-from-one-listview-to-another
0693デフォルトの名無しさん (ワッチョイ e252-PL2D)
2019/02/12(火) 03:12:17.30ID:VJfrEW+T0
>>691
標準コントロールで実現困難なことをそれで無理に実現しようとしてるならそのアドバイスでいいだろうが、
今回の質問者は(今のところの情報では)標識コントロールで不足している訳ではなく、ありものを使うことすらやっとのレベルなのだから、自分で作れというのは無茶な要求だろう。
0696デフォルトの名無しさん (アウアウエー Sa0a-DOJB)
2019/02/12(火) 05:58:34.55ID:SvKCMiwAa
めくそはなくそ
0699デフォルトの名無しさん (ワッチョイ aeda-OF6d)
2019/02/12(火) 06:43:57.01ID:0tNvI9Ip0
さくっと作りたいならWinForm
見た目にこだわって、今後も続けていきたいならWPF

まぁ今からやるならWPFだと思うよ。
DPIスケーリングとか今どきの地味でめんどくさい部分の対応はやってくれている。
WinFormはさくっと作れるけど、自分でUIの部品画像つくれないなら見た目は古臭くなるし、
UIとビジネスロジックの分離も大変。
0702デフォルトの名無しさん (ワッチョイ 412d-Ctdi)
2019/02/12(火) 07:07:37.35ID:IZHpfaFj0
数倍は違っても桁は違わないんじゃないのかな
0708デフォルトの名無しさん (ドコグロ MM41-/S9r)
2019/02/12(火) 11:41:24.36ID:VerJGrBEM
>>707
それ以前に、WPFは未完成のまま既にメンテナンスモード入りしたから新規での利用はお勧めできない
MS自身がVSの開発に使うためだけにメンテされてるフレームワークだよ
0710デフォルトの名無しさん (アウアウエー Sa0a-gVV1)
2019/02/12(火) 12:22:47.98ID:9UpkeXwQa
WPFの問題点は

(1) 学習コストが高い
(2) 即時モードの描画が使えない

だと思うので、これらを気にしなきゃ、相対的に新しいWPFの方がいいんだろうけどね。
レイアウトやバインディングの柔軟性が魅力的なのは否定できない。
これは意見が分かれるけど、

(3) イベントハンドラだらけになってコードが読みづらいWindows Formの問題点の
解消を目指したはずなのに、結局かえってWPFのコードの方が分かりづらい

これもWPFが好きになれない大きな理由
0711デフォルトの名無しさん (ワッチョイ 4690-Bwin)
2019/02/12(火) 12:53:00.05ID:IcQdq56o0
WPF敷居高いのは初めてづくしだからだろ。
データバインディングからレイアウトをxmlで書いて(デザイナーも使えるが)で、更にMVVMのお勉強。
だから、しんどい。
0712デフォルトの名無しさん (ワッチョイ 4690-Bwin)
2019/02/12(火) 12:59:12.71ID:IcQdq56o0
wpfでもmvvmとバインディング使わなくてもいけるけど、listviewの仮想化とか使えなくなったりするが、mvvmとかも強制見たいな風潮がwpfの敷居を上げてる
0714デフォルトの名無しさん (ワッチョイ 4690-Bwin)
2019/02/12(火) 13:02:49.08ID:IcQdq56o0
androidは最初標準でデータバインディングとかなく途中で登場してMVVMっぽく作れるようになったが、
こういう風に段階を踏んで1個ずつ学び安い環境があったから良かった。

その違いだな。
0725デフォルトの名無しさん (オッペケ Srd1-da9w)
2019/02/12(火) 23:28:53.73ID:TGYKDn8Ur
UWPアプリなんて誰も使ってないのに
0728デフォルトの名無しさん (オッペケ Srd1-da9w)
2019/02/13(水) 00:04:01.52ID:sgtLrhrBr
>>727
いやマジでしょ
0734デフォルトの名無しさん (ワッチョイ 8242-feI+)
2019/02/13(水) 08:37:37.78ID:hwjiROfk0
>>732
WinFormでファイラー作ると、XPのエクスプローラーもどき程度しか作れないのが問題だな
見た目のカスタマイズが困難だからね

ただWin32のコンポーネントを直に使うように作れば速度は本物と遜色ない物ができる
リストビューとか使わずにエクスプローラーの部品を引っ張ってくるなら
0735デフォルトの名無しさん (ワッチョイ 86ef-gf/b)
2019/02/13(水) 08:45:15.81ID:9xiZOSOZ0
>>734
見た目まで自由に作る場合はC++のほうがいいのでしょうか?
面倒そうではありますが
c++でもインターフェースは何らかのライブラリを使うと聞きますが
0736デフォルトの名無しさん (ワッチョイ 8242-feI+)
2019/02/13(水) 08:57:22.13ID:hwjiROfk0
>>735
C++でもWinFormsでも頑張れば見た目を変更できないこともない
ただ、素人が一人で片手間でやる作業量じゃすまないんだわな

簡単に見た目を変えたいのならWPFがお薦め
0740デフォルトの名無しさん (オッペケ Srd1-da9w)
2019/02/13(水) 11:49:24.81ID:sgtLrhrBr
>>730
画像ビューワとか?
ExcelとかWinFormで作られているじゃん
0743デフォルトの名無しさん (オッペケ Srd1-da9w)
2019/02/13(水) 12:19:31.62ID:sgtLrhrBr
>>741
>>742
そういうのはさ、Windows10に標準でインストールされてるやつだけど
自分で作ったUWPアプリなんか誰にも使われることはないよね
そもそもアプリストアなんか見ることは一切ないし
0752デフォルトの名無しさん (ドコグロ MM41-/S9r)
2019/02/13(水) 19:09:55.36ID:e0d6KWciM
>>750
勘違いするな
お前の仕事はモノを完成させることではなく労働力の提供なんだから黙って従えばよい
お前だって成果物責任を負う立場になれば多少なりとも保守的になるさ
0755デフォルトの名無しさん (オッペケ Srd1-da9w)
2019/02/13(水) 21:17:02.96ID:sgtLrhrBr
前も言ったけどさ、ガワはブラウザで作ればいいじゃん
WinFormもWPFもUWPもいらん

Windowsアプリだがブラウザで操作する
ASP.Net Coreでもできそうだが
0758デフォルトの名無しさん (オッペケ Sr7b-/+m/)
2019/02/14(木) 05:20:39.39ID:MlsuSDTjr
エレクトロンみたいな感じでいいんだよ
裏側はc#、表側はhtml, css, js
.Net CoreならMacでもLinuxでも動くし
これが一番いい
0761デフォルトの名無しさん (オッペケ Sr7b-/+m/)
2019/02/14(木) 11:28:10.10ID:MlsuSDTjr
バカどもには理解できないらしい
0786デフォルトの名無しさん (オッペケ Sr7b-/+m/)
2019/02/15(金) 13:01:49.14ID:tYLxs8Yjr
みんなLinkつこてるの?
0789デフォルトの名無しさん (アウアウウー Sa4b-F6dR)
2019/02/15(金) 13:18:02.81ID:VCl1o3iCa
>>787
強調し忘れてたから念の為書いておくと
Null許容型にしているから「二番目に高い要素が0」の場合と「二番目が無い場合」は区別できる
それを踏まえた上で指摘してくれているなら……Null許容型使ってたらnullチェックしてくれると信じてるんだがどうだろう
0808デフォルトの名無しさん (ワッチョイ 2702-yQ/S)
2019/02/16(土) 16:07:58.46ID:n2t8JUOl0
Cでは数値型変数を複数の場所から参照するためには、変数のポインタ得てそれを使いますが
C#ではポインタ無いんで、数値フィールド持つクラスを作って
そのインスタンスから参照するしか無いんですか?
0810デフォルトの名無しさん (ワッチョイ df32-A2tD)
2019/02/16(土) 17:01:47.04ID:mSWYdTC80
>>808
スカラー型なら直接読み書きすれば良いのでは無いかと思いますが…配列なら参照型です
変数参照を扱うなら強化されたrefやoutを使えます、またunsafeだとポインタも使えます
TypedReferenceというのも有りますがコレを扱うための__makerefなどは些かアレなので…

.NETには値参照用のSystem.Runtime.CompilerServices.StrongBox<T>などジェネリック既存型も有ります
0812デフォルトの名無しさん (アウアウエー Sa1f-x6Gg)
2019/02/16(土) 17:11:36.23ID:PR5Tb5Rba
>>808
Cでもスコープ内の変数は普通に読み書き可能。
スコープ外の変数でもその値を引数として関数に渡すことができる
ポインタが必用になるのは変数を書き換える汎用的な関数を書く場合だけ
C#の場合、同じことはrefやout付きの引数で実現できる
0818デフォルトの名無しさん (ワッチョイ bfef-l0e6)
2019/02/17(日) 12:34:21.09ID:Cn2cXppc0
using System;
public class Hello{
public static void Main(){
// Your code here!

private void myfunction(){
Console.WriteLine("jfoasd");
}

myfunction();

}
}

paizaでC#を入力するとエラーが出るのですが、どこがおかしいですか?
private voidの部分が予期されていないというエラーが出ますね
https://paiza.io/ja
0822デフォルトの名無しさん (ワッチョイ 077b-Pt61)
2019/02/17(日) 14:31:14.74ID:cAaLtQSp0
>>818
まずこういう質問はpaizaの問題でC#のスレでやられても混乱するからVisualStudioでの話以外はやめてくれ
コード書けるサイトが間違っていないって保証が無い。実際動くコード転載してもエラーって何度も経験しているからな
VisualStudioで書くのならターゲットフレームワークを.Net4.7以上にしてprivate void myfunction()からprivate外してvoid myfunction()で動く
0825デフォルトの名無しさん (アウアウウー Sa4b-FXSN)
2019/02/17(日) 17:04:55.99ID:KqlDIF5Pa
>>823
1はlistという変数の定義と同時にList型のインスタンスで初期化している、普通に使える
2はlistという変数を定義しただけの状態
ローカル変数の場合は後で初期化する必要がある、未初期化のまま使おうとするとコンパイルエラー
クラスや構造体のフィールドの場合は暗黙でnullで初期化される、「普通に使う」ためには後でList型インスタンスを代入してやる必要がある
0830デフォルトの名無しさん (ワッチョイ bfef-l0e6)
2019/02/17(日) 17:35:39.94ID:Cn2cXppc0
ちょっとコードを確認したいというときに、使えるツールありますか?
わざわざプロジェクト作るほどではないときですね
python のidleのようなものです
0842デフォルトの名無しさん (ワッチョイ 7fda-cT+3)
2019/02/18(月) 01:50:55.38ID:pxm+KTrW0
入力項目が沢山ある画面で、変更を保存せず画面を閉じようとしたときは警告を出したいです。
何も変更せず画面を閉じる場合は警告を出さずに閉じたいです。

この場合の変更チェックは入力項目に紐づく変数1個1個をチェックする以外に、スマートな方法は無いでしょうか?
入力項目に紐づく変数はデータクラスとして用意しているので、画面開く直前にハッシュのようなものを計算し退避しておき、
画面を閉じる直前にハッシュを再計算し比較すれば行けると思うのですが、オブジェクトのハッシュを求めるのは
GetHashCodeでいいのでしょうか?
0846デフォルトの名無しさん (アウアウエー Sa1f-x6Gg)
2019/02/18(月) 02:53:09.62ID:+SQV8UeVa
>>842
直接の回答でなくてごめん。

そういうMSにありがちなUIはたぶん

(1) 変更をキャンセル可能であること
(2) OKボタンをクリックした時点で初めて変更が反映されること

が要件になってるからそういう仕様になるんだと思うけど、こんな要件が必用ないなら
画面の入力項目の変更を変更があった時点でその都度対応するオブジェクトの
プロパティーに反映させてしまえば、「変更を保存せず画面を閉じようとしたときは警告を出」す
必用自体がなくなる

まあ一種の手抜きだけど、場合によっては許容される手抜きだと思う
0847デフォルトの名無しさん (ワッチョイ 7fda-cT+3)
2019/02/18(月) 03:23:01.21ID:pxm+KTrW0
>>845
いいアイデアですね。
プロパティ1つ1つに
if(beforeValue!=afterValue)
 OnPropertyChanged();
みたいな実装が必要なのが若干だるい気がしますが。

>>846
つまり変更した瞬間に即確定って意味でしょうか?
後出し情報で申し訳ないですが、最終保存先がDBで
アプリにとって比較的重要な情報の更新をしようとしています。
なるべく意図しない変更を防ぎたいです。
0849デフォルトの名無しさん (ワッチョイ bfef-l0e6)
2019/02/18(月) 11:29:03.32ID:huM3ZKfN0
https://i.imgur.com/2rpwFqg.jpg
vs codeを使っているのですが、どこから実行できるんでしょうか?
言語はc#で、マイクロソフトのc#のアドオンを入れました
ctr shift pでrunというコマンド?が出てくるので、それをクリックしたのですが、outputには何も出ません

また、ヴィジュアルスタジオの場合はイベントハンドラーがありますが、常に実行させるようなイベントというのはただのC#にあるんでしょうか?
0852デフォルトの名無しさん (スフッ Sd7f-Phvs)
2019/02/18(月) 12:13:35.54ID:vM1YVHVQd
>>842
そう言うの割とダルいから、データをクラスにまとめといて、開いた時点でシリアライズして文字列で持っちゃう。
保存時にシリアライズして文字列一致しなかったら、変更されてると言うことにする。
一個ずつ比較したら改修で漏れるよ。
0853デフォルトの名無しさん (ワッチョイ bfef-l0e6)
2019/02/18(月) 12:41:30.31ID:huM3ZKfN0
>>851
ありがとうございます
そうやって実行するんですね
visual studioよりむずいです

ただ、Program.csという自動生成されたファイルが実行されます
同じフォルダに自分で作ったsample.csがあるんですが、こっちを実行させる設定はどこからするんでしょうか?
パスを指定してからdotnet runしてもエラーになるます
0855デフォルトの名無しさん (ワッチョイ 7fda-lPFl)
2019/02/18(月) 12:59:06.77ID:pxm+KTrW0
>>852
それもいい考えですね。
メンバ変数に[DataMember]とアノテーションを
つければいいだけですね
0856デフォルトの名無しさん (アウアウエー Sa1f-x6Gg)
2019/02/18(月) 13:05:27.38ID:99WFuefSa
まあ一度変更があった時点で実際には等価でも別物と見なす実装が一番簡単だねたぶん。
実際そういうソフト結構あるよね。

そういう手抜きが気に入らないなら素直にEquals実装するのが結局シンプルじゃないのかな。
フィールドが全部値型の構造体ならデフォルト実装で済むと思ったし

...と思って調べてみたけど、なんかドキュメントによって書いてるこが微妙に違うなw

https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/statements-expressions-operators/how-to-define-value-equality-for-a-type
↑には「リフレクションを使用して、型のフィールドとプロパティをすべて調べます。」と書いてあるが

https://docs.microsoft.com/en-us/dotnet/api/system.valuetype.equals?view=netframework-4.7.2
↑には単純にビットイメージの比較と書いてある

となってる。どっちが正しいんだ?w
0857デフォルトの名無しさん (アウアウウー Sa4b-F6dR)
2019/02/18(月) 18:49:02.00ID:L0NbuPbAa
>>856
> https://docs.microsoft.com/en-us/dotnet/api/system.valuetype.equals?view=netframework-4.7.2
のRemarksには、thisとobjの全フィールドが参照型でなければbyte単位の比較、そうでなければリフレクションを使うとある
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2231-overload-operator-equals-on-overriding-valuetype-equals
他に知っているもので↑では、リフレクションを使うとだけある

https://referencesource.microsoft.com/#mscorlib/system/valuetype.cs
少なくとも.NET Framework 4.7.2では、ビット比較だけしていそうなFastEqualsCheckを呼ぶパスが存在する
そのパスを通るか判定しているCanCompareBits関数はexternなので詳細不明
0859デフォルトの名無しさん (ワッチョイ bfef-l0e6)
2019/02/19(火) 11:05:06.64ID:t+ZZI+Uh0
vs codeのproblemの欄なんですが、間違ったコードを入力しても自動で更新されないようです
デバッグを実行しないとだめなようですが、リアルタイムにエラーを表示してくれる設定はできますか?
以前はできたんですが
0868デフォルトの名無しさん (ワッチョイ 7ff2-yQ/S)
2019/02/20(水) 01:09:59.10ID:WG18KXuW0
助けて!!
Parallel.Forを使ってそれぞれで別の演算アプリを起動して
4スレッドで演算処理してるんだけど
アプリ強制終了してもスレッド(演算アプリ)はずっと処理し続けてるの!お願い止まって!!

親スレッド(UIスレッド)が死んだら子スレッドも死ぬみたいなお作法ありますか?
演算アプリはSystem.Diagnostics.Process使って起動してます
0870デフォルトの名無しさん (スプッッ Sdff-lPFl)
2019/02/20(水) 02:03:55.40ID:/GvzZ744d
>>868
それはC#的にスレッドとは言わない。
別プロセスだ
0873デフォルトの名無しさん (アウアウエー Sa1f-cT+3)
2019/02/20(水) 16:01:28.63ID:qtZmd9yJa
form1にsplit container をverticalで貼り付けて左右に2分割してその中にボタンとかコンポーネントいろいろ置いてて、
あとから上にmenu stlipを追加したくなってツールボックスからmenu stripコンポーネントをドラッグ&ドロップすると
splitcontanerのpanel1かpanel2のどっちかにしか貼り付けられないのだけどform1にmenuStripを表示するようにするにはどう操作すればいいのでしょうか
0880デフォルトの名無しさん (ワッチョイ 66f2-i3+Z)
2019/02/21(木) 13:02:04.01ID:A65FK9eD0
>>879
それもあるよ!今はキャンセル機能ないから強制終了させて
この問題発せしたんよ
ちなみに強制終了の場合はなんか手法ある?
別プロセスもタスクマネージャーで落とすしかない?
0882デフォルトの名無しさん (ワッチョイ b501-4fA7)
2019/02/21(木) 16:20:57.98ID:+4fiWh+W0
すみません、コルーチンの使い方について教えてください。
例えばRPGなどのゲームで、キャラクターAに話しかけると、数秒待って反応が返ってくるという処理をしたいと思っています。

まず、数秒待つというコルーチンを作り
private IEnumerator waitforsecond(float sec) {
yield return new WaitForSeconds(sec);
}

次にAに話しかけた時の処理を作りました。

public void Sample(){
 //50%の確率で無視される
 if(Probability.DetectFromPercent(50)){
MainText.text = “Aに話しかけてみた・・・”;
StartCoroutine(waitforsecond(2));
 MainText.text = "なんとAから無視された!”;
 
 //50%の確率で殴られる
  }else {
MainText.text = “Aに話しかけてみた・・・”;
StartCoroutine(waitforsecond(2));
MainText.text = "なんとAから蹴られた!”;
0883デフォルトの名無しさん (ワッチョイ b501-4fA7)
2019/02/21(木) 16:24:21.78ID:+4fiWh+W0
これで、話しかけたあと2秒時待機して反応がある、という処理になるかと思ったのですが、うまく行きません。

あと登場キャラクターもA、B、C‥‥とたくさんいるのであれば、話しかけると数秒待って反応するという関数を作ってあげたほうがスッキリするのでしょうが、やり方がイマイチわかりません。
0889デフォルトの名無しさん (ワッチョイ 667b-SpKW)
2019/02/21(木) 20:11:16.75ID:969mh7640
俺もあいまいな理解だから偉そうには言えないけど
>>882
ここのサンプルが分かりやすいかも
http://developer.wonderpla.net/entry/blog/engineer/Unity_Co-routine/
>>885
private IEnumerator waitforsecond(float sec) とpublic void Sample()が非同期(違う時間軸での動作)になるので待ち時間になっていない
>>887の言う通り待ち時間には他の物を使わないと
0893デフォルトの名無しさん (アウアウエー Sa52-SfL3)
2019/02/21(木) 23:22:50.38ID:5v/pkJgQa
>>892
これ書いてて一つ疑問に思ったのが、
MessagingTask = MessagingTask.ContinueWith(t => job.Action());
これを以下のように、
MessagingTask.ContinueWith(t => job.Action());
こう変えると期待した動きにならない。
ContinueWithってキューになってて先に入ってるタスクの完了を待って次を実行すると思ったけど違うのか
0898デフォルトの名無しさん (アウアウエー Sa52-dS/9)
2019/02/23(土) 14:44:05.16ID:3cOSTboLa
MenuStripコンポーネントでItemを選択した時にその左にチェックを入れるようにしてるのだけど
選択した時点でメニュー閉じちゃって若干不便なのだけど
ひらいたままにする設定にはできないのでしょうか
0899デフォルトの名無しさん (アウアウエー Sa52-SfL3)
2019/02/23(土) 19:07:18.92ID:gzY/wSmba
>>898
ルートのアイテムの直下ならClickか何かで親のShowDropDown()を呼べば一応実現できるっぽい。
入れ子になってる場合は、

....

ToolStripMenuItem1.Click += (sender, e) =>
{
  RecursiveShowDropDown(((ToolStripMenuItem)sender));
};

....

void RecursiveShowDropDown(ToolStripMenuItem item)
{
  if (item == null) return;
  var parent = item.OwnerItem as ToolStripMenuItem;
  RecursiveShowDropDown(parent);
  parent?.ShowDropDown();
}

たぶんこれでいける。
でもエンターキーでクリックした場合の操作性に問題が残るけど
0900デフォルトの名無しさん (アウアウエー Sa52-SfL3)
2019/02/23(土) 19:24:23.57ID:gzY/wSmba
こっちの方がいいか
EventHandler eh = (sender, e) =>
{
  Action<ToolStripMenuItem> a = null;
  a = item =>
  {
    if (item == null) return;
    var parent = item.OwnerItem as ToolStripMenuItem;
    a(parent);
    parent?.ShowDropDown();
  };
  a((ToolStripMenuItem)sender);
};
ToolStripMenuItem1.Click += eh;
0902デフォルトの名無しさん (ワッチョイ ada2-uPuZ)
2019/02/24(日) 11:47:42.69ID:L3+XvQB40
質問です
現在、以下のように一つの非同期処理(時間のかかるディスクの書き込み)
を実行しています。

private async void button1_Click(object sender, EventArgs e)
{
 await DoSomethingAsync();
 MessageBox.Show("完了");
}

これを実行中にUIを操作して、次の処理の準備ができたら(実行する内容はDoSomethingAsync)
button1を押して予約し、実行中の処理が終わったら引き続き実行させたいです。(並列ではなく)
また、「完了」は登録されたタスクが全て終わったときに出したいです。
どのように書くのが一般的なのでしょうか?


初回実行時にすべての実行すべきタスクがわかっている場合は
そのタスクのリストを作ってWhenAllする みたいなのはググったら出てきたんですが

ContinueWithを使うのかなと思ったのですが、書き方がわかりませんでした
0904デフォルトの名無しさん (ドコグロ MM15-bAbS)
2019/02/24(日) 12:36:22.83ID:cR8EPyISM
>>902
最後に追加したTaskを覚えておいてContinueWithで繋ぐとかできなくはないけど、
そんな変なハックをするくらいなら素直に別スレッド立てて順番にバックグラウンド実行したほうがいい
Producer-Consumerでググれ
0905デフォルトの名無しさん (ワッチョイ 9eef-upo5)
2019/02/25(月) 11:09:41.10ID:a5srEHrc0
c#のフォームで、タイルマップエディタのようなものを作りたいのですが、どのような情報を調べたらいいでしょうか
また、そのような目的に適したフォームはありますか?

そもそもC#が適切なのかわからないのですが
0907デフォルトの名無しさん (ワッチョイ 7d01-b+8Y)
2019/02/25(月) 12:13:30.45ID:kHS+5sOB0
VisualStudioでデバッグ実行した時だけプログラムがフリーズしてしまうのですがこういう時はどういった原因が考えられるでしょうか?
WinFormを使用していてフォームが立ち上がったらバックグラウンドで色々するって感じの処理なのでどこかでUIスレッドをブロックしているのかとも思いましたがConfigureAwait(false)の設定し忘れは無さそうでした
VisualStudioを通さずに直接実行した場合は正常に動作しています
0910デフォルトの名無しさん (ファミワイ FFc9-kEY9)
2019/02/25(月) 15:41:31.91ID:stIKiSPsF
最前面じゃなくて後ろ面にアクティブウィンドウがポップアップされてるんじゃね
0911デフォルトの名無しさん (アウアウエー Sa52-SfL3)
2019/02/25(月) 19:11:52.07ID:ERkCIkZda
>>902
単純にボタンをクリックした回数だけ非同期メソッドを実行したいだけなら
これでいいような気が

private bool mBusy = false;
private int mRepeatCount = 0;

private async void button1_Click(object sender, EventArgs e)
{
  mRepeatCount += 1;
  if (mBusy) return;
  mBusy = true;
  for (int i = 0; i < mRepeatCount; i++)
    await DoSomethingAsync();
  mBusy = false; mRepeatCount = 0;
  MessageBox.Show("全部終わった");
}
0915デフォルトの名無しさん (ワッチョイ 9eef-upo5)
2019/02/26(火) 07:34:07.95ID:hTJo4mxi0
↑ありがとうございます
.NET Core Launch (console)
というデバッガを使っているので、
"program": "${workspaceFolder}/bin/Debug/<insert-target-framework-here>/<insert-project-name-here>.dll",
という部分を修正するのだと思いますが、どう修正するんでしょうか?
実行したいプログラムを{workspaceFolder}/Program.csと指定してもエラーになります
0923デフォルトの名無しさん (ワッチョイ b67c-cX2z)
2019/02/26(火) 10:57:10.09ID:s7Q5fSFO0
>>919
とりあえずエクスプローラなりコンソールなりvscodeとは別に開いて
プロジェクトフォルダのbinフォルダの配下を確認
どこかにビルド結果のdllが作られてるから

うちはいつの間にかPlatformって環境変数が定義されてたせいで
HPDとかいうフォルダが1個挟まってたぞ
0925デフォルトの名無しさん (ワッチョイ 7d01-b+8Y)
2019/02/26(火) 11:47:10.27ID:7Gbx8Ae00
>>922
ありがとうございます
とりあえず特定のメソッドを呼ばなければ大丈夫ということがわかったのでデバッグモードでは呼ばないようにして対策することにしました
0930デフォルトの名無しさん (ワッチョイ 9fad-SKB1)
2019/02/28(木) 00:37:24.74ID:weUa1N+o0
setterメソッドで文字列が8文字以下ならname変数に引数を代入する文を書きたいんですけど
どのように書けばいいんでしょうか?
0932デフォルトの名無しさん (ワッチョイ d7e7-CeLW)
2019/02/28(木) 00:55:51.76ID:ucEMLrR20
セッターよりもプロパティで良い気がする

private string name;
public string Name
{
 set
 {
  if ( value.Length <= 8 )
  {
   this.name = value;
  }
 }

 get
 {
  return this.name;
 }
}
0936デフォルトの名無しさん (ワッチョイ 37e5-i/5X)
2019/02/28(木) 19:23:03.02ID:owSMuOWF0
Windows.Forms の質問です。
TextBox 数個と MenuStrip に サブメニューのない MenuItem を追加したFormで
Altキーでメニューを選択すると、
カーソルキーの上下でTextBoxのフォーカスが移動するのですが
どういった理由でしょうか?
0938936 (ラクッペ MMcb-hSmr)
2019/02/28(木) 20:50:40.99ID:DAgKUWMjM
うーん
ショートカットキーの設定ができるので
ツールバーの代わりに使おうと思ったんですが
予想外のキモい動きで躊躇してます
0942デフォルトの名無しさん (ワッチョイ bfef-Q9lp)
2019/03/01(金) 21:07:24.70ID:tVNocw1h0
サイドバーについてなんですが、例えばgimpというソフトがあるのですが、両サイドにツールやレイヤーが表示されています
このように領域を分けるコントロールを教えてください
win form c#です

これはもう1つフォームを追加してるんでしょうか?
0943デフォルトの名無しさん (ワッチョイ ff7b-IHXa)
2019/03/01(金) 21:59:18.22ID:ORsij5/P0
>>942
フォームの枠の中に配置・移動させるのならVisual Studioでデザイナ画面+ツールボックスの「コンテナー」のカテゴリの好きなものを
フォームの枠の外やはみ出して使いたいものには別のフォームを割り当て、というのが基本じゃないかな
GimpはCだからどうやっているかは知らないけど
0946デフォルトの名無しさん (アウウィフ FF9b-vuRV)
2019/03/02(土) 11:00:56.30ID:+L4gK20KF
>>940
超初心者か池沼向け

普通の人はwebで充分
0947デフォルトの名無しさん (アウウィフ FF9b-vuRV)
2019/03/02(土) 11:02:23.80ID:+L4gK20KF
GTKは糞
0952デフォルトの名無しさん (ワッチョイ bfef-Q9lp)
2019/03/02(土) 18:42:16.44ID:QccNqZJQ0
Form1からForm2を呼び出すとき、こういう記述をしますが、変数の型がどうしてForm2なんでしょか?varじゃエラーです
Form2 form2 = new Form2();
form2.Show();
0955デフォルトの名無しさん (ワッチョイ d72d-SKB1)
2019/03/02(土) 23:01:13.05ID:XIaahVa70
学習のために、確保した変数がスタックかヒープかどっちにあるのか知りたいんだけどさあ
簡単にチェックする手段ってないんかな?
0968デフォルトの名無しさん (ワッチョイ 9f52-n14O)
2019/03/03(日) 11:33:30.33ID:lodoh91K0
>>967
もしかして、ろくに経験もなく基礎も理解しないまま作りたいものを作り始めて、わからないときだけサイトで情報拾ってどうにかなると思ってないか?
ある程度基礎ができているか理解力のある奴ならそれでもいいが、君には無理だ。
ちゃんと金出して真っ当な入門書を買って、面倒がらずに順を追って基礎から身に付けてこい。
0973デフォルトの名無しさん (ワッチョイ 9701-s6Gp)
2019/03/03(日) 23:49:50.24ID:DRmEmwqA0
君の作ったプロジェクトの内容なんて分からんよ。
プロジェクト内のソースを探せばForm2クラスを宣言してるんじゃないの?

Visual Studioは色々自動生成して、色々隠蔽してるからオプジェクト指向が理解し難い。
一旦動いたら、全てのソースファイルをメモ帳で開いて動きを解析してみる。
全ては一度には理解できないから、オプジェクト指向の説明本を読む。
やっぱり理解できないけど、ソースを読み解くって繰り返すと段々理解できてくる。
0975デフォルトの名無しさん (ワッチョイ 17d8-ylj6)
2019/03/04(月) 19:07:44.29ID:RIX3InQp0
WinXPのスタートメニューのように、ContextMenuStripのToolStripItemにDrag&Dropって出来ますか?
ToolStripItemのAllowDropをTrueにしても、ToolStripItemのDragEnterイベントが発生しないのですが。
VC++2008を使用しているのですが、ToolStripItemのプロパティ窓にはAllowDropもDrag関連のイベントも 表示されていないので、コードで記述しているのですが、もともとサポートしていない?
0976デフォルトの名無しさん (ワッチョイ ff7b-IHXa)
2019/03/04(月) 20:54:01.14ID:+WeHVjLY0
>>975
試してないけどdocsには
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.toolstripmenuitem?view=netframework-4.7.2
DragDrop ユーザーが項目をドラッグし、マウス ボタンを離したとき (つまり、項目がドロップされたとき) に発生します。 (Inherited from ToolStripItem)
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.contextmenustrip?view=netframework-4.7.2
DragDrop ドラッグ アンド ドロップ操作が完了したときに発生します。 (Inherited from Control)

ってなっているからContextMenuStripのは期待通り動作しそうだけどToolStripItemのは項目自体のものだから単独では無理かと
どうしてもやるのならContextMenuStripのほう使ってMouseMoveか何かでカーソルと項目の位置確認しながらやるとか
その前にContextMenuStripがFocusの移動とかで閉じないようにClosingのイベントの設定なども当然必要
もう一回書くけど試してないし試す気もないので責任も取らないw
0979デフォルトの名無しさん (ドコグロ MM6b-hSmr)
2019/03/06(水) 21:11:48.41ID:1+PBsWw4M
>>977
君が業務ドカタなら、たぶん君がやることになるのはASP.NET MVCでもASP.NET CoreでもなくClassic ASP.NET(WebForms)
Webの知識皆無でも最低限形だけでもWebアプリを作れるようにしたフレームワークで、
WinFormsでメモ帳モドキくらい作ったことがあれば楽勝だから何も心配いらない
0985デフォルトの名無しさん (オッペケ Sr0b-5hgX)
2019/03/06(水) 23:01:29.39ID:wF9IXRdCr
asp.net core使って開発したいがまだまだ実用レベルではないんだろうな
そう思うと開発頓挫しそうで使えない
0987デフォルトの名無しさん (ドコグロ MMdb-hSmr)
2019/03/06(水) 23:19:16.57ID:07omsi5cM
〇〇Coreはバージョンアップで平気で互換性切ってくるから、受託開発では使っちゃいけない代物
ソースを手放さずいつでも自己責任で弄れる事業形態向け
0990デフォルトの名無しさん (ドコグロ MM97-/Er5)
2019/03/07(木) 01:28:00.03ID:rQAOToBLM
>>989
こればっかりは老害とかそういう話じゃなくて業界構造の問題だからね
米国のシステム開発は内製が主流であり、基本的に自己責任だから改修のハードルが低いの
それに合わせてMSの開発者向けプロダクトも変化を許容する方向へ変わってきていて、
もはや日本のSIには全く適さないものになってしまってるんだよ
0992デフォルトの名無しさん (ドコグロ MM97-/Er5)
2019/03/07(木) 05:24:03.06ID:rQAOToBLM
OSSに対する考え方は顕著な例だね
受託開発においてOSSのライセンスを受ける主体は開発会社じゃなくてユーザー会社だから、
当然、開発会社が使用したOSSは全てユーザー会社に把握させてユーザー会社自身が承認しなければならない
これは事業形態上完全に正当で必須なプロセスであり、時代遅れとかそういう問題ではない
NuGetやNPMなどのパッケージマネージャで依存関係として勝手に入ってくるOSS全てに対してこのプロセスを適用するのは事実上不可能
0998デフォルトの名無しさん (ワッチョイ df4f-IDpv)
2019/03/07(木) 08:51:22.28ID:p9S7AU5B0
インターネット創世記の頃は情報共有とか甘い言葉が飛び交ったが
最近ではやっぱスキルやノウハウといった知的財産情報は
対価を払って手に入れるべきだと思うようになった
ネットでただで手に入れたいなら英語くらい読めよって話だな
10011001
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 81日 22時間 3分 34秒
10021002
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況