ふらっと C#,C♯,C#(初心者用) Part133at TECH
ふらっと C#,C♯,C#(初心者用) Part133 - 暇つぶし2ch2:デフォルトの名無しさん
17/11/07 22:06:49.52 cTk2bFo+0.net


3:デフォルトの名無しさん
17/11/07 22:38:29.65 h1H7Fbnm0.net


4:デフォルトの名無しさん
17/11/07 22:53:03.49 6NdbJPOz0.net


5:デフォルトの名無しさん
17/11/07 23:17:05.39 cTk2bFo+0.net
開発になんのフォント使ってる?

6:デフォルトの名無しさん
17/11/07 23:29:09.05 bwe89n7Ka.net
男は黙ってCourier New

7:デフォルトの名無しさん
17/11/07 23:37:30.45 mi3cUHZI0.net
前スレでリストの抽象化に関して聞いた者ですが
もう少し整理して説明すると下記のコードの"IList<共通の型>"部分を
共通の型で作れないかなと考えておりました
クラスならばインターフェースで共通の型に出来ますが
リストのようなコレクションも出来たら良いなと
class Hoge
{
public string Hogege { get; set; }
}
class Fuge
{
public string Fugaga { get; set; }
}
class Program
{
static void Main(string[] args)
{
IList<共通の型> dto1 = new List<Hoge>();
IList<共通の型> dto2 = new List<Fuge>();
}
}

8:デフォルトの名無しさん
17/11/07 23:52:09.22 bwe89n7Ka.net
>>7
直接的な答じゃないけど、どうしてC#の(っていうか.NETの)配列の共変が
批判されてるかを理解してからその問題をもう一度考えた方がいいんじゃないかな
URLリンク(ufcpp.net)

9:デフォルトの名無しさん
17/11/08 00:15:38.90 anngrWrU0.net
>>7
いまいち意味不明なんだが、同じリスト型で管理したいクラスってことは
それぞれis-a関係になる共通の継承元があるはずだろ?
class Hoge : 共通の型 {...}
class Fuga : 共通の型{...}
var List<共通の型> = new List<共通の型>();
でダメな理由がわからん
これで「HogeとFugaを抽象化した型」のリストができるだろ?
リストその物の抽象化って話なら、List<T>がそのものズバリなんだから、
何を言いたいのか理解できてない
せめて用途を説明してくれ

10:デフォルトの名無しさん
17/11/08 00:20:45.56 anngrWrU0.net
>>9
あ、変数名抜けてた

11:デフォルトの名無しさん
17/11/08 00:40:48.04 CLyn8lVQ0.net
みんなListList
Dictionaryのがいいよ

12:デフォルトの名無しさん
17/11/08 06:04:51.80 Kp5qntjW0.net
>>11
キー重複できなくない?

13:デフォルトの名無しさん
17/11/08 07:02:24.37 d89kNCGzr.net
何がやりたいか(目的)を書いた方が良いと思うよ
未だ意図不明だけど
System.Collections.ArrayList
が望みのもの?

14:デフォルトの名無しさん
17/11/08 21:22:35.00 +tPWiI0Ta.net
>>7
それが実現できても何の得もないよ
IList<object>にして突っ込めばいいけどそれで何の意味があるんだか

15:デフォルトの名無しさん
17/11/08 21:40:52.71 370P83AX0.net
ふらっとあるある
万能クラスをListに突っ込んで俺すげー

16:デフォルトの名無しさん
17/11/08 22:18:42.71 kPo1IP0w0.net
プロパティについて教えてください
setとgetが呼び出されるタイミングがよくわかりません
以下のようなコードがあったとしてsetが呼び出されるのはTestに値が代入された時という理解で合っていますか?
getはsetが呼び出されると自動的に呼び出されるというようなぼんやりした理解なのですが正しいでしょうか?
またgetだけが呼び出されるケースもあると資料で見たのですがそれはどのような使い方をした時なのでしょうか?
初歩的な質問で申し訳ありませんがよろしくお願い致します
Private int test
Public int Test()
{
set {
test= value;
}
get {
return test
}
}

public void Main()
{
Test=100;
}

17:デフォルトの名無しさん
17/11/08 22:19:45.50 kPo1IP0w0.net
>>16
すいません
iPhoneから書いたのでコードを上手く書くことが出来ていません

18:デフォルトの名無しさん
17/11/08 22:31:13.66 rbcWTqbu0.net
get setの中にConsole.WriteLineでも書いてみたら分かるよ

19:デフォルトの名無しさん
17/11/08 22:43:50.87 B6KPAK+i0.net
もしくはステップ実行するとか

20:デフォルトの名無しさん
17/11/08 23:05:18.83 0mQs8SG20.net
>>16
作成したプロパティを使う方からは、変数のように見えるって言えば分かる?

21:デフォルトの名無しさん
17/11/08 23:26:13.90 niKmJlUIM.net
>>16
プロパティに代入 setだけが呼ばれる
プロパティを読出し getだけが呼ばれる
現在時刻を返すプロパティ DateTime.Nowとかだとgetしかいらない

22:デフォルトの名無しさん
17/11/08 23:33:00.93 8vwit5Fs0.net
俺が作ったプログラムを起動させた結果
URLリンク(i.imgur.com)

23:デフォルトの名無しさん
17/11/08 23:38:55.04 FLS9cqpb0.net
>>22
電気の無駄使いやね。使った分発電しなされ

24:デフォルトの名無しさん
17/11/08 23:41:19.13 Fypp0IbQ0.net
>>22
なんか描画してるの?

25:デフォルトの名無しさん
17/11/08 23:46:07.65 8vwit5Fs0.net
>>24
エロ動画詰まったZIPを
Parallelで解凍したらこうなった
40個位

26:デフォルトの名無しさん
17/11/09 00:59:59.93 LfxevOKY0.net
>>25
parallelぱねぇなw

27:デフォルトの名無しさん
17/11/09 01:16:45.19 LfxevOKY0.net
>>25
並列数5くらいに制御すれば良い?

28:デフォルトの名無しさん
17/11/09 07:31:45.15 hfkiYsiWM.net
リストの抽象化を相談した者ですがList<T>の使い方を調べようと思います
ありがとうございます

29:デフォルトの名無しさん
17/11/09 08:38:02.64 T0f+zXRUM.net
>>22
しょぼいcpuだな。i9に買い換えろ。

30:デフォルトの名無しさん
17/11/09 09:08:10.16 zzCkJYsb0.net
車輪の再発明

31:デフォルトの名無しさん
17/11/09 09:50:42.15 jWnrq6EeM.net
parallelって、積んでるCPUの数以上に並列化するとしぬの?

32:デフォルトの名無しさん
17/11/09 10:29:51.90 T0f+zXRUM.net
>>31
効率が落ちるだけ。

33:デフォルトの名無しさん
17/11/09 10:57:42.45 rCwX7bXUM.net
>>31
必ずしもそうではない
IOなどでCPUが暇になることがあるならその時間を有効に使える場合がある

34:デフォルトの名無しさん
17/11/09 11:49:27.46 jWnrq6EeM.net
オラ、わくわくしてきたぞ!

35:デフォルトの名無しさん
17/11/09 14:02:56.21 Rh18RfgB0.net
たまに単純すぎる処理までParallel化してあって逆に糞遅くなってるの見るともにょる

36:デフォルトの名無しさん
17/11/09 14:07:05.33 xkkUp3yc0.net
これまで客の要望で20個ぐらいParalleにしたけど
一つとして早くなったことないよ
ボトルネックがIO周りなのに勘違いしてる奴多過ぎな気がする
ハードディスクに保存するのもIOやで?
って言ってわかるやついねーよな
パンピーじゃ

37:デフォルトの名無しさん
17/11/09 16:51:34.36 cNKMHUR60.net
>>28
>>7で既に使ってると思うんだが何を調べるのか…

38:デフォルトの名無しさん
17/11/09 22:15:36.82 HphgsDwT0.net
>>36
ファイルI/O関連は下手にパラるとシーク待ち時間が増大しちゃうしね

39:デフォルトの名無しさん
17/11/10 00:17:10.66 J/IcK0Bh0.net
parallelで解凍したエロ動画はRAMディスクに出力したよ
7分→2分になったよ

40:デフォルトの名無しさん
17/11/10 00:59:14.89 WaNBZPrLp.net
VSでもC#でもないからややスレチになるが、
make に-j4 付けてもビルド70分くらいから60分くらいになるだけであまり速くならなかったのに
さらにノートン先生でビルドするディレクトリ外したら20分になったことがある
新規ファイルが大量に出来る場合、パラレルにしても変わらないと感じるなら、I/O以外にもタスクマネージャーでウィルスチェックしてないか確認必要

41:デフォルトの名無しさん
17/11/10 01:25:16.74 kPoID+4E0.net
いまの最新並列プログラミング手法はparallelなの?

42:デフォルトの名無しさん
17/11/10 06:25:02.22 RXFByZDW0.net
シングルスレッドで非同期I/Oが速いと言って見る。

43:デフォルトの名無しさん
17/11/10 07:28:15.81 wtQgej54M.net
技術的な質問じゃないんですが、C#よりVBが優勢って本当ですか?

44:デフォルトの名無しさん
17/11/10 07:43:03.92 /A7eCTDw0.net
>>43
スレチ
んでもってアスペ

45:デフォルトの名無しさん
17/11/10 07:43:26.98 Mk8W5pJQM.net
>>43
荒らす気満々だろw

46:デフォルトの名無しさん
17/11/10 07:46:11.03 g/THXaNi0.net
非同期IOは旧来のクライアントごとのスレッドでリクエストをさばくやり方よりオーバーヘッドが少ないから
C10Kに耐えられるってだけで、シングルスレッドのままじゃ性能は高くない。
性能を求めるならそれをコア数分のスレッドで走らせる。

47:デフォルトの名無しさん
17/11/10 08:04:26.22 YLtBUtjTr.net
>>41
ケースバイケース

48:デフォルトの名無しさん
17/11/10 08:05:17.46 YLtBUtjTr.net
>>43
「優勢」の定義次第

49:デフォルトの名無しさん
17/11/10 18:45:01.22 i6RuFN3y0.net
>>43
技術的に答えさせていだだきます
C#よりもVBの方がキーワードの数が多く難易度も高くなりますから
使用するプログラマーの能力的にはVBの方が優勢であると言えるでしょう

50:デフォルトの名無しさん
17/11/10 18:59:38.48 OPEeW8tb0.net
>>49
はいキチガイ

51:デフォルトの名無しさん
17/11/10 19:14:30.49 rSnLVHog0.net
>>50
キチガイに触るな

52:デフォルトの名無しさん
17/11/10 19:15:23.24 QpY7y4nlM.net
あれだろ?バリアントとかいう魔法の変数だろ?

53:デフォルトの名無しさん
17/11/10 19:42:51.45 alfIXjUy0.net
>>43
裾野という底辺はc#より遥かに広い

54:デフォルトの名無しさん
17/11/10 20:21:19.35 i6RuFN3y0.net
>>53
底辺のお前が言うなw

55:デフォルトの名無しさん
17/11/10 20:48:46.88 SSmhpTC60.net
Parallel処理内で
一つのListにAddしてっても文句言われない?

56:デフォルトの名無しさん
17/11/10 20:51:59.49 rSnLVHog0.net
>>55
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
これの一番下に書いてある

57:デフォルトの名無しさん
17/11/10 20:52:36.97 alfIXjUy0.net
>>55
lockしてれば

58:デフォルトの名無しさん
17/11/10 20:56:22.58 SSmhpTC60.net
>>56
天才かよ
>この型のpublic static (Visual Basic ではShared) メンバーは、スレッド セーフです。
>>57
それ遅いらしい

59:デフォルトの名無しさん
17/11/10 21:02:22.44 kHWlHLuRM.net
>>58
それstaticメンバ以外はスレッドセーフじゃないってことだぞ
あと、たかがListのAddのロックのコストが問題になるような状況なら
Listを共有しないでスレッドローカルでList作って終わってからマージした方がいい

60:デフォルトの名無しさん
17/11/10 21:05:11.63 alfIXjUy0.net
>>58
lockしたら並列の意味が無いからなw

