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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7bde-MYX9)
垢版 |
2017/11/07(火) 21:11:25.20ID:LeQqgpmT0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part132
http://mevius.5ch.net/test/read.cgi/tech/1507543256/

■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/

■コードを貼る場合は↓を使いましょう。
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
2017/11/08(水) 23:05:18.83ID:0mQs8SG20
>>16
作成したプロパティを使う方からは、変数のように見えるって言えば分かる?
2017/11/08(水) 23:26:13.90ID:niKmJlUIM
>>16
プロパティに代入 setだけが呼ばれる
プロパティを読出し getだけが呼ばれる

現在時刻を返すプロパティ DateTime.Nowとかだとgetしかいらない
22デフォルトの名無しさん (ワッチョイ 2ee8-zAbU)
垢版 |
2017/11/08(水) 23:33:00.93ID:8vwit5Fs0
俺が作ったプログラムを起動させた結果
https://i.imgur.com/WFwZTSM.png
2017/11/08(水) 23:38:55.04ID:FLS9cqpb0
>>22
電気の無駄使いやね。使った分発電しなされ
24デフォルトの名無しさん (ワッチョイ e175-3oFj)
垢版 |
2017/11/08(水) 23:41:19.13ID:Fypp0IbQ0
>>22
なんか描画してるの?
25デフォルトの名無しさん (ワッチョイ 2ee8-zAbU)
垢版 |
2017/11/08(水) 23:46:07.65ID:8vwit5Fs0
>>24
エロ動画詰まったZIPを
Parallelで解凍したらこうなった
40個位
2017/11/09(木) 00:59:59.93ID:LfxevOKY0
>>25
parallelぱねぇなw
2017/11/09(木) 01:16:45.19ID:LfxevOKY0
>>25
並列数5くらいに制御すれば良い?
2017/11/09(木) 07:31:45.15ID:hfkiYsiWM
リストの抽象化を相談した者ですがList<T>の使い方を調べようと思います
ありがとうございます
2017/11/09(木) 08:38:02.64ID:T0f+zXRUM
>>22
しょぼいcpuだな。i9に買い換えろ。
2017/11/09(木) 09:08:10.16ID:zzCkJYsb0
車輪の再発明
2017/11/09(木) 09:50:42.15ID:jWnrq6EeM
parallelって、積んでるCPUの数以上に並列化するとしぬの?
2017/11/09(木) 10:29:51.90ID:T0f+zXRUM
>>31
効率が落ちるだけ。
2017/11/09(木) 10:57:42.45ID:rCwX7bXUM
>>31
必ずしもそうではない
IOなどでCPUが暇になることがあるならその時間を有効に使える場合がある
2017/11/09(木) 11:49:27.46ID:jWnrq6EeM
オラ、わくわくしてきたぞ!
2017/11/09(木) 14:02:56.21ID:Rh18RfgB0
たまに単純すぎる処理までParallel化してあって逆に糞遅くなってるの見るともにょる
2017/11/09(木) 14:07:05.33ID:xkkUp3yc0
これまで客の要望で20個ぐらいParalleにしたけど
一つとして早くなったことないよ
ボトルネックがIO周りなのに勘違いしてる奴多過ぎな気がする
ハードディスクに保存するのもIOやで?
って言ってわかるやついねーよな
パンピーじゃ
37デフォルトの名無しさん (ワッチョイ df8a-KLCy)
垢版 |
2017/11/09(木) 16:51:34.36ID:cNKMHUR60
>>28
>>7で既に使ってると思うんだが何を調べるのか…
2017/11/09(木) 22:15:36.82ID:HphgsDwT0
>>36
ファイルI/O関連は下手にパラるとシーク待ち時間が増大しちゃうしね
39デフォルトの名無しさん (ワッチョイ ffe8-yfb/)
垢版 |
2017/11/10(金) 00:17:10.66ID:J/IcK0Bh0
parallelで解凍したエロ動画はRAMディスクに出力したよ
7分→2分になったよ
2017/11/10(金) 00:59:14.89ID:WaNBZPrLp
VSでもC#でもないからややスレチになるが、
make に-j4 付けてもビルド70分くらいから60分くらいになるだけであまり速くならなかったのに
さらにノートン先生でビルドするディレクトリ外したら20分になったことがある
新規ファイルが大量に出来る場合、パラレルにしても変わらないと感じるなら、I/O以外にもタスクマネージャーでウィルスチェックしてないか確認必要
2017/11/10(金) 01:25:16.74ID:kPoID+4E0
いまの最新並列プログラミング手法はparallelなの?
2017/11/10(金) 06:25:02.22ID:RXFByZDW0
シングルスレッドで非同期I/Oが速いと言って見る。
2017/11/10(金) 07:28:15.81ID:wtQgej54M
技術的な質問じゃないんですが、C#よりVBが優勢って本当ですか?
2017/11/10(金) 07:43:03.92ID:/A7eCTDw0
>>43
スレチ
んでもってアスペ
2017/11/10(金) 07:43:26.98ID:Mk8W5pJQM
>>43
荒らす気満々だろw
2017/11/10(金) 07:46:11.03ID:g/THXaNi0
非同期IOは旧来のクライアントごとのスレッドでリクエストをさばくやり方よりオーバーヘッドが少ないから
C10Kに耐えられるってだけで、シングルスレッドのままじゃ性能は高くない。
性能を求めるならそれをコア数分のスレッドで走らせる。
2017/11/10(金) 08:04:26.22ID:YLtBUtjTr
>>41
ケースバイケース
2017/11/10(金) 08:05:17.46ID:YLtBUtjTr
>>43
「優勢」の定義次第
49デフォルトの名無しさん (ワッチョイ df03-uZPj)
垢版 |
2017/11/10(金) 18:45:01.22ID:i6RuFN3y0
>>43
技術的に答えさせていだだきます
C#よりもVBの方がキーワードの数が多く難易度も高くなりますから
使用するプログラマーの能力的にはVBの方が優勢であると言えるでしょう
2017/11/10(金) 18:59:38.48ID:OPEeW8tb0
>>49
はいキチガイ
2017/11/10(金) 19:14:30.49ID:rSnLVHog0
>>50
キチガイに触るな
2017/11/10(金) 19:15:23.24ID:QpY7y4nlM
あれだろ?バリアントとかいう魔法の変数だろ?
2017/11/10(金) 19:42:51.45ID:alfIXjUy0
>>43
裾野という底辺はc#より遥かに広い
54デフォルトの名無しさん (ワッチョイ df03-uZPj)
垢版 |
2017/11/10(金) 20:21:19.35ID:i6RuFN3y0
>>53
底辺のお前が言うなw
55デフォルトの名無しさん (ワッチョイ ffe8-ueqH)
垢版 |
2017/11/10(金) 20:48:46.88ID:SSmhpTC60
Parallel処理内で
一つのListにAddしてっても文句言われない?
2017/11/10(金) 20:51:59.49ID:rSnLVHog0
>>55
https://msdn.microsoft.com/ja-jp/library/6sh2ey19(v=vs.110).aspx
これの一番下に書いてある
2017/11/10(金) 20:52:36.97ID:alfIXjUy0
>>55
lockしてれば
58デフォルトの名無しさん (ワッチョイ ffe8-ueqH)
垢版 |
2017/11/10(金) 20:56:22.58ID:SSmhpTC60
>>56
天才かよ
>この型のpublic static (Visual Basic ではShared) メンバーは、スレッド セーフです。

>>57
それ遅いらしい
2017/11/10(金) 21:02:22.44ID:kHWlHLuRM
>>58
それstaticメンバ以外はスレッドセーフじゃないってことだぞ
あと、たかがListのAddのロックのコストが問題になるような状況なら
Listを共有しないでスレッドローカルでList作って終わってからマージした方がいい
2017/11/10(金) 21:05:11.63ID:alfIXjUy0
>>58
lockしたら並列の意味が無いからなw
61デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/10(金) 21:07:25.77ID:7i6+bCDW0
>>58
Addとかインデックスでの参照はオブジェクトのメンバだろ?ダメじゃん。
結局lockしかない
62デフォルトの名無しさん (ワッチョイ ffe8-ueqH)
垢版 |
2017/11/10(金) 21:08:58.39ID:SSmhpTC60
いるんだよなあstaticアンチ
staticでスレッドセーフなら万々歳だけどね
63デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/10(金) 21:10:20.09ID:7i6+bCDW0
2017/11/10(金) 21:10:46.32ID:kHWlHLuRM
>>62
お前は何を言ってるんだ
Listをstaticフィールドに入れたらスレッドセーフになるんじゃなくて、
Listクラス自身のstaticメソッドに限ってスレッドセーフであるということだぞ
65デフォルトの名無しさん (ワッチョイ ffe8-ueqH)
垢版 |
2017/11/10(金) 21:25:08.41ID:SSmhpTC60
つまりどういうことだってばよ…
こういうことちゃうんか?

class Hoge
{
public static List<Huga> aaa = new List<Huga>();

private void ParallelOjisan()
{
Parallel.ForEach(aaa, op, a =>
{
Hage h = new Hage();
aaa.add(h.GetData(a));
});
}
}

動いたぞ
2017/11/10(金) 21:30:42.03ID:rSnLVHog0
>>65
>インスタンス メンバーの場合、スレッド セーフであることは保証されません。
ちゃんと読め
67デフォルトの名無しさん (ワッチョイ ffe8-ueqH)
垢版 |
2017/11/10(金) 21:32:13.69ID:SSmhpTC60
public static List<Huga> aaa;

これでええんか?
2017/11/10(金) 21:33:22.43ID:rSnLVHog0
ちげーよw
69デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/10(金) 21:33:29.83ID:7i6+bCDW0
Addはstaticメソッドじゃねーよ
70デフォルトの名無しさん (ワッチョイ ffe8-ueqH)
垢版 |
2017/11/10(金) 21:35:03.80ID:SSmhpTC60
>>69
あ…そうなんだ…
じゃあ作らなきゃstaticなAdd
2017/11/10(金) 21:41:12.73ID:z2GdfpnL0
パラレルに追加したらその順番が保証されないことくらい分かるだろうに、なぜList?
2017/11/10(金) 21:41:21.38ID:alfIXjUy0
>>70
private object hoge = new object();


lock (hoge) {hogeList.add(foo);}
73デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/10(金) 21:43:06.07ID:7i6+bCDW0
>>70
staticだからスレッドセーフなんじゃねーよw
Listのstaticメソッドは全部スレッドセーフに作ってるよってマイクロソフトが言ってるだけw
素直にlock使うか>>59で言ってるようにしろw
2017/11/10(金) 21:44:14.04ID:qXatXNmA0
staticにすればスレッドセーフになると誤解してそう
75デフォルトの名無しさん (ワッチョイ ffe8-ueqH)
垢版 |
2017/11/10(金) 21:57:42.58ID:SSmhpTC60
これMSが説明下手なだけだからね
Lockおじさんの言うとおりにするよ
76デフォルトの名無しさん (ワッチョイ 5fbe-OZYs)
垢版 |
2017/11/10(金) 22:01:04.30ID:lM00qbpm0
無知な癖に謎の態度
77デフォルトの名無しさん (ワッチョイ ffe8-ueqH)
垢版 |
2017/11/10(金) 22:04:52.67ID:SSmhpTC60
てかスレッドローカルおじさんがわからん
スレッドローカルなのにあとでマージって出来るん?

もしかしてParallel処理終わっても
スレッド指定してその中身取れるの?
78デフォルトの名無しさん (ワッチョイ ffe8-ueqH)
垢版 |
2017/11/10(金) 22:18:25.44ID:SSmhpTC60
あ、わかったわ
なんでもない
2017/11/10(金) 22:21:43.80ID:FCcE8hCP0
System.Collections.Concurrent名前空間のスレッドセーフなコレクションクラス使えば
2017/11/10(金) 23:09:54.96ID:alfIXjUy0
>>75
並列処理はlock不要に限る
2017/11/10(金) 23:11:40.77ID:OPEeW8tb0
>>79
これ
2017/11/10(金) 23:23:11.10ID:TSxiC3iy0
ConcurrentBagはロックフリーじゃないぞ
追加と取り出しを並行して行うために作られた複雑なコレクションで、オーバーヘッドも大きい
追加だけなら滅多に競合しないはずだから、普通にロックしたほうがむしろ速いんじゃないか?
2017/11/10(金) 23:34:41.16ID:/KAgC3iBa
ああ、もうそんな時期か

しかしAlilExpressは相変わらず胡散臭い出品者多すぎ
84デフォルトの名無しさん (ワッチョイ df03-uZPj)
垢版 |
2017/11/11(土) 00:28:03.41ID:Wyc7UUxM0
お前らブイバーの爪の垢でも煎じて飲めよ
2017/11/11(土) 00:31:02.26ID:FsCJcvbF0
>>82
オーバーヘッドデカイけどそれ以上に楽だからConcurrent系はよく使っているわ
86デフォルトの名無しさん (ワッチョイ df8a-KLCy)
垢版 |
2017/11/11(土) 05:01:11.17ID:epAZZTWl0
ID:SSmhpTC60とかいうアスペ
2017/11/11(土) 09:54:39.72ID:EO+d5mNz0
結果を集める必要があるならそもそもParallelよりAsParallel.SlectMany使ったほうがいい
競合を気にせずに結果返すだけでいいしマージも勝手にやってくれる
2017/11/11(土) 12:00:52.86ID:oSkXIpj60
初歩的な質問ですがお願いします。
C#で画像ビューアを作製しています。
ドラッグアンドドロップで画像を表示する事はできたのですが、
ダブルクリックして画像を表示する方法が分かりません。
jpeg等の画像ファイルに自作プログラムを関連づけておいて
ファイルをダブルクリック→自作プログラムが起動して画像を表示、という様にしたいです。

この方法について解説しているサイトか
ググるためのキーワードだけでも教えてもらえるとありがたいです。
2017/11/11(土) 12:20:44.03ID:jUCjsAob0
拡張子 レジストリ 関連付け
2017/11/11(土) 12:21:10.63ID:7DvP3YTXM
>>88
Mainの最初にブレークポイント置いてargsの中身を見てみよう
91デフォルトの名無しさん (ワッチョイ 5f02-OZYs)
垢版 |
2017/11/11(土) 12:21:55.21ID:aAbgGGPi0
>>88
「プログラムから開く」で自作ソフトを選択して起動させるとmain関数の引数にダブルクリックしたファイルのパスが入る。
2017/11/11(土) 12:38:40.93ID:ZfeLOt3q0
>>88
「ファイル 関連付け」でググれ
C#関係ないと思うんだが
2017/11/11(土) 12:41:16.82ID:ZfeLOt3q0
>>92
あ、そうかファイルパスとらないとか失敬
Environment.CommandLineでも取れるよ
2017/11/11(土) 13:16:41.05ID:jSB1i77R0
>>88
このへんから読んでよきにはからへ

Default Programs
https://msdn.microsoft.com/en-us/library/windows/desktop/cc144154.aspx

Best Practices for File Associations
https://msdn.microsoft.com/en-us/library/windows/desktop/cc144156.aspx
95デフォルトの名無しさん (ワッチョイ 5f02-OZYs)
垢版 |
2017/11/11(土) 17:14:52.12ID:QA+V6jEx0
プログラミング初心者に英語ドキュメント突きつける鬼畜
2017/11/11(土) 17:22:47.41ID:6DAw5yNPr
まあ今時
と言うかこれからはと言うか
英語のドキュメントのリーディングくらいは必須スキルかもね
MSもいつまで日本語ドキュメント提供してくれるか分からんよw
2017/11/11(土) 17:32:07.79ID:oSkXIpj60
>>89-84
予想外に沢山のレスありがとう
なるほど、Main関数の引数からパスを取ればいいのね
GUIでも内部的にはコマンドラインと同じってことか
GUIアプリって作ったこと無かったから難しく考えすぎてたよ
2017/11/11(土) 17:32:59.48ID:oSkXIpj60
安価ミス
>>89-94
99デフォルトの名無しさん (ワッチョイ df03-uZPj)
垢版 |
2017/11/11(土) 17:33:33.06ID:Wyc7UUxM0
リーディングくらいは日本語で言えんのか
100デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/11(土) 17:49:21.24ID:QwHnz2ZY0
日本語(機械翻訳)
2017/11/11(土) 17:54:09.02ID:HFNpDaB10
プログラミングと英語の能力は関係ないのでは(´・ω・`)
2017/11/11(土) 17:57:44.96ID:quGqObWAM
>>101
国語能力を含めた言語能力はプログラムと関係するよ。
まともな文章の書けないやつのプログラムソースはグダグダ。
2017/11/11(土) 18:39:39.67ID:s3s7ujkUr
>>101
うむ
今は不自然な日本語の時に原文確認する感じやね
2017/11/11(土) 18:40:43.95ID:s3s7ujkUr
>>100の間違い
すまぬ
2017/11/11(土) 18:42:15.10ID:IYwJQx3L0
仕様書やライセンスの類なら中学生レベルの英語で十分だと思っている
それで困ったら何でもできるグーグール先生に投げよう
2017/11/11(土) 18:43:14.65ID:7DvP3YTXM
>>102
これはある
まともな日本語書けない奴って、自分のアウトプットを客観的に評価する能力がないんだと思う
2017/11/11(土) 18:43:20.32ID:TdmokUpS0
>>101
なんだかんだ言ってプログラミング関連の情報は英語で書かれてることが多い
なので同じような頭持ってたら英語ができる方が有利ではある
2017/11/11(土) 18:45:13.01ID:rBCr3ON/0
>>102
それ文章に限らず何やってもバカなだけだろ
2017/11/11(土) 18:49:58.51ID:rBCr3ON/0
まあ、C#とか人気言語はともかく、マイナー言語だと「英語」しかない
→仕方なく英文読む機会が増えて英語スキル上がる、はあるな
2017/11/11(土) 18:54:04.24ID:q33W9Eq80
本当にマイナーだと英語すらない
111デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/11(土) 18:59:52.33ID:QwHnz2ZY0
英語だと読めないことはないが直感的に読めないので読む気失せるから嫌だ
2017/11/11(土) 19:01:35.88ID:fOHx5JH9a
言葉に関する能力でプログミング能力と関係がありそうなのは
説明的な文章を書く能力だろうけど、個人的にはまったく無関係とも思えんけど
そこまで関係するのかなという気もする。微妙だね
2017/11/11(土) 19:03:25.83ID:IYwJQx3L0
>>111
英語の仕様書より同じ目的のCのソース読むほうがずっと楽とかよくあること
2017/11/11(土) 19:05:05.60ID:DKRcYA5n0
文章構成はプログラムに近いんじゃない
どういう順で話せば納得させやすいか、意見が通りやすいかとか?
115デフォルトの名無しさん (ワッチョイ 5f96-eUVz)
垢版 |
2017/11/11(土) 19:29:41.43ID:CYrZ+T3I0
C#とJSって同じ部分があるんですけど
同じ部分はJSと同じ感じで使ってもいいんでしょうか
2017/11/11(土) 19:38:25.68ID:IYwJQx3L0
>>115
そういうのを要件そろえて説明するべきという話でした
英語と日本語で同じような発音のものあっても同じ意味とは限らないでしょ
2017/11/11(土) 21:03:18.54ID:r1EKDs0n0
DB接続を抽象化する為にインターフェイスの使用を考えていますが、取得する項目を明示したい場合ってどういう風にすればいいのでしょうか?

例えば
class Book

public string Title{get;set;}
public int Price{get;set;}
public int Pages{get;set;}

の形式でDBから取得してればどのDBでも使えるインターフェースを作りたいのですが、このBookの定義をどこに記述できるのかが分かりません
118デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/11(土) 21:05:28.35ID:QwHnz2ZY0
https://qiita.com/IganinTea/items/e1d35db0a14a84bda452
2017/11/11(土) 21:24:33.76ID:r1EKDs0n0
>>118
ありがとうございます
内容見ましたが、この場合はインターフェースは不適切で抽象クラスが正解って事でしょうか
他にもこの2つの違いについて記してあるサイト見ましたが一部明示的な実装するには抽象化クラスと言うわけですね
2017/11/11(土) 21:30:27.85ID:FW67Xhhd0
>>117
使ったことは無いんだがDbProviderFactoriesと言うものが.NETにはあったはず。この車輪では駄目なのか。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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