ふらっと 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/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にはあったはず。この車輪では駄目なのか。
2017/11/11(土) 22:11:54.82ID:TNtSkVmZ0
>>102
そりゃ当たり前だよね。
究極の無能相手に、伝わるように、過不足ないように、なにより丁寧に仕事内容を説明するお仕事だもんね。PG って。
2017/11/11(土) 22:33:07.07ID:LU0qlDNZ0
>>121
というか、自然言語に置き換えられないプログラム書くやつはクソってだけだろ
2017/11/11(土) 22:39:04.35ID:r1EKDs0n0
>>120
こういう関数もあるのですね、ありがとうございます
調べましたがどこまでの範囲で接続に使えるか分からないので今回は見送ろうかと思います
参考サイトは多い感じなので便利な機能そうでした

DBと書きましたがcsvやExcelといったものからも取得を考慮していました
少し仕様説明が足りてませんでしたね・・・
2017/11/12(日) 01:15:25.26ID:n0dr1tl2a
APIを使用したファイル変換の変換状況を知るために自作メソッドのGetStatus()をSystem.Timers.TimerのElapsedイベントに設定して200msecごとに状況を取得することができました。
その変換を繰り返し行う際、そのタイマーのイベントが発生している時でも次のファイル変換を実行してしまいます。GetStatus()で変換終了判定が出た場合(Timer.Enabled=falseのあと)に次のファイル変換を行うようにしたいのですが、どのようにしたらいいでしょうか?
125デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/12(日) 01:22:00.64ID:bU5Cj3UO0
タイマーイベントのイベントハンドラの最初の行でEnableをFalseにして処理が終わったところでEnableをTrueにする
2017/11/12(日) 01:29:01.06ID:n0dr1tl2a
>>125
早速ありがとうございます。
今実行環境がないので後ほど試してみます。
ちなみにその記述ではどのような挙動をするのでしょうか?
127デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/12(日) 01:37:54.98ID:bU5Cj3UO0
すまん。質問をよく理解してなかった
2017/11/12(日) 02:38:51.64ID:A0+Crtura
>>124
正直、何を言ってるのかさっぱり分からないし、それが俺の読解力のせいだと思えないw

その変換とやらを実行するクラスなりメソッドなりが、
現状、一つのファイルの変換が終わると次のファイルの変換を自動的に始める
仕様になっているんだと思うが、それを自動から手動、つまり外から明示的に
メソッドを呼ぶなり特定のプロパティの値を変えるなりしないと次のファイルの変換が
始まらないように変えるだけのことじゃないの?
2017/11/12(日) 03:36:00.42ID:WcVSvCUs0
>>96
自動翻訳がこれだけ発展してる中で何時代錯誤な事いってんのw
センスないよ
2017/11/12(日) 03:40:18.24ID:SMejQ9Z40
MSの日本語ドキュメントなんて機械翻訳だらけなのにな
2017/11/12(日) 04:18:09.89ID:n0dr1tl2a
>>127
>>128
下手な文ですみません
TimerのElapsedで指定したイベントが発生中は次の処理をせずに、Timer.Enabled=falseになってから次の処理を実行するものだと思っていたんです
>>128さんの言うように変換終了判定の場合にプロパティかフラグを立ててそれを監視?するようにしてみます
2017/11/12(日) 06:39:56.32ID:MOg5phwx0
>>129-130
今の自動翻訳だと結局原文参照にいくことも多々あるんだが...
なんのためにカーソル置くと原文表示するようにしてるのかも理解してないのかよ w
すごくウザイから設定で表示しないようにして欲しいが
2017/11/12(日) 07:05:10.05ID:m6spCiOt0
機械翻訳はありゃいいってものじゃない
また宇宙天啓データベースG2と断続的な絞首刑が発生するぞ
2017/11/12(日) 07:20:55.29ID:cRgWk2Y70
最近、プログラミングの腕をそれ以外に求めてる奴が暴れててウザイ
英語ができたからなんだってんだよ
くだんねーアプリしか作れないからくだんねーこと気になるんだぞお前
2017/11/12(日) 07:49:13.63ID:e5xLDhIK0
>>123
>DBと書きましたがcsvやExcelといったものからも取得を考慮していました

世の中には、ODBCと言うものがあって、odbc excel driverとかodbc text driver や他のdbも使える
つ ?System.Data.Odbc.OdbcConnection
2017/11/12(日) 07:52:10.55ID:OnRpH+1DM
>>134
コンプレックス丸出しだな
ドカタから出て自社プロダクト系とか行ったらC#でも日本語ドキュメントのないライブラリもバリバリ使うぞ
2017/11/12(日) 08:09:08.06ID:e5xLDhIK0
>>131
ややこしいことにc#(.net)には4つもタイマークラスがあったりする。
おそらく、System.Timers.TimerのSynchronizingObjectを使えば良いと思うけど
親切な人が解説してくれている。
http://takachan.hatenablog.com/entry/2017/09/09/225342
2017/11/12(日) 08:12:32.88ID:e5xLDhIK0
>>136
nugetのライブラリで日本語ドキュメントがある方が稀だからね。
2017/11/12(日) 08:31:08.16ID:RZNIwvSqr
いわゆるドカタとそれ以外で認識の隔たりがかなりあると思う
2017/11/12(日) 08:52:42.69ID:OnRpH+1DM
ドカタ系にいたときもわりとアメリカの新しいパッケージや製品を使う仕事してたが
専門卒の委託のメンバー達はITスキルはあるのに英語が読めなくて全然仕事できなくて不憫だったわ
英語ができないと国内でも後追いになっちゃう
2017/11/12(日) 09:02:42.68ID:iF3ntH//0
スレタイ
2017/11/12(日) 09:20:22.95ID:cRgWk2Y70
>>136
だからなんだよ
テメーみてーな発達障害持ってなきゃ英語なんか読めなくてもマニュアルのいみぐれーわかんだよバーカ

英語読めるからぼくちゃんのプログラミングの腕も確かでチュよ褒めてって?

気持ち悪ぃんだよさっさとくたばれガイジ
2017/11/12(日) 09:31:42.36ID:Y9bMvc7C0
共倒れで丸く収まりましたね
2017/11/12(日) 09:33:07.24ID:ArqlQl8r0
マ板でやれ
145デフォルトの名無しさん (スププ Sd9f-KLCy)
垢版 |
2017/11/12(日) 11:02:16.46ID:7vMgKcBHd
>>142
どんだけコンプレックスあるの
146デフォルトの名無しさん (ワッチョイ 5f25-OZYs)
垢版 |
2017/11/12(日) 11:21:03.88ID:V8vWJYoP0
マ板並みの見苦しさ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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