61:デフォルトの名無しさん
17/11/10 21:07:25.77 7i6+bCDW0.net
>>58
Addとかインデックスでの参照はオブジェクトのメンバだろ?ダメじゃん。
結局lockしかない

62:デフォルトの名無しさん
17/11/10 21:08:58.39 SSmhpTC60.net
いるんだよなあstaticアンチ
staticでスレッドセーフなら万々歳だけどね

63:デフォルトの名無しさん
17/11/10 21:10:20.09 7i6+bCDW0.net


64:デフォルトの名無しさん
17/11/10 21:10:46.32 kHWlHLuRM.net
>>62
お前は何を言ってるんだ
Listをstaticフィールドに入れたらスレッドセーフになるんじゃなくて、
Listクラス自身のstaticメソッドに限ってスレッドセーフであるということだぞ

65:デフォルトの名無しさん
17/11/10 21:25:08.41 SSmhpTC60.net
つまりどういうことだってばよ…
こういうことちゃうんか?
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));
});
}
}
動いたぞ

66:デフォルトの名無しさん
17/11/10 21:30:42.03 rSnLVHog0.net
>>65
>インスタンス メンバーの場合、スレッド セーフであることは保証されません。
ちゃんと読め

67:デフォルトの名無しさん
17/11/10 21:32:13.69 SSmhpTC60.net
public static List<Huga> aaa;
これでええんか?

68:デフォルトの名無しさん
17/11/10 21:33:22.43 rSnLVHog0.net
ちげーよw

69:デフォルトの名無しさん
17/11/10 21:33:29.83 7i6+bCDW0.net
Addはstaticメソッドじゃねーよ

70:デフォルトの名無しさん
17/11/10 21:35:03.80 SSmhpTC60.net
>>69
あ…そうなんだ…
じゃあ作らなきゃstaticなAdd

71:デフォルトの名無しさん
17/11/10 21:41:12.73 z2GdfpnL0.net
パラレルに追加したらその順番が保証されないことくらい分かるだろうに、なぜList?

72:デフォルトの名無しさん
17/11/10 21:41:21.38 alfIXjUy0.net
>>70
private object hoge = new object();

lock (hoge) {hogeList.add(foo);}

73:デフォルトの名無しさん
17/11/10 21:43:06.07 7i6+bCDW0.net
>>70
staticだからスレッドセーフなんじゃねーよw
Listのstaticメソッドは全部スレッドセーフに作ってるよってマイクロソフトが言ってるだけw
素直にlock使うか>>59で言ってるようにしろw

74:デフォルトの名無しさん
17/11/10 21:44:14.04 qXatXNmA0.net
staticにすればスレッドセーフになると誤解してそう

75:デフォルトの名無しさん
17/11/10 21:57:42.58 SSmhpTC60.net
これMSが説明下手なだけだからね
Lockおじさんの言うとおりにするよ

76:デフォルトの名無しさん
17/11/10 22:01:04.30 lM00qbpm0.net
無知な癖に謎の態度

77:デフォルトの名無しさん
17/11/10 22:04:52.67 SSmhpTC60.net
てかスレッドローカルおじさんがわからん
スレッドローカルなのにあとでマージって出来るん?
もしかしてParallel処理終わっても
スレッド指定してその中身取れるの?

78:デフォルトの名無しさん
17/11/10 22:18:25.44 SSmhpTC60.net
あ、わかったわ
なんでもない

79:デフォルトの名無しさん
17/11/10 22:21:43.80 FCcE8hCP0.net
System.Collections.Concurrent名前空間のスレッドセーフなコレクションクラス使えば

80:デフォルトの名無しさん
17/11/10 23:09:54.96 alfIXjUy0.net
>>75
並列処理はlock不要に限る

81:デフォルトの名無しさん
17/11/10 23:11:40.77 OPEeW8tb0.net
>>79
これ

82:デフォルトの名無しさん
17/11/10 23:23:11.10 TSxiC3iy0.net
ConcurrentBagはロックフリーじゃないぞ
追加と取り出しを並行して行うために作られた複雑なコレクションで、オーバーヘッドも大きい
追加だけなら滅多に競合しないはずだから、普通にロックしたほうがむしろ速いんじゃないか?

83:デフォルトの名無しさん
17/11/10 23:34:41.16 /KAgC3iBa.net
ああ、もうそんな時期か
しかしAlilExpressは相変わらず胡散臭い出品者多すぎ

84:デフォルトの名無しさん
17/11/11 00:28:03.41 Wyc7UUxM0.net
お前らブイバーの爪の垢でも煎じて飲めよ

85:デフォルトの名無しさん
17/11/11 00:31:02.26 FsCJcvbF0.net
>>82
オーバーヘッドデカイけどそれ以上に楽だからConcurrent系はよく使っているわ

86:デフォルトの名無しさん
17/11/11 05:01:11.17 epAZZTWl0.net
ID:SSmhpTC60とかいうアスペ

87:デフォルトの名無しさん
17/11/11 09:54:39.72 EO+d5mNz0.net
結果を集める必要があるならそもそもParallelよりAsParallel.SlectMany使ったほうがいい
競合を気にせずに結果返すだけでいいしマージも勝手にやってくれる

88:デフォルトの名無しさん
17/11/11 12:00:52.86 oSkXIpj60.net
初歩的な質問ですがお願いします。
C#で画像ビューアを作製しています。
ドラッグアンドドロップで画像を表示する事はできたのですが、
ダブルクリックして画像を表示する方法が分かりません。
jpeg等の画像ファイルに自作プログラムを関連づけておいて
ファイルをダブルクリック→自作プログラムが起動して画像を表示、という様にしたいです。
この方法について解説しているサイトか
ググるためのキーワードだけでも教えてもらえるとありがたいです。

89:デフォルトの名無しさん
17/11/11 12:20:44.03 jUCjsAob0.net
拡張子 レジストリ 関連付け

90:デフォルトの名無しさん
17/11/11 12:21:10.63 7DvP3YTXM.net
>>88
Mainの最初にブレークポイント置いてargsの中身を見てみよう

91:デフォルトの名無しさん
17/11/11 12:21:55.21 aAbgGGPi0.net
>>88
「プログラムから開く」で自作ソフトを選択して起動させるとmain関数の引数にダブルクリックしたファイルのパスが入る。

92:デフォルトの名無しさん
17/11/11 12:38:40.93 ZfeLOt3q0.net
>>88
「ファイル 関連付け」でググれ
C#関係ないと思うんだが

93:デフォルトの名無しさん
17/11/11 12:41:16.82 ZfeLOt3q0.net
>>92
あ、そうかファイルパスとらないとか失敬
Environment.CommandLineでも取れるよ

94:デフォルトの名無しさん
17/11/11 13:16:41.05 jSB1i77R0.net
>>88
このへんから読んでよきにはからへ
Default Programs
URLリンク(msdn.microsoft.com)
Best Practices for File Associations
URLリンク(msdn.microsoft.com)

95:デフォルトの名無しさん
17/11/11 17:14:52.12 QA+V6jEx0.net
プログラミング初心者に英語ドキュメント突きつける鬼畜

96:デフォルトの名無しさん
17/11/11 17:22:47.41 6DAw5yNPr.net
まあ今時
と言うかこれからはと言うか
英語のドキュメントのリーディングくらいは必須スキルかもね
MSもいつまで日本語ドキュメント提供してくれるか分からんよw

97:デフォルトの名無しさん
17/11/11 17:32:07.79 oSkXIpj60.net
>>89-84
予想外に沢山のレスありがとう
なるほど、Main関数の引数からパスを取ればいいのね
GUIでも内部的にはコマンドラインと同じってことか
GUIアプリって作ったこと無かったから難しく考えすぎてたよ

98:デフォルトの名無しさん
17/11/11 17:32:59.48 oSkXIpj60.net
安価ミス
>>89-94

99:デフォルトの名無しさん
17/11/11 17:33:33.06 Wyc7UUxM0.net
リーディングくらいは日本語で言えんのか

100:デフォルトの名無しさん
17/11/11 17:49:21.24 QwHnz2ZY0.net
日本語(機械翻訳)

101:デフォルトの名無しさん
17/11/11 17:54:09.02 HFNpDaB10.net
プログラミングと英語の能力は関係ないのでは(´・ω・`)

102:デフォルトの名無しさん
17/11/11 17:57:44.96 quGqObWAM.net
>>101
国語能力を含めた言語能力はプログラムと関係するよ。
まともな文章の書けないやつのプログラムソースはグダグダ。

103:デフォルトの名無しさん
17/11/11 18:39:39.67 s3s7ujkUr.net
>>101
うむ
今は不自然な日本語の時に原文確認する感じやね

104:デフォルトの名無しさん
17/11/11 18:40:43.95 s3s7ujkUr.net
>>100の間違い
すまぬ

105:デフォルトの名無しさん
17/11/11 18:42:15.10 IYwJQx3L0.net
仕様書やライセンスの類なら中学生レベルの英語で十分だと思っている
それで困ったら何でもできるグーグール先生に投げよう

106:デフォルトの名無しさん
17/11/11 18:43:14.65 7DvP3YTXM.net
>>102
これはある
まともな日本語書けない奴って、自分のアウトプットを客観的に評価する能力がないんだと思う

107:デフォルトの名無しさん
17/11/11 18:43:20.32 TdmokUpS0.net
>>101
なんだかんだ言ってプログラミング関連の情報は英語で書かれてることが多い
なので同じような頭持ってたら英語ができる方が有利ではある

108:デフォルトの名無しさん
17/11/11 18:45:13.01 rBCr3ON/0.net
>>102
それ文章に限らず何やってもバカなだけだろ

109:デフォルトの名無しさん
17/11/11 18:49:58.51 rBCr3ON/0.net
まあ、C#とか人気言語はともかく、マイナー言語だと「英語」しかない
→仕方なく英文読む機会が増えて英語スキル上がる、はあるな

110:デフォルトの名無しさん
17/11/11 18:54:04.24 q33W9Eq80.net
本当にマイナーだと英語すらない

111:デフォルトの名無しさん
17/11/11 18:59:52.33 QwHnz2ZY0.net
英語だと読めないことはないが直感的に読めないので読む気失せるから嫌だ

112:デフォルトの名無しさん
17/11/11 19:01:35.88 fOHx5JH9a.net
言葉に関する能力でプログミング能力と関係がありそうなのは
説明的な文章を書く能力だろうけど、個人的にはまったく無関係とも思えんけど
そこまで関係するのかなという気もする。微妙だね

113:デフォルトの名無しさん
17/11/11 19:03:25.83 IYwJQx3L0.net
>>111
英語の仕様書より同じ目的のCのソース読むほうがずっと楽とかよくあること

114:デフォルトの名無しさん
17/11/11 19:05:05.60 DKRcYA5n0.net
文章構成はプログラムに近いんじゃない
どういう順で話せば納得させやすいか、意見が通りやすいかとか?

115:デフォルトの名無しさん
17/11/11 19:29:41.43 CYrZ+T3I0.net
C#とJSって同じ部分があるんですけど
同じ部分はJSと同じ感じで使ってもいいんでしょうか

116:デフォルトの名無しさん
17/11/11 19:38:25.68 IYwJQx3L0.net
>>115
そういうのを要件そろえて説明するべきという話でした
英語と日本語で同じような発音のものあっても同じ意味とは限らないでしょ

117:デフォルトの名無しさん
17/11/11 21:03:18.54 r1EKDs0n0.net
DB接続を抽象化する為にインターフェイスの使用を考えていますが、取得する項目を明示したい場合ってどういう風にすればいいのでしょうか?
例えば
class Book

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

の形式でDBから取得してればどのDBでも使えるインターフェースを作りたいのですが、このBookの定義をどこに記述できるのかが分かりません

118:デフォルトの名無しさん
17/11/11 21:05:28.35 QwHnz2ZY0.net
URLリンク(qiita.com)

119:デフォルトの名無しさん
17/11/11 21:24:33.76 r1EKDs0n0.net
>>118
ありがとうございます
内容見ましたが、この場合はインターフェースは不適切で抽象クラスが正解って事でしょうか
他にもこの2つの違いについて記してあるサイト見ましたが一部明示的な実装するには抽象化クラスと言うわけですね

120:デフォルトの名無しさん
17/11/11 21:30:27.85 FW67Xhhd0.net
>>117
使ったことは無いんだがDbProviderFactoriesと言うものが.NETにはあったはず。この車輪では駄目なのか。

121:デフォルトの名無しさん
17/11/11 22:11:54.82 TNtSkVmZ0.net
>>102
そりゃ当たり前だよね。
究極の無能相手に、伝わるように、過不足ないように、なにより丁寧に仕事内容を説明するお仕事だもんね。PG って。

122:デフォルトの名無しさん
17/11/11 22:33:07.07 LU0qlDNZ0.net
>>121
というか、自然言語に置き換えられないプログラム書くやつはクソってだけだろ

123:デフォルトの名無しさん
17/11/11 22:39:04.35 r1EKDs0n0.net
>>120
こういう関数もあるのですね、ありがとうございます
調べましたがどこまでの範囲で接続に使えるか分からないので今回は見送ろうかと思います
参考サイトは多い感じなので便利な機能そうでした
DBと書きましたがcsvやExcelといったものからも取得を考慮していました
少し仕様説明が足りてませんでしたね・・・

124:デフォルトの名無しさん
17/11/12 01:15:25.26 n0dr1tl2a.net
APIを使用したファイル変換の変換状況を知るために自作メソッドのGetStatus()をSystem.Timers.TimerのElapsedイベントに設定して200msecごとに状況を取得することができました。
その変換を繰り返し行う際、そのタイマーのイベントが発生している時でも次のファイル変換を実行してしまいます。GetStatus()で変換終了判定が出た場合(Timer.Enabled=falseのあと)に次のファイル変換を行うようにしたいのですが、どのようにしたらいいでしょうか?

125:デフォルトの名無しさん
17/11/12 01:22:00.64 bU5Cj3UO0.net
タイマーイベントのイベントハンドラの最初の行でEnableをFalseにして処理が終わったところでEnableをTrueにする

126:デフォルトの名無しさん
17/11/12 01:29:01.06 n0dr1tl2a.net
>>125
早速ありがとうございます。
今実行環境がないので後ほど試してみます。
ちなみにその記述ではどのような挙動をするのでしょうか?

127:デフォルトの名無しさん
17/11/12 01:37:54.98 bU5Cj3UO0.net
すまん。質問をよく理解してなかった

128:デフォルトの名無しさん
17/11/12 02:38:51.64 A0+Crtura.net
>>124
正直、何を言ってるのかさっぱり分からないし、それが俺の読解力のせいだと思えないw
その変換とやらを実行するクラスなりメソッドなりが、
現状、一つのファイルの変換が終わると次のファイルの変換を自動的に始める
仕様になっているんだと思うが、それを自動から


129:手動、つまり外から明示的に メソッドを呼ぶなり特定のプロパティの値を変えるなりしないと次のファイルの変換が 始まらないように変えるだけのことじゃないの?



130:デフォルトの名無しさん
17/11/12 03:36:00.42 WcVSvCUs0.net
>>96
自動翻訳がこれだけ発展してる中で何時代錯誤な事いってんのw
センスないよ

131:デフォルトの名無しさん
17/11/12 03:40:18.24 SMejQ9Z40.net
MSの日本語ドキュメントなんて機械翻訳だらけなのにな

132:デフォルトの名無しさん
17/11/12 04:18:09.89 n0dr1tl2a.net
>>127
>>128
下手な文ですみません
TimerのElapsedで指定したイベントが発生中は次の処理をせずに、Timer.Enabled=falseになってから次の処理を実行するものだと思っていたんです
>>128さんの言うように変換終了判定の場合にプロパティかフラグを立ててそれを監視?するようにしてみます

133:デフォルトの名無しさん
17/11/12 06:39:56.32 MOg5phwx0.net
>>129-130
今の自動翻訳だと結局原文参照にいくことも多々あるんだが...
なんのためにカーソル置くと原文表示するようにしてるのかも理解してないのかよ w
すごくウザイから設定で表示しないようにして欲しいが

134:デフォルトの名無しさん
17/11/12 07:05:10.05 m6spCiOt0.net
機械翻訳はありゃいいってものじゃない
また宇宙天啓データベースG2と断続的な絞首刑が発生するぞ

135:デフォルトの名無しさん
17/11/12 07:20:55.29 cRgWk2Y70.net
最近、プログラミングの腕をそれ以外に求めてる奴が暴れててウザイ
英語ができたからなんだってんだよ
くだんねーアプリしか作れないからくだんねーこと気になるんだぞお前

136:デフォルトの名無しさん
17/11/12 07:49:13.63 e5xLDhIK0.net
>>123
>DBと書きましたがcsvやExcelといったものからも取得を考慮していました
世の中には、ODBCと言うものがあって、odbc excel driverとかodbc text driver や他のdbも使える
つ ?System.Data.Odbc.OdbcConnection

137:デフォルトの名無しさん
17/11/12 07:52:10.55 OnRpH+1DM.net
>>134
コンプレックス丸出しだな
ドカタから出て自社プロダクト系とか行ったらC#でも日本語ドキュメントのないライブラリもバリバリ使うぞ

138:デフォルトの名無しさん
17/11/12 08:09:08.06 e5xLDhIK0.net
>>131
ややこしいことにc#(.net)には4つもタイマークラスがあったりする。
おそらく、System.Timers.TimerのSynchronizingObjectを使えば良いと思うけど
親切な人が解説してくれている。
URLリンク(takachan.hatenablog.com)

139:デフォルトの名無しさん
17/11/12 08:12:32.88 e5xLDhIK0.net
>>136
nugetのライブラリで日本語ドキュメントがある方が稀だからね。

140:デフォルトの名無しさん
17/11/12 08:31:08.16 RZNIwvSqr.net
いわゆるドカタとそれ以外で認識の隔たりがかなりあると思う

141:デフォルトの名無しさん
17/11/12 08:52:42.69 OnRpH+1DM.net
ドカタ系にいたときもわりとアメリカの新しいパッケージや製品を使う仕事してたが
専門卒の委託のメンバー達はITスキルはあるのに英語が読めなくて全然仕事できなくて不憫だったわ
英語ができないと国内でも後追いになっちゃう

142:デフォルトの名無しさん
17/11/12 09:02:42.68 iF3ntH//0.net
スレタイ

143:デフォルトの名無しさん
17/11/12 09:20:22.95 cRgWk2Y70.net
>>136
だからなんだよ
テメーみてーな発達障害持ってなきゃ英語なんか読めなくてもマニュアルのいみぐれーわかんだよバーカ
英語読めるからぼくちゃんのプログラミングの腕も確かでチュよ褒めてって?
気持ち悪ぃんだよさっさとくたばれガイジ

144:デフォルトの名無しさん
17/11/12 09:31:42.36 Y9bMvc7C0.net
共倒れで丸く収まりましたね

145:デフォルトの名無しさん
17/11/12 09:33:07.24 ArqlQl8r0.net
マ板でやれ

146:デフォルトの名無しさん
17/11/12 11:02:16.46 7vMgKcBHd.net
>>142
どんだけコンプレックスあるの

147:デフォルトの名無しさん
17/11/12 11:21:03.88 V8vWJYoP0.net
マ板並みの見苦しさ

148:デフォルトの名無しさん
17/11/12 11:27:55.80 /Gc52cuR0.net
URLリンク(tercel-tech.hatenablog.com)
こちらの方のコードを参考に電卓の自動化を試みてるのですが、
mainForm = AutomationElement.FromHandle(process.MainWindowHandle);
のところでエラーが出ます。
型 'System.InvalidOperationException' のハンドルされていない例外が System.dll で発生しました
追加情報:プロセスは終了しているため、要求された情報は利用できません。
何が原因でしょうか?

149:デフォルトの名無しさん
17/11/12 11:34:37.51 a3dJlCt1a.net
>>147
そのページの同じコード動かしてそうなるのか?
メッセージだと電卓が終了してると言ってるけど

150:デフォルトの名無しさん
17/11/12 11:41:43.01 VwNKZEQ+0.net
>>147
電卓("calc")が起動しているか
デバッガでprocessがnullになっていないか
をそれぞれ確認
全部こっちで確かめるのはめんどうなので例えば
Thread.Sleep(DEFAULT_WAIT_TIME);
の部分を
while(process=null){Thread.Sleep(DEFAULT_WAIT_TIME);}
と書き換えてみるとか。いい加減な方法だからデバッグ時以外に勧めないが

151:デフォルトの名無しさん
17/11/12 11:44:54.16 VwNKZEQ+0.net
ヤバい
while(process==null){Thread.Sleep(DEFAULT_WAIT_TIME);}
だったw

152:デフォルトの名無しさん
17/11/12 11:52:22.18 /Gc52cuR0.net
自分の環境はwin10で以前までと仕様が違いますよね。
それが原因かもしれません。
電卓のウィンドウハンドルを直接指定してやったら正常に動きました。
ここの方は親切ですね^^
頑張りたいと思います。

153:デフォルトの名無しさん
17/11/12 12:15:13.20 j8Tzb3u50.net
実行してもフォームが固まらないアプリって全部にDoEventsが入ってるわけなん?
メッセージキューは排他のために処理待ちになるん

154:デフォルトの名無しさん
17/11/12 12:21:08.98 WcVSvCUs0.net
>>152
非同期処理してるだけだろw

155:デフォルトの名無しさん
17/11/12 12:23:38.91 SMejQ9Z40.net
>>152
重い処理は別タスク(スレッド)を作って、UIから分離する。

156:デフォルトの名無しさん
17/11/12 12:26:44.13 ArqlQl8r0.net
そいつ金曜日のキチガイだぞ

157:デフォルトの名無しさん
17/11/12 13:00:56.85 j8Tzb3u50.net
>>154
さんきゅ

158:デフォルトの名無しさん
17/11/12 13:40:23.32 Y9bMvc7C0.net
キチガイばっかりじゃねーか!

159:デフォルトの名無しさん
17/11/12 14:51:20.87 /Gc52cuR0.net
c++
void __stdcall systemcall(string passbuf,bool wait_flag)
c♯
[DllImport("sample.dll", CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
private extern static int systemcall(string passbuf,bool wait_flag);
これで
systemcall("dir", true);
保護されていないメモリがどうの出てエラーになりますが何がいけないのでしょうか?

160:デフォルトの名無しさん
17/11/12 14:54:28.47 Y9bMvc7C0.net
戻り値

161:デフォルトの名無しさん
17/11/12 14:54:56.10 /Gc52cuR0.net
c♯側のvoidがintになってましたが記述ミスです><
エラー内容は正確には
ハンドルされていない例外: System.AccessViolationException: 保護されているメモリに読み取りまたは書き込み操作を行おうとし ました。他のメモリが壊れていることが考えられます。

162:デフォルトの名無しさん
17/11/12 15:01:26.20 zx9GAR9XM.net
std::stringはマーシャリングできない
C++側でchar*を受け取るラッパーを用意してやる必要がある
C++/CLIもあるけど完全に死んだ技術だからお勧めできない

163:デフォルトの名無しさん
17/11/12 15:09:12.05 e5xLDhIK0.net
>>161
>C++/CLIもあるけど完全に死んだ技術だからお勧めできない
死亡宣言されてるの?

164:デフォルトの名無しさん
17/11/12 17:07:08.00 74EZy0fea.net
>>162
確かそうだよ
メンテナンスされてないから使うなって言われてる

165:デフォルトの名無しさん
17/11/12 18:00:59.99 ZC7erpT70.net
>>163
C++/CLIの件
たまに使うから気になる
ソースか検索キーワードプリーズ

166:デフォルトの名無しさん
17/11/12 18:26:13.27 /VKzDrV00.net
フォームアプリの新規作成は推奨しないってアナウンスはあるんで、それのことじゃないかな。
URLリンク(support2.microsoft.com)
C++/CLIそのものはまだサポートされてると思う。廃止されたのはマネージ拡張。
マネージ拡張からC++/CLIへの移行ドキュメントとか、比較的最近の日付でメンテナンスされてるし。

167:デフォルトの名無しさん
17/11/12 18:32:26.38 ZC7erpT70.net
>>165
ありがとう
フォームアプリで使うな、なら納得

168:デフォルトの名無しさん
17/11/12 18:59:33.96 yKCfx7dw0.net
C++/CLI捨てるわけねーだろ

169:デフォルトの名無しさん
17/11/12 19:11:39.89 MOg5phwx0.net
>>167
むしろ維持する意味がわからんが w

170:デフォルトの名無しさん
17/11/12 19:29:05.48 e5xLDhIK0.net
>>168
c/c++のライブラリをラッピングするためにある。

171:デフォルトの名無しさん
17/11/12 19:30:38.51 j0JK3


172:XOeM.net



173:デフォルトの名無しさん
17/11/12 19:35:01.10 MOg5phwx0.net
>>169
別にC++/CLIなんて要らんだろ

174:デフォルトの名無しさん
17/11/12 19:40:46.39 /VKzDrV00.net
C++/CLIって、なぜか使ったことなさそうな人にやたら叩かれるよねぇ。
自分に必要なけりゃスルーしとけばいいのに、わざわざ「要らない」アピールするのが謎だ。

175:デフォルトの名無しさん
17/11/12 19:55:44.38 MOg5phwx0.net
>>172
ん?
人の意見を聞きたくないなら掲示板なんて見なきゃいいと思うぞ

176:デフォルトの名無しさん
17/11/12 19:56:59.33 Y9bMvc7C0.net
>>172
こういうアピールしちゃうのも謎だよね

177:デフォルトの名無しさん
17/11/12 20:01:12.65 yKCfx7dw0.net
>>171
今からの世代はいらないかも知れないが、今までの世代は必要なんだわ。
過去遺産の再利用でしかないがね

178:デフォルトの名無しさん
17/11/12 20:14:47.79 MOg5phwx0.net
>>175
だからMSも力入れてない(2008の時代はインテリセンスすら使えなかった)し、そろそろ打ち止めってことかと

179:デフォルトの名無しさん
17/11/12 20:25:03.86 e5xLDhIK0.net
>>170
ApacheもNginxもGoogle V8もLinuxもc言語なんだが。
サーバサイドのサービスもc言語のもあるだろ。

180:デフォルトの名無しさん
17/11/12 20:32:44.51 bU5Cj3UO0.net
>>170
急に飛躍しすぎ

181:デフォルトの名無しさん
17/11/12 20:41:06.51 3TYzHs9Ed.net
>>177
過去のもの過ぎwww「今」の話題にそれはどうかと思うぞ

182:デフォルトの名無しさん
17/11/12 20:52:36.78 e5xLDhIK0.net
>>179
そうか、NginxもGoogle V8も過去のものなのか
時代は変わったな。

183:デフォルトの名無しさん
17/11/12 21:09:15.54 H0u2BwIs0.net
まあ最新技術はPythonやPHPで実装される時代だしな。

184:デフォルトの名無しさん
17/11/12 21:32:32.26 j0JK3XOeM.net
>>177
dotnet関係ないじゃん
Cが要らないんじゃない
相互運用が要らない

185:デフォルトの名無しさん
17/11/12 21:44:46.58 H0u2BwIs0.net
いや、Cは要らないだろ。
Pythonが有れば何でもできる。

186:デフォルトの名無しさん
17/11/12 21:47:59.87 VOtI22LEa.net
ダーッ
って猪木かっ

187:デフォルトの名無しさん
17/11/12 22:11:19.90 BZnXPKY7d.net
0以上10未満のdouble値の乱数5個標準出力したい

188:デフォルトの名無しさん
17/11/12 22:14:51.64 uWcm4jWJ0.net
String testid= "ABCD" + ".text";
このABCD.textっていう中身は"テスト"っていう文字列が入ってるとします。
でも、testidの中には”ABCD.text"が設定されるのですが、
どうすれば"テスト"という値が入るのでしょうか。
ABCD.textはtextviewで"テスト"という文字をあらかじめ設定しています。

189:デフォルトの名無しさん
17/11/12 22:29:14.34 Y9bMvc7C0.net
stringの識別子名を中身に変換したいって?
そんな方法はないです

190:186
17/11/12 22:34:55.34 uWcm4jWJ0.net
下記の引数でアクセスすると、上記は期待値が入るのですが、
下記のtestidを指定するとおもった結果となりません。
しかし、ABCD.textといった風に直接指定するのではなく変数か何かで間接的に指定したいと思っております。
関数(ABCD.text);
関数(testid);

191:デフォルトの名無しさん
17/11/12 22:36:08.48 Y9bMvc7C0.net
デリゲートを渡すのはどうか

192:デフォルトの名無しさん
17/11/12 22:37:37.16 aoPluejS0.net
>>188
テキストボックスを変数みたいに扱いたいって言ってるのか?

193:デフォルトの名無しさん
17/11/12 22:42:23.71 aoPluejS0.net
c#だとポインタなくなったから
んなことできないんだよね

194:デフォルトの名無しさん
17/11/12 22:52:01.90 VOtI22LEa.net
何言ってるのかさっぱり分からんw
ABCD.textって何ぞねw

195:デフォルトの名無しさん
17/11/12 22:53:27.72 aoPluejS0.net
>>192
多分テキストボックスのtextプロパティ

196:デフォルトの名無しさん
17/11/12 22:56:45.91 Y9bMvc7C0.net
ABCDというidが付けられたTextView(Xamarin/Androidのlabel)
のtextプロパティに"テスト"という文字列が設定されている
これを何らかの方法で文字列で指定して取りたい

197:デフォルトの名無しさん
17/11/12 23:00:49.49 VOtI22LEa.net
>>193
なるほどww
言語能力とプログラミング能力に関連があるって考えに俺は懐疑的だったけど
やっぱり関係が深いのかもしれないねw

198:デフォルトの名無しさん
17/11/12 23:04:37.50 aoPluejS0.net
>>194
無理じゃね?
本当は何がやりたいん?

199:デフォルトの名無しさん
17/11/12 23:17:26.10 bU5Cj3UO0.net
>>194
ググればすぐでてくる
URLリンク(qiita.com)

200:デフォルトの名無しさん
17/11/12 23:25:24.74 eFe5AqQqM.net
>>197
やめろ
糞プログラマが量産される

201:デフォルトの名無しさん
17/11/12 23:36:13.84 WcVSvCUs0.net
>>195
それを理解するには十分な例だったなw

202:デフォルトの名無しさん
17/11/12 23:37:57.60 eFe5AqQqM.net
>>186
"ABCD" + ".text"してるなら
testidの中身はやはり "ABCD.text"です
ただの文字列です
それが勝手に”テスト”になってたら怖いし不便です
プログラムしてて予測がつきませんので"ABCD.text"のままでいるほうが安心です
"ABCD.text"からABCD.textにできる言語もありますが
C#は基本的にそういうのはやらない方向でプログラムするべきです

203:デフォルトの名無しさん
17/11/13 00:09:08.69 rsYvFHCwr.net
全然推測できんw
まさかこう言う事?
string testid= ABCD.text;

204:デフォルトの名無しさん
17/11/13 00:11:27.37 nr7xz/FC0.net
ダックタイピングする言語じゃないからね

205:デフォルトの名無しさん
17/11/13 00:25:51.01 KiX40CjjM.net
>>188
変数に入れたいならtextview型の変数を作っておいてそこに入れよう
textview target = ABCD;
関数(target.text);

206:デフォルトの名無しさん
17/11/13 00:26:26.95 rsYvFHCwr.net

string testid = File.ReadLines("ABCD.text");
????

207:デフォルトの名無しさん
17/11/13 00:31:47.43 sn+CO+UA0.net
>>186
String testid= "ABCD" + ".text";
じゃなくて
String testid=ABCD.text;

208:デフォルトの名無しさん
17/11/13 00:36:09.38 KiX40CjjM.net
脳のテストみたいだな
理解できるものだけ理解してる
出来ない人は変なレスしてる

209:デフォルトの名無しさん
17/11/13 00:38:07.10 sn+CO+UA0.net
答えはリフレクションだろ?

210:デフォルトの名無しさん
17/11/13 01:06:43.08 8PrajDy/0.net
初心者がやりたがることとしては定番だろう
そんなに意外性はない

211:デフォルトの名無しさん
17/11/13 01:41:09.93 v8HXsfBj0.net
>>208
は?

212:デフォルトの名無しさん
17/11/13 02:07:05.43 c1Jq4ATj0.net
>>185
var rand = new Random();
for (var i = 0; i < 5; i++) Console.WriteLine(rand.NextDouble() * 10.0);

213:デフォルトの名無しさん
17/11/13 12:29:38.53 JPipM5yVd.net
Controls.OfType<TextBox>().First(c => c.Name == "ABCD").Text

214:デフォルトの名無しさん
17/11/13 16:41:04.48 KG3ltkXj0.net
昨日DLLについて質問したものです。
おかげさまでとりあえずやりたいことが実現できました。
C♯からも呼び出せるマクロです^^
電卓とメモ帳を自動操作
URLリンク(fast-uploader.com)

215:デフォルトの名無しさん
17/11/13 17:00:21.29 5C1yWWLzM.net
parallelの中で更にparallelするとどうなりますか?

216:デフォルトの名無しさん
17/11/13 17:19:10.80 3aIhrZk00.net
CPUの数だけでパラってあとは順番待ち?

217:デフォルトの名無しさん
17/11/13 17:48:55.95 c1Jq4ATj0.net
超Parallelになる

218:デフォルトの名無しさん
17/11/13 18:28:32.97 SvVWerXL0.net
プリミティブな配列
例えばstring[]とかってシリアライズ出来ましたっけ?

219:デフォルトの名無しさん
17/11/13 19:09:21.17 M6weAJAZM.net
どんなシリアライザ使うのかもわからんのに答えようがないが
まあそれをシリアライズできないシリアライザはまずないだろうな

220:デフォルトの名無しさん
17/11/13 20:26:35.00 WRqgiOAAd.net
>>188
致命的に


221:説明が下手か何も理解してないかのどっちかだと思う 下手に一般化するより今書いてるコードにコメント書いてそのまま晒した方がマシ



222:デフォルトの名無しさん
17/11/13 21:09:23.39 K5+qKqcP0.net
>>217
ありがとうございます

223:デフォルトの名無しさん
17/11/13 21:18:38.99 hP7f8JAdd.net
asynctaskの中でhttpによるデータ取得して取得したデータを戻り値で返す処理を作成しました。
同時にexceptionによる詳細なエラー内容も戻り値として返したいのですが、どのようにすればよいでしょうか?
戻り値が2つできないので困っております。又、戻り値の型は違います。

224:デフォルトの名無しさん
17/11/13 21:22:56.43 9NHQYSXO0.net
>>220
その2つをプロパティとして持つ型をつくる

225:デフォルトの名無しさん
17/11/13 21:23:06.80 qa5qRZI10.net
>>220
戻り値二種のValueTuple返せば良いんじゃないの

226:デフォルトの名無しさん
17/11/13 21:32:13.09 3DwKtl+Id.net
>>222
WebAPIっぽいし、Tupleだとシリアライズした時にItem1、Item2ってなっちゃわない?

227:デフォルトの名無しさん
17/11/13 21:33:28.45 3DwKtl+Id.net
あ、読み違えてたかもゴメン

228:デフォルトの名無しさん
17/11/13 21:38:36.94 sn+CO+UA0.net
>>220
エラーオブジェクトに応答とその他情報突っ込んでthrow

229:デフォルトの名無しさん
17/11/13 22:01:26.37 qSvbvuzsa.net
>>220
こんな型でも返しますかw
public class FunctionResult<T>
{
  public FunctionResult(T val)
  {
    Value = val;
  }
  public FunctionResult(Exception ex)
  {
    Exception = ex;
  }
  public bool HasValue
  {
    get { return Exception != null; }
  }
  private T _Value;
  public T Value
  {
    get
    {
      if (!HasValue) throw new InvalidOperationException();
      return _Value;
    }
    private set { _Value = value; }
  }
  public Exception Exception { get; private set; }
}

230:デフォルトの名無しさん
17/11/13 23:32:00.25 1k/7dsAB0.net
>>220
>同時にexceptionによる詳細なエラー内容も戻り値として返したいのですが
例外throwすれば良いだけでは?

231:220
17/11/14 01:18:02.74 Rbk2zOBm0.net
正常時は別の戻り値、異常時はthrow?で戻り値の型に合った内容が、
格納されるのでしょうか。
呼び出し元で、どのように取り出せばよいのでしょうか。

232:デフォルトの名無しさん
17/11/14 01:28:44.28 Xx2aI1jk0.net
>>228
エラー処理で検索

233:228
17/11/14 01:36:41.11 Rbk2zOBm0.net
いろいろお教えいただいているのですが、
URLリンク(www.nowonbun.com)
↑のようなHPとかthrow とかエラー処理で検索しても
戻り値に入れて、それを呼び出し元でどのように見ているのかいくら探してもでてきません。。
try,catchとかでコンソールにエラー内容出力のことではないですよね。。

234:デフォルトの名無しさん
17/11/14 01:36:47.07 sw4py9T60.net
「c# 例外」で検索!

235:デフォルトの名無しさん
17/11/14 01:43:50.50 sw4py9T60.net
例外と例外処理
URLリンク(docs.microsoft.com)
try 内で、throw すれば、catch で補足できる。
throw した例外クラスが、catch の引数に渡ってくる。
以下の e
catch (例外クラス e)

236:デフォルトの名無しさん
17/11/14 01:44:37.90 Xx2aI1jk0.net
関数内で例外をキャッチして新しくException オブジェクト作ってそのInner
Exception にキャッチした例外オブジェクトを突っ込んで作った例外オブジェクトのDataプロパティに返したたいデータ突っ込む
それをthrowして呼び出し元でキャッチしてDataプロパティから取り出す

237:デフォルトの名無しさん
17/11/14 01:54:03.16 KYSlLmBD0.net
>>233
新しくExceptionオブジェクト作るなアホか

238:228
17/11/14 01:59:34.75 Rbk2zOBm0.net
皆さまありがとうございます。いまださっぱりわからないので出直してきます。。
ありがとうございました。
try catchでcatchのとこにエラー情報が入る?まではわかったきがするのですが、
再スローとかInnerExceptionになるとさっぱりでした。
下位の呼び出し先のエラー情報を上位の呼び出し元にthrowすれば戻り値関係なく渡せるといった感じなのでしょうか。。
サイトみててもそうはどうやってもみえなかったのです。

239:デフォルトの名無しさん
17/11/14 02:08:30.45 n7fEU+IFd.net
>>233
意図的にExceptionのインスタンスを作ってスローするのは間違い
SystemExceptionやNullReferenceException、IndexOutOfRangeExceptionも同様

240:デフォルトの名無しさん
17/11/14 02:11:41.66 L0+XEUiLa.net
悪口言うつもりはないけど例外の使い方も知らないのに非同期に手を出すとか
順番がおかしいと思うw

241:デフォルトの名無しさん
17/11/14 02:12:51.73 L0+XEUiLa.net
>>236
そんなのケースバイケースでしょう。
一概に間違いだとする理由がない。
そういうのを教条主義という

242:デフォルトの名無しさん
17/11/14 02:17:16.73 VqdZ1M78d.net
>>238
Microsoft自身がやめろって言ってんのに、わざわざそれに反することをするのはアホ

243:デフォルトの名無しさん
17/11/14 02:18:50.68 KYSlLmBD0.net
>>238
c#の例外について少しでもかじったことがあるのならば、アンチパターンだと知ってるはず

244:デフォルトの名無しさん
17/11/14 02:20:03.11 L0+XEUiLa.net
>>239
そんなこと言ってる?
言うわけないと思うが仮にそうでも合理性がなければ従う理由もない。
「なぜ」を問わずに盲従する奴こそアホだ

245:デフォルトの名無しさん
17/11/14 02:22:37.27 Xx2aI1jk0.net
>>236
どういうこと?
Exception派生クラスの中から適切なものを選ぶってこと?
それともキャッチした例外オブジェクトにデータを付加するの?

246:デフォルトの名無しさん
17/11/14 02:24:17.15 NHaW+CLNd.net
>>241
基本中の基本URLリンク(docs.microsoft.com)

247:デフォルトの名無しさん
17/11/14 02:25:47.16 KYSlLmBD0.net
>>241
なぜ言うわけ無いと思ったのか説明してごらん

248:デフォルトの名無しさん
17/11/14 02:26:51.36 L0+XEUiLa.net
>>243
そんなことどこにも書いてないどころか>>233と同じことをやってる例が出てるけどw
本当にちゃんと読んだ?w

249:デフォルトの名無しさん
17/11/14 02:27:34.33 L0+XEUiLa.net
>>244
現に言ってないねw
>>243をちゃんと読んでごらん
そんなことどこにも書いてない

250:デフォルトの名無しさん
17/11/14 02:31:42.57 WLqSYvBrd.net
>>245
ちゃんと読めよカスwww
>自作のソース コードからは、意図的に System.Exception、System.SystemException、System.NullReferenceException、または System.IndexOutOfRangeException をスローしないでください。

251:デフォルトの名無しさん
17/11/14 02:32:24.83 KYSlLmBD0.net
>>246
日本語のドキュメントなのに読めないとか

252:デフォルトの名無しさん
17/11/14 02:33:31.14 Xx2aI1jk0.net
なんでスップ2つ+固定回線で自演してるの?

253:デフォルトの名無しさん
17/11/14 02:34:47.54 L0+XEUiLa.net
>>247
言っちゃわるいけど、君の読解力がおかしいことはよくわかった。
その一文のどこをどう呼んでもキャッチした例外をInnerExceptionに入れて
別の例外を投げてはいけない、などという意味には読めません

254:デフォルトの名無しさん
17/11/14 02:36:25.31 WLqSYvBrd.net
>>250
読解力がないのはお前。否定してるのはExceptionクラスのインスタンスをnewしていること。

255:デフォルトの名無しさん
17/11/14 02:38:38.93 L0+XEUiLa.net
しかし、
>自作のソース コードからは、意図的に System.Exception、System.SystemException、System.NullReferenceException、または System.IndexOutOfRangeException をスローしないでください。
これ、前者2つがダメな理由は分かるけど後者2つはかなり意味不明だね。
翻訳ミスを疑ったけど英語でもそうなってる。
これはさすがに盲従する奴はアホだと思う

256:デフォルトの名無しさん
17/11/14 02:40:17.14 WLqSYvBrd.net
>>252
本気で言ってる?同じ疑問を持つ人はいるみたいだから少しググれば出てくるけど
URLリンク(stackoverflow.com)

257:デフォルトの名無しさん
17/11/14 02:41:11.99 L0+XEUiLa.net
>>251
普通に読めば>>233に出てくるExceptionとは限定的にExceptionクラスだけを
指しているとは読めない

258:デフォルトの名無しさん
17/11/14 02:45:47.13 WLqSYvBrd.net
>>254
あんな質問してくる初心者に「新しくExceptionオブジェクト作って」と言えば、「new Exception()」するだろうよ
ところで、>>253を少しは読んだのかい?

259:デフォルトの名無しさん
17/11/14 02:46:50.86 L0+XEUiLa.net
>>253
なるほど、NullReferenceExceptionの方は一応回答者が理由出してるけど
もっと明示的な例外の方が良いから使うなというには弱いように感じるね。
IndexOutOfRangeException の方は使っちゃダメな理由出てないね

260:デフォルトの名無しさん
17/11/14 02:47:11.28 KYSlLmBD0.net
>>254
勉強になって良かったね

261:デフォルトの名無しさん
17/11/14 02:47:35.87 L0+XEUiLa.net
>>255
それ、じゃあ自分なら何て表現するか考えてから言ってる?

262:デフォルトの名無しさん
17/11/14 02:48:14.13 L0+XEUiLa.net
>>257
「よっしゃ、今日はこのぐらいにしといたるわ」 by 池乃めだか

263:デフォルトの名無しさん
17/11/14 02:48:46.66 WLqSYvBrd.net
>>256
出てるからちゃんと読みなさい

264:デフォルトの名無しさん
17/11/14 02:49:29.79 L0+XEUiLa.net
>>260
出てないって
出てるなら引用してみ

265:デフォルトの名無しさん
17/11/14 02:50:04.51 WLqSYvBrd.net
>>261
煽って探してもらおうとするクズ

266:デフォルトの名無しさん
17/11/14 02:50:53.16 KYSlLmBD0.net
>>256
ほんとドキュメント読めない人なのね

267:デフォルトの名無しさん
17/11/14 02:56:20.70 L0+XEUiLa.net
>>263
君、そういうくだらないレスしかできない自分が嫌にならないの?
絵に描いたような「精神勝利法」だけど、そんなので勝った気になれるって小学生かよ。
俺ならプライドがあるからやらないけど、きっと傷つくような自尊心なんて最初から持ってないんだね

268:デフォルトの名無しさん
17/11/14 02:59:16.44 KYSlLmBD0.net
>>264
初心者ならもっと謙虚になりなさい

269:デフォルトの名無しさん
17/11/14 05:35:40.63 e8+qL+KH0.net
>>264
久々にみた気持ちの良いブーメラン
親切に教えてもらっても意固地になる人って職場にも一人はいるよね

270:デフォルトの名無しさん
17/11/14 06:55:43.62 sSxxq2Sz0.net
例外処理が難しすぎるのか例外処理を分かってないヤツが多すぎる。
Go言語が例外処理を言語仕様からはずしたのも納得できるな。

271:デフォルトの名無しさん
17/11/14 06:57:50.52 sSxxq2Sz0.net
>>237
非同期とか使わないでも実装出来るものを非同期にするとか
ロックの仕組みも分かってないのにスレッド使うとか
スキルの無いヤツほど難しい事をやりたがるwww

272:デフォルトの名無しさん
17/11/14 07:11:13.47 R9xQaEyZM.net
プロパティだけのデータストア用インナークラスを作ってるんですけど、クラスの修飾子をprotectedにして中のプロパティをpudlicにしています
メンバの方がアクセス権が広い事に違和感を感じるのですが世間様ではある事なのでしょうか

273:デフォルトの名無しさん
17/11/14 07:41:12.60 kBR8KFzeM.net
>>269
クラスもパブリックにしよう!

274:デフォルトの名無しさん
17/11/14 08:09:47.71 sF+2jjEu0.net
>>267おまえなら>>220にどう対処する?

275:デフォルトの名無しさん
17/11/14 08:27:49.82 04qZtOw+0.net
>>269
クラスがprivateの場合はメンバの方を広くするしかないんだからそれ自体はおかしくない
クラスがinternalでメンバがpublicというのはよくある
でもprotectedな内部クラスというのはそもそもあまり一般的ではないと思う
クラスの外にその内部クラスを使うユーティリティを定義したくなったらどうする?
紛らわしくて不便なだけで特にメリットがない

276:272
17/11/14 08:29:03.55 04qZtOw+0.net
補足
(派生クラスを作ろうとした人が)クラスの外にその内部クラスを使うユーティリティを定義したくなったらどうする?
という意味な

277:デフォルトの名無しさん
17/11/14 08:49:01.70 bKDw6GK5M.net
>>271
おそらく、HttpClientを使ってるんだろうけど
async/awaitの例外処理には罠がありそうなので
グーグル先生にお伺いをして慎重に例外処理を使う。

278:デフォルトの名無しさん
17/11/14 09:09:39.51 HdsegbLs6.net
>>274
同期だったとしてどうする?

279:デフォルトの名無しさん
17/11/14 09:10:12.07 ElF9INq6r.net
>>220
HaskellのEither辺りを自分で実装w
探せば出てくるが
今時例外はあまり使わんね
時と場合によるが

280:デフォルトの名無しさん
17/11/14 09:11:01.60 HdsegbLs6.net
>>276
サーバーに接続出来なかったらどうする?

281:デフォルトの名無しさん
17/11/14 09:13:48.16 ElF9INq6r.net
>>277
接続出来ない旨のLeftを返す

282:デフォルトの名無しさん
17/11/14 09:15:00.68 HdsegbLs6.net
>>278
レフトとか知らないけど例外でよくね?例外がダメ理由は?

283:デフォルトの名無しさん
17/11/14 09:22:41.57 bKDw6GK5M.net
>>275
敵艦に突っ込んで玉砕だな

284:デフォルトの名無しさん
17/11/14 09:32:31.86 HdsegbLs6.net
>>280
呼び出し関数内で何かしらのデータを作ったとしてそれはどうやって呼び出し元に伝達する?

285:デフォルトの名無しさん
17/11/14 09:39:13.23 bKDw6GK5M.net
>>281
何のデータの場合?

286:デフォルトの名無しさん
17/11/14 09:40:53.91 /dr35bqC0.net
暇な奴だ

287:デフォルトの名無しさん
17/11/14 09:41:26.10 HdsegbLs6.net
>>282
404のレスポンスボディとか

288:デフォルトの名無しさん
17/11/14 09:47:33.77 bKDw6GK5M.net
>>284
例外で帰ってくるやつか?
そらなら呼び出し元でcatchだね

289:デフォルトの名無しさん
17/11/14 10:00:57.46 HdsegbLs6.net
例外処理は汚くなるからイベントハンドラとかみたいな呼び出し階層の最上位にだけに集約させたいってこと?

290:デフォルトの名無しさん
17/11/14 10:06:00.72 bKDw6GK5M.net
>>286
汚くさせないためにあるのが例外処理だろ?
例外を放置すりゃ呼び出し最上位まで飛んでいくが。

291:デフォルトの名無しさん
17/11/14 10:11:37.55 NRM6wS+d0.net
存在しないリソースを要求するだけで例外を引き起こせるなら。

292:デフォルトの名無しさん
17/11/14 10:23:21.54 HdsegbLs6.net
>>267>>276が何を言いたいのかわからん

293:デフォルトの名無しさん
17/11/14 12:12:12.09 5gpUPtII0.net
>>233
Exception派生オブジェクト
って書いとけばそれで済んだ話だと思うんだが
よくもりあがってるな

294:デフォルトの名無しさん
17/11/14 12:48:00.23 qGKirkhkd.net
>>290
それもそうだし、あまりのドキュメントを読む能力の無さに吹いたわ

295:デフォルトの名無しさん
17/11/14 13:35:30.02 kMJcGUhsM.net
例外の内容を戻り値で返そうとしていた時点で察するべき

296:デフォルトの名無しさん
17/11/14 13:35:49.40 uXnSzNFD0.net
今月ずっとhResult == IntPtr.Zeroとかresult != 0とか書いてた俺から見れば
例外なんて天国じゃないですか

297:デフォルトの名無しさん
17/11/14 13:42:38.82 kMJcGUhsM.net
>>293
その天使を握り潰してリターンで返してエラーハンドリング地獄にしようとしていたのさ。

298:デフォルトの名無しさん
17/11/14 13:51:56.33 D89+JmTA0.net
でもファイルが開けないで例外は困る
他のも完全に例外とそうでないのと作った奴との波長が合わないと
仕分けが面倒臭い
いっそ握り潰すは結構わかる
なんかいい手はるのか?

299:デフォルトの名無しさん
17/11/14 13:58:20.49 QAeRXYyyM.net
開けないという結果を返したいなら戻り値で返せばいいじゃん
例外の詳細が欲しいとか言うなら例外のまま戻ればいいってなる

300:デフォルトの名無しさん
17/11/14 14:04:41.09 kMJcGUhsM.net
>>295
開けないファイルを処理できる場所で例外のキャッチをすれば良いだけだが。

301:デフォルトの名無しさん
17/11/14 14:06:57.33 D89+JmTA0.net
>>297
だから一生懸命例外を仕分けするって話だろ

302:デフォルトの名無しさん
17/11/14 14:08:55.93 kMJcGUhsM.net
>>298
仕分け?

303:デフォルトの名無しさん
17/11/14 14:15:19.28 D89+JmTA0.net
>>299
だから他の奴の作ったクラスの例外にする挙動で気にいらない例外を仕分けする必要があるじゃん
アスペ過ぎるだろお前

304:デフォルトの名無しさん
17/11/14 14:17:24.41 RygzRtlR0.net
MSの推奨するasync越しの例外処理はCancellationTokenSource使うやつだろうが可也面倒だわな
キャンセルの仕組みを入れるなら、次いでに仕込んでもいいと思うが

305:デフォルトの名無しさん
17/11/14 14:19:11.58 kMJcGUhsM.net
>>300
例外の大半は致命的なエラーだろ
メッセージ吐いて落とすだけ
仕分けも糞もないわ

306:デフォルトの名無しさん
17/11/14 14:21:12.02 D89+JmTA0.net
>>299
うんちっちException
うんこっこException
うんこっここっこException
ちんぽっぽException
ちんぽっぽちんぽException
ちんちんException
まんこっこException
まんこっこっこException
それぞれ挙動を変えたい

307:デフォルトの名無しさん
17/11/14 14:22:20.64 D89+JmTA0.net
>>302
なんでファイルオープンミスったぐらいで致命的なエラーなんだよ
別ファイル指定させろ殺すぞ

308:デフォルトの名無しさん
17/11/14 14:25:29.18 kMJcGUhsM.net
>>304
キャッチしてリカバリ処理しても良いんだよベイベ

309:デフォルトの名無しさん
17/11/14 14:30:28.64 kMJcGUhsM.net
>>303
まんこっこExceptionだけキャッチして
あとはゲロ吐きへ

310:デフォルトの名無しさん
17/11/14 14:35:59.67 qGKirkhkd.net
>>304
またキチガイかよ

311:デフォルトの名無しさん
17/11/14 15:02:33.86 RygzRtlR0.net
致命的エラーの大半はバグだから、しっかりロガーに記憶センといかんよな

312:デフォルトの名無しさん
17/11/14 15:26:53.10 3oyxXo9MM.net
仕分けです

313:デフォルトの名無しさん
17/11/14 15:59:25.26 D89+JmTA0.net
>>308
そんなの組んだやつ次第じゃん
テメーのディスプレイに写った顔がキモメンなので例外

314:デフォルトの名無しさん
17/11/14 16:03:35.67 D89+JmTA0.net
ところでCsvHelperのCurrentRecord消えてんじゃん
たかがCsvでマッピングなんかしねーよ
コイツ馬鹿じゃん
やっぱり他人の作ったもんなんかゴミだな
この程度は自分で作るべきだった

315:デフォルトの名無しさん
17/11/14 16:05:44.77 HdsegbLs6.net
アスペ

316:デフォルトの名無しさん
17/11/14 16:33:33.76 qGKirkhkd.net
そいつ英語読めないアスペ

317:デフォルトの名無しさん
17/11/14 17:10:19.65 kBR8KFzeM.net
戻り値のあるメソッドでcatchにもreturn入れないとエラーになるんだけど、普通、例外拾った場合、returnにはnullとかいれるの?

318:デフォルトの名無しさん
17/11/14 17:16:49.43 3oyxXo9MM.net
>>314
エラーで戻り値をセット出来ない場合は、
メソッドの中でcatchしないで呼び出し元でcatchする。

319:デフォルトの名無しさん
17/11/14 17:20:01.42 kBR8KFzeM.net
>>315
なるほど、メソッドの外でcatchするんですね。それが定石なんでしょうか?

320:デフォルトの名無しさん
17/11/14 17:33:11.61 3oyxXo9MM.net
>>316
メソッドの中でcatchして例外に対する処理が出来れば、そこでcatchすれば良いし、出来なきゃ呼び出し元でcatchする。呼び出し元で処理出来なけりゃ更に上位の呼び出し元でcatchする。
基本は例外は例外なのでそんなことが起きないようにコーディングする。

321:デフォルトの名無しさん
17/11/14 17:45:16.91 vWcSiHz/0.net
WebにあるMSDNの説明を和文で見る人は、「.NET Framework(current version)」を「.NET Framework 4」に変更して、みたほうが良いかもね。
それでも変な和訳だけど。

322:デフォルトの名無しさん
17/11/14 18:04:00.27 gCxVQMlVa.net
>>314
それ、問題設定がおかしい(きつい言い方だけどそれは愚問)だから、
たぶん例外の意味が根本的に分かってないんだと思う。
まず「そもそも例外って何?」ってところからちゃんと理解した方がいいと思う。
理解をパスして定石だかお作法だかを覚えることで乗り切ろうとする態度は危険
それと
>戻り値のあるメソッドでcatchにもreturn入れないとエラーになる
間違ってる。
コンパイル通らないのは値を返さない実行パスが存在する場合だけ

323:デフォルトの名無しさん
17/11/14 18:31:17.73 rQHwrbmI0.net
>>319
例外処理を理解してないやつってホント多いよ。
c#何年もやってて理解してなとか普通に居るし。

324:デフォルトの名無しさん
17/11/14 18:47:46.83 gXgokZ6Md.net
>>320
>>319も基本的なことを理解してなかったみたいだけどね

325:デフォルトの名無しさん
17/11/14 18:59:20.88 ElF9INq6r.net
>>279
ダメでは無いが例外の欠点
上下のやり取りにもあるように例外は扱いが難しく暗黙知が多い
(個人的には難しいとは思わんが)
簡単に握り潰せる
その関数が例外を出すかどうかはパッと見には解らない
非同期の時どうなるか直感的ではない
今はビジネスロジックのエラーに例外はあんまり使わない
もちろんケースバイケース

326:デフォルトの名無しさん
17/11/14 19:23:50.29 pfWBpEcAM.net
>>270
インナークラスってそれを持ってるクラスで隠蔽したいからあるものじゃ無いんですか?
知っているだけで用法を知らない事を痛感しました

327:デフォルトの名無しさん
17/11/14 19:24:49.61 D89+JmTA0.net
ドキュメント書かない奴に限って
ちんぽっぽちんちんException
の亜種をたくさん作るんだw
ところで
CsvHelper
GetRecords<dynamic>()で動くだろ死ねよ
って温かいレスをもらったが
Csvの読み込み程度でこんな翻弄されてるなら
やっぱり自分で作った方が安泰かな?
NuGet最新取ると概ね動かないぜ

328:デフォルトの名無しさん
17/11/14 19:32:20.40 sSxxq2Sz0.net
>>322
Go言語が例外処理を無くしたのは、
・例外処理を正しく扱えないヤツが余りにも多すぎる
・例外処理は並行処理では扱い辛い
後者の方が無くした主な理由だろうけど
例外処理分かってないヤツ多すぎるwww

329:デフォルトの名無しさん
17/11/14 19:35:09.24 sSxxq2Sz0.net
>>324
ソースがあるのだし自分でソースくらい見ろよ
オープンソースでドキュメント期待する方が間違ってるぞwww

330:デフォルトの名無しさん
17/11/14 19:58:23.54 0snQAOLI0.net
キチガイのバザール

331:デフォルトの名無しさん
17/11/14 20:04:06.14 QqwKiGyo6.net
>>322
どこが難しいと思うの?

332:デフォルトの名無しさん
17/11/14 20:39:11.83 ElF9INq6r.net
>>328
俺に聞くなボケw
個人的には難しいとは思わんが
とわざわざ書いたのにそれが目に入らぬか

333:デフォルトの名無しさん
17/11/14 20:59:27.95 HCb+ZNawa.net
Listのaddメソッドって例外飛ばさないんですか?
もう追加できないよ!みたいな感じで

334:デフォルトの名無しさん
17/11/14 21:01:39.87 ozKhZGN+0.net
{〇,✕,✕,〇,△,△,△,〇,△}みたいなリストを{〇,✕,✕,}{〇,△,△,△,}{〇,△}って感じに分けたいんだけどLinqで簡単に出来ないかな?
ループさせんのが面倒で

335:デフォルトの名無しさん
17/11/14 21:03:14.99 cajczz9H0.net
>>318
英文表示にして段落毎にグーグル先生に翻訳して貰うと割と読める文章になることが多い。
グーグル翻訳でもサイト翻訳は翻訳精度が悪い。

336:デフォルトの名無しさん
17/11/14 21:07:06.30 07a/swYLa.net
>>331
SkipとTake使えば?

337:デフォルトの名無しさん
17/11/14 21:11:28.16 6kJ9cNLk6.net
>>329
どこがみんなにとって難しいと思うから322で難しいとか書いたの?

338:デフォルトの名無しさん
17/11/14 21:13:21.13 ElF9INq6r.net
>>334
これだけ意見相違があるから

339:デフォルトの名無しさん
17/11/14 21:16:24.25 6kJ9cNLk6.net
よくわからんが難しくないだろ。

340:デフォルトの名無しさん
17/11/14 21:17:36.48 07a/swYLa.net
例外を変なところでキャッチしちゃう人が多い
メソッドAの


341:中でメソッドBを呼んでまたメソッドCを呼んだとする メソッドC中で例外が起こってもメソッドC内でキャッチしちゃって メソッドCの戻り値をnullでリターンして メソッドBで戻り値のnullチェックしてnullだったらまた戻り値をnullでリターンして またメソッドAでチェックしてみたいな馬鹿な使い方をしてる メソッドAでキャッチしろって思う



342:デフォルトの名無しさん
17/11/14 21:18:54.31 6kJ9cNLk6.net
>>337
それだけだよね。
なんも難しくない

343:デフォルトの名無しさん
17/11/14 21:22:31.53 ozKhZGN+0.net
>>333
んーそれ余計に面倒にならない?

344:デフォルトの名無しさん
17/11/14 21:23:42.17 07a/swYLa.net
例外を目の前でキャッチするくらいなら他の制御構文でヤレ

345:デフォルトの名無しさん
17/11/14 21:33:26.00 sSxxq2Sz0.net
>>337
ホントそれ。
至る所にtry/catchがある。
try/finallyは多用するがtry/cathなんて滅多に使う事はない。
例外処理は至る所に例外処理コードを書かないために存在する。

346:デフォルトの名無しさん
17/11/14 21:54:38.57 D89+JmTA0.net
>>341
だから何度も書いてやってん�


347:カゃん 仕分けが絶望的に面倒臭ぇから握り潰しちまうって だってさよく考えろよ ドキュメント化されてないメソッドが出す例外って全部でいくつかどうやって調査する?



348:デフォルトの名無しさん
17/11/14 22:03:00.14 5gpUPtII0.net
仕分けめんどくさいのは同意するけど、握りつぶすのはどうなんだ
仕分けした結果握りつぶして問題ないって判断したものならいいかもしれんが
極論として、全部握りつぶす or 全部スルーして上位にキャッチさせる
どっち選ぶ?

349:デフォルトの名無しさん
17/11/14 22:03:51.57 sSxxq2Sz0.net
>>342

例外処理を誤解している典型例です。
皆さん絶対に真似しないように。

350:デフォルトの名無しさん
17/11/14 22:08:15.89 sSxxq2Sz0.net
>>337
>例外を変なところでキャッチしちゃう人が多い
かと思えば、例外が必要なところでtry/catch { } で握りぶしちゃう人も多い
これも追加ね。
無駄なtry/cathと握りつぶし
例外が分かってないヤツの典型例

351:デフォルトの名無しさん
17/11/14 22:09:59.38 vkrHhpXR0.net
例外の仕分けとは何なのか

352:デフォルトの名無しさん
17/11/14 22:11:36.04 FOR7JOrW0.net
分かったからママに教えてやれ
お前が可愛いなら誉めてくれるだろう

353:デフォルトの名無しさん
17/11/14 22:12:26.72 D89+JmTA0.net
>>346
だから例外で帰られちゃ困るのよ
ちゃんと仕様で動作が決まってるのにもかかわらずそのメソッド的には例外なの

354:デフォルトの名無しさん
17/11/14 22:17:45.36 sSxxq2Sz0.net
例外を拾ってエラーチェックをしようとしているのが根本的な間違いだな。

355:デフォルトの名無しさん
17/11/14 22:28:42.81 D89+JmTA0.net
>>349
バッカ、飛んでっちゃうだろ

356:デフォルトの名無しさん
17/11/14 22:33:03.34 Xx2aI1jk0.net
仕分けとは
握りつぶしとは

357:デフォルトの名無しさん
17/11/14 22:41:27.61 D89+JmTA0.net
>>351
アスペにもほどがあるだろ

358:デフォルトの名無しさん
17/11/14 22:56:41.83 Xx2aI1jk0.net
初心者だから経験が浅いので分からん

359:デフォルトの名無しさん
17/11/14 22:58:32.66 ypDSy74La.net
あからさまに変な人は相手にしないほうがいいよ
俺も言ってる意味がわからない

360:デフォルトの名無しさん
17/11/14 23:00:13.12 vkrHhpXR0.net
>>348
戻り値だったらいいの?例外となんか違うか?

361:デフォルトの名無しさん
17/11/14 23:02:10.19 D89+JmTA0.net
>>355
お前、なんの例外がくるのか全部把握してる前提で話してるだろ?

362:デフォルトの名無しさん
17/11/14 23:06:39.11 deF3FeCf0.net
把握できてる(かつ握っても問題ない)例外だけ握ればいいんじゃないの?
なんで全部握りつぶすの?

363:デフォルトの名無しさん
17/11/14 23:18:43.22 D89+JmTA0.net
>>357
どこで例外発生するかわかんないから

364:デフォルトの名無しさん
17/11/14 23:25:37.86 sSxxq2Sz0.net
>>358
何処で発生するか、しかも例外の内容も分からない例外を仕分けして何をしたいんだ?

365:デフォルトの名無しさん
17/11/14 23:33:00.11 vkrHhpXR0.net
>>356
お前なんの戻り値がくるのか全部把握してる前提で話してるだろ?

366:デフォルトの名無しさん
17/11/14 23:43:11.80 D89+JmTA0.net
>>359
だから失敗でアプリ落としたくねーんだよ
アスペか
んで全ての例外に対応したいがメソッドの中身を読むも広大過ぎてなんの例外がくるのかわからない
ときたら握り潰すしかないよね

367:デフォルトの名無しさん
17/11/14 23:43:49.21 D89+JmTA0.net
>>360
それは成功以外は失敗じゃない?

368:デフォルトの名無しさん
17/11/14 23:48:21.45 ypDSy74La.net
>>361
それはダメなやり方だよ
例外をキャッチしきれなければアプリを落とすべきなんだよ
それが基本なんだよ
特殊な場合は別だけど普通はそう教わる

369:デフォルトの名無しさん
17/11/14 23:48:53.64 sSxxq2Sz0.net
>>361
だったら、例外をcatchして例外メッセージをMessageBox.Show()しとけば良いだけだろ。

370:デフォルトの名無しさん
17/11/14 23:49:57.17 vkrHhpXR0.net
>>362
だったら例外も同じじゃない?

371:デフォルトの名無しさん
17/11/14 23:53:24.48 +V2acIIZ0.net
こんな深夜に要件定義されていない議論するとか正気か?

372:デフォルトの名無しさん
17/11/14 23:58:02.52 D89+JmTA0.net
>>365
だから落ちんなよって

373:デフォルトの名無しさん
17/11/14 23:58:11.24 sSxxq2Sz0.net
>>363
>例外をキャッチしきれなければアプリを落とすべきなんだよ
どんな例外もキャッチしなきゃダメだろ。
キャッチして「駄目だコリャ」の場合はログ吐いて落とすしかない。

374:デフォルトの名無しさん
17/11/14 23:58:46.20 A1uj0brl0.net
Windowsの場合、ハンドルされない例外で落としておけば、ユーザーには後日解決策が
提示される場合があると表示されて、パートナーには統計情報が連絡される。

375:あ
17/11/14 23:59:42.34 j+l8jijkd.net
動いてそうだけど動いてないかもしれない、エラーが中で出てるけど見えないプログラムなんて、
ブレーキランプはつくけどホントにブレーキがかかるかわからない車みたい。
いっそ走らないほうがマシ。

376:デフォルトの名無しさん
17/11/15 00:01:02.73 udlId46Ca.net
>>367-368
どうせネタのつもりで言ってるんだろうけど面白くないから

377:デフォルトの名無しさん
17/11/15 00:02:05.46 iANpDJJe0.net
>>369
MS以外に例外情報を送信することができるのか?

378:デフォルトの名無しさん
17/11/15 00:03:28.48 2GqBFPwl0.net
>>372
統計情報だけもらえる。

379:デフォルトの名無しさん
17/11/15 00:03:40.40 QiSxe5F2a.net
>>368
キャッチして何になるんだよ?
アプリは予測してない状況になってるんだぞ
予測できてないから復旧もできないし
誤動作してシステム食いつぶすこともあるんだから生かしておく意味はありません
そういうことしてDBに特定のデータだけ一晩中書き続けた例を知ってる

380:デフォルトの名無しさん
17/11/15 00:03:57.83 iCpU6Box0.net
>>367
むしろ例外の仕組みがない言語の方がプログラマーに制御できないとこで勝手に落ちるんじゃないの?

381:デフォルトの名無しさん
17/11/15 00:04:36.82 MZOj6Nbl0.net
>>369
ダイアログ出てる間はプロセス掴んだままになるから、
素直にプロセス落として自動的に再起動させたい場合には邪魔になるやつね。

382:デフォルトの名無しさん
17/11/15 00:04:47.32 iANpDJJe0.net
>>373
なにそれ?

383:デフォルトの名無しさん
17/11/15 00:05:46.61 De4EEM1x0.net
ロガークラスなんかだと
中で例外全部握り潰すけど
catch {}

384:デフォルトの名無しさん
17/11/15 00:06:23.35 iANpDJJe0.net
>>374
だから、ログ吐いて落とすって書いてあるだろ。
殆どの場合、例外を拾ったら落とすしかない。

385:デフォルトの名無しさん
17/11/15 00:10:28.88 pJdoypJN0.net
ダメだこいつら
話になんねー
あるべき論はいいからさっさとアプリ動かせよ
握りつぶして動くなら動くでいいだろ
メソッドの中身なんて3万行だか4万行だか読んでらんねんだよバカが
その全てでテキトーに例外発生させてんだから握りつぶしてナンボだろこんなの

386:デフォルトの名無しさん
17/11/15 00:11:54.55 De4EEM1x0.net
Office系は印刷中キャンセルボタン押しただけで
COMException投げてきたりするから
とりあえず握り潰すようにしている

387:デフォルトの名無しさん
17/11/15 00:12:29.08 2GqBFPwl0.net
DBはコミットしなければいいと思う。

388:デフォルトの名無しさん
17/11/15 00:20:37.66 iANpDJJe0.net
>>380
じゃ、メッソッドの呼び出しもと全部にcatch {}入れとけよ。

389:デフォルトの名無しさん
17/11/15 00:26:18.34 AeO6Jp1U0.net
例外で落としたくないプログラムってのはたしかに存在するけど
基本そんなプログラムをC#で書くのが間違ってると思うわ
例外処理のっていうときに、C#での(あるいは.NETでの)例外処理は、って言うようにしようぜ
つかまあこの話もう終わりで良いけど

390:デフォルトの名無しさん
17/11/15 00:26:49.27 2GqBFPwl0.net
ただまあ例外なんて滅多に出ないからね。

391:デフォルトの名無しさん
17/11/15 00:27:26.82 2GqBFPwl0.net
C++スレじゃないのか。

392:デフォルトの名無しさん
17/11/15 00:27:39.78 rNYxO5wL0.net
>>337
そのメソッドAが戻り値あり立った場合は?さらに外?それともヌル返す?

393:デフォルトの名無しさん
17/11/15 00:28:57.41 nkl9Qzh90.net
長々と無意味なレスバが続いてたけど、ひとつだけ皆が同意できそうなのは
例外がどういう用途で使われるべきかの一般的なコンセンサスに従う人は
ID:D89+JmTA0 = ID:pJdoypJN0 と一緒に仕事したくない、という点だけだな

394:デフォルトの名無しさん
17/11/15 00:30:13.38 2GqBFPwl0.net
異常は戻り値で知らせるなって言いたいんじゃないの。
まあそりゃそうだよねって言う。

395:デフォルトの名無しさん
17/11/15 00:57:36.26 ESiJAd3S0.net
ここc#スレで合ってるよね…

396:デフォルトの名無しさん
17/11/15 01:09:16.87 udlId46Ca.net
勘違いする人がいると見てられないので一応書いとくけど、
例外の目的の一つはフェイルセーフ、つまりプログラマの想定外のことが起こった時に
「安全側に倒す」 = 「プログラムを強制終了させる」ことなので、
「プログラマの想定外のことが起こってもプログラムの実行が止まらないようにしたい」
などという馬鹿なことを考えてはいけない。

397:デフォルトの名無しさん
17/11/15 01:35:57.65 pJdoypJN0.net
>>391
はぁ?
他の誰かのライブラリを使ったときに
使用者の想定内がライブラリ作成者の想定外のときなんて簡単に発生すんだろーがバーカ
テメーはちんちんでも弄ってろ

398:デフォルトの名無しさん
17/11/15 02:16:30.38 oUD9LeEe0.net
ここは間を取ってContractしよう

399:デフォルトの名無しさん
17/11/15 03:59:39.11 f4TQv9de0.net
>>331
誰もみてないだろうけど多分解決したっぽいので質問取り下げます
ほんとlinqって便利だな

400:デフォルトの名無しさん
17/11/15 06:34:16.49 iANpDJJe0.net
>>392
具体的には何のライブラリ?

401:デフォルトの名無しさん
17/11/15 08:15:52.85 M8NqkMX5d.net
>>395
キチガイに触んなすな

402:デフォルトの名無しさん
17/11/15 08:45:58.03 6LdVh8Top.net
>>394
LINQでどうやるの?

403:デフォルトの名無しさん
17/11/15 09:21:08.88 EAeU3mIh0.net
>>395
会社の
お前のレス
ガイジ過ぎるだろ
ちょっと考えてからレスしたら

404:デフォルトの名無しさん
17/11/15 09:39:52.81 tmuRT0930.net
ガイジコラボ

405:デフォルトの名無しさん
17/11/15 10:00:24.72 K3LG5GcrM.net
>>399
お前、単発だけど
連結するとガイジなんだろ?w

406:デフォルトの名無しさん
17/11/15 10:01:55.68 DCxsxqPWd.net
>>397
やりたいのは文字列じゃないけどこんな感じのイメージ
パフォーマンスはしらない
var list = new List<string>() { "○", "×", "×", "×" , "○", "△", "△", "○", "△" };
Func<string, bool> isFirst = (item) => item == "○";
int groupingId = 0;
var result = list.Select(item =>{
if (isFirst(item)) { groupingId++; }
return new { Id = groupingId, Value = item };
})
.GroupBy(pair => pair.Id, pair => pair.Value);
// { "○", "×", "×", "×"}{"○", "△", "△"}{"○", "△" }
List<List<string>> hoge = result.Select(group => group.ToList()).ToList();

407:デフォルトの名無しさん
17/11/15 11:14:21.87 LdCnvqY76.net
LINQと関数型プログラミングって何が違うの?

408:デフォルトの名無しさん
17/11/15 11:42:46.04 l4Bv56LcM.net
>>402
ガイジ乙

409:デフォルトの名無しさん
17/11/15 11:51:23.71 CJEkfJ7L0.net
>>401
畳み込みですやってみた。
var list = new List<string>() { "○", "×", "×", "×", "○", "△", "△", "○", "△" };
var isFirst = new Func<string, bool>((item) => item == "○");
var result = list.Aggregate(new List<List<string>>(), (prevList, item) =>
{
if (isFirst(item))
prevList.Add(new List<string>() { item });
else
prevList.Last().Add(item);
return prevList;
});
// resultからhogeにクローン
var hoge = (List<List<string>>)result.Select(group => (List<string>)group.Select(item => item));

410:デフォルトの名無しさん
17/11/15 12:03:19.06 RrK4s1ZI6.net
こっちの方がいいか。
var list = new List<string>() { "○", "×", "×", "×", "○", "△", "△", "○", "△" };
var isFirst = new Func<string, bool>((item) => item == "○");
var hoge = list.Aggregate(new List<List<string>>(), (prevList, item) =>
{
if (isFirst(item)) { prevList.Add(new List<string>() };
prevList.Last().Add(item);
return prevList;
});

411:デフォルトの名無しさん
17/11/15 12:05:06.75 RrK4s1ZI6.net
if (isFirst(item)) { prevList.Add(new List<string>() };
括弧ミスった

412:デフォルトの名無しさん
17/11/15 12:05:11.35 Tar4qvIud.net
Func<T,bool> を受け取るSplit関数定義した方が後で楽じゃね?

413:デフォルトの名無しさん
17/11/15 12:07:15.90 RrK4s1ZI6.net
確かにその方がスッキリするな。
いずれにしろsplitの中身を定義しないといけないけど

414:デフォルトの名無しさん
17/11/15 12:29:09.51 DCxsxqPWd.net
>>405
Agreegate余り使ったことなかったけど便利だな
こっちの方が綺麗だ
if (isFirst(item) ||prevList.Count>0)
書いてなかったけど、リストの先頭が〇とは限らないのでこんな感じで

415:デフォルトの名無しさん
17/11/15 12:35:31.31 MLdh1wBXM.net
Aggregateは宣言的でないので関数型に慣れたらむしろ読み辛く感じるようになる
考え方が実質的に手続き型だから、手続き型に慣れてる人には馴染みやすいので濫用されてしまいやすい

416:デフォルトの名無しさん
17/11/15 12:43:50.52 LdCnvqY76.net
関数型の典型的な関数みたいにバッ、バッって感じじゃなくてズィーンて感じだからか。
>>401のやり方だと使ってる関数はバッバだけ感じかもしれないけど外部変数使ってるから内外に絡み合ってるのがあれだけどどうすればいいんだろう

417:デフォルトの名無しさん
17/11/15 12:46:35.76 h8srGYM+0.net
Select/Aggregateなんて変な書き方せず素直にmap/reduceでいいのにな
SQLっぽくというコンセプトで台無しになってる感じ

418:デフォルトの名無しさん
17/11/15 12:48:32.27 LdCnvqY76.net
ズィーン→ズインッ→ズィッ→バッ
こう見れば畳み込みも関数型に馴染む

419:デフォルトの名無しさん
17/11/15 12:49:52.25 LdCnvqY76.net
>>412
まあこの場合ではSQLを扱ってるわけじゃないしな

420:デフォルトの名無しさん
17/11/15 12:54:47.35 l4Bv56LcM.net
関数にした方が見やすいじゃん
無駄に不具合出して喜ぶ低能過ぎる

421:デフォルトの名無しさん
17/11/15 13:11:40.68 DCxsxqPWd.net
確かに目新しさにおおーってなったけど、これただのforeachでいいな
やっぱシンプルにループさせるのが最強か
var result = new List<List<string>>();
list.ForEach(item => {
if (isFirst(item) || list.Count <= 0){
result.Add(new List<string>());
}
result.Last().Add(item);
});

422:デフォルトの名無しさん
17/11/15 13:14:41.39 MLdh1wBXM.net
var sep = list.Select((x, i) => new {x, i})
.Where(xi => xi.x == '○')
.Select(xi => new[] {'○'}.Concat(
 list.Skip(xi.i + 1).TakeWhile(x => x != '○')));
こうかな
関数作った方がいいのは同意する

423:デフォルトの名無しさん
17/11/15 14:15:45.67 1p9gbgPTa.net
上のお題、結果がIEnumerable<IEnumerable<string>>でいいなら、
var list = new List<string>() { "○", "×", "×", "×", "○", "△", "△", "○", "△" };
var index = 0;
var hoge = list.GroupBy(x => x == "○" ? ++index : index);
ではだめ?

424:デフォルトの名無しさん
17/11/15 17:26:29.53 7R79hyBA0.net
>>416
それ意味的にはaggregateと全く変わらない
初期値が外にあるか引数のところにあるかしか違いない

425:デフォルトの名無しさん
17/11/15 17:30:36.24 7R79hyBA0.net
>>417
それaggregateより読みやすいと思うか?

426:デフォルトの名無しさん
17/11/15 17:40:07.85 7R79hyBA0.net
>>418
その型じゃダメでしょ。

427:デフォルトの名無しさん
17/11/15 18:02:02.20 1p9gbgPTa.net
>>421
過去ログろくに読まずに>>418書いたけど、質問者もGrouBy使ってるじゃん>>401

428:デフォルトの名無しさん
17/11/15 18:04:09.97 uxhVFwQf0.net
>>422
変換しろよ
その分だけコード長くなるぞ

429:デフォルトの名無しさん
17/11/15 18:09:17.28 1p9gbgPTa.net
>>423
何に変換するの?
元々の質問には最終的に欲しい型の指定はない
単に列挙できれば良いならIEnumerable<IEnumerable<string>>として扱えれば十分

430:デフォルトの名無しさん
17/11/15 18:38:01.15 AeO6Jp1U0.net
いつも思うんだが、この手のやつをLINQでやりたがるやつって何が目的なんだろ
自分ですらすらと書けるならLINQでいいけど、そうじゃないなら勉強以上の意味があるとは思えん
個人的にはシンプルさを競うなら>>418がいいと思う
戻りの型が気に食わないなら
.Select(t => t.ToList<string>()).ToList<List<string>>();
あたり追加すればいいだろ

431:デフォルトの名無しさん
17/11/15 18:40:53.79 EAeU3mIh0.net
こんなのやっててきったねーコード書く癖がついたら嫌だなw

432:デフォルトの名無しさん
17/11/15 18:46:37.59 iCpU6Box0.net
お前らが思ってる程きれいでもきたなくもないから安心しろ

433:デフォルトの名無しさん
17/11/15 18:49:57.02 rNYxO5wL0.net
おい!待望の独習C#新版がでるみたいだぞ!

434:デフォルトの名無しさん
17/11/15 18:56:00.52 SIgrthm30.net
>>425
変数や関数を定義するのにいちいち名前をつけるのが面倒だからよく使う
無名だらけ

435:デフォルトの名無しさん
17/11/15 18:56:47.00 SIgrthm30.net
関数を定義するときには場所にも悩むしな

436:デフォルトの名無しさん
17/11/15 19:00:28.04 DCxsxqPWd.net
>>418
Selectなくても大丈夫だったか
hogeのGetEnumeratorが呼ばれる度にindexが増えていくのが気になるけど
戻り値はIEnumerableでもIGroupingどっちでもいいけどkeyは隠すかも
もし必要になったら以下のメソッドを作って、foreachと速度比較してって採用するかどうかって感じかな
色々と参考になった
public static IEnumerable<IEnumerable<string> Split<T>(IEnumerable<T> source, Func<T, bool> predicate){
var index = 0;
return source.GroupBy(x => predicate(x) ? ++index : index);
}

437:デフォルトの名無しさん
17/11/15 19:05:07.59 JCFmpBxh0.net
俺嫌われすぎだろ
アスペルガー症候群だから仕方ないのか

438:デフォルトの名無しさん
17/11/15 19:06:53.89 LdCnvqY76.net
スリップが****-7wKgのは全部ワシじゃ

439:デフォルトの名無しさん
17/11/15 19:46:43.95 h8srGYM+0.net
linqより何でもListにしないと心休まらない兄貴の方が重症かもな

440:デフォルトの名無しさん
17/11/15 19:57:17.06 rGQqr4VZr.net
>>434
ww
現場にもよくいる

441:デフォルトの名無しさん
17/11/15 20:39:25.83 ILed194Q0.net
>>428
ここにいる人らにはもう必要ない

442:デフォルトの名無しさん
17/11/15 20:42:42.91 4QHQX7jw0.net
>>434
アカンか?

443:デフォルトの名無しさん
17/11/15 21:21:02.68 EAeU3mIh0.net
linqだからで許されてるクソコード延々貼り付けたガイジはさっさと死ねよ

444:デフォルトの名無しさん
17/11/15 21:25:59.97 md1eodvT0.net
LINQが良いか悪いかは別にしてLINQを必要以上に毛嫌いする奴って頭悪いだけだろ。

445:デフォルトの名無しさん
17/11/15 21:34:02.77 EAeU3mIh0.net
>>439
今回のは普通に書いた方が綺麗だったよね?

446:デフォルトの名無しさん
17/11/15 21:34:15.53 O2CkROvj0.net
ここ数日の有り様は何なんだろう
C#養護学校の卒業式でもあったのかね

447:デフォルトの名無しさん
17/11/15 21:35:20.82 EAeU3mIh0.net
linq友の会スレ使えよガイジ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch