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

レス数が1000を超えています。これ以上書き込みはできません。
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
2デフォルトの名無しさん (ワッチョイ 2ee8-zAbU)
垢版 |
2017/11/07(火) 22:06:49.52ID:cTk2bFo+0
2017/11/07(火) 22:38:29.65ID:h1H7Fbnm0
2017/11/07(火) 22:53:03.49ID:6NdbJPOz0
5デフォルトの名無しさん (ワッチョイ 2ee8-zAbU)
垢版 |
2017/11/07(火) 23:17:05.39ID:cTk2bFo+0
開発になんのフォント使ってる?
2017/11/07(火) 23:29:09.05ID:bwe89n7Ka
男は黙ってCourier New
7デフォルトの名無しさん (ワッチョイ 0676-9Rqp)
垢版 |
2017/11/07(火) 23:37:30.45ID:mi3cUHZI0
前スレでリストの抽象化に関して聞いた者ですが
もう少し整理して説明すると下記のコードの"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>();
}
}
2017/11/07(火) 23:52:09.22ID:bwe89n7Ka
>>7
直接的な答じゃないけど、どうしてC#の(っていうか.NETの)配列の共変が
批判されてるかを理解してからその問題をもう一度考えた方がいいんじゃないかな
http://ufcpp.net/study/csharp/sp4_variance.html?p=2
9デフォルトの名無しさん (ワッチョイ e58a-cDlW)
垢版 |
2017/11/08(水) 00:15:38.90ID:anngrWrU0
>>7
いまいち意味不明なんだが、同じリスト型で管理したいクラスってことは
それぞれis-a関係になる共通の継承元があるはずだろ?

class Hoge : 共通の型 {...}
class Fuga : 共通の型{...}

var List<共通の型> = new List<共通の型>();

でダメな理由がわからん
これで「HogeとFugaを抽象化した型」のリストができるだろ?

リストその物の抽象化って話なら、List<T>がそのものズバリなんだから、
何を言いたいのか理解できてない
せめて用途を説明してくれ
10デフォルトの名無しさん (ワッチョイ e58a-cDlW)
垢版 |
2017/11/08(水) 00:20:45.56ID:anngrWrU0
>>9
あ、変数名抜けてた
11デフォルトの名無しさん (ワッチョイ 2ee8-BQiS)
垢版 |
2017/11/08(水) 00:40:48.04ID:CLyn8lVQ0
みんなListList
Dictionaryのがいいよ
2017/11/08(水) 06:04:51.80ID:Kp5qntjW0
>>11
キー重複できなくない?
2017/11/08(水) 07:02:24.37ID:d89kNCGzr
何がやりたいか(目的)を書いた方が良いと思うよ

未だ意図不明だけど
System.Collections.ArrayList
が望みのもの?
2017/11/08(水) 21:22:35.00ID:+tPWiI0Ta
>>7
それが実現できても何の得もないよ

IList<object>にして突っ込めばいいけどそれで何の意味があるんだか
2017/11/08(水) 21:40:52.71ID:370P83AX0
ふらっとあるある
万能クラスをListに突っ込んで俺すげー
2017/11/08(水) 22:18:42.71ID:kPo1IP0w0
プロパティについて教えてください
setとgetが呼び出されるタイミングがよくわかりません
以下のようなコードがあったとしてsetが呼び出されるのはTestに値が代入された時という理解で合っていますか?
getはsetが呼び出されると自動的に呼び出されるというようなぼんやりした理解なのですが正しいでしょうか?

またgetだけが呼び出されるケースもあると資料で見たのですがそれはどのような使い方をした時なのでしょうか?
初歩的な質問で申し訳ありませんがよろしくお願い致します

Private int test
Public int Test()
{
set {
test= value;
}

get {
return test
}
}


public void Main()
{
Test=100;
}
2017/11/08(水) 22:19:45.50ID:kPo1IP0w0
>>16
すいません
iPhoneから書いたのでコードを上手く書くことが出来ていません
2017/11/08(水) 22:31:13.66ID:rbcWTqbu0
get setの中にConsole.WriteLineでも書いてみたら分かるよ
2017/11/08(水) 22:43:50.87ID:B6KPAK+i0
もしくはステップ実行するとか
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にはあったはず。この車輪では駄目なのか。
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
マ板並みの見苦しさ
2017/11/12(日) 11:27:55.80ID:/Gc52cuR0
http://tercel-tech.hatenablog.com/entry/2015/04/29/181723

こちらの方のコードを参考に電卓の自動化を試みてるのですが、

mainForm = AutomationElement.FromHandle(process.MainWindowHandle);
のところでエラーが出ます。

型 'System.InvalidOperationException' のハンドルされていない例外が System.dll で発生しました
追加情報:プロセスは終了しているため、要求された情報は利用できません。

何が原因でしょうか?
2017/11/12(日) 11:34:37.51ID:a3dJlCt1a
>>147
そのページの同じコード動かしてそうなるのか?

メッセージだと電卓が終了してると言ってるけど
2017/11/12(日) 11:41:43.01ID:VwNKZEQ+0
>>147
電卓("calc")が起動しているか
デバッガでprocessがnullになっていないか
をそれぞれ確認
全部こっちで確かめるのはめんどうなので例えば
Thread.Sleep(DEFAULT_WAIT_TIME);
の部分を
while(process=null){Thread.Sleep(DEFAULT_WAIT_TIME);}
と書き換えてみるとか。いい加減な方法だからデバッグ時以外に勧めないが
2017/11/12(日) 11:44:54.16ID:VwNKZEQ+0
ヤバい
while(process==null){Thread.Sleep(DEFAULT_WAIT_TIME);}
だったw
2017/11/12(日) 11:52:22.18ID:/Gc52cuR0
自分の環境はwin10で以前までと仕様が違いますよね。
それが原因かもしれません。
電卓のウィンドウハンドルを直接指定してやったら正常に動きました。
ここの方は親切ですね^^
頑張りたいと思います。
152デフォルトの名無しさん (ワッチョイ ffe8-ueqH)
垢版 |
2017/11/12(日) 12:15:13.20ID:j8Tzb3u50
実行してもフォームが固まらないアプリって全部にDoEventsが入ってるわけなん?
メッセージキューは排他のために処理待ちになるん
2017/11/12(日) 12:21:08.98ID:WcVSvCUs0
>>152
非同期処理してるだけだろw
2017/11/12(日) 12:23:38.91ID:SMejQ9Z40
>>152
重い処理は別タスク(スレッド)を作って、UIから分離する。
2017/11/12(日) 12:26:44.13ID:ArqlQl8r0
そいつ金曜日のキチガイだぞ
156デフォルトの名無しさん (ワッチョイ ffe8-ueqH)
垢版 |
2017/11/12(日) 13:00:56.85ID:j8Tzb3u50
>>154
さんきゅ
2017/11/12(日) 13:40:23.32ID:Y9bMvc7C0
キチガイばっかりじゃねーか!
2017/11/12(日) 14:51:20.87ID:/Gc52cuR0
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);

保護されていないメモリがどうの出てエラーになりますが何がいけないのでしょうか?
2017/11/12(日) 14:54:28.47ID:Y9bMvc7C0
戻り値
2017/11/12(日) 14:54:56.10ID:/Gc52cuR0
c♯側のvoidがintになってましたが記述ミスです><

エラー内容は正確には
ハンドルされていない例外: System.AccessViolationException: 保護されているメモリに読み取りまたは書き込み操作を行おうとし ました。他のメモリが壊れていることが考えられます。
2017/11/12(日) 15:01:26.20ID:zx9GAR9XM
std::stringはマーシャリングできない
C++側でchar*を受け取るラッパーを用意してやる必要がある
C++/CLIもあるけど完全に死んだ技術だからお勧めできない
2017/11/12(日) 15:09:12.05ID:e5xLDhIK0
>>161
>C++/CLIもあるけど完全に死んだ技術だからお勧めできない

死亡宣言されてるの?
2017/11/12(日) 17:07:08.00ID:74EZy0fea
>>162
確かそうだよ
メンテナンスされてないから使うなって言われてる
2017/11/12(日) 18:00:59.99ID:ZC7erpT70
>>163
C++/CLIの件
たまに使うから気になる
ソースか検索キーワードプリーズ
2017/11/12(日) 18:26:13.27ID:/VKzDrV00
フォームアプリの新規作成は推奨しないってアナウンスはあるんで、それのことじゃないかな。
https://support2.microsoft.com/kb/3001686

C++/CLIそのものはまだサポートされてると思う。廃止されたのはマネージ拡張。
マネージ拡張からC++/CLIへの移行ドキュメントとか、比較的最近の日付でメンテナンスされてるし。
2017/11/12(日) 18:32:26.38ID:ZC7erpT70
>>165
ありがとう
フォームアプリで使うな、なら納得
2017/11/12(日) 18:59:33.96ID:yKCfx7dw0
C++/CLI捨てるわけねーだろ
2017/11/12(日) 19:11:39.89ID:MOg5phwx0
>>167
むしろ維持する意味がわからんが w
2017/11/12(日) 19:29:05.48ID:e5xLDhIK0
>>168
c/c++のライブラリをラッピングするためにある。
2017/11/12(日) 19:30:38.51ID:j0JK3XOeM
http使ったほうがいいよ
今はもうネイティヴコールする時代じゃない
2017/11/12(日) 19:35:01.10ID:MOg5phwx0
>>169
別にC++/CLIなんて要らんだろ
2017/11/12(日) 19:40:46.39ID:/VKzDrV00
C++/CLIって、なぜか使ったことなさそうな人にやたら叩かれるよねぇ。
自分に必要なけりゃスルーしとけばいいのに、わざわざ「要らない」アピールするのが謎だ。
2017/11/12(日) 19:55:44.38ID:MOg5phwx0
>>172
ん?
人の意見を聞きたくないなら掲示板なんて見なきゃいいと思うぞ
2017/11/12(日) 19:56:59.33ID:Y9bMvc7C0
>>172
こういうアピールしちゃうのも謎だよね
2017/11/12(日) 20:01:12.65ID:yKCfx7dw0
>>171
今からの世代はいらないかも知れないが、今までの世代は必要なんだわ。

過去遺産の再利用でしかないがね
2017/11/12(日) 20:14:47.79ID:MOg5phwx0
>>175
だからMSも力入れてない(2008の時代はインテリセンスすら使えなかった)し、そろそろ打ち止めってことかと
2017/11/12(日) 20:25:03.86ID:e5xLDhIK0
>>170
ApacheもNginxもGoogle V8もLinuxもc言語なんだが。
サーバサイドのサービスもc言語のもあるだろ。
178デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/12(日) 20:32:44.51ID:bU5Cj3UO0
>>170
急に飛躍しすぎ
2017/11/12(日) 20:41:06.51ID:3TYzHs9Ed
>>177
過去のもの過ぎwww「今」の話題にそれはどうかと思うぞ
2017/11/12(日) 20:52:36.78ID:e5xLDhIK0
>>179
そうか、NginxもGoogle V8も過去のものなのか
時代は変わったな。
181デフォルトの名無しさん (ワッチョイ 5fb3-ouqv)
垢版 |
2017/11/12(日) 21:09:15.54ID:H0u2BwIs0
まあ最新技術はPythonやPHPで実装される時代だしな。
2017/11/12(日) 21:32:32.26ID:j0JK3XOeM
>>177
dotnet関係ないじゃん
Cが要らないんじゃない
相互運用が要らない
183デフォルトの名無しさん (ワッチョイ 5fb3-ouqv)
垢版 |
2017/11/12(日) 21:44:46.58ID:H0u2BwIs0
いや、Cは要らないだろ。
Pythonが有れば何でもできる。
2017/11/12(日) 21:47:59.87ID:VOtI22LEa
ダーッ
って猪木かっ
2017/11/12(日) 22:11:19.90ID:BZnXPKY7d
0以上10未満のdouble値の乱数5個標準出力したい
186デフォルトの名無しさん (ワッチョイ 5fe9-vLjR)
垢版 |
2017/11/12(日) 22:14:51.64ID:uWcm4jWJ0
String testid= "ABCD" + ".text";

このABCD.textっていう中身は"テスト"っていう文字列が入ってるとします。
でも、testidの中には”ABCD.text"が設定されるのですが、
どうすれば"テスト"という値が入るのでしょうか。

ABCD.textはtextviewで"テスト"という文字をあらかじめ設定しています。
2017/11/12(日) 22:29:14.34ID:Y9bMvc7C0
stringの識別子名を中身に変換したいって?
そんな方法はないです
188186 (ワッチョイ 5fe9-vLjR)
垢版 |
2017/11/12(日) 22:34:55.34ID:uWcm4jWJ0
下記の引数でアクセスすると、上記は期待値が入るのですが、
下記のtestidを指定するとおもった結果となりません。
しかし、ABCD.textといった風に直接指定するのではなく変数か何かで間接的に指定したいと思っております。

関数(ABCD.text);
関数(testid);
2017/11/12(日) 22:36:08.48ID:Y9bMvc7C0
デリゲートを渡すのはどうか
2017/11/12(日) 22:37:37.16ID:aoPluejS0
>>188
テキストボックスを変数みたいに扱いたいって言ってるのか?
2017/11/12(日) 22:42:23.71ID:aoPluejS0
c#だとポインタなくなったから
んなことできないんだよね
2017/11/12(日) 22:52:01.90ID:VOtI22LEa
何言ってるのかさっぱり分からんw
ABCD.textって何ぞねw
2017/11/12(日) 22:53:27.72ID:aoPluejS0
>>192
多分テキストボックスのtextプロパティ
2017/11/12(日) 22:56:45.91ID:Y9bMvc7C0
ABCDというidが付けられたTextView(Xamarin/Androidのlabel)
のtextプロパティに"テスト"という文字列が設定されている

これを何らかの方法で文字列で指定して取りたい
2017/11/12(日) 23:00:49.49ID:VOtI22LEa
>>193
なるほどww

言語能力とプログラミング能力に関連があるって考えに俺は懐疑的だったけど
やっぱり関係が深いのかもしれないねw
2017/11/12(日) 23:04:37.50ID:aoPluejS0
>>194
無理じゃね?
本当は何がやりたいん?
197デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/12(日) 23:17:26.10ID:bU5Cj3UO0
>>194
ググればすぐでてくる
https://qiita.com/tokishirazu/items/66a25331d4c78980366e
2017/11/12(日) 23:25:24.74ID:eFe5AqQqM
>>197
やめろ
糞プログラマが量産される
2017/11/12(日) 23:36:13.84ID:WcVSvCUs0
>>195
それを理解するには十分な例だったなw
2017/11/12(日) 23:37:57.60ID:eFe5AqQqM
>>186
"ABCD" + ".text"してるなら
testidの中身はやはり "ABCD.text"です
ただの文字列です
それが勝手に”テスト”になってたら怖いし不便です
プログラムしてて予測がつきませんので"ABCD.text"のままでいるほうが安心です

"ABCD.text"からABCD.textにできる言語もありますが
C#は基本的にそういうのはやらない方向でプログラムするべきです
2017/11/13(月) 00:09:08.69ID:rsYvFHCwr
全然推測できんw

まさかこう言う事?
string testid= ABCD.text;
2017/11/13(月) 00:11:27.37ID:nr7xz/FC0
ダックタイピングする言語じゃないからね
2017/11/13(月) 00:25:51.01ID:KiX40CjjM
>>188
変数に入れたいならtextview型の変数を作っておいてそこに入れよう

textview target = ABCD;

関数(target.text);
2017/11/13(月) 00:26:26.95ID:rsYvFHCwr

string testid = File.ReadLines("ABCD.text");
????
205デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/13(月) 00:31:47.43ID:sn+CO+UA0
>>186
String testid= "ABCD" + ".text";
じゃなくて

String testid=ABCD.text;
2017/11/13(月) 00:36:09.38ID:KiX40CjjM
脳のテストみたいだな
理解できるものだけ理解してる
出来ない人は変なレスしてる
207デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/13(月) 00:38:07.10ID:sn+CO+UA0
答えはリフレクションだろ?
2017/11/13(月) 01:06:43.08ID:8PrajDy/0
初心者がやりたがることとしては定番だろう
そんなに意外性はない
209デフォルトの名無しさん (ワッチョイ df8a-KLCy)
垢版 |
2017/11/13(月) 01:41:09.93ID:v8HXsfBj0
>>208
は?
2017/11/13(月) 02:07:05.43ID:c1Jq4ATj0
>>185
var rand = new Random();
for (var i = 0; i < 5; i++) Console.WriteLine(rand.NextDouble() * 10.0);
2017/11/13(月) 12:29:38.53ID:JPipM5yVd
Controls.OfType<TextBox>().First(c => c.Name == "ABCD").Text
2017/11/13(月) 16:41:04.48ID:KG3ltkXj0
昨日DLLについて質問したものです。
おかげさまでとりあえずやりたいことが実現できました。
C♯からも呼び出せるマクロです^^

電卓とメモ帳を自動操作
http://fast-uploader.com/file/7066114303960/
2017/11/13(月) 17:00:21.29ID:5C1yWWLzM
parallelの中で更にparallelするとどうなりますか?
2017/11/13(月) 17:19:10.80ID:3aIhrZk00
CPUの数だけでパラってあとは順番待ち?
2017/11/13(月) 17:48:55.95ID:c1Jq4ATj0
超Parallelになる
216デフォルトの名無しさん (ワッチョイ ff7f-OWtR)
垢版 |
2017/11/13(月) 18:28:32.97ID:SvVWerXL0
プリミティブな配列
例えばstring[]とかってシリアライズ出来ましたっけ?
2017/11/13(月) 19:09:21.17ID:M6weAJAZM
どんなシリアライザ使うのかもわからんのに答えようがないが
まあそれをシリアライズできないシリアライザはまずないだろうな
218デフォルトの名無しさん (スププ Sd9f-KLCy)
垢版 |
2017/11/13(月) 20:26:35.00ID:WRqgiOAAd
>>188
致命的に説明が下手か何も理解してないかのどっちかだと思う
下手に一般化するより今書いてるコードにコメント書いてそのまま晒した方がマシ
219デフォルトの名無しさん (ワッチョイ 7f7f-OWtR)
垢版 |
2017/11/13(月) 21:09:23.39ID:K5+qKqcP0
>>217
ありがとうございます
2017/11/13(月) 21:18:38.99ID:hP7f8JAdd
asynctaskの中でhttpによるデータ取得して取得したデータを戻り値で返す処理を作成しました。
同時にexceptionによる詳細なエラー内容も戻り値として返したいのですが、どのようにすればよいでしょうか?
戻り値が2つできないので困っております。又、戻り値の型は違います。
2017/11/13(月) 21:22:56.43ID:9NHQYSXO0
>>220
その2つをプロパティとして持つ型をつくる
2017/11/13(月) 21:23:06.80ID:qa5qRZI10
>>220
戻り値二種のValueTuple返せば良いんじゃないの
2017/11/13(月) 21:32:13.09ID:3DwKtl+Id
>>222
WebAPIっぽいし、Tupleだとシリアライズした時にItem1、Item2ってなっちゃわない?
2017/11/13(月) 21:33:28.45ID:3DwKtl+Id
あ、読み違えてたかもゴメン
225デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/13(月) 21:38:36.94ID:sn+CO+UA0
>>220
エラーオブジェクトに応答とその他情報突っ込んでthrow
2017/11/13(月) 22:01:26.37ID:qSvbvuzsa
>>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; }
}
2017/11/13(月) 23:32:00.25ID:1k/7dsAB0
>>220
>同時にexceptionによる詳細なエラー内容も戻り値として返したいのですが

例外throwすれば良いだけでは?
2017/11/14(火) 01:18:02.74ID:Rbk2zOBm0
正常時は別の戻り値、異常時はthrow?で戻り値の型に合った内容が、
格納されるのでしょうか。
呼び出し元で、どのように取り出せばよいのでしょうか。
229デフォルトの名無しさん (ワッチョイ 5f75-7wKg)
垢版 |
2017/11/14(火) 01:28:44.28ID:Xx2aI1jk0
>>228
エラー処理で検索
2017/11/14(火) 01:36:41.11ID:Rbk2zOBm0
いろいろお教えいただいているのですが、
http://www.nowonbun.com/2016/06/c-trycatchthrowfinally.html#!
↑のようなHPとかthrow とかエラー処理で検索しても
戻り値に入れて、それを呼び出し元でどのように見ているのかいくら探してもでてきません。。

try,catchとかでコンソールにエラー内容出力のことではないですよね。。
2017/11/14(火) 01:36:47.07ID:sw4py9T60
「c# 例外」で検索!
2017/11/14(火) 01:43:50.50ID:sw4py9T60
例外と例外処理
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/exceptions/index

try 内で、throw すれば、catch で補足できる。
throw した例外クラスが、catch の引数に渡ってくる。
以下の e

catch (例外クラス e)
233デフォルトの名無しさん (ワッチョイ 5f75-7wKg)
垢版 |
2017/11/14(火) 01:44:37.90ID:Xx2aI1jk0
関数内で例外をキャッチして新しくException オブジェクト作ってそのInner
Exception にキャッチした例外オブジェクトを突っ込んで作った例外オブジェクトのDataプロパティに返したたいデータ突っ込む
それをthrowして呼び出し元でキャッチしてDataプロパティから取り出す
2017/11/14(火) 01:54:03.16ID:KYSlLmBD0
>>233
新しくExceptionオブジェクト作るなアホか
235228 (ワッチョイ 5fe9-vLjR)
垢版 |
2017/11/14(火) 01:59:34.75ID:Rbk2zOBm0
皆さまありがとうございます。いまださっぱりわからないので出直してきます。。
ありがとうございました。

try catchでcatchのとこにエラー情報が入る?まではわかったきがするのですが、
再スローとかInnerExceptionになるとさっぱりでした。

下位の呼び出し先のエラー情報を上位の呼び出し元にthrowすれば戻り値関係なく渡せるといった感じなのでしょうか。。
サイトみててもそうはどうやってもみえなかったのです。
2017/11/14(火) 02:08:30.45ID:n7fEU+IFd
>>233
意図的にExceptionのインスタンスを作ってスローするのは間違い
SystemExceptionやNullReferenceException、IndexOutOfRangeExceptionも同様
2017/11/14(火) 02:11:41.66ID:L0+XEUiLa
悪口言うつもりはないけど例外の使い方も知らないのに非同期に手を出すとか
順番がおかしいと思うw
2017/11/14(火) 02:12:51.73ID:L0+XEUiLa
>>236
そんなのケースバイケースでしょう。
一概に間違いだとする理由がない。
そういうのを教条主義という
2017/11/14(火) 02:17:16.73ID:VqdZ1M78d
>>238
Microsoft自身がやめろって言ってんのに、わざわざそれに反することをするのはアホ
2017/11/14(火) 02:18:50.68ID:KYSlLmBD0
>>238
c#の例外について少しでもかじったことがあるのならば、アンチパターンだと知ってるはず
2017/11/14(火) 02:20:03.11ID:L0+XEUiLa
>>239
そんなこと言ってる?
言うわけないと思うが仮にそうでも合理性がなければ従う理由もない。
「なぜ」を問わずに盲従する奴こそアホだ
242デフォルトの名無しさん (ワッチョイ 5f75-7wKg)
垢版 |
2017/11/14(火) 02:22:37.27ID:Xx2aI1jk0
>>236
どういうこと?
Exception派生クラスの中から適切なものを選ぶってこと?
それともキャッチした例外オブジェクトにデータを付加するの?
2017/11/14(火) 02:24:17.15ID:NHaW+CLNd
>>241
基本中の基本https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/exceptions/creating-and-throwing-exceptions
2017/11/14(火) 02:25:47.16ID:KYSlLmBD0
>>241
なぜ言うわけ無いと思ったのか説明してごらん
2017/11/14(火) 02:26:51.36ID:L0+XEUiLa
>>243
そんなことどこにも書いてないどころか>>233と同じことをやってる例が出てるけどw
本当にちゃんと読んだ?w
2017/11/14(火) 02:27:34.33ID:L0+XEUiLa
>>244
現に言ってないねw
>>243をちゃんと読んでごらん
そんなことどこにも書いてない
2017/11/14(火) 02:31:42.57ID:WLqSYvBrd
>>245
ちゃんと読めよカスwww

>自作のソース コードからは、意図的に System.Exception、System.SystemException、System.NullReferenceException、または System.IndexOutOfRangeException をスローしないでください。
2017/11/14(火) 02:32:24.83ID:KYSlLmBD0
>>246
日本語のドキュメントなのに読めないとか
249デフォルトの名無しさん (ワッチョイ 5f75-7wKg)
垢版 |
2017/11/14(火) 02:33:31.14ID:Xx2aI1jk0
なんでスップ2つ+固定回線で自演してるの?
2017/11/14(火) 02:34:47.54ID:L0+XEUiLa
>>247
言っちゃわるいけど、君の読解力がおかしいことはよくわかった。

その一文のどこをどう呼んでもキャッチした例外をInnerExceptionに入れて
別の例外を投げてはいけない、などという意味には読めません
2017/11/14(火) 02:36:25.31ID:WLqSYvBrd
>>250
読解力がないのはお前。否定してるのはExceptionクラスのインスタンスをnewしていること。
2017/11/14(火) 02:38:38.93ID:L0+XEUiLa
しかし、

>自作のソース コードからは、意図的に System.Exception、System.SystemException、System.NullReferenceException、または System.IndexOutOfRangeException をスローしないでください。

これ、前者2つがダメな理由は分かるけど後者2つはかなり意味不明だね。
翻訳ミスを疑ったけど英語でもそうなってる。
これはさすがに盲従する奴はアホだと思う
2017/11/14(火) 02:40:17.14ID:WLqSYvBrd
>>252
本気で言ってる?同じ疑問を持つ人はいるみたいだから少しググれば出てくるけど
https://stackoverflow.com/questions/22453650/why-are-we-not-to-throw-these-exceptions
2017/11/14(火) 02:41:11.99ID:L0+XEUiLa
>>251
普通に読めば>>233に出てくるExceptionとは限定的にExceptionクラスだけを
指しているとは読めない
2017/11/14(火) 02:45:47.13ID:WLqSYvBrd
>>254
あんな質問してくる初心者に「新しくExceptionオブジェクト作って」と言えば、「new Exception()」するだろうよ
ところで、>>253を少しは読んだのかい?
2017/11/14(火) 02:46:50.86ID:L0+XEUiLa
>>253
なるほど、NullReferenceExceptionの方は一応回答者が理由出してるけど
もっと明示的な例外の方が良いから使うなというには弱いように感じるね。

IndexOutOfRangeException の方は使っちゃダメな理由出てないね
2017/11/14(火) 02:47:11.28ID:KYSlLmBD0
>>254
勉強になって良かったね
2017/11/14(火) 02:47:35.87ID:L0+XEUiLa
>>255
それ、じゃあ自分なら何て表現するか考えてから言ってる?
2017/11/14(火) 02:48:14.13ID:L0+XEUiLa
>>257
「よっしゃ、今日はこのぐらいにしといたるわ」 by 池乃めだか
2017/11/14(火) 02:48:46.66ID:WLqSYvBrd
>>256
出てるからちゃんと読みなさい
2017/11/14(火) 02:49:29.79ID:L0+XEUiLa
>>260
出てないって
出てるなら引用してみ
2017/11/14(火) 02:50:04.51ID:WLqSYvBrd
>>261
煽って探してもらおうとするクズ
2017/11/14(火) 02:50:53.16ID:KYSlLmBD0
>>256
ほんとドキュメント読めない人なのね
2017/11/14(火) 02:56:20.70ID:L0+XEUiLa
>>263
君、そういうくだらないレスしかできない自分が嫌にならないの?
絵に描いたような「精神勝利法」だけど、そんなので勝った気になれるって小学生かよ。
俺ならプライドがあるからやらないけど、きっと傷つくような自尊心なんて最初から持ってないんだね
2017/11/14(火) 02:59:16.44ID:KYSlLmBD0
>>264
初心者ならもっと謙虚になりなさい
266デフォルトの名無しさん (ワッチョイ 5f8a-KLCy)
垢版 |
2017/11/14(火) 05:35:40.63ID:e8+qL+KH0
>>264
久々にみた気持ちの良いブーメラン
親切に教えてもらっても意固地になる人って職場にも一人はいるよね
2017/11/14(火) 06:55:43.62ID:sSxxq2Sz0
例外処理が難しすぎるのか例外処理を分かってないヤツが多すぎる。
Go言語が例外処理を言語仕様からはずしたのも納得できるな。
2017/11/14(火) 06:57:50.52ID:sSxxq2Sz0
>>237
非同期とか使わないでも実装出来るものを非同期にするとか
ロックの仕組みも分かってないのにスレッド使うとか
スキルの無いヤツほど難しい事をやりたがるwww
2017/11/14(火) 07:11:13.47ID:R9xQaEyZM
プロパティだけのデータストア用インナークラスを作ってるんですけど、クラスの修飾子をprotectedにして中のプロパティをpudlicにしています
メンバの方がアクセス権が広い事に違和感を感じるのですが世間様ではある事なのでしょうか
2017/11/14(火) 07:41:12.60ID:kBR8KFzeM
>>269
クラスもパブリックにしよう!
271デフォルトの名無しさん (ワッチョイ 5f4b-7wKg)
垢版 |
2017/11/14(火) 08:09:47.71ID:sF+2jjEu0
>>267おまえなら>>220にどう対処する?
2017/11/14(火) 08:27:49.82ID:04qZtOw+0
>>269
クラスがprivateの場合はメンバの方を広くするしかないんだからそれ自体はおかしくない
クラスがinternalでメンバがpublicというのはよくある
でもprotectedな内部クラスというのはそもそもあまり一般的ではないと思う
クラスの外にその内部クラスを使うユーティリティを定義したくなったらどうする?
紛らわしくて不便なだけで特にメリットがない
2017/11/14(火) 08:29:03.55ID:04qZtOw+0
補足
(派生クラスを作ろうとした人が)クラスの外にその内部クラスを使うユーティリティを定義したくなったらどうする?
という意味な
2017/11/14(火) 08:49:01.70ID:bKDw6GK5M
>>271
おそらく、HttpClientを使ってるんだろうけど
async/awaitの例外処理には罠がありそうなので
グーグル先生にお伺いをして慎重に例外処理を使う。
275デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 09:09:39.51ID:HdsegbLs6
>>274
同期だったとしてどうする?
2017/11/14(火) 09:10:12.07ID:ElF9INq6r
>>220
HaskellのEither辺りを自分で実装w
探せば出てくるが

今時例外はあまり使わんね
時と場合によるが
277デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 09:11:01.60ID:HdsegbLs6
>>276
サーバーに接続出来なかったらどうする?
2017/11/14(火) 09:13:48.16ID:ElF9INq6r
>>277
接続出来ない旨のLeftを返す
279デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 09:15:00.68ID:HdsegbLs6
>>278
レフトとか知らないけど例外でよくね?例外がダメ理由は?
2017/11/14(火) 09:22:41.57ID:bKDw6GK5M
>>275
敵艦に突っ込んで玉砕だな
281デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 09:32:31.86ID:HdsegbLs6
>>280
呼び出し関数内で何かしらのデータを作ったとしてそれはどうやって呼び出し元に伝達する?
2017/11/14(火) 09:39:13.23ID:bKDw6GK5M
>>281
何のデータの場合?
2017/11/14(火) 09:40:53.91ID:/dr35bqC0
暇な奴だ
284デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 09:41:26.10ID:HdsegbLs6
>>282
404のレスポンスボディとか
2017/11/14(火) 09:47:33.77ID:bKDw6GK5M
>>284
例外で帰ってくるやつか?
そらなら呼び出し元でcatchだね
286デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 10:00:57.46ID:HdsegbLs6
例外処理は汚くなるからイベントハンドラとかみたいな呼び出し階層の最上位にだけに集約させたいってこと?
2017/11/14(火) 10:06:00.72ID:bKDw6GK5M
>>286
汚くさせないためにあるのが例外処理だろ?
例外を放置すりゃ呼び出し最上位まで飛んでいくが。
288デフォルトの名無しさん (ワッチョイ 5fb3-ouqv)
垢版 |
2017/11/14(火) 10:11:37.55ID:NRM6wS+d0
存在しないリソースを要求するだけで例外を引き起こせるなら。
289デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 10:23:21.54ID:HdsegbLs6
>>267>>276が何を言いたいのかわからん
2017/11/14(火) 12:12:12.09ID:5gpUPtII0
>>233
Exception派生オブジェクト
って書いとけばそれで済んだ話だと思うんだが
よくもりあがってるな
2017/11/14(火) 12:48:00.23ID:qGKirkhkd
>>290
それもそうだし、あまりのドキュメントを読む能力の無さに吹いたわ
2017/11/14(火) 13:35:30.02ID:kMJcGUhsM
例外の内容を戻り値で返そうとしていた時点で察するべき
2017/11/14(火) 13:35:49.40ID:uXnSzNFD0
今月ずっとhResult == IntPtr.Zeroとかresult != 0とか書いてた俺から見れば
例外なんて天国じゃないですか
2017/11/14(火) 13:42:38.82ID:kMJcGUhsM
>>293
その天使を握り潰してリターンで返してエラーハンドリング地獄にしようとしていたのさ。
2017/11/14(火) 13:51:56.33ID:D89+JmTA0
でもファイルが開けないで例外は困る
他のも完全に例外とそうでないのと作った奴との波長が合わないと
仕分けが面倒臭い
いっそ握り潰すは結構わかる
なんかいい手はるのか?
2017/11/14(火) 13:58:20.49ID:QAeRXYyyM
開けないという結果を返したいなら戻り値で返せばいいじゃん
例外の詳細が欲しいとか言うなら例外のまま戻ればいいってなる
2017/11/14(火) 14:04:41.09ID:kMJcGUhsM
>>295
開けないファイルを処理できる場所で例外のキャッチをすれば良いだけだが。
2017/11/14(火) 14:06:57.33ID:D89+JmTA0
>>297
だから一生懸命例外を仕分けするって話だろ
2017/11/14(火) 14:08:55.93ID:kMJcGUhsM
>>298
仕分け?
2017/11/14(火) 14:15:19.28ID:D89+JmTA0
>>299
だから他の奴の作ったクラスの例外にする挙動で気にいらない例外を仕分けする必要があるじゃん
アスペ過ぎるだろお前
2017/11/14(火) 14:17:24.41ID:RygzRtlR0
MSの推奨するasync越しの例外処理はCancellationTokenSource使うやつだろうが可也面倒だわな
キャンセルの仕組みを入れるなら、次いでに仕込んでもいいと思うが
2017/11/14(火) 14:19:11.58ID:kMJcGUhsM
>>300
例外の大半は致命的なエラーだろ
メッセージ吐いて落とすだけ
仕分けも糞もないわ
2017/11/14(火) 14:21:12.02ID:D89+JmTA0
>>299
うんちっちException
うんこっこException
うんこっここっこException
ちんぽっぽException
ちんぽっぽちんぽException
ちんちんException
まんこっこException
まんこっこっこException

それぞれ挙動を変えたい
2017/11/14(火) 14:22:20.64ID:D89+JmTA0
>>302
なんでファイルオープンミスったぐらいで致命的なエラーなんだよ
別ファイル指定させろ殺すぞ
2017/11/14(火) 14:25:29.18ID:kMJcGUhsM
>>304
キャッチしてリカバリ処理しても良いんだよベイベ
2017/11/14(火) 14:30:28.64ID:kMJcGUhsM
>>303
まんこっこExceptionだけキャッチして
あとはゲロ吐きへ
2017/11/14(火) 14:35:59.67ID:qGKirkhkd
>>304
またキチガイかよ
2017/11/14(火) 15:02:33.86ID:RygzRtlR0
致命的エラーの大半はバグだから、しっかりロガーに記憶センといかんよな
2017/11/14(火) 15:26:53.10ID:3oyxXo9MM
仕分けです
2017/11/14(火) 15:59:25.26ID:D89+JmTA0
>>308
そんなの組んだやつ次第じゃん
テメーのディスプレイに写った顔がキモメンなので例外
2017/11/14(火) 16:03:35.67ID:D89+JmTA0
ところでCsvHelperのCurrentRecord消えてんじゃん
たかがCsvでマッピングなんかしねーよ
コイツ馬鹿じゃん
やっぱり他人の作ったもんなんかゴミだな
この程度は自分で作るべきだった
312デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 16:05:44.77ID:HdsegbLs6
アスペ
2017/11/14(火) 16:33:33.76ID:qGKirkhkd
そいつ英語読めないアスペ
2017/11/14(火) 17:10:19.65ID:kBR8KFzeM
戻り値のあるメソッドでcatchにもreturn入れないとエラーになるんだけど、普通、例外拾った場合、returnにはnullとかいれるの?
2017/11/14(火) 17:16:49.43ID:3oyxXo9MM
>>314
エラーで戻り値をセット出来ない場合は、
メソッドの中でcatchしないで呼び出し元でcatchする。
2017/11/14(火) 17:20:01.42ID:kBR8KFzeM
>>315
なるほど、メソッドの外でcatchするんですね。それが定石なんでしょうか?
2017/11/14(火) 17:33:11.61ID:3oyxXo9MM
>>316
メソッドの中でcatchして例外に対する処理が出来れば、そこでcatchすれば良いし、出来なきゃ呼び出し元でcatchする。呼び出し元で処理出来なけりゃ更に上位の呼び出し元でcatchする。
基本は例外は例外なのでそんなことが起きないようにコーディングする。
2017/11/14(火) 17:45:16.91ID:vWcSiHz/0
WebにあるMSDNの説明を和文で見る人は、「.NET Framework(current version)」を「.NET Framework 4」に変更して、みたほうが良いかもね。
それでも変な和訳だけど。
2017/11/14(火) 18:04:00.27ID:gCxVQMlVa
>>314
それ、問題設定がおかしい(きつい言い方だけどそれは愚問)だから、
たぶん例外の意味が根本的に分かってないんだと思う。

まず「そもそも例外って何?」ってところからちゃんと理解した方がいいと思う。
理解をパスして定石だかお作法だかを覚えることで乗り切ろうとする態度は危険

それと
>戻り値のあるメソッドでcatchにもreturn入れないとエラーになる
間違ってる。
コンパイル通らないのは値を返さない実行パスが存在する場合だけ
2017/11/14(火) 18:31:17.73ID:rQHwrbmI0
>>319
例外処理を理解してないやつってホント多いよ。
c#何年もやってて理解してなとか普通に居るし。
2017/11/14(火) 18:47:46.83ID:gXgokZ6Md
>>320
>>319も基本的なことを理解してなかったみたいだけどね
2017/11/14(火) 18:59:20.88ID:ElF9INq6r
>>279
ダメでは無いが例外の欠点

上下のやり取りにもあるように例外は扱いが難しく暗黙知が多い
(個人的には難しいとは思わんが)
簡単に握り潰せる
その関数が例外を出すかどうかはパッと見には解らない
非同期の時どうなるか直感的ではない

今はビジネスロジックのエラーに例外はあんまり使わない
もちろんケースバイケース
2017/11/14(火) 19:23:50.29ID:pfWBpEcAM
>>270
インナークラスってそれを持ってるクラスで隠蔽したいからあるものじゃ無いんですか?

知っているだけで用法を知らない事を痛感しました
2017/11/14(火) 19:24:49.61ID:D89+JmTA0
ドキュメント書かない奴に限って
ちんぽっぽちんちんException
の亜種をたくさん作るんだw

ところで
CsvHelper
GetRecords<dynamic>()で動くだろ死ねよ
って温かいレスをもらったが
Csvの読み込み程度でこんな翻弄されてるなら
やっぱり自分で作った方が安泰かな?
NuGet最新取ると概ね動かないぜ
2017/11/14(火) 19:32:20.40ID:sSxxq2Sz0
>>322
Go言語が例外処理を無くしたのは、

・例外処理を正しく扱えないヤツが余りにも多すぎる
・例外処理は並行処理では扱い辛い

後者の方が無くした主な理由だろうけど
例外処理分かってないヤツ多すぎるwww
2017/11/14(火) 19:35:09.24ID:sSxxq2Sz0
>>324
ソースがあるのだし自分でソースくらい見ろよ
オープンソースでドキュメント期待する方が間違ってるぞwww
2017/11/14(火) 19:58:23.54ID:0snQAOLI0
キチガイのバザール
328デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 20:04:06.14ID:QqwKiGyo6
>>322
どこが難しいと思うの?
2017/11/14(火) 20:39:11.83ID:ElF9INq6r
>>328
俺に聞くなボケw
個人的には難しいとは思わんが
とわざわざ書いたのにそれが目に入らぬか ??
2017/11/14(火) 20:59:27.95ID:HCb+ZNawa
Listのaddメソッドって例外飛ばさないんですか?
もう追加できないよ!みたいな感じで
2017/11/14(火) 21:01:39.87ID:ozKhZGN+0
{〇,✕,✕,〇,△,△,△,〇,△}みたいなリストを{〇,✕,✕,}{〇,△,△,△,}{〇,△}って感じに分けたいんだけどLinqで簡単に出来ないかな?
ループさせんのが面倒で
2017/11/14(火) 21:03:14.99ID:cajczz9H0
>>318
英文表示にして段落毎にグーグル先生に翻訳して貰うと割と読める文章になることが多い。
グーグル翻訳でもサイト翻訳は翻訳精度が悪い。
2017/11/14(火) 21:07:06.30ID:07a/swYLa
>>331
SkipとTake使えば?
334デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 21:11:28.16ID:6kJ9cNLk6
>>329
どこがみんなにとって難しいと思うから322で難しいとか書いたの?
2017/11/14(火) 21:13:21.13ID:ElF9INq6r
>>334
これだけ意見相違があるから
336デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 21:16:24.25ID:6kJ9cNLk6
よくわからんが難しくないだろ。
2017/11/14(火) 21:17:36.48ID:07a/swYLa
例外を変なところでキャッチしちゃう人が多い

メソッドAの中でメソッドBを呼んでまたメソッドCを呼んだとする

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

メソッドAでキャッチしろって思う
338デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 21:18:54.31ID:6kJ9cNLk6
>>337
それだけだよね。
なんも難しくない
2017/11/14(火) 21:22:31.53ID:ozKhZGN+0
>>333
んーそれ余計に面倒にならない?
2017/11/14(火) 21:23:42.17ID:07a/swYLa
例外を目の前でキャッチするくらいなら他の制御構文でヤレ
2017/11/14(火) 21:33:26.00ID:sSxxq2Sz0
>>337
ホントそれ。
至る所にtry/catchがある。
try/finallyは多用するがtry/cathなんて滅多に使う事はない。

例外処理は至る所に例外処理コードを書かないために存在する。
2017/11/14(火) 21:54:38.57ID:D89+JmTA0
>>341
だから何度も書いてやってんじゃん
仕分けが絶望的に面倒臭ぇから握り潰しちまうって

だってさよく考えろよ
ドキュメント化されてないメソッドが出す例外って全部でいくつかどうやって調査する?
2017/11/14(火) 22:03:00.14ID:5gpUPtII0
仕分けめんどくさいのは同意するけど、握りつぶすのはどうなんだ
仕分けした結果握りつぶして問題ないって判断したものならいいかもしれんが

極論として、全部握りつぶす or 全部スルーして上位にキャッチさせる
どっち選ぶ?
2017/11/14(火) 22:03:51.57ID:sSxxq2Sz0
>>342

例外処理を誤解している典型例です。
皆さん絶対に真似しないように。
2017/11/14(火) 22:08:15.89ID:sSxxq2Sz0
>>337
>例外を変なところでキャッチしちゃう人が多い

かと思えば、例外が必要なところでtry/catch { } で握りぶしちゃう人も多い
これも追加ね。

無駄なtry/cathと握りつぶし
例外が分かってないヤツの典型例
346デフォルトの名無しさん (ワッチョイ df03-uZPj)
垢版 |
2017/11/14(火) 22:09:59.38ID:vkrHhpXR0
例外の仕分けとは何なのか
2017/11/14(火) 22:11:36.04ID:FOR7JOrW0
分かったからママに教えてやれ
お前が可愛いなら誉めてくれるだろう
2017/11/14(火) 22:12:26.72ID:D89+JmTA0
>>346
だから例外で帰られちゃ困るのよ
ちゃんと仕様で動作が決まってるのにもかかわらずそのメソッド的には例外なの
2017/11/14(火) 22:17:45.36ID:sSxxq2Sz0
例外を拾ってエラーチェックをしようとしているのが根本的な間違いだな。
2017/11/14(火) 22:28:42.81ID:D89+JmTA0
>>349
バッカ、飛んでっちゃうだろ
351デフォルトの名無しさん (ワッチョイ 5f75-7wKg)
垢版 |
2017/11/14(火) 22:33:03.34ID:Xx2aI1jk0
仕分けとは
握りつぶしとは
2017/11/14(火) 22:41:27.61ID:D89+JmTA0
>>351
アスペにもほどがあるだろ
353デフォルトの名無しさん (ワッチョイ 5f75-7wKg)
垢版 |
2017/11/14(火) 22:56:41.83ID:Xx2aI1jk0
初心者だから経験が浅いので分からん
2017/11/14(火) 22:58:32.66ID:ypDSy74La
あからさまに変な人は相手にしないほうがいいよ
俺も言ってる意味がわからない
355デフォルトの名無しさん (ワッチョイ df03-uZPj)
垢版 |
2017/11/14(火) 23:00:13.12ID:vkrHhpXR0
>>348
戻り値だったらいいの?例外となんか違うか?
2017/11/14(火) 23:02:10.19ID:D89+JmTA0
>>355
お前、なんの例外がくるのか全部把握してる前提で話してるだろ?
2017/11/14(火) 23:06:39.11ID:deF3FeCf0
把握できてる(かつ握っても問題ない)例外だけ握ればいいんじゃないの?
なんで全部握りつぶすの?
2017/11/14(火) 23:18:43.22ID:D89+JmTA0
>>357
どこで例外発生するかわかんないから
2017/11/14(火) 23:25:37.86ID:sSxxq2Sz0
>>358
何処で発生するか、しかも例外の内容も分からない例外を仕分けして何をしたいんだ?
360デフォルトの名無しさん (ワッチョイ df03-uZPj)
垢版 |
2017/11/14(火) 23:33:00.11ID:vkrHhpXR0
>>356
お前なんの戻り値がくるのか全部把握してる前提で話してるだろ?
2017/11/14(火) 23:43:11.80ID:D89+JmTA0
>>359
だから失敗でアプリ落としたくねーんだよ
アスペか
んで全ての例外に対応したいがメソッドの中身を読むも広大過ぎてなんの例外がくるのかわからない

ときたら握り潰すしかないよね
2017/11/14(火) 23:43:49.21ID:D89+JmTA0
>>360
それは成功以外は失敗じゃない?
2017/11/14(火) 23:48:21.45ID:ypDSy74La
>>361
それはダメなやり方だよ

例外をキャッチしきれなければアプリを落とすべきなんだよ
それが基本なんだよ

特殊な場合は別だけど普通はそう教わる
2017/11/14(火) 23:48:53.64ID:sSxxq2Sz0
>>361
だったら、例外をcatchして例外メッセージをMessageBox.Show()しとけば良いだけだろ。
365デフォルトの名無しさん (ワッチョイ df03-uZPj)
垢版 |
2017/11/14(火) 23:49:57.17ID:vkrHhpXR0
>>362
だったら例外も同じじゃない?
2017/11/14(火) 23:53:24.48ID:+V2acIIZ0
こんな深夜に要件定義されていない議論するとか正気か?
2017/11/14(火) 23:58:02.52ID:D89+JmTA0
>>365
だから落ちんなよって
2017/11/14(火) 23:58:11.24ID:sSxxq2Sz0
>>363
>例外をキャッチしきれなければアプリを落とすべきなんだよ

どんな例外もキャッチしなきゃダメだろ。
キャッチして「駄目だコリャ」の場合はログ吐いて落とすしかない。
369デフォルトの名無しさん (ワッチョイ 5fb3-ouqv)
垢版 |
2017/11/14(火) 23:58:46.20ID:A1uj0brl0
Windowsの場合、ハンドルされない例外で落としておけば、ユーザーには後日解決策が
提示される場合があると表示されて、パートナーには統計情報が連絡される。
2017/11/14(火) 23:59:42.34ID:j+l8jijkd
動いてそうだけど動いてないかもしれない、エラーが中で出てるけど見えないプログラムなんて、

ブレーキランプはつくけどホントにブレーキがかかるかわからない車みたい。
いっそ走らないほうがマシ。
2017/11/15(水) 00:01:02.73ID:udlId46Ca
>>367-368
どうせネタのつもりで言ってるんだろうけど面白くないから
2017/11/15(水) 00:02:05.46ID:iANpDJJe0
>>369
MS以外に例外情報を送信することができるのか?
373デフォルトの名無しさん (ワッチョイ 5fb3-ouqv)
垢版 |
2017/11/15(水) 00:03:28.48ID:2GqBFPwl0
>>372
統計情報だけもらえる。
2017/11/15(水) 00:03:40.40ID:QiSxe5F2a
>>368
キャッチして何になるんだよ?

アプリは予測してない状況になってるんだぞ
予測できてないから復旧もできないし
誤動作してシステム食いつぶすこともあるんだから生かしておく意味はありません

そういうことしてDBに特定のデータだけ一晩中書き続けた例を知ってる
375デフォルトの名無しさん (ワッチョイ df03-pAaq)
垢版 |
2017/11/15(水) 00:03:57.83ID:iCpU6Box0
>>367
むしろ例外の仕組みがない言語の方がプログラマーに制御できないとこで勝手に落ちるんじゃないの?
2017/11/15(水) 00:04:36.82ID:MZOj6Nbl0
>>369
ダイアログ出てる間はプロセス掴んだままになるから、
素直にプロセス落として自動的に再起動させたい場合には邪魔になるやつね。
2017/11/15(水) 00:04:47.32ID:iANpDJJe0
>>373
なにそれ?
2017/11/15(水) 00:05:46.61ID:De4EEM1x0
ロガークラスなんかだと
中で例外全部握り潰すけど
catch {}
2017/11/15(水) 00:06:23.35ID:iANpDJJe0
>>374
だから、ログ吐いて落とすって書いてあるだろ。
殆どの場合、例外を拾ったら落とすしかない。
2017/11/15(水) 00:10:28.88ID:pJdoypJN0
ダメだこいつら
話になんねー
あるべき論はいいからさっさとアプリ動かせよ

握りつぶして動くなら動くでいいだろ
メソッドの中身なんて3万行だか4万行だか読んでらんねんだよバカが
その全てでテキトーに例外発生させてんだから握りつぶしてナンボだろこんなの
2017/11/15(水) 00:11:54.55ID:De4EEM1x0
Office系は印刷中キャンセルボタン押しただけで
COMException投げてきたりするから
とりあえず握り潰すようにしている
382デフォルトの名無しさん (ワッチョイ 5fb3-ouqv)
垢版 |
2017/11/15(水) 00:12:29.08ID:2GqBFPwl0
DBはコミットしなければいいと思う。
2017/11/15(水) 00:20:37.66ID:iANpDJJe0
>>380
じゃ、メッソッドの呼び出しもと全部にcatch {}入れとけよ。
2017/11/15(水) 00:26:18.34ID:AeO6Jp1U0
例外で落としたくないプログラムってのはたしかに存在するけど
基本そんなプログラムをC#で書くのが間違ってると思うわ

例外処理のっていうときに、C#での(あるいは.NETでの)例外処理は、って言うようにしようぜ
つかまあこの話もう終わりで良いけど
385デフォルトの名無しさん (ワッチョイ 5fb3-ouqv)
垢版 |
2017/11/15(水) 00:26:49.27ID:2GqBFPwl0
ただまあ例外なんて滅多に出ないからね。
386デフォルトの名無しさん (ワッチョイ 5fb3-ouqv)
垢版 |
2017/11/15(水) 00:27:26.82ID:2GqBFPwl0
C++スレじゃないのか。
2017/11/15(水) 00:27:39.78ID:rNYxO5wL0
>>337
そのメソッドAが戻り値あり立った場合は?さらに外?それともヌル返す?
388デフォルトの名無しさん (ワッチョイ 5f8a-lB0v)
垢版 |
2017/11/15(水) 00:28:57.41ID:nkl9Qzh90
長々と無意味なレスバが続いてたけど、ひとつだけ皆が同意できそうなのは
例外がどういう用途で使われるべきかの一般的なコンセンサスに従う人は
ID:D89+JmTA0 = ID:pJdoypJN0 と一緒に仕事したくない、という点だけだな
389デフォルトの名無しさん (ワッチョイ 5fb3-ouqv)
垢版 |
2017/11/15(水) 00:30:13.38ID:2GqBFPwl0
異常は戻り値で知らせるなって言いたいんじゃないの。
まあそりゃそうだよねって言う。
2017/11/15(水) 00:57:36.26ID:ESiJAd3S0
ここc#スレで合ってるよね…
2017/11/15(水) 01:09:16.87ID:udlId46Ca
勘違いする人がいると見てられないので一応書いとくけど、
例外の目的の一つはフェイルセーフ、つまりプログラマの想定外のことが起こった時に
「安全側に倒す」 = 「プログラムを強制終了させる」ことなので、
「プログラマの想定外のことが起こってもプログラムの実行が止まらないようにしたい」
などという馬鹿なことを考えてはいけない。
2017/11/15(水) 01:35:57.65ID:pJdoypJN0
>>391
はぁ?
他の誰かのライブラリを使ったときに
使用者の想定内がライブラリ作成者の想定外のときなんて簡単に発生すんだろーがバーカ
テメーはちんちんでも弄ってろ
2017/11/15(水) 02:16:30.38ID:oUD9LeEe0
ここは間を取ってContractしよう
2017/11/15(水) 03:59:39.11ID:f4TQv9de0
>>331
誰もみてないだろうけど多分解決したっぽいので質問取り下げます
ほんとlinqって便利だな
2017/11/15(水) 06:34:16.49ID:iANpDJJe0
>>392
具体的には何のライブラリ?
2017/11/15(水) 08:15:52.85ID:M8NqkMX5d
>>395
キチガイに触んなすな
2017/11/15(水) 08:45:58.03ID:6LdVh8Top
>>394
LINQでどうやるの?
2017/11/15(水) 09:21:08.88ID:EAeU3mIh0
>>395
会社の
お前のレス
ガイジ過ぎるだろ
ちょっと考えてからレスしたら
2017/11/15(水) 09:39:52.81ID:tmuRT0930
ガイジコラボ
2017/11/15(水) 10:00:24.72ID:K3LG5GcrM
>>399
お前、単発だけど
連結するとガイジなんだろ?w
2017/11/15(水) 10:01:55.68ID:DCxsxqPWd
>>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();
402デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/15(水) 11:14:21.87ID:LdCnvqY76
LINQと関数型プログラミングって何が違うの?
2017/11/15(水) 11:42:46.04ID:l4Bv56LcM
>>402
ガイジ乙
404デフォルトの名無しさん (ワッチョイ 5f19-7wKg)
垢版 |
2017/11/15(水) 11:51:23.71ID:CJEkfJ7L0
>>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));
405デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/15(水) 12:03:19.06ID:RrK4s1ZI6
こっちの方がいいか。

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;
});
406デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/15(水) 12:05:06.75ID:RrK4s1ZI6
if (isFirst(item)) { prevList.Add(new List<string>() };
括弧ミスった
2017/11/15(水) 12:05:11.35ID:Tar4qvIud
Func<T,bool> を受け取るSplit関数定義した方が後で楽じゃね?
408デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/15(水) 12:07:15.90ID:RrK4s1ZI6
確かにその方がスッキリするな。
いずれにしろsplitの中身を定義しないといけないけど
2017/11/15(水) 12:29:09.51ID:DCxsxqPWd
>>405
Agreegate余り使ったことなかったけど便利だな
こっちの方が綺麗だ

if (isFirst(item) ||prevList.Count>0)
書いてなかったけど、リストの先頭が〇とは限らないのでこんな感じで
2017/11/15(水) 12:35:31.31ID:MLdh1wBXM
Aggregateは宣言的でないので関数型に慣れたらむしろ読み辛く感じるようになる
考え方が実質的に手続き型だから、手続き型に慣れてる人には馴染みやすいので濫用されてしまいやすい
411デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/15(水) 12:43:50.52ID:LdCnvqY76
関数型の典型的な関数みたいにバッ、バッって感じじゃなくてズィーンて感じだからか。
>>401のやり方だと使ってる関数はバッバだけ感じかもしれないけど外部変数使ってるから内外に絡み合ってるのがあれだけどどうすればいいんだろう
2017/11/15(水) 12:46:35.76ID:h8srGYM+0
Select/Aggregateなんて変な書き方せず素直にmap/reduceでいいのにな
SQLっぽくというコンセプトで台無しになってる感じ
413デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/15(水) 12:48:32.27ID:LdCnvqY76
ズィーン→ズインッ→ズィッ→バッ
こう見れば畳み込みも関数型に馴染む
414デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/15(水) 12:49:52.25ID:LdCnvqY76
>>412
まあこの場合ではSQLを扱ってるわけじゃないしな
2017/11/15(水) 12:54:47.35ID:l4Bv56LcM
関数にした方が見やすいじゃん
無駄に不具合出して喜ぶ低能過ぎる
2017/11/15(水) 13:11:40.68ID:DCxsxqPWd
確かに目新しさにおおーってなったけど、これただの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);
});
2017/11/15(水) 13:14:41.39ID:MLdh1wBXM
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 != '○')));
こうかな
関数作った方がいいのは同意する
2017/11/15(水) 14:15:45.67ID:1p9gbgPTa
上のお題、結果がIEnumerable<IEnumerable<string>>でいいなら、

var list = new List<string>() { "○", "×", "×", "×", "○", "△", "△", "○", "△" };
var index = 0;
var hoge = list.GroupBy(x => x == "○" ? ++index : index);

ではだめ?
419デフォルトの名無しさん (ワッチョイ 5f96-7wKg)
垢版 |
2017/11/15(水) 17:26:29.53ID:7R79hyBA0
>>416
それ意味的にはaggregateと全く変わらない
初期値が外にあるか引数のところにあるかしか違いない
420デフォルトの名無しさん (ワッチョイ 5f96-7wKg)
垢版 |
2017/11/15(水) 17:30:36.24ID:7R79hyBA0
>>417
それaggregateより読みやすいと思うか?
421デフォルトの名無しさん (ワッチョイ 5f96-7wKg)
垢版 |
2017/11/15(水) 17:40:07.85ID:7R79hyBA0
>>418
その型じゃダメでしょ。
2017/11/15(水) 18:02:02.20ID:1p9gbgPTa
>>421
過去ログろくに読まずに>>418書いたけど、質問者もGrouBy使ってるじゃん>>401
423デフォルトの名無しさん (ワッチョイ 5ff9-7wKg)
垢版 |
2017/11/15(水) 18:04:09.97ID:uxhVFwQf0
>>422
変換しろよ
その分だけコード長くなるぞ
2017/11/15(水) 18:09:17.28ID:1p9gbgPTa
>>423
何に変換するの?
元々の質問には最終的に欲しい型の指定はない
単に列挙できれば良いならIEnumerable<IEnumerable<string>>として扱えれば十分
2017/11/15(水) 18:38:01.15ID:AeO6Jp1U0
いつも思うんだが、この手のやつをLINQでやりたがるやつって何が目的なんだろ
自分ですらすらと書けるならLINQでいいけど、そうじゃないなら勉強以上の意味があるとは思えん

個人的にはシンプルさを競うなら>>418がいいと思う
戻りの型が気に食わないなら
.Select(t => t.ToList<string>()).ToList<List<string>>();
あたり追加すればいいだろ
2017/11/15(水) 18:40:53.79ID:EAeU3mIh0
こんなのやっててきったねーコード書く癖がついたら嫌だなw
427デフォルトの名無しさん (ワッチョイ df03-uZPj)
垢版 |
2017/11/15(水) 18:46:37.59ID:iCpU6Box0
お前らが思ってる程きれいでもきたなくもないから安心しろ
2017/11/15(水) 18:49:57.02ID:rNYxO5wL0
おい!待望の独習C#新版がでるみたいだぞ!
429デフォルトの名無しさん (ワッチョイ 5fe6-7wKg)
垢版 |
2017/11/15(水) 18:56:00.52ID:SIgrthm30
>>425
変数や関数を定義するのにいちいち名前をつけるのが面倒だからよく使う
無名だらけ
430デフォルトの名無しさん (ワッチョイ 5fe6-7wKg)
垢版 |
2017/11/15(水) 18:56:47.00ID:SIgrthm30
関数を定義するときには場所にも悩むしな
2017/11/15(水) 19:00:28.04ID:DCxsxqPWd
>>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);
}
432デフォルトの名無しさん (ワッチョイ 5f6e-7wKg)
垢版 |
2017/11/15(水) 19:05:07.59ID:JCFmpBxh0
俺嫌われすぎだろ
アスペルガー症候群だから仕方ないのか
433デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/15(水) 19:06:53.89ID:LdCnvqY76
スリップが****-7wKgのは全部ワシじゃ
2017/11/15(水) 19:46:43.95ID:h8srGYM+0
linqより何でもListにしないと心休まらない兄貴の方が重症かもな
2017/11/15(水) 19:57:17.06ID:rGQqr4VZr
>>434
ww
現場にもよくいる
2017/11/15(水) 20:39:25.83ID:ILed194Q0
>>428
ここにいる人らにはもう必要ない
437デフォルトの名無しさん (ワッチョイ ffe8-ueqH)
垢版 |
2017/11/15(水) 20:42:42.91ID:4QHQX7jw0
>>434
アカンか?
2017/11/15(水) 21:21:02.68ID:EAeU3mIh0
linqだからで許されてるクソコード延々貼り付けたガイジはさっさと死ねよ
439デフォルトの名無しさん (ワッチョイ 5f86-bJtK)
垢版 |
2017/11/15(水) 21:25:59.97ID:md1eodvT0
LINQが良いか悪いかは別にしてLINQを必要以上に毛嫌いする奴って頭悪いだけだろ。
2017/11/15(水) 21:34:02.77ID:EAeU3mIh0
>>439
今回のは普通に書いた方が綺麗だったよね?
2017/11/15(水) 21:34:15.53ID:O2CkROvj0
ここ数日の有り様は何なんだろう
C#養護学校の卒業式でもあったのかね
2017/11/15(水) 21:35:20.82ID:EAeU3mIh0
linq友の会スレ使えよガイジ
443デフォルトの名無しさん (ワッチョイ 5f16-bJtK)
垢版 |
2017/11/15(水) 21:36:55.30ID:4L7ZsFBR0
必要以上にってのが言いたかった。
実用性は別としてリスト操作系関数でスラスラ書ける奴にコンプでもあるのかって思っちゃう
2017/11/15(水) 21:39:23.16ID:EAeU3mIh0
>>443
え?
そんなの気にしたことないや
プログラムなんて組めるようになったらそこでスキルレベルマックスだろ
2017/11/15(水) 21:43:12.25ID:EAeU3mIh0
あとは
設計書記述スキルを上げるか
見積り書記述スキルを上げるか
議事録作成スキルを上げるか
した方がナンボか実りがあるよ
446デフォルトの名無しさん (ワッチョイ 5f16-bJtK)
垢版 |
2017/11/15(水) 21:44:53.19ID:4L7ZsFBR0
しかし自分の苦手な物を使える奴にはコンプを感じる
2017/11/15(水) 21:46:47.98ID:D6YDuXrJ0
>>440
レスいくつも書き込むくらいならそのコード提示したらいいのに
2017/11/15(水) 21:48:01.68ID:EAeU3mIh0
>>447
別に俺そここだわらんよ
興味ねーし
お前にも
449デフォルトの名無しさん (ワッチョイ 5f25-bJtK)
垢版 |
2017/11/15(水) 22:15:03.22ID:mH4zmpJW0
興味ねーならゴミだのクソだのほざいてんじゃねーよw
2017/11/15(水) 22:17:35.92ID:EAeU3mIh0
>>449
クソコードを嬉々として貼られるのは見逃せないな
荒らしと変わんねーし
2017/11/15(水) 22:20:30.39ID:EAeU3mIh0
どれだけ偉そうな主張があるのかと思えば
貼ってあるのはクソコードばかり
linq貼ってるやつ目障りだから死ねよ
普通に組んだ方が綺麗なコードなら持ってくんなよ
だっせ
452デフォルトの名無しさん (ワッチョイ 5ffa-bJtK)
垢版 |
2017/11/15(水) 22:21:20.95ID:txwTk3zR0
おまえの価値基準で判断すんなw
コンプ感じてるだけw
2017/11/15(水) 22:24:54.13ID:qS39jpKw0
これ以上はLINQスレでやれと言おうとしたらもう落ちているのね
2017/11/15(水) 22:25:31.88ID:EAeU3mIh0
>>452
いいじゃん
便所の落書きなんだし
俺が書くスペースもあんだろ

誰でもかける処理わざわざ複雑にして
悦にいってるマヌケなPGみて
安心感を得られるセラピー効果もある
2017/11/15(水) 22:26:54.12ID:EAeU3mIh0
>>453
linq誰も使ってないからな
2017/11/15(水) 22:28:44.48ID:D6YDuXrJ0
まあコード書けないアホは相手にしなくていいよ
2017/11/15(水) 22:35:29.64ID:EAeU3mIh0
どっちかっていうとアプリを作れないアホだな
まあ、コードで何か主張したいならGitHubでもやればいいのに
こんな便所でしか主張できないなら
クズどものlinqライフもここでしめーだろ
458デフォルトの名無しさん (ワッチョイ 5fe5-7wKg)
垢版 |
2017/11/15(水) 22:39:12.32ID:E1HTns1P0
ウハwwwwww
書けない奴が批判の図wwww
権利すらなしwwwwwww
2017/11/15(水) 22:44:23.78ID:EAeU3mIh0
>>458
クソコード貼っていい気になってるの?
アドバイスしてあげるけど
滅茶苦茶レベル低いよ
460デフォルトの名無しさん (ワッチョイ 5f4b-bJtK)
垢版 |
2017/11/15(水) 23:03:01.93ID:vH3D/QHI0
キミ流のコードおなシャス!
2017/11/15(水) 23:19:43.56ID:rNYxO5wL0
>>436
ここは初心者スレじゃないのかw
2017/11/15(水) 23:22:37.65ID:vwyVPxZJp
人間初心者のスレですよ、たぶん
2017/11/15(水) 23:25:46.54ID:vwyVPxZJp
正確にはC#で記述された人工知能なんですけどね
464デフォルトの名無しさん (ワッチョイ 5f75-7wKg)
垢版 |
2017/11/15(水) 23:26:21.77ID:H4muME/S0
>>428
どこ情報?
2017/11/15(水) 23:47:19.33ID:EAeU3mIh0
>>464
amazonで予約中になってる
2017/11/16(木) 12:14:27.14ID:x/aWQ3sN0
stringは参照型だから既定値はnullということで合ってるよね?
2017/11/16(木) 12:22:49.67ID:/4eW5bh4M
>>466
既定値はnullだけどstringはイミュータブル型
2017/11/16(木) 13:24:58.55ID:lGT15xaEa
>>466
stringは参照型で規定値はnull
2017/11/16(木) 18:15:43.67ID:7VJMckpW0
WPFじゃなくてWindowsForms内で簡単な3D描画したいんですが
どういう風がいいでしょうか。
とりあえず箱を線で描くだけなんですが。

・DrawLineみたいなので始点終点を3次元(X,Y,Z)で指定し描画
・視点の位置(X,Y,Z)と向きを指定して表示

って風な感じが希望なんですが・・・・
2017/11/16(木) 18:25:02.34ID:K+YFepCs0
それでいいじゃん
2017/11/16(木) 18:27:37.39ID:7VJMckpW0
DrawLine の Point型 って X,Y しかないじゃないですか。
X,Y,Z で指定できる DrawLine がないのかと
2017/11/16(木) 18:32:16.65ID:F5ZZYHwp0
気合で座標計算
2017/11/16(木) 18:39:59.53ID:K+YFepCs0
カメラ固定でいいんだろ?
ZがXYのどこになるかは簡単な計算で出せる
紙に気に入った角度の3軸を書いて見ればいい
2017/11/16(木) 18:49:26.46ID:rygh13wZ0
OpenTKでも使えば?
2017/11/16(木) 19:04:34.95ID:JEjgvNkla
>>471
カメラの視線方向をZ軸、カメラから1000mm先のカメラの視線に垂直な平面上の1000mmの
線分がモニター上に1000mmで表示されるモデルを採用、3D、2Dともに同じ単位系(例えばmm)
を使用する条件なら、3D空間上の点(X, Y, Z)を2D上の点(x, y)に写像するには、

(x, y) = (X/Z, Y/Z)

でいいと思う。知らんけど
2DグラフィックのY軸が下向きなのを考慮するならyはもちろん-1倍する
2017/11/16(木) 19:32:37.14ID:JEjgvNkla
描画面の中心を原点にする変換も必要かw
こっちはGraphicsの組み込みの機能でできるけど
477デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/16(木) 19:52:49.24ID:o+kP3k0v0
透視投影
http://satoh.cs.uec.ac.jp/ja/lecture/ComputerGraphics/3.pdf
2017/11/16(木) 19:57:23.76ID:K+YFepCs0
そんな面倒なことしなくても
カメラ固定ならXYに足すだけでいいじゃん
Zが1ならXYに0.5ずつ足すみたいのでいいよ
Zが2ならXYに1ずつ足す
Zが3ならXYに1.5ずつ足す
みたいな
2017/11/16(木) 21:38:46.30ID:ac8ZDyBE0
>>469
URLが何故か張れないんだが
C#3D立方体ワイヤーフレーム (第1回) for VS2013 Express
でググって見つかるところが参考になる
ライブラリを期待しているのならC++で探すしかないだろうな
DLLになっていればC#からでも使えるから
2017/11/16(木) 22:56:01.22ID:851mScQ5a
いくらなんでもopenGLライブラリはwinforms用ぐらいあると思う

windows forms openglでググれ
481デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/16(木) 23:02:09.93ID:o+kP3k0v0
>>474でもうでてる
2017/11/16(木) 23:17:24.79ID:Tv1Vr9CT0
時間, 名前, テスト回数
2017/1/1, A氏, 3
2017/1/1, A氏, 4
2017/1/1, B氏, 1
2017/1/1, B氏, 2
2017/2/1, A氏, 1
2017/2/1, A氏, 2
2017/2/1, B氏, 1
2017/2/1, B氏, 2
2017/3/1, A氏, 1
2017/3/1, A氏, 2
2017/3/1, A氏, 3

↑のようなデータがある場合 
↓のように名前ごとに最新の時間のデータを取得したい。
2017/3/1, A氏, 1
2017/3/1, A氏, 2
2017/3/1, A氏, 3
2017/2/1, B氏, 1
2017/2/1, B氏, 2
2017/11/16(木) 23:18:08.01ID:Tv1Vr9CT0
>>482
↓のような感じで取れるとは思いますが
実際のデータでは時間も名前も複数あるのでLINQで一発で取れる書き方はないでしょうか?
public class Test
{
public DateTime 時間 { get; set; }
public string  名前 { get; set; }
public int テスト回数 { get; set; }
}

List<Test> ListTest = new ListTest ();

var List1 = ListTest.Where(x=>x.名前 == "A氏" & x.時間 = 2017/3/1).ToList();
var List2 = ListTest.Where(x=>x.名前 == "B氏" & x.時間 = 2017/2/1).ToList();

List3.add(List1);
List3.add(List2);
484デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/16(木) 23:18:26.88ID:o+kP3k0v0
LINQの出番再び
2017/11/16(木) 23:19:34.43ID:eJZERDUZ0
友の会スレに行け
2017/11/16(木) 23:28:56.32ID:Tv1Vr9CT0
そんなこといわずに優しいレスくれよ
友の会ってどこなの?
487デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/16(木) 23:37:44.24ID:o+kP3k0v0
list.GroupBy(item=>item.名前).Select(group=>group.Max(item=>item.日時.Ticks)).ToList<Test>()
488デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/16(木) 23:44:12.00ID:o+kP3k0v0
今試したらエラー吐いたけど参考にしてくれ
2017/11/16(木) 23:44:38.82ID:Tv1Vr9CT0
>>487
レスありがとうございます。
Ticks使ったことないので参考になりました。
ありがとうございます。
490デフォルトの名無しさん (ワッチョイ 9102-hYVS)
垢版 |
2017/11/17(金) 00:03:01.06ID:LOAPaCxV0
ListTest.GroupBy(item => item.名前).Select(group => group.Aggregate((max, item) => item.時間 > max.時間 ? item : max)).ToList()
491デフォルトの名無しさん (ワッチョイ 91e5-x/r4)
垢版 |
2017/11/17(金) 00:16:27.21ID:ZIvR54fI0
DateTimeオブジェクトはそれ自体に大小関係演算子使えるしな
2017/11/17(金) 00:34:17.30ID:xoZUoffUa
どれも微妙に仕様から外れてるような…
2017/11/17(金) 00:40:57.63ID:45Grbd2f0
並びの下の方が同じ日付でも最新なの?
まあ、そういうデータよくあるけど
2017/11/17(金) 00:54:10.94ID:E5GExksf0
SQLだとドヤ顔でExistsしてるブログがたくさん出るやつだな
495デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/17(金) 00:57:10.96ID:ZBvifIa80
下のやつを最新にしたいなら>=にすればいいのかな
順番通りの保障ないかもしれないけど
496デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/17(金) 01:02:10.05ID:ZBvifIa80
ienumerbleだからだめか
最初の段階でインデックスとペアにするとか
2017/11/17(金) 01:13:33.00ID:xoZUoffUa
多分個人の最終日のすべてデータが欲しいんだよね
2017/11/17(金) 01:21:22.13ID:xoZUoffUa
う〜んできたけど汚い
499デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/17(金) 02:55:06.18ID:ZBvifIa80
これだけで各々の最新のデータが取れるはず。
ListTest.GroupBy(item => item.名前).Select(group => group.OrderBy(item => item.時間).Last()).ToList()

・GroupBy
Elements in a grouping are yielded in the order that the elements that produced them appear in source.
https://msdn.microsoft.com/ja-jp/library/bb534304(v=vs.110).aspx

・OrderBy
キーに従って昇順のシーケンスの要素を並べ替えます。
このメソッドは、安定した並べ替えを実行します。つまり、2 つの要素のキーが等しい場合は、要素の順序が保持されます。
https://msdn.microsoft.com/ja-jp/library/bb534966(v=vs.110).aspx


元データの並び順で下にあるほうのが優先されてるのをはっきりとわかるように書きたかったらかなり長いけどこうかな?w
ListTest.Select((item, index) => { Item = item, Index = index } ).GroupBy(pair => pair.Item.名前).Select(group => group.GroupBy(pair => pair.Item.時間).OrderBy(innerGroup => innerGroup.Key).Last().OrderBy(pair => pair.Index).Last().Item)
500デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/17(金) 02:56:22.67ID:ZBvifIa80
.ToList()

2017/11/17(金) 09:51:19.99ID:45Grbd2f0
これ、仕事で使われたらキレるな
502デフォルトの名無しさん (ワッチョイ 914b-jqfw)
垢版 |
2017/11/17(金) 10:01:35.59ID:yfGcWiWk0
落ち着けよ、おっさん。
503デフォルトの名無しさん (ガックシ 0666-jqfw)
垢版 |
2017/11/17(金) 11:41:22.51ID:vZ4OY4a56
LINQ使わなかったらこうか?

int indexOfSame名前(Test item, List<Test> list)
{
for(var i=0;list.Count;i++)
if(list[i].名前==item.名前){
foundIndex=i;
return i;
}
}
return -1;
}

List<Test> extractLatestData(List<Test> list)
{
var result=new List<Test>();
foreach(var item in list){
var foundIndex=indexOfSame名前(item, result);
if(foundIndex>=0){
if(item.時間>=result[foundIndex].時間){
result[foundIndex]=item;
}
}else{
result.Add(item);
}
}
return result;
}

var result= extractLatestData(ListTest);


LINQ使えばこう?
var result=ListTest.GroupBy(item => item.名前).Select(group => group.OrderBy(item => item.時間).Last()).ToList();
2017/11/17(金) 11:58:47.46ID:XIkoXTHK0
横に長くて拒否反応出るのも解らないでは無いんだが
読む時は愚直に左から読んでいくだけだし、PowerShell使ってると日常茶飯事だしな……
2017/11/17(金) 12:03:36.39ID:/4Y2zvAi0
普通は、改行しながら書く
2017/11/17(金) 12:08:02.02ID:qxZxmWbCM
>>504
じゃあ、全コード一行でいいじゃん
左から読んでいくだけだろ?
507デフォルトの名無しさん (ガックシ 0666-jqfw)
垢版 |
2017/11/17(金) 12:11:30.21ID:vZ4OY4a56
foreach~~
result.Add(latestDataOf(リスト, 名前))
とかのほうがいい?
508デフォルトの名無しさん (ガックシ 0666-jqfw)
垢版 |
2017/11/17(金) 12:14:53.31ID:vZ4OY4a56
これだとおかしいか
foreachであらかじめリストから抽出しておいた名前の種類の一覧とかを与えないとあれか
2017/11/17(金) 12:23:06.18ID:uCPaYCi4d
最新取る頻度が高いなら最新テーブルと履歴テーブルを分けてほしい
2017/11/17(金) 13:11:41.07ID:QYCCbo0/0
推敲してから書き込めば一度で済むのに。。。
2017/11/17(金) 13:38:17.44ID:45Grbd2f0
>>503
コメントがないじゃん
やり直し
512デフォルトの名無しさん (ガックシ 0666-jqfw)
垢版 |
2017/11/17(金) 14:48:58.50ID:y/lDgZqq6
みんなって推敲してるの?
真面目だな
俺もこれからはそうするかもしれん
2017/11/17(金) 15:16:56.52ID:Km51pzYd0
真面目に考えるとデータベースに更新分Insertしてからあらかじめ作ってあるビューをSelectするだけ
GroupBYや集計はDBでやった方が楽だしこっちでは表示件数や順序くらいしかいじらない
データベースといってもローカル鯖や組み込みもある、適材適所
2017/11/17(金) 17:32:51.55ID:VYtKuwzgM
インサート前にソートとかボトルネックだよね
2017/11/17(金) 18:05:42.37ID:g1yHwUG3M
sources
.GroupBy(s => new { 名前, テスト回数 })
.Select(g => new {
g.Key.名前,
g.Key.テスト回数,
時間 = g.Max(s => s.時間)
});

悩むところねえなぁ
516デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/17(金) 18:29:28.97ID:ZBvifIa80
汎用性低いな。
517デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/17(金) 18:32:42.23ID:ZBvifIa80
ListTest.GroupBy(item => item.名前).Select(group => group.OrderBy(item => item.時間).Last()).ToList()

ワシのが1番じゃろ。
2017/11/17(金) 18:42:45.87ID:1r1wVT3lM
よくみたら仕様ちゃうやん自分…

src.GroupBy(s => s.名前)
.SelectMany(g => g.Where(t => t.時間 == g.Max(u => u.時間));

これが王道の正解な
2017/11/17(金) 18:50:16.49ID:1r1wVT3lM
こっちのが速いかな

sec.ToLookup(s => s.名前)
.Select(g => new { g, m = g.Max(t => t.時間)
.SelectMany(p => p.g.Where(u => u.時間 == p.m);
520デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/17(金) 18:50:30.24ID:ZBvifIa80
そういやラムダ式の中の命名は超シンプルでいいんだったな。
>>518 最大値を探すためにループ、その値を持ち主をまた探すためにループってなんかキモくね?それが王道なのか。
2017/11/17(金) 19:36:01.87ID:15/bjs8Fd
>>482
まず時間と名前でグループ化
時間, 名前, テスト回数
2017/1/1, A氏, 3,4
2017/1/1, B氏, 1,2
2017/2/1, A氏, 1,2
2017/2/1, B氏, 1,2
2017/3/1, A氏, 1,2,3

あとは日付けでソートして名前でDistinctするかな
2017/11/17(金) 19:40:08.46ID:hFmoO+PyM
>>520
ループ?
SelectManyはSQLで言えば結合みたいなもの
LinqのJoinだとこんな感じかな

src.GroupBy(s => s.名前)
.Join(src,
g => new { 名前 = g.Key, 時間 = g.Max(t => t.時間) },
u => new { u.名前, u.時間 },
(g, u) => u);

SelectManyの方がわかりやすいな
523デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/17(金) 19:46:57.67ID:ZBvifIa80
Maxを探すためにループ、その持ち主また探すためにWhereでループ
2017/11/17(金) 20:26:05.65ID:/4Y2zvAi0
max ← 持ち主

こういう方向のリンクなら、max を探してから、持ち主も探さなきゃいけないけど、
逆方向のリンクなら、すぐ
2017/11/17(金) 20:34:11.03ID:45Grbd2f0
名前、日付で降順ソートして名前ごとの最新取るだけでなげーな
2017/11/17(金) 20:40:49.52ID:2lBbqhr3M
>>525
それ結局最後まで舐めないと全ての名前が分からないから何の意味もないぞ
527デフォルトの名無しさん (ワッチョイ 6ee8-LGLT)
垢版 |
2017/11/17(金) 21:20:38.75ID:Xkp76caL0
LINQって実は裏側でforeachで回してるってホント?
2017/11/17(金) 21:41:36.29ID:SHrICtEWr
>>527
ループは一回
2017/11/17(金) 21:50:29.21ID:/4Y2zvAi0
例えば、100個の中から、1個を探すのは、全(線形)探索 O(n) しかできない

全データにインデックス・ハッシュがついていれば、O(1)だが、
ソートするには、全探索する必要がある

DB みたいに、B-tree でソートされているのなら、O(log n)

「アルゴリズムと計算量」を勉強して
2017/11/17(金) 21:53:48.98ID:45Grbd2f0
>>529
すればいいじゃん
何がしたいの?
速度アップしたいの?
2017/11/17(金) 22:28:51.51ID:fmtM/py00
こんなにレスが付いてるとは思わなかった。
無事満足いく結果がとれるようになりました。
試したことないのもあって勉強になりましたありがとうございます。
2017/11/17(金) 22:41:16.10ID:bpYBjcB50
>>527
記述によっては複数回どころか毎回ループもあり得るから注意な
2017/11/17(金) 23:53:01.59ID:f2B03iH5a
foreach版も作ったけど
一回回すだけで辞書はできるので計算量は減るし再利用にも便利
2017/11/18(土) 01:22:17.61ID:dA2WGfe00
DBに接続して操作するクラスを作ってるのですが、コンストラクタでDBに接続してデストラクタとDisposeで切断処理を書こうと思っています
基本的にはこのような書き方でいいのでしょうか?
各処理のメソッドで接続切断を仕込むのもあると思うのですが連続で処理する場合たとパフォーマンスの低下に繋がると思ったので気になりました
2017/11/18(土) 01:26:06.53ID:uyqqFOTJ0
これEXISTS使うSQLの定番問題なんでその定番SQLが生成されるようにAnyするのが最速
そう、EFならね
2017/11/18(土) 01:33:21.33ID:Q2wZVPR60
>>534
途中でLANケーブル抜いたらどういう動作するの?
2017/11/18(土) 01:34:15.67ID:Q2wZVPR60
そしてすぐに指す!
2017/11/18(土) 01:37:14.30ID:dA2WGfe00
>>536
DBはローカルなんでそこは考えてませんでした
途中でDBとの接続切れたらエラー返すぐらいしか考えてないですね
そこでクラス抜けるようにするかどうかは分かりませんがデストラクタかdisposeに入ると思います
まだ実装してませんが
2017/11/18(土) 01:37:59.01ID:dA2WGfe00
>>535
接続部分はAnyでまとめた文打ち込む前後だけ開くってことでしょうか?
2017/11/18(土) 02:05:22.67ID:uyqqFOTJ0
>>539
悪いが俺のレスは質問と関係ないぞ
ちなみに各DBのコネクションクラスは質問通りのIDisposableな自動Close設計で
連続する処理する場合はコネクションを開いたまま使いまわすのが普通
SQLite.NETが参考と言うかやりたいことそのままじゃないか?
2017/11/18(土) 02:09:22.40ID:dA2WGfe00
>>540
ありがとうございます!
542デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/18(土) 02:43:03.59ID:NMU9eY0n0
>>540
ありがとうございます!
2017/11/18(土) 16:41:16.80ID:S0Dl2HXu0
>>540
ありがとうございます!
544デフォルトの名無しさん (ワッチョイ 8df7-jW/K)
垢版 |
2017/11/18(土) 17:07:33.62ID:18CT9AkR0
https://ideone.com/a5csSX

たくさんボタンがあって、ボタンを押すとそれに対応した画像を保存するプログラムなのですが
ひとつのsaveFileDialogを使いまわすにはどうすればいいでしょうか
上のコードのpictureBox_1、pictureBox_2が引数になる様にしたいのですが
545デフォルトの名無しさん (ガックシ 0666-jqfw)
垢版 |
2017/11/18(土) 17:30:37.37ID:mVpmRSdA6
>>544
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
// 画像保存処理
}
2017/11/18(土) 17:33:50.19ID:v7G/T0vB0
>>544
ボタンで分岐ならすぐできる
private void button_Click(object sender, EventArgs e)
{
 SaveFileDialog saveFileDialog1 = new SaveFileDialog();
if (saveFileDialog1.ShowDialog() != DialogResult.OK)) return;
if (sender==button1)
{
  pictureBox_1.Image.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Bmp)
}
else if (sender==button2)
{
}
}
2017/11/18(土) 18:31:43.88ID:+tDuSBLG0
>>544
ボタン事に対応したピクチャーボックスがあるならTagに設定しておくと便利だよ
button1.Tag=pictureBox_1;ってしといて
((PictureBox)(((Button)sender).Tag)).Imageって感じで画像を取得できる
2017/11/18(土) 19:04:31.90ID:yU1kJYivM
void RegisterClickEvent(Button b, PictureBox p)
{
var d = new SaveFileDialog();
b.Click += (s, e) => {
if (d.ShowDialog() == DialogResult.OK) {
p.Image.Save(d.FileName, ...);
}
}
}

// on load
var pairs = new [] {
new { b = button_1, p = pbox_1 },
new { b = button_2, p = pbox_2 },
...
};

foreach(var pair in pairs)
RegisterClickEvent(pair.b, pair.p);
549デフォルトの名無しさん (ワッチョイ 8df7-jW/K)
垢版 |
2017/11/18(土) 19:27:10.06ID:18CT9AkR0
みなさん有難う御座います。
やってみます。
550デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/18(土) 19:30:23.03ID:NMU9eY0n0
こんなところにもちゃっかり匿名クラスw
2017/11/18(土) 20:21:22.01ID:6NKrq56ga
>>544
まずSaveFileDialogのFileOKイベントを使ってるのがまずいくない?
これだと結局FileOKのイベントハンドラに引き渡すためだけにImageかパスをフィールドに持つ必要が出てくる

private string AskSaveNameFromUser()
{
  var sfd = new SaveFileDialog();
  sfd.DefaultExt = "bmp";
  sfd.Filter = "BMP形式|*.bmp";
  if (sfd.ShowDialog(this) == DialogResult.OK)
  {
    return sfd.FileName;
  }
  return null;
}

こんな風にユーザーから保存名を貰ってくるメソッドを作った方がいいんじゃない?
2017/11/18(土) 20:22:04.37ID:6NKrq56ga
その上で
private bool TrySaveImage(Image img)
{
  var savePath = AskSaveNameFromUser();
  if (savePath == null) return false;
  try
  {
    img.Save(savePath, ImageFormat.Bmp);
  }
  catch (Exception)
  {

    return false;
  }
  return true;    
}

こんなメソッドを用意すれば、後はラムダ式使ってボタンのclickイベントにこれを紐づけするだけ
button1.Click += (s, e) => TrySaveImage(pictureBox1.Image);
553デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/18(土) 20:36:23.54ID:NMU9eY0n0
ボタン押した時に保存したいんだからClickイベントハンドラの中に記述すればいいだろ。
554デフォルトの名無しさん (ワッチョイ f9b3-L/2a)
垢版 |
2017/11/18(土) 20:42:16.49ID:2DwFpZ7T0
フォームで画像を表示したところ、それを閉じなければコンソールに処理が戻らないプログラムになってしまいました
同時に動かす方法があれば教えていただきたいです
2017/11/18(土) 20:46:06.00ID:v7G/T0vB0
>>554
コンソールって何を指しているの?
フォームに画像表示(パネルでもPictureboxでも)して反応が無くなるってことは普通は無い
2017/11/18(土) 20:46:26.41ID:9PzaXhXFM
START をコマンド名の前に書いても?

とエスパー回答
2017/11/18(土) 20:48:58.44ID:v7G/T0vB0
モーダルフォームで表示しているのならモードレスフォームにして表示
https://dobon.net/vb/dotnet/form/showform.html
558デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/18(土) 20:53:01.78ID:NMU9eY0n0
>>554
Threadを使おう

var thread = new System.Threading.Thread(
() => {
System.Windows.Forms.Application.Run(form);
});
thread.Start();
2017/11/18(土) 20:57:25.99ID:6NKrq56ga
一つのプロセスで複数のUIスレッド作って大丈夫なんだっけ?
2017/11/18(土) 21:01:09.80ID:GCI+mPsu0
すみません、上手く説明できないと思うので一応コードも載せます

やりたいことはコマンドプロンプト上で流れる処理の途中で画像を呼び出すことです
その際、処理が止まってしまいます

var form = new System.Windows.Forms.Form();
var pb = new System.Windows.Forms.PictureBox();
pb.Image = System.Drawing.Image.FromFile(imgpath);
pb.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
form.Controls.Add(pb);
System.Windows.Forms.Application.Run(form);
2017/11/18(土) 21:02:37.60ID:GCI+mPsu0
途中で送信してしまいました・・
頂いた返事から色々と試してみようと思います!
562デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/18(土) 21:03:01.96ID:NMU9eY0n0
>>560

var form = new System.Windows.Forms.Form();
var pb = new System.Windows.Forms.PictureBox();
pb.Image = System.Drawing.Image.FromFile(imgpath);
pb.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
form.Controls.Add(pb);

var thread = new System.Threading.Thread(
() => {
System.Windows.Forms.Application.Run(form);
});
thread.Start();
2017/11/18(土) 21:04:16.09ID:v7G/T0vB0
>>560
Application.Run(form);で止まるなそれは
フォームのインスタンス作ってShow()できないの?
564デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/18(土) 21:06:38.70ID:NMU9eY0n0
Application.Runをしないとメッセージ来ねえからShowしても一瞬で消えるだろ。
2017/11/18(土) 21:07:12.07ID:v7G/T0vB0
じゃあ別スレッドでやるしかないのか
2017/11/18(土) 21:19:47.80ID:GCI+mPsu0
>>562
並列処理で無事起動できました!
イカのような記号が何を意味するか分かりませんが
いい機会なのでスレッドも勉強してみます

>>563
なぜApplication.Run(form)で止まってしまうのでしょうか?
フォームに制御が移ってしまっているということですかね
2017/11/18(土) 21:23:57.35ID:D1AcCkIgr
Task使え!
2017/11/18(土) 21:26:29.84ID:v7G/T0vB0
>>560
その部分全部を別クラスにしてインスタンスを作って呼び出せば動いた
実際に呼び出す部分は
formtest f = new formtest();
f.formshow();
を入れておいて
別クラスで例えば
class formtest:Form
{
public formtest()
{ }
public void formshow()
{
   var form = new System.Windows.Forms.Form();
   var pb = new System.Windows.Forms.PictureBox();
   pb.Image = System.Drawing.Image.FromFile(imgpath);
   pb.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
   form.Controls.Add(pb);
   System.Windows.Forms.Application.Run(form);
}
}
を作っておく
>>566
ああちょっと遅かったか
2017/11/18(土) 21:29:35.82ID:v7G/T0vB0
ごめんこれ無しでw>>568
2017/11/18(土) 21:36:41.17ID:GCI+mPsu0
>>568
丁寧に教えてもらいありがとうございます
どの実現方法も勉強になりますし、解がすぐに思い浮かびコードにできるのは憧れます
2017/11/18(土) 21:37:46.34ID:v7G/T0vB0
>>570
すいません手順間違えて動くと勘違いしていましたw
結局同じことなので参考にしないでくださいw
572デフォルトの名無しさん (ワッチョイ 6ee8-LGLT)
垢版 |
2017/11/18(土) 21:50:58.81ID:AvOAupbn0
変数がNULLだったら、ってこれが一番シンプル?
a == null ? 0 : 1;
2017/11/18(土) 21:55:24.54ID:GCI+mPsu0
>>571
そうでしたか
検証までしてもらい申し訳ないです
2017/11/18(土) 21:56:43.57ID:kl8n9Pj50
>>572
つ ?? 演算子
2017/11/18(土) 22:13:06.30ID:ScUjvH+z0
>>574
>>572の式書ける?
2017/11/18(土) 22:17:16.38ID:kl8n9Pj50
>>575
書けない。nullの場合の値設定のみ。
577デフォルトの名無しさん (ワッチョイ 6ee8-LGLT)
垢版 |
2017/11/18(土) 22:17:39.50ID:AvOAupbn0
NULLじゃなかった場合の処理が要らない場合は>>574がベスト?
2017/11/18(土) 22:20:13.27ID:w1kiMD3J0
a == null ? 0 : a;
a ?? 0;
は同じ内容になる
579デフォルトの名無しさん (ワッチョイ 6ee8-LGLT)
垢版 |
2017/11/18(土) 22:21:15.58ID:AvOAupbn0
>>578
おけ
さんきゅ
2017/11/18(土) 22:47:38.85ID:kl8n9Pj50
ぬるぽ
2017/11/18(土) 23:05:35.11ID:VG3ktzhs0
Unity+C#の質問になっちゃいますが、
=========================================
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Ball_Ctrl : MonoBehaviour
{

public float speed = 50.0f;

void Update ()
{

Vector3 test = new Vector3();

test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;

transform.Rotate( test );

  }
}
==========================================
これをキューブ型の3Dオブジェクトにぶち込むと上下キーで回転するんだけど、
これに回転制限を設けたい場合どうすればいいか教えてください!
2017/11/18(土) 23:23:09.15ID:Wsch61C00
>>581
とりあえずtest.xの値をリアルタイムで確認してみるとか

ちゃんと制御できてるのがいいんだろうけどな
583デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/18(土) 23:30:02.55ID:NMU9eY0n0
>>581


test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;

// minAngle〜maxAngleの間に制限
var minAngle=20f;
var maxAngle=160f;
test.x=test.x<minAngle?minAngle:test.x;
test.x=test.x>maxAngle?maxAngle:test.x;
2017/11/19(日) 00:15:02.15ID:+rKwXo5m0
>>582
>>583
この説明受けてもまだチンプンカンプンで申し訳ないのですが、

実際に角度を変えている「transform.Rotate」ってのが
「現在の角度+test.x」って事だから、

if文で、
もし現在の角度がmin°〜max°以内の範囲ならば
test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
って事ですかね?

現在値なら
genzaiti = this.transform.eulerAngles.x;
で現在の角度を取得出来るんですが、

なんか上手くいかない・・・

>>583

test.x=test.x<minAngle?minAngle:test.x;
test.x=test.x>maxAngle?maxAngle:test.x;
の記述も意味がよく分からないです・・・
585デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/19(日) 00:22:50.41ID:5IbV37Zg0
genzaiti = this.transform.eulerAngles.x;
if(genzaiti>=min && genzaiti<=max) {
test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
}


こうしてもうまくいかないってこと?
2017/11/19(日) 00:46:45.14ID:nVHpanKs0
>>584
ああ、transformって姿勢行列か
だったらtransform→angleの変換は期待しない方がいい
angle→transformは一方通行として
現在のangleを保持して
毎回transformをangleから作る感じで
2017/11/19(日) 00:50:00.47ID:+rKwXo5m0
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Ball_Ctrl : MonoBehaviour
{
public float speed = 50.0f;
public float genzaiti;
public float min = -15.0f;
public float max = 15.0f;

void Update ()
{

Vector3 test = new Vector3();
genzaiti = this.transform.eulerAngles.x;

if (genzaiti >= min && genzaiti <= max)
{
test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
}
transform.Rotate( test );

  }
}
====================================
教えて頂き、こうしてみたんですが
挙動がおかしいです

if文的に
↑をおしてmaxを超えるとキー入力を受け付けなくなるのは理解出来るんですが、
↓キーをおすとgenzaitiが359とか謎の数値になるのが理解できない・・・
2017/11/19(日) 01:17:17.13ID:nVHpanKs0
>>587
359=-1やんけ?
589デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/19(日) 07:08:15.26ID:5IbV37Zg0
>>587
if (genzaiti >= min && genzaiti <= max)

if (genzaiti%360 >= min && genzaiti%360 <= max)
590デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/19(日) 07:19:50.08ID:5IbV37Zg0
すまん、これは間違い
591デフォルトの名無しさん (ワッチョイ f9b3-AWKa)
垢版 |
2017/11/19(日) 09:53:15.87ID:RgqRbH7C0
RubyはPerlより優れていてPythonより劣っている。
592デフォルトの名無しさん (ワッチョイ 9171-jqfw)
垢版 |
2017/11/19(日) 12:26:49.81ID:/vA5wcYG0
>>581
これで同じことやってる
https://github.com/zabaglione/ObjectRotateClamp/blob/master/ObjectRotateClamp.cs
2017/11/19(日) 12:35:27.94ID:E5DVFTo40
もう、自分でゴリゴリロジックを書くのが馬鹿らしくなってきた。

何処かの偉い人が言っていたが今のプログラミングは工学じゃなくて科学だと。
nugetか何処かでライブラリを拾ってきて、ひたすら実験を繰り返し、
自分の期待通りの結果が得られるかどうか判定するのみ。
2017/11/19(日) 13:13:49.58ID:CpArH3DxM
ドメインロジックもそれでできるならいいけどね
できないでしょ
2017/11/19(日) 13:23:38.14ID:4mwAxl/ka
>>593
むしろそれのどこが科学なのかとw

電気屋も建築屋もパーツや材料がスペック通りの性能を持ってるか
実験するけど、それを科学とは言わないと思うよw
2017/11/19(日) 13:31:47.12ID:T31pkR2W0
今週はずっとlockとかMoniterとかManualResetEventSlimとか
new Thread(new ThreadStartとかTask.Factory.StartNewとかTask.Run
などなど書いていて頭痛くなってきた、やり方いろいろありすぎ
2017/11/19(日) 13:34:25.58ID:CpArH3DxM
今だとほとんど使わないよねその手の非同期ライブラリ
2017/11/19(日) 13:39:52.27ID:+rKwXo5m0
>>592
ひとまずこれをブチ込んでみたら思った通りに動いた!
よく見つけてくれましたね!ありがとうございます!

いまから一個ずつ理解するため勉強します。


他のみなさんも親切にどうもありがとうございました!
今回の件はとりあえず一件落着です。
2017/11/19(日) 13:40:17.88ID:E5DVFTo40
>>595
現代のプログラミングは科学だって言ってるのオレじゃないけどねw

ソフトウエアってパーツや材料みたいなきちんとしたスペックなんかは無いし
ソースが巨大でブラックボックス化しているので
自然科学の実験と観察のようだと皮肉って言ってるんだと思う。
2017/11/19(日) 13:42:55.02ID:E5DVFTo40
>>598 の人も実験と観察の世界だw
2017/11/19(日) 13:44:15.53ID:Plho4dsNM
>>597
いや全部使うだろ
マルチスレッドといえば、社内にParallel厨がいてうざいわ
ボトルネックになってないのに無駄に並列化するのやめろ
オーバーヘッドを増やすだけで全く速くなってないんだよ
2017/11/19(日) 13:47:26.35ID:CpArH3DxM
>>601
いや使わんよ
スレッド間の結合が強くなりすぎる
2017/11/19(日) 13:49:44.71ID:CpArH3DxM
Taskは使う
他は保守性下げるから使いたくないし使わなくても問題ない
2017/11/19(日) 13:52:13.40ID:E5DVFTo40
>>601
そういうヤツに限ってLockがなんだか分かってなくて共有リソースのロックが放置プレイ。
たまたま動いているような状態だ。
2017/11/19(日) 15:22:20.18ID:k+hZMr200
Taskは普通に使うけど、わざわざThreadを使うケースってなんかあったっけ?
2017/11/19(日) 15:32:26.34ID:E5DVFTo40
>>605
Task.Runってメインスレッドより早く終わるのが前提でしょ
メインスレッドと同時に立ち上げて上がりっぱなしのだとThread.Startでしょう。
2017/11/19(日) 15:44:54.87ID:k+hZMr200
>>606
LongRunningじゃダメなの?
2017/11/19(日) 15:55:49.72ID:E5DVFTo40
>>607
へぇ〜、スレッドプールを消費しないオプションがあったんんだ。
でも、Thread.Startを使わないでTask.Factory.StartNewに
TaskCreationOptions.LongRunningを付けて実行するメリットって何があるのだろ?
2017/11/19(日) 15:58:44.65ID:k+hZMr200
顔真っ赤やんけ・・・もういいわ
2017/11/19(日) 15:59:36.35ID:Ay/cPvn90
最近こういう下らねープライドで食い下がる奴多いな
2017/11/19(日) 16:00:15.24ID:Ay/cPvn90
もちろんid真っ赤な方に言ってるんで誤解せんといて
2017/11/19(日) 16:09:07.36ID:E5DVFTo40
>>609
真っ赤とかどうとかじゃなくて素直に聞いているだけなんだけどな。
Task.Runはお手軽だけどTask.Factory.StartNewにそれほどのメリットを感じないので聞いてみた。
2017/11/19(日) 16:54:48.98ID:CpArH3DxM
やれやれ
2017/11/19(日) 16:57:32.50ID:0lccfPn/r
過去の遺物
今はTask.Run一択
2017/11/19(日) 16:59:16.27ID:CpArH3DxM
使いたいなら使えばいいよ誰も文句は言わん
仕事で遭遇しなきゃ害はない
616デフォルトの名無しさん (ワッチョイ 917e-jqfw)
垢版 |
2017/11/19(日) 17:17:53.28ID:YUYxzc/40
なんだこいつら...
その人は普通にThreadでいいものを無理してTaskでやる意味聞いてるだけじゃん....
なんで突然キレ出したのか謎すぎる...
2017/11/19(日) 17:23:28.67ID:E5DVFTo40
>>613-614
だから、メインスレッドと同じ寿命のスレッドはTask.Runでどうするんだよ。
答えられないのなら、煽るような真似をするな。
2017/11/19(日) 17:39:24.07ID:nV3+UDVnM
>>614
過去の遺物
今はasync/await一択
2017/11/19(日) 17:46:38.44ID:jnbFiabv0
>>618
Taskとasync awaitってめっちゃ紐付いてるじゃん
切り離して考えるのはおかしいぞ
620デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/19(日) 17:53:11.85ID:5IbV37Zg0
>>619
Task.Runを自分で書くのは過去の遺物ってことじゃね?
2017/11/19(日) 18:39:57.70ID:CpArH3DxM
>>616
逆ってこと
2017/11/19(日) 18:51:04.39ID:T31pkR2W0
過去の遺物と断言できるのはThread.suspend
623デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/19(日) 19:30:29.96ID:5IbV37Zg0
Unityとか出て来たから初めて使ってみたけど楽しい��
2017/11/19(日) 19:34:33.51ID:2mKNwU/B0
.net4.0までの環境で仕事してるおれにも同じ事いえんの?
2017/11/19(日) 20:01:28.15ID:8FVAlHGr0
>>624
なぜサポート切れを使うんだ?
2017/11/19(日) 20:08:02.55ID:NX3L6kgWa
XP使ってるエンドユーザーを切り捨てできなきゃそうするしかないね
2017/11/19(日) 20:33:47.12ID:+rKwXo5m0
>>623
今更感はあるのでしょうが、僕も数日前に初めてUnity(C#も)触ったんですけど
すごいですよね!今ってこんな感じにゲーム作れるんですね・・・

僕の場合3Dモデラーなんで、覚える事いっぱいだけど
プログラム出来る人なら無料のアセット入れたらすぐさまゲーム作れそうですね
2017/11/19(日) 22:46:03.87ID:a21FIb9I0
>>608
キャンセルや例外の処理などを他のタスクと同列に扱える。
それらが必要無いなら特にメリットも無いけど、Threadクラスに拘るメリットも無い。⇒Taskで一本化
2017/11/19(日) 23:06:57.29ID:E5DVFTo40
>>628
ありがとう!
そう言う答えが欲しかった。
メインスレッドと同時に起動しっぱなしになるスレッドをTaskで起動すると
Task内で発生した例外がTask終了時に一気に飛んでくるという解釈でよいのかな?
それだと使いにくいな。
2017/11/19(日) 23:10:42.79ID:E5DVFTo40
プログラム終了時に例外が発生することがあるが
ひょっとして.NETライブラリ内のTaskが災いしてる?
2017/11/19(日) 23:22:19.54ID:kef1Qlbp0
普段の行い
2017/11/19(日) 23:27:16.64ID:KzEdu68P0
えぇ……
2017/11/19(日) 23:32:38.48ID:rl2qpTKV0
>>630
自分で作った立ち上げっぱなしのスレッドorタスクの後処理をしてないんだろ
>>631で合ってるなw
2017/11/19(日) 23:40:03.47ID:rl2qpTKV0
立ち上げっぱなしかどうかは関係ないか
そこは訂正しとく
635デフォルトの名無しさん (ワッチョイ 9102-jqfw)
垢版 |
2017/11/20(月) 00:18:59.27ID:i2xgyqGp0
ダッセ
2017/11/20(月) 04:47:41.41ID:LQqpoEbp0
>>625
知らんがなw上があほなんだよ
2017/11/20(月) 06:17:01.54ID:U7p2GA3b0
>>631
この業界定番のギャグだな。
2017/11/20(月) 06:17:56.26ID:U7p2GA3b0
>>633
nugetで拾ったライブラリの中の人の行いが悪いからだな。
2017/11/20(月) 07:14:49.97ID:nPsSyBEn0
>>636
お前も同類だけどな
2017/11/20(月) 08:04:56.95ID:XyKfixC2r
>>629
逆で未処理の例外があればTaskが終了する
それはThreadと同じ
2017/11/20(月) 08:07:46.65ID:FVq6Osty0
よくあんなゴミに声をかけようという気になるものだ
類は友を呼ぶからか?
2017/11/20(月) 08:09:30.80ID:XyKfixC2r
上の人からの
古い方が安心だから
と訳が解らない理由で.Net3.5を採用しようとしてる新規プロジェクトがあるw
当然現場は猛反対しているが
2017/11/20(月) 08:30:36.23ID:OymZQAJWM
>>642
変化を極端に恐れるジャップ体質どうにかしてほしいな
2017/11/20(月) 08:37:53.75ID:phc3FRBoM
>>640
wait, resultのとき以外でも落ちるのか?
2017/11/20(月) 08:40:57.62ID:1G6nIlxwM
民族性じゃなくて契約の問題
それでコストが少し増えたとしても成果じゃなく工数で金取るから不利益にならないし、
客の事業じゃなく作業に対して責任を負う以上はもどうしてもオーバークォリティにならざるを得ない
自社サービスの会社だと軽いノリでバージョン上がるぞw
2017/11/20(月) 08:43:07.45ID:phc3FRBoM
>>642
多分、安心と言っている意味が違うかも。
.NET3.5はMSが終了宣言できないバージョンになる。
vb6の様にゾンビの如く生き残り安泰w
647デフォルトの名無しさん (ガックシ 0666-jqfw)
垢版 |
2017/11/20(月) 08:49:09.41ID:Kfz9fY2x6
>>641
思い通りならなくてドンマイw
2017/11/20(月) 08:55:17.32ID:FVq6Osty0
ゴミが染るから触んな
2017/11/20(月) 09:02:42.76ID:phc3FRBoM
>>645
受託じゃNode.jsなんて使う機会は無いもんね
自社サービス会社のがプログラマーは楽しそう
2017/11/20(月) 09:38:42.97ID:zQ7I4hEQM
PCLって美味しいの?
2017/11/20(月) 11:44:42.83ID:bl/e+CdyM
>>639
おまえは開発環境変更できる権限あるのか。いいな。
2017/11/20(月) 11:46:23.27ID:bl/e+CdyM
>>642
async await使えないの
2017/11/20(月) 11:58:13.80ID:QH5eJXusM
ギョーミーなアプリでasync/await使う?
2017/11/20(月) 12:14:21.61ID:UOv8Me/NM
>>653
使わない
というかawaiasyncってなんだ?って連中の方が多数派なので使えない
冗談みたいなホントの話
2017/11/20(月) 12:18:41.10ID:QH5eJXusM
>>654
使ってても待たせてるだけで何も出来ないとか
意味ないじゃんw っての
2017/11/20(月) 13:24:27.66ID:Q9UPjx7d0
>>650
デスクトップだけなら共有プロジェクトでいい
2017/11/20(月) 17:43:42.18ID:XyKfixC2r
>>653
バリバリ使ってる
知らない人でも説明すれば大体は解ってくれる

こんな便利なものがあるんですね!と感動する人
ふーんな人
非同期何それ美味しいの?な人
説明では解ったと言いながら実装では悪戦苦闘してる人
反応は様々だね
2017/11/20(月) 18:00:51.43ID:bl/e+CdyM
>>657
おれなんかTaskで匿名メソッドシコシコ書いてるわ!
2017/11/20(月) 18:48:31.14ID:OyLLFCrh0
すげーでかい図を出力したいんですがフォーマットは何がオススメですか?
画像だとデスクトップより大きくなると表示できないようです
2017/11/20(月) 18:53:19.76ID:aqwGZvu20
>>659
>デスクトップより大きくなると表示できない
こういうこと?
スクロールバーを付けて画像を表示する
http://dobon.net/vb/dotnet/graphics/scrollimage.html#section1
2017/11/20(月) 19:22:27.44ID:OyLLFCrh0
>>660
あ、申し訳ないです
フォームでエラー出てました
2017/11/20(月) 19:33:32.37ID:aqwGZvu20
>>661
x64(AnyCPU)で動かす
それがだめなら自分で必要なだけ読み込んで部分的に表示するしかない
GDI+にはそんな機能無かったと思うから
2017/11/20(月) 19:34:30.92ID:U7p2GA3b0
>>654
知識が.NET2.0くらいで止まってる人が多いよ。
それ以上の言語拡張は開発者置いてけぼりのMSの自己満足かもね。
664デフォルトの名無しさん (ガックシ 0666-jqfw)
垢版 |
2017/11/20(月) 19:40:12.58ID:YF/poHTW6
>>661
なんのエラーが書けや
2017/11/20(月) 19:43:30.41ID:U7p2GA3b0
>>659
Open XML
2017/11/20(月) 19:55:19.01ID:U7p2GA3b0
>>657
非同期何それ美味しいの? 調理間違えても、お腹壊さない?
2017/11/20(月) 20:17:10.91ID:rFfN6JGKM
>>663
というか、アメリカは内製が中心だからバージョンについて日本ほど保守的にならなくていいんだと思うよ
2017/11/20(月) 20:19:38.39ID:aqwGZvu20
>>664
エラーは今回どうでもいい情報なんだよな
むしろ表示する用途・解像度・実行環境の方が重要
x64なら10000*10000 pixel*32bppのBitmapでも余裕で表示できるけど
2017/11/20(月) 20:23:29.97ID:e0aI6m0P0
ただのコーディングミスでNullReferenceとか最悪コンパイルエラーまである
2017/11/20(月) 20:34:17.67ID:U7p2GA3b0
>>667
実際の実装に無難で枯れた技術を使うのと
新しい技術に無知なのは違うと思うけど
2017/11/20(月) 21:10:30.74ID:LQqpoEbp0
>>659
ttps://qiita.com/bsh_tw/items/b8b2f845d85d1f1dc4e9
こんな感じ?
2017/11/20(月) 21:17:18.15ID:rFfN6JGKM
>>670
そういう問題じゃないの
内製だと、選んだ技術について組織の中でノウハウを蓄積しやすい
また、開発も運用保守もユーザーも同じ主体なのでJVMのバージョンアップでベンダーに億単位でぼったくられるようなことにはならず、
更新の障壁が比較的低いんだよ
673デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/20(月) 21:25:02.39ID:UI9vB3qq0
>>668
いや、、フォームのエラーだけじゃわかんねえだろ、、、
本当にお前の思ってるのが原因か、、?
2017/11/20(月) 21:25:54.16ID:U7p2GA3b0
>>672
ま、見積もりありきの受託開発とリスクのある新技術の導入が合わないのはあるとは思う
なんでc#スレでJVM w
2017/11/20(月) 21:28:21.71ID:aqwGZvu20
>>673
考え方が逆だと思うんだよな
エラーだけ示されて解決できるのならそうしたらいいと思うけど、どっちにしても本人が何も言わないのならどうしようもない
2017/11/20(月) 21:28:24.50ID:y/6cZRj30
区別が付いてないんでしょ
2017/11/20(月) 21:28:54.04ID:2/KPMrVLr
内製じゃないけど開発の各関係部署にプロトタイプを配るのにクレームがつかない為に.NETのバージョンを下げてた人達がいたなあ
当然製品版も下げてたww
その話聞いて笑うしかなかった (´・ω・`)
2017/11/20(月) 21:31:06.19ID:EjockrVW0
ライセンス料ケチってVS2010とか使ってるのが原因の場合もあるぞ
2017/11/20(月) 21:47:30.51ID:Rfx0F+NsM
>>672
内製は銀の弾丸じゃねーぞw
680デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/20(月) 22:00:54.42ID:UI9vB3qq0
>>675
なら聞けよ
何言ってんだ
2017/11/20(月) 22:03:17.71ID:U7p2GA3b0
落ち着いて ( ´・ω・`)_且~~
2017/11/20(月) 22:12:04.01ID:gpmTl3Lx0
LINQの書き方で質問ですが
特定の教科の赤点の人数を調べるとした場合
数が少なければ↓のような処理で済むのですが

public class Test
{
public string  名前 { get; set; }
public int 国語 { get; set; }
public int 数学 { get; set; }
}

List<Test> ListTest = new ListTest ();
string Kyouka = "国語";
int akaten = 0;

if(Kyouka == "国語")
{
akaten = ListTest.Where(x=>x.国語 < 30 ).ToList().Count;
}
if(Kyouka == "数学")
{
akaten = ListTest.Where(x=>x.数学 < 30 ).ToList().Count;
}

数が増えるので↓のような書き方がやりたいんですが無理ですか?

akaten = ListTest.Where(x=>x.Kyouka < 30 ).ToList().Count;
2017/11/20(月) 22:15:11.19ID:ThNisUZnM
>>678
dotnet cli + VSCodeでいいじゃん
商用無料で最新バージョン使えるぞ
SCDなら配布も楽だし
なんで流行らないんだろ
旧バージョンもう要らんでしょ
684デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/20(月) 22:16:16.66ID:UI9vB3qq0
種類が増えるなら教科ごとにプロパティ作るんじゃなくて教科名+点数の辞書のリストにするのが自然だと思う
2017/11/20(月) 22:21:19.53ID:rFfN6JGKM
>>682
データ設計が悪い
テスト結果(生徒ID, 科目, 点数)
生徒(生徒ID, 名前)
この方がSQLフレンドリー
2017/11/20(月) 22:30:41.09ID:ThNisUZnM
>>682
C#じゃないけどSQLアンチパターン読んだほうがいい

var map = new Dictionary<string, Func<Test, int>() {
["国語"] = t => t.国語,
["数学"] = t => t.数学,
};

var ans = map.Select(e => new {
科目 = e.Key,
赤点人数 = TestList.Count(t => e.Value(t) < 30),
});

foreach(var a in ans)
Console.WriteLine($"{a.科目}: {a.赤点人数} 人");
2017/11/20(月) 22:40:41.76ID:aO8f69d6a
>>682
それ、LINQいっこも関係ないような気が...
Func<Test, int> getScore = (x) =>
{
  if (Kyouka == "国語") return x.国語;
  if (Kyouka == "数学") return x.数学;
};
akaten = ListTest.Where(x => getScore(x) < 30 ).ToList().Count;
2017/11/20(月) 22:50:14.07ID:rFfN6JGKM
>>687
それは毎回無駄な科目チェックが入るから非効率
せっかくデリゲート使うんなら最初にgetScoreを科目に応じたものに差し替えるのがスマート
もちろんそれ以前にデータ設計が間違ってるけど
2017/11/20(月) 22:51:04.11ID:aO8f69d6a
>>688
そりゃそうでしょうけどストレートにオーダーされたものを出してるだけなんでw
690デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/20(月) 22:52:45.76ID:UI9vB3qq0
var akaten=ListTest.Count(x=>(int)(typeof(Test).GetProperty(Kyouka). GetValue(student))<30);
2017/11/20(月) 23:14:47.31ID:gpmTl3Lx0
>>684
>>685
やっぱりデータ設計が悪いと言われますか
今のうちに変えてしまうべきなのかな

>>686
Dictionary使ったことなかったので参考になります。
SQLアンチパターンすごい為になりそうなので読んでみます。

>>687
>>690
まだ完全に理解できていないけど参考になります。

レス参考に対応してみます。
みなさんアドバイスありがとうございました。
692デフォルトの名無しさん (ガックシ 0666-jqfw)
垢版 |
2017/11/21(火) 11:17:50.06ID:qjtNZd9v6
new Dictionary<string, int>(){
{“たろう”, 68}
}

型引数を推論させて
new Dictionary(){
{“たろう”, 68}
}
みたいにできないの?出来ればいいのに。
2017/11/21(火) 12:30:59.27ID:WV/YnhFsM
C#は厳格な型言語です
2017/11/21(火) 12:32:30.39ID:JYBkdGYBM
C#7ならたぶんこう書ける
static Dictionary<TKey, TValue> ToDictionary(this IEnumerable<(TKey key, TValue value)> items) =>
 items.ToDictionary(x => x.key, x => x.value);

new[] { ("たろう", 68) }.ToDictionary()
695デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/21(火) 19:23:11.85ID:K26qvPIE0
awaitってなんの意味があるの?
待ってたら非同期の意味なくね?
2017/11/21(火) 19:28:24.05ID:TIZ+WImHM
>>695
って思うじゃん?
2017/11/21(火) 19:32:39.47ID:oC2HbrNwa
>>695
処理が終わるまで待ってるように見えるけど実際は別にスレッドを使って
違うことを同時にやってるだけ
698デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/21(火) 19:36:01.18ID:K26qvPIE0
>>697

メインのスレッドはタスクの実行完了を待機状態なんだろ?
待機してたら何もできないから意味なくね?
2017/11/21(火) 19:38:32.15ID:zF41/4yq0
>>698
awaitの後の処理をタスクにして、awaitで待ってるタスクの後続タスクにしてる。
メインのスレッドは待機してない。
2017/11/21(火) 19:39:21.82ID:tfBo/9nR0
>>698
簡単なコードで試せるんだから2chに書き込む時間使って動作確認すれば?
2017/11/21(火) 19:40:18.25ID:KARCkhIlr
メインスレッドはいわゆるwaitをしている訳ではない
702デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/21(火) 19:41:33.68ID:K26qvPIE0
>>699
なるほど!
2017/11/21(火) 21:20:36.17ID:8K/pnPq30
最近のオシロスコープはWebサーバー機能を持っていて、Webブラウザでアクセスすると
計測画面を表示させることができますが、C#で同じような機能を簡単に実装することはできるでしょうか?
リモートデスクトップではなく、WinFormsのアプリ画面だけをネット越しに共有する感じです。
2017/11/21(火) 21:27:50.82ID:UMxxTtnJ0
>>703
中にwebサーバー入ってんじゃね?
c#でって言われてもハードの構成が何を想定してるのかわかんなくね?
705デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/21(火) 21:31:11.05ID:K26qvPIE0
>>703
WinFormsの画面を配信したいってこと?
2017/11/21(火) 21:34:21.85ID:UMxxTtnJ0
exeコピーすればいいじゃんね
2017/11/21(火) 21:36:26.83ID:UMxxTtnJ0
サーバーのHDDのインストーラをぶっ叩けば.netframeworkも入るぞ
2017/11/21(火) 21:50:25.88ID:z0YVJa690
精度や遅延はどの程度なら許容されるんだろ

オシロスコープに出来るんならC#でも出来るとは思うけど
どんなデータの送り方してるのかまでは分からない
2017/11/21(火) 21:52:46.40ID:HJsjXF5N0
>精度や遅延はどの程度なら許容されるんだろ
要件による
遅延に関しては、ユーザ視点で表面化し難い様に誤魔化す方法が幾らかはあるし
2017/11/21(火) 21:59:41.58ID:8K/pnPq30
>>705
その通りです。

作ろうとしているのはオシロスコープとは全く別で、計測器の取得データを延々と
表示し続けるようなものです。
現状はファイルベースで共有しているのですが、例として出したオシロスコープのように
ある程度リアルタイムの値も見たいと社内で要望があったので。
なので、遅延は数秒レベルでも全く問題無いです。
711デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/21(火) 22:03:47.53ID:K26qvPIE0
>>710
websocketサーバー立ててjsonで生のデータを定期的に送信するようにする。
javascritで受信してcanvasとかにそれを表示するウェブアプリをウェブサーバー立てて配信する。
2017/11/21(火) 22:04:13.13ID:oC2HbrNwa
>>710
webサーバでいいだろう
2017/11/21(火) 22:11:08.94ID:UMxxTtnJ0
この場合ってHDDからデータ取ってくるだけじゃね?
2017/11/21(火) 22:11:40.48ID:fFSiopFkM
ElasticsearchとKibanaでも使えば?
715デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/21(火) 22:23:31.72ID:K26qvPIE0
>>713
javascriptで定期的にデータのファイルをダウンロードして表示するようにするだけか
2017/11/21(火) 22:27:39.04ID:z0YVJa690
後は計測間隔がmsスケールとかじゃなけりゃ
そんなに難しくは無いと思う
2017/11/21(火) 22:32:00.42ID:tfBo/9nR0
もうC#関係なくなってきてるな
2017/11/21(火) 23:02:59.07ID:/0BXFww1a
昔USBや232C接続の計測器のデータ拾う仕事してたけど
ネットワーク越しはやったことないな

サンプルレートはmsオーダどころか10ksps以上でも問題ないでしょう
2017/11/21(火) 23:24:00.28ID:AM6ulXU90
9600BPS同期で通信出来れば誉めてあげるよ
720デフォルトの名無しさん (ワッチョイ 6e96-JNqm)
垢版 |
2017/11/21(火) 23:29:41.27ID:e9zQnDKx0
windows visual studioでのフォームアプリを使ってのC#の質問です

例えばTextBoxAとTextBoxBのテキストボックスを
フォーム上に配置して
TextBoxAに「あ」と入力してEnterを入力したらTextBoxBに「い」と表示させるようにしたいのですが
どうすればいいでしょうか?
2017/11/21(火) 23:31:16.83ID:TR9cbyXd0
>>711で充分だろう
難しいとこ一つもないよ
722デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/21(火) 23:38:07.40ID:K26qvPIE0
>>720
テキストボックス1のイベントハンドラでテキストボックス1のTextプロパティを取得して、それが「あ」ならテキストボックス2のTextプロパティに「い」を代入する。
2017/11/22(水) 00:06:37.07ID:jXiKT4v3a
>>720
スレの存在意義を否定するようだけど
その程度でいちいち質問してたら先が思いやられるよw

public Form1()
{
  InitializeComponent();
  textBoxA.KeyDown += (s, e) =>
  {
    if(e.KeyCode == Keys.Enter && textBoxA.Text == "あ") textBoxB.Text = "い";
  };
}

自分でやっといて何だけど、本当はいきがってラムダ式なんか使わずに
イベントハンドラを書いた方が保守性の面では好ましいと思う
2017/11/22(水) 00:32:48.43ID:pUgwVgr10
いきがってラムダ式とか使ってるけど直前のレスがほぼ完全解答という
2017/11/22(水) 00:38:13.46ID:KA0qTObfa
俺だったらTrim()付けるね
2017/11/22(水) 00:47:40.32ID:QmSU3CcY0
キメェ
ctrl+vでどうなるんだ?
とか最終的にはkillfocusちゃうの?
とか考えると普段ぜってー組まない
コード見ると黒板キィィィィィって
やられてる気分になる
2017/11/22(水) 00:54:55.44ID:d5y4PxOU0
煽るだけのバカ
728デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/22(水) 00:55:46.04ID:Jt3bKlvZ0
そいついつもキレてんな。
729デフォルトの名無しさん (ワッチョイ 1d03-FHhe)
垢版 |
2017/11/22(水) 00:56:49.24ID:NUn4dBze0
キレッキレやな
730デフォルトの名無しさん (ワッチョイ 918f-wWUj)
垢版 |
2017/11/22(水) 00:59:12.72ID:8eOpOd0J0
>>726
エンターで動作なんだからCtrlVがどうこうとかイミフだしフォーカス外したいなら外せばそれで済む話じゃねえか
2017/11/22(水) 01:38:12.73ID:QmSU3CcY0
>>730
テキストボックスでkillfocus以外での処理は鬼門
そういう暗示にかかっているのです
でもctrl+Aは気軽に入れるけどね
732デフォルトの名無しさん (ワッチョイ 6ee8-LGLT)
垢版 |
2017/11/22(水) 22:27:47.55ID:2ViDa+Rm0
データバインド教えて

this.dataGridView_List.DataSource = list;
これをロード時に書けば
listにAddしてけばDataGridに行追加されてく?
2017/11/22(水) 23:26:53.46ID:OlRubHVI0
listがINotifyCollectionChangeを実装したオブザーバブルなリストならね。
ただのリストじゃ反映されないと思う
734デフォルトの名無しさん (ワッチョイ 6ee8-LGLT)
垢版 |
2017/11/22(水) 23:30:35.23ID:2ViDa+Rm0
>>733
これWPFだけ?
735デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/22(水) 23:39:53.01ID:Jt3bKlvZ0
>>734
Formアプリでもあるんじゃない?
http://www.digi-con.co.jp/tech/node/66
2017/11/23(木) 00:45:13.68ID:axjWBGmc0
素朴な疑問なんですけど
ListコレクションからLINQでデータ検索したい時とか、データがソートされてる方がパフォーマンスが良いとかあるんでしょうか
2017/11/23(木) 00:48:24.00ID:3UvXGadQ0
>>736
ソートされてるならBinarySearchを使えば速い
LINQ使ったら線形検索になるのでソートは意味ない
2017/11/23(木) 09:20:42.83ID:axjWBGmc0
>>737
BinarySearchが使えるのは知りませんでした
ありがとうございます
2017/11/23(木) 10:19:01.69ID:ocuKvabTr
件数少ない時は線形の方が速いよ
740デフォルトの名無しさん (ワッチョイ 27f7-JCOS)
垢版 |
2017/11/23(木) 16:29:13.27ID:1glLBmTM0
1 のとき 0.7
3 のとき 0.9
8 のとき 0.6
9 のとき 0.5

こういうデータがある時、右の要素が最大である左の要素の番号を返すプログラムを作りたいのですが
簡単な方法はないでしょうか?
2017/11/23(木) 16:36:15.34ID:6Js7jM8k0
List〈class〉でやってみるといいのでは?
class Data

public int id{get;set;}
public double result{get;set;}

みたいに作って、ListをループさせてData.resultを確認して一番大きい数字のid(クラス)を返すみたいな
ICollectionに一番大きい数字のindex返す関数とかあった気がするからもっと楽に作れるかもしれないけど
2017/11/23(木) 16:41:24.65ID:E5KFBI6l0
楽さなら右要素でソートして末尾の左要素返せば
普通に探索しても大した手間の差ではない気もするが
2017/11/23(木) 16:44:45.88ID:DqyU4UwDM
>>740
DBに突っ込んでから
select key from data
where value = (select max(value) from data)
でいいよ
744デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/23(木) 16:58:00.67ID:pEApwQyq6
@“1 のとき 0.7
3 のとき 0.9
8 のとき 0.6
9 のとき 0.5”
.Split(‘\n’)
.Select(line => line
.Split(“のとき”)
.Select(piece => piece.Trim())
)
.OrderBy(pair => pair[1])
.Last()[0];
745デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/23(木) 17:01:37.44ID:pEApwQyq6
変換忘れた(;ω;)
2017/11/23(木) 17:03:20.80ID:6Js7jM8k0
>>744
この仕様はまったく考えてなかった
仕様聞くのって大変だな・・・
2017/11/23(木) 17:17:36.99ID:cW6v2Sii0
>>740
https://ideone.com/W1bKs5
2017/11/23(木) 17:24:58.41ID:cW6v2Sii0
よく考えたらC#だった、寝惚けてるわ
2017/11/23(木) 17:44:11.84ID:cW6v2Sii0
どっちで書いても同じようなもんだった
https://ideone.com/fD2j3A
750デフォルトの名無しさん (ワッチョイ 27f7-JCOS)
垢版 |
2017/11/23(木) 18:22:14.69ID:1glLBmTM0
みなさん有難う御座います。
Dictionaryを使ってみようと思うのですが

Dictionary<string,double> dict = new Dictionary<string,double>();
dict.Add("1",0.7);
dict.Add("3",0.9);
dict.Add("8",0.6);
dict.Add("9",0.5);

このあとvalueが最大値の時のキーの値を求める方法がわかりません
dict.OrderBy(pair.Value).Last.Keyじゃダメなんでしょうか?
751デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/23(木) 18:24:15.88ID:pEApwQyq6
>>750
いいよ
752デフォルトの名無しさん (ワッチョイ 27f7-JCOS)
垢版 |
2017/11/23(木) 18:34:21.92ID:1glLBmTM0
>>751
現在のコンテキストに 'pair' という名前は存在しません。
というエラーが出て出来ないです…
2017/11/23(木) 18:37:13.32ID:Go3NcBxu0
pair宣言してないからだろうに、
dict.OrderBy(pair => pair.key).Last.Keyじゃないかな。
754デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/23(木) 18:37:55.69ID:pEApwQyq6
https://ideone.com/XlOtVQ
2017/11/23(木) 18:38:17.36ID:Go3NcBxu0
もちろん
pair => pair.Value
だったな。
2017/11/23(木) 18:39:03.67ID:4OkBFxYdM
>>752
どこか適当なところで勉強してから来なさい
757デフォルトの名無しさん (ワッチョイ 27f7-JCOS)
垢版 |
2017/11/23(木) 18:54:09.98ID:1glLBmTM0
>>753
>>754
>>755
ありがとうございます!出来ました
ただ同じキーがあると動かなくなるので別の方法を考えなければいけない様です…
2017/11/23(木) 18:59:24.88ID:kBi82nCb0
>>757
同じキーが存在するのにDictionary使うのが間違い
他の人が例として使っているDataクラスで事足りると思うんだが
2017/11/23(木) 18:59:33.92ID:yDdQ43O00
そりゃキーが重複したらエラーになるよ
辞書ってそういうもんでしょ

あと重複があるんなら>>749のを使えば?
2017/11/23(木) 19:07:10.50ID:eO5S+uX/0
「valueが最大値の時のキーの値」だけが必要なんじゃなかろうか?
761デフォルトの名無しさん (ワッチョイ 27f7-JCOS)
垢版 |
2017/11/23(木) 19:14:33.13ID:1glLBmTM0
>>749
で教えて頂いたのでやってみます!
762デフォルトの名無しさん (ワッチョイ 27f7-JCOS)
垢版 |
2017/11/23(木) 19:16:31.56ID:1glLBmTM0
配列の大きさが不明なのでaddが使える方法でやりたかったもので…
763デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/23(木) 19:18:05.05ID:pEApwQyq6
var list = List<Data>()
これを使えばいい
Addもできる
2017/11/23(木) 20:12:06.29ID:eO5S+uX/0
>>762
単に最大時のkey, valueだけが欲しいのならListもaddも不要だけどね。。
2017/11/23(木) 20:41:13.63ID:FrNu/68p0
Name : aaa
Info : vvv
Message : sss
テキストファイルに↑のような空白文字で:を揃えた情報を、File.ReadLinesで取り出し、
.ToArray()で配列にしたあとTextBoxのLinesに設定したところ、コロンの位置がずれてしまいます。
foreachでTextプロパティに追加していく方法でもずれるのですが、Consoleだと綺麗に出力されます。
なにか対策等ありますか?
2017/11/23(木) 20:43:45.19ID:kBi82nCb0
>>765
コンソールと同じように、テキストボックスのフォントをMSゴシックみたいな等幅フォントにする
2017/11/23(木) 21:07:02.11ID:FrNu/68p0
>>766
MSゴシックで試したところ解決しました。
ありがとうございました。
等幅フォントの使い道がこんなところにあったとは、でした。
768デフォルトの名無しさん (ワッチョイ 0775-uycp)
垢版 |
2017/11/23(木) 21:25:10.61ID:vcWp0UMr0
>>764
思わせぶりなことだけ言うだけ。
769デフォルトの名無しさん (ワッチョイ 0775-uycp)
垢版 |
2017/11/23(木) 21:29:38.22ID:vcWp0UMr0
>>765
タブ文字じゃだめなん?
770デフォルトの名無しさん (ワッチョイ 27f7-JCOS)
垢版 |
2017/11/23(木) 21:48:04.04ID:1glLBmTM0
>>749とList使った方法で出来ました!
有難う御座いました。
ソート時の=>の書き方が色々あっていまいち理解出来てないですが…
2017/11/23(木) 21:59:19.61ID:6Js7jM8k0
ラムダ式とLinqは後々覚えていけばいいんじゃないの
とりあえずこういう書き方もできるって事で
2017/11/23(木) 22:15:45.74ID:tJBaWbvoa
ラムダ式はデリゲートと同時に覚えようよw
たいして覚えることないんだし、今時C#プログラマの最小要件でしょ
2017/11/23(木) 22:21:30.93ID:Bg3Rqdl/0
HttpClient client=new HttpClient();
FormUrlEncodedContent contents = new FormUrlEncodedContent(new
Dictionary<string, string>{
{"あああ","1"},
{"あああ","2"},
{"いいい","0"},
});
respnse = await client.PostAsync(url, contents);

このままだと同じキーを含んでいるのでエラーが出ます。
サイトの仕様上、このままデータを送らないといけないのですが、どう変更すれば
きるようになりますか?
2017/11/23(木) 22:24:57.40ID:eO5S+uX/0
>>770
1 のとき 0.7
3 のとき 0.9
4 のとき 0.9
5 のとき 0.9

こんなデータのとき、3,4,5のどれでもええの?
2017/11/23(木) 22:31:44.60ID:yDdQ43O00
>>773
KeyValuePairの配列でやってみたら?試してないから動くかわからんけども
2017/11/23(木) 22:53:52.49ID:FrNu/68p0
>>769
ありがとうございます。タブ文字でもできることを確認しましたが、
今回はString.Format("{0, 4} : {1}", num,message)のような文字列も綺麗に出力したいので
等幅フォントを使用したいと思います。
777デフォルトの名無しさん (ワッチョイ 0775-uycp)
垢版 |
2017/11/23(木) 23:31:46.08ID:vcWp0UMr0
>>773
new List<KeyValuePair<string, string>>{
{"あああ","1"},
{"あああ","2"},
{"いいい","0"},
}
778デフォルトの名無しさん (ワッチョイ 27f7-JCOS)
垢版 |
2017/11/23(木) 23:37:02.83ID:1glLBmTM0
>>774
左のデータは重複することはあっても右のデータは0.93234…みたいな感じで重複しない感じです!
2017/11/23(木) 23:56:53.12ID:6gvgNZ3b0
乱数をキーにして衝突して死んだやつを俺は知ってる
2017/11/24(金) 10:33:29.48ID:mPUfH2u/0
>>774のようなコーナーケースの指摘に対して、「そんなケースは稀だから考えなくてよい」とするか
「どっちでもいいならどっちかに決めよう」とするか、開発センスが現れるな。
2017/11/24(金) 11:35:20.40ID:GsVE4oKd0
今回は稀でもないけどね
2017/11/24(金) 11:52:48.02ID:EfmvZejc0
最大値の行を取り出すだけにコレクションは不要だけどね
783デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/24(金) 11:58:30.46ID:PklTWoNU6
>>782
だから口だけカマチョはやめろ
2017/11/24(金) 12:01:51.76ID:EfmvZejc0
>>783
配列の最大値を所得するロジックを知らんと?
配列ソートの前に習うだろ。
785デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/24(金) 12:02:53.10ID:PklTWoNU6
動的リストだからAddとか必要って言ってんだろ
2017/11/24(金) 12:09:15.88ID:mqWCdSHW0
>>782
配列リストの最大値出せるけど今回はindexがバラバラになってるじゃん
2017/11/24(金) 12:14:42.91ID:EfmvZejc0
>>785
動的リストとは?
788デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/24(金) 12:15:06.09ID:J2WegmLO6
>>787
Add使いたい言っとるだろ
2017/11/24(金) 12:22:59.05ID:mqWCdSHW0
一応配列もコピーとサイズ増やして擬似的に追加は出来る
昔の俺が調べて書いてたけどコレクション使えと怒られた
2017/11/24(金) 12:26:56.52ID:EfmvZejc0
>>788
それはお前らが誘導したからw
元データの構造がが何なのかワカランとどれが最適かはわからんな
791デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/24(金) 12:29:02.86ID:J2WegmLO6
>>790
>>762
2017/11/24(金) 12:42:17.78ID:EfmvZejc0
>>791
c#の中からいきなり>>740のデータが湧いて出てくるはずもなく、
そのような仕様があるとしたら「宿題」だなw
793デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/24(金) 12:44:49.36ID:J2WegmLO6
コレクションは要らない!(キリッ
2017/11/24(金) 12:47:41.40ID:EaZH7dVF0
>>792
いい加減黙ったら。
必要だからListにしてるだけで、>>782とか何の足しにもならんぞ。
795デフォルトの名無しさん (ワッチョイ 8730-forR)
垢版 |
2017/11/24(金) 12:53:50.07ID:qz26KndN0
>>760
>>764
>>782
2017/11/24(金) 12:55:58.12ID:EfmvZejc0
>>794
オレは最大値を取り出すだけならリスト構造は不要と言っているだけだ。
間違ってるか?
2017/11/24(金) 13:07:04.20ID:EaZH7dVF0
>>796
元データを用意する実装の都合でそうしてるだけなのに、そんな分かり切ったことを言う必要ないだろ。
勘違いしてるそぶりもなかったしな。
2017/11/24(金) 13:12:51.07ID:EfmvZejc0
>>797
何を言いたいのかさっぱりわからんわ。
2017/11/24(金) 13:14:37.94ID:EaZH7dVF0
>>798
最大値を取り出すためにリスト構造にしているわけではない。
これなら分かる?
2017/11/24(金) 13:18:59.06ID:mqWCdSHW0
あの説明でこの配列仕様考えてたってこと?
double?[] data = new double[]

null,
0.7,
null,
0.9,
null,
null,
null,
null,
0.6,
0.5
};
2017/11/24(金) 13:20:05.03ID:mqWCdSHW0
>>800
あぁ多次元やジャグ配列があるか
これ忘れて
2017/11/24(金) 13:23:12.73ID:EfmvZejc0
>>799
最大値を取り出した後の事に触れて無いのも事実。
最大値だけが必要なのか、取り出した最大値を使ってリストに何かをしたいのかわからない。
本人は最大値の取得だけで満足して消えてしまったし。
2017/11/24(金) 13:37:21.47ID:cWMe5SKyM
本当に最大値だけでいいのかも知んないしね
2017/11/24(金) 13:42:02.13ID:mqWCdSHW0
右が最大値の時の左の要素の番号が欲しいって書いてあるぞ
インデックスも飛び飛びで左の要素が重複するときもあるって後から出してる
確かに多次元やジャグ配列ならその仕様はありそうだけどその差は技術力の無い俺には大きな差がわからん
805デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/24(金) 14:07:29.79ID:ZR8Pz10g6
コレクションなんか必要ない(キリッ
2017/11/24(金) 14:40:56.86ID:asGQ9mvw0
今日のウンコの最大サイズとか何回目に出たウンコとかどうでもいいだろ
2017/11/24(金) 17:05:26.06ID:BCw6/Ft50
>>806
でも色は大事だぞ
どす黒いのはヤバイ
2017/11/24(金) 17:12:26.57ID:asGQ9mvw0
>>807
それ、最大サイズとかじゃなくて
少量でもアウトだから
2017/11/24(金) 20:00:59.51ID:7dGX3zxS0
非同期処理のasync/awaitって

処理A
var ret = await Task();
処理B

みたいなときはTaskの中の処理が終わるまでは処理Bには進まないという理解であってる?

あとTaskの中がプロパティに値を代入するだけみたいなawaitを使うタイミングがない場合は

await Task.Run(()=>{ Taskの中でやりたい処理 });

って書くしかない?
2017/11/24(金) 20:36:08.05ID:GsVE4oKd0
馬鹿か
8回もよく粘ったもんだな
2017/11/24(金) 21:02:49.89ID:3H9uQYBg0
>>809
1.そのasyncメソッドの中だけを考えればそれで合ってる
2.ちょっと何言ってるか分からない awaitを使うタイミングがないって何?
2017/11/24(金) 21:16:49.61ID:h5bnr1q30
まだひよっこでよくわかって無いんだが
過去の他人が書いたコードで

if (条件){
処理 A
}
else if (条件){
処理 B
}
else{
// 何もしない
}

みたいなコードを見ることがあるんだが
このelseの何もしないってのは必要なのか?
2017/11/24(金) 21:23:55.00ID:7dGX3zxS0
>>811
大雑把に書くと下みたいなクラスのプロパティ書き換えるだけのメソッド
awaitする要素見えないけどawait演算子書かないとvisual studioが警告出すからどうやってawaitすればいいのかと

private async Task<bool> Task()
{
a=b;
c=d;
return true;
}
2017/11/24(金) 21:24:04.90ID:573d9hpx0
>>812
本人に聞けよw
というごく当たり前の話を省くと
・説明的なコードとしてわざわざつけくわえてある
・追加の可能性があるのでわかりやすいようにわざわざ残してある
このあたりじゃだめか?
C#として必要か?って話なら自分で消してみてビルドしろよって返す
2017/11/24(金) 21:25:24.75ID:mqWCdSHW0
後々追加するかもで書いたり何もしないってのをはっきり伝えたいとかで書いてるんじゃないかな
コンストラクタで
class Sample

public Sample()

//何もしない


に近いものを感じる
2017/11/24(金) 21:41:06.27ID:h5bnr1q30
>>814>>815
本人はもう辞めてたの
あぁ説明的な感じなのかな
別にこんなふうに書くのがC#のお約束とかじゃないよね
2017/11/24(金) 21:43:14.83ID:573d9hpx0
>>816
IDEやコンパイラが怒らない限りC#の約束事とか知らんしどうでもいい
そしてそのくらいの最適化はコンパイラに期待できる
2017/11/24(金) 21:43:58.48ID:zpTIVf120
使い道としてはなんだろね
何もしないにブレークポイントを設定するとAもBも処理しない条件のとき止まるかな
だったらlogger.infoしといてもいいのに
2017/11/24(金) 21:45:42.73ID:QGkXc5ztM
>>812
SIerのコーディング規約としてCOBOLの次代からある書き方だよ。
機械的にelseを入れるんじゃなくてelseの処理で何かもれて無いか考えてから空elseを入れましょうって事が形骸化して残ってる。
ほぼなんの意味もないコードです。
2017/11/24(金) 21:56:58.69ID:h5bnr1q30
>>817>>819
その人独自の癖みたいなもんだったってことか
消しても問題なく動くんでまぁ大丈夫っぽいし
2017/11/24(金) 22:17:05.19ID:hbIcAcZv0
>>809ってretが処理Bの中で使われなきゃ、待たずに処理B行っちゃうんじゃないの?
822デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/24(金) 22:19:14.41ID:7i1mZEYS6
そのコードがasync修飾子を付けたメソッドの中に書かれてるとしたらそれはないだろ
2017/11/24(金) 22:31:11.65ID:h5bnr1q30
非同期処理内のコードでは無かった
これってasync修飾子内のコードだとなんかのエラー回避とかになるの?
824デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/24(金) 22:31:59.96ID:7i1mZEYS6
おまえに言ってねえよカス
825デフォルトの名無しさん (ササクッテロル Spfb-GVqX)
垢版 |
2017/11/24(金) 22:37:51.54ID:tzXAZjO3p
>>824
レス指定すら出来ないとか低脳かよ
826デフォルトの名無しさん (ワッチョイ 8716-forR)
垢版 |
2017/11/24(金) 22:39:38.31ID:S6xecz6o0
バカか?
2017/11/24(金) 22:41:49.16ID:7dGX3zxS0
下のSetメソッドだと処理Bでretを使ってなくても大丈夫?
private async Task Set()
{
処理A
var ret = await Task();
処理B
}

private async Task<bool> Task()
{
a=b;
c=d;
return true;
}

上のコードでTaskの中身にawait使いたかったら下みたいに書くしかない?
他の方法ある?

private async Task<bool> Task()
{
Task task = Task.Run(()=>{
a=b;
c=d;
}
await task;
return true;
}
2017/11/24(金) 22:42:24.96ID:V887TCBHM
>>825
この間からネットでしかストレス解消できない寂しいやつが湧いてる
829デフォルトの名無しさん (ササクッテロル Spfb-GVqX)
垢版 |
2017/11/24(金) 22:49:06.66ID:tzXAZjO3p
つーかガックシって大学回線のワッチョイか
まさに低脳猿そのものだな
大学から2chとかどこの馬鹿大学の馬鹿ガキだよ
830デフォルトの名無しさん (ワッチョイ 0775-forR)
垢版 |
2017/11/24(金) 23:14:31.39ID:P/o0ISHr0
ウゼエ、ササクッテロ
831デフォルトの名無しさん (ササクッテロル Spfb-GVqX)
垢版 |
2017/11/24(金) 23:20:37.11ID:tzXAZjO3p
ワッチョイの下4桁が変わってねぇぞ大学から2chの低脳猿ガキ
2017/11/24(金) 23:33:10.90ID:oz95vMBJM
>>812
忘れたんじゃなくて意図した動きですよって申し送りか
833デフォルトの名無しさん (ワッチョイ 7fe8-HoHO)
垢版 |
2017/11/24(金) 23:54:06.99ID:2BrQd4/c0
datagridviewで下から2つ目だけ変更する方法教えて
1 あああ
4 いいい
8 ううう
9 えええ
2 おおお

上から探索して行特定してCell位置指定して編集するしかない?
834デフォルトの名無しさん (ワッチョイ 0775-forR)
垢版 |
2017/11/25(土) 00:01:37.19ID:pvPgs+4u0
>>833
https://qiita.com/lusf/items/222bbcb6a3f69306517b
2017/11/25(土) 00:06:13.82ID:yrhFfhmW0
asyncってアシンク?エイシンク?
836デフォルトの名無しさん (ワッチョイ 7fe8-HoHO)
垢版 |
2017/11/25(土) 00:08:11.36ID:6waUtYEo0
>>834
えーおもろ
DataSouce使うと
プロパティ名がそのまま項目名になるのか
837デフォルトの名無しさん (ワッチョイ 0775-forR)
垢版 |
2017/11/25(土) 00:10:38.42ID:pvPgs+4u0
eɪsíŋkrənəs
エイシンクロナス
2017/11/25(土) 01:10:38.87ID:1pHkPeMia
ガチでアシンクだと間違って記憶してたわw
aが頭について「非」の意味になる単語って他にあったっけ?
aliveやaloudは違うしなあ
839デフォルトの名無しさん (ワッチョイ 87bf-forR)
垢版 |
2017/11/25(土) 01:16:18.14ID:kqX7412r0
http://www.wdic.org/w/WDIC/ASYNC
2017/11/25(土) 01:23:13.48ID:vI6wj4vV0
>>827
1.大丈夫
2.プロパティの設定ぐらいでTaskにする意味があるかは別にして、Task.Runでいいよ
2017/11/25(土) 08:19:21.33ID:uShMkUYk0
>>827
Task.Runはその中が別スレッドになるので注意。
return await Task.FromResult(true);
か、
asyncを外して
return Task.FromResult(true);
で。
2017/11/25(土) 08:55:10.96ID:t8H/7SYV0
>>841
return await Task.FromResult(true); じゃなかったらTaskがiscompletedになる前に終わっちゃう?
2017/11/25(土) 09:31:02.68ID:uShMkUYk0
始めからcompletedなTaskが返る
844デフォルトの名無しさん (ワッチョイ 8719-forR)
垢版 |
2017/11/25(土) 12:39:27.40ID:8Imfk/az0
>>841
???
2017/11/25(土) 14:45:48.16ID:yDO/xVL00
private Task<bool> MyTask()
{
 return Task.Run(()=>{a=b;c=d;;return true;});
}
で良いと思うんだわ。戻り値が何故必要なのか知らんが
2017/11/25(土) 17:00:28.46ID:ROI3Hzdd0
>>812
場面によるが 「何もしない」ではなく、asset(0) を書く、というのはやる
そうなるようにすべて条件をきっちり列挙するようにしている、c# にアサーションはありますか?
847デフォルトの名無しさん (ワッチョイ 8716-forR)
垢版 |
2017/11/25(土) 17:12:39.27ID:JSTnYDsg0
>>841
上のやつってTask<Task>が返ってくるの?
2017/11/25(土) 17:18:13.44ID:KwQ02SYsp
ワッチョイ末尾forRは大学から書き込んだりIDコロコロ変える煽りガイジなのでNGname推奨
849デフォルトの名無しさん (ワッチョイ 8716-forR)
垢版 |
2017/11/25(土) 17:20:24.36ID:JSTnYDsg0
x 変える o 変わる
ササクッテロも煽りカスなのでNG推奨
2017/11/25(土) 17:35:24.80ID:KnGPLM4Ka
何度も同じこと言って申し訳ないけど、だからワッチョイだのIDだのって嫌いなんだよね。

こういう他人にネチネチ粘着する馬鹿を喜ばせるだけのことで、
本来の目的であったはずの荒らしに対する抑止力どころか、かえって逆効果にしかならない

しかしさあ、いつも思うんだけど「誰かに粘着してやろう」とか思う奴って
どういう思考回路してるのかね。

俺には粘着する側の負い目を語るに落ちてるようにしか見えないけど、
テメエを客観視する能力ってものがないのかねw
2017/11/25(土) 17:41:28.81ID:P4DLYtAR0
っ[ 鏡 ]
2017/11/25(土) 17:47:24.32ID:4eIXfHS3M
>>850
しかしさあ、いつも思うんだけど、毎回この「いつも思うんだけど、〜、かねw」パターンのレスを繰り返す奴ってどういう思考回路してるのかね。
俺には認知症か記憶障害にしか見えないけど、
テメエを客観視する能力ってものがないのかねw
853デフォルトの名無しさん (ワッチョイ 0775-forR)
垢版 |
2017/11/25(土) 17:57:34.25ID:pvPgs+4u0
大丈夫かこのスレ?w
2017/11/25(土) 17:59:21.22ID:+aAkFYw20
>>851
無茶苦茶イケメンが写ってる
2017/11/25(土) 18:03:20.01ID:D6HLQxmJ0
>>850
無かったらないで気持ち悪い自演をする奴がいるからあったほうがいいよ
こっちのが連投中の単発IDは信用に値しないだけだし
2017/11/25(土) 18:30:56.28ID:FtBpL/BP0
>>852
その人は10年以上それやってるからほっといてあげて
2017/11/25(土) 18:33:11.33ID:ROI3Hzdd0
>>850
ID は良かったともうよ、期限付きで連投荒らしを排除できるからね
土方キチガイちゃん、今はどうしているのかな…
2017/11/25(土) 19:10:27.33ID:59PrSiyL0
>>852
自己紹介?
2017/11/25(土) 20:33:11.25ID:mXV87WPlr
>>846
ある
860デフォルトの名無しさん (ワッチョイ 5fe0-V3vG)
垢版 |
2017/11/25(土) 20:47:38.24ID:UxolN1FL0
(´・ω・`)linqってマジックみたいにむちゃくちゃすごいってほんとなの?
C# っておぼえるのむずかしいの?
2017/11/25(土) 20:58:40.30ID:oOkyLeSsM
>>860
C#はメジャーな言語の中では特別難しいわけではないがどっちかというと難しめの部類
もともと他言語の経験者向けに作られた言語なので、他の言語の経験があればわりとすんなり入れる
反面、プログラミング自体の初心者には「なんでそんなことをするのか」と感じる部分が多く馴染みにくいと思われる
C#に限ったことじゃないが、プログラミング自体が初めてなら最初は誰でも血を吐き地獄を見て自分の無能さに絶望するもんだ
2017/11/25(土) 21:05:19.12ID:D6HLQxmJ0
>>860
linqガイジ自演やめろ
863デフォルトの名無しさん (ワッチョイ 0775-forR)
垢版 |
2017/11/25(土) 21:18:11.07ID:pvPgs+4u0
>>860
linqじゃなくてもjavascriptでも同じこと出来る
864デフォルトの名無しさん (ワッチョイ 5fe0-V3vG)
垢版 |
2017/11/25(土) 21:20:36.41ID:UxolN1FL0
(´・ω・`)そうなんやー
2017/11/25(土) 21:44:29.45ID:+Jz8ZPqE0
>>861
> プログラミング自体の初心者には「なんでそんなことをするのか」と感じる部分が多く
具体的にどんなところ?
2017/11/25(土) 22:13:03.23ID:P4DLYtAR0
コンソールアプリケーションから学んでけば、そんなでも無いと思うけどな
いきなりGUIじゃ訳分からなくなるのも当然っつーか

「今は分からないだろうけど、取り合えずおまじないと思って書いといて」
的なお約束なんて、Cでもあるもんだし
2017/11/25(土) 22:22:22.08ID:oiqZXgpT0
初心者なら「なんでstringだけnullableなんだよOptionとかねーのかよ」と思うだろう
2017/11/25(土) 22:26:45.83ID:P4DLYtAR0
そんな事を言い出す初心者嫌だわ
2017/11/25(土) 22:51:32.94ID:yrhFfhmW0
>>865
newするところだろww
2017/11/25(土) 22:55:41.38ID:N5s7ffCaM
何故stringはnewがいらないの?
871デフォルトの名無しさん (ワッチョイ 0775-forR)
垢版 |
2017/11/25(土) 22:56:21.40ID:pvPgs+4u0
リテラルで省略できるから
2017/11/25(土) 23:01:32.05ID:+Jz8ZPqE0
>>869
そう言うつまんない返し要らんし
873デフォルトの名無しさん (ワッチョイ 8716-gKf3)
垢版 |
2017/11/25(土) 23:03:29.13ID:8TvkEmrh0
クッソおもろい見本回答を見せてくれ
2017/11/25(土) 23:12:07.91ID:+Jz8ZPqE0
>>873
アホなのか?
面白い回答なんて求めてない
875デフォルトの名無しさん (ワッチョイ 8702-gKf3)
垢版 |
2017/11/25(土) 23:13:26.66ID:mL7zXSYF0
アホにもわかるように説明してくれ
2017/11/25(土) 23:15:22.09ID:+Jz8ZPqE0
>>875
>>865の質問の意味がわからないなら黙っていてくれ
877デフォルトの名無しさん (ワッチョイ 8702-gKf3)
垢版 |
2017/11/25(土) 23:17:09.05ID:mL7zXSYF0
>>87のレスがダメな理由をアホにもわかるように説明してくれ
878デフォルトの名無しさん (ワッチョイ 0775-gKf3)
垢版 |
2017/11/25(土) 23:17:56.98ID:pvPgs+4u0
>>870のレスがダメな理由をアホにもわかるように説明してくれ
2017/11/25(土) 23:19:55.08ID:ebsrSawd0
>>867
stringはclassだからnullableなのは当然じゃね?
どこに引っかかっるのか分からん
880デフォルトの名無しさん (ワッチョイ 0775-forR)
垢版 |
2017/11/25(土) 23:22:51.70ID:pvPgs+4u0
nullableじゃない他の言語があるってことじゃね?知らんけど。
2017/11/25(土) 23:28:42.07ID:ebsrSawd0
>>878
string はimmutableだから

newが要らないというより
newが必要となる状況がない
newしてインスタンス作っても
そのインスタンスのプロパティを変更する術がない
immutableだから
882デフォルトの名無しさん (ワッチョイ 0775-forR)
垢版 |
2017/11/25(土) 23:29:51.79ID:pvPgs+4u0
>>881すまん安価ミスってたわ
>>869のレスがダメな理由な。
883デフォルトの名無しさん (ワッチョイ 0775-forR)
垢版 |
2017/11/25(土) 23:30:52.77ID:pvPgs+4u0
872 デフォルトの名無しさん (ワッチョイ 5fb3-CDhT)[sage] 2017/11/25(土) 23:01:32.05 ID:+Jz8ZPqE0

>>869
そう言うつまんない返し要らんし


2017/11/25(土) 23:58:41.99ID:A9/gx1Z/0
流れをぶった切って申しわけないが
container.Resolve<IEventAggregator>().PublishOnUIThread(new MaxProgressMessage(FileList.Count));
が長すぎて幻滅してるんだ、短かくする方法ない?
885デフォルトの名無しさん (ワッチョイ 0775-forR)
垢版 |
2017/11/26(日) 00:01:18.75ID:esrARD9/0
無いだろ。
分解するくらいしか
2017/11/26(日) 00:09:31.88ID:8WHK08hV0
長くて見づらいというなら改行したらだめかね
2017/11/26(日) 00:31:14.56ID:2r+x+WFfM
手段を問わないならジェネリックメソッドでも書けば短くなるだろう
2017/11/26(日) 00:37:23.82ID:E6i9SBGc0
その呪文は必ず出てくるやつだから、ベースクラス作って埋め立てて見えなくするのも手だ
2017/11/26(日) 06:55:45.07ID:sYAKtbjg0
>>888
何を召喚する呪文?
2017/11/26(日) 07:32:40.07ID:pGcZHtwF0
>>882-883
>>869のどこが
> プログラミング自体の初心者には「なんでそんなことをするのか」と感じる部分
なのか詳しく書いてみ
2017/11/26(日) 07:45:26.48ID:KNE4EyEa0
>>890
だから、newするとこだろ
2017/11/26(日) 08:16:58.08ID:pGcZHtwF0
>>891
理由を書け
とアホにもわかるように書かないとダメなの?
2017/11/26(日) 08:17:27.00ID:E6i9SBGc0
>>889
http://vdlz.xyz/Csharp/ToolKit/MVVM/Prism/Tutorial/010_EventAggregationQuickStart.html
こんなやつを使うための前準備
2017/11/26(日) 10:40:50.07ID:2r+x+WFfM
横からだけどnewする意味が分からなかった
無駄に見えた

AAA aaa = new AAA();

それとAAAが二回書かないといけないのも無駄に見えた
今はvarがあるからいいけど

c++だと AAA aaa;でオブジェクトができる
2017/11/26(日) 10:59:28.85ID:5qF5LlC+0
そこはC++で比較するなら、

AAA* aaa = new AAA();

でないの
2017/11/26(日) 11:05:35.98ID:5qF5LlC+0
もっと言うなら、参照型だからnewが必要になるんであって
C#のクラスは全て参照型だから、ってのが理由でしょ
2017/11/26(日) 11:06:13.70ID:v4Gq1kEY0
newが分からないって人はおそらく
C#がというよりオブジェクト指向が分かってない
2017/11/26(日) 11:19:31.24ID:sYAKtbjg0
"Hello, world." 出力させるだけなのになんでなんでこんなに長いコードが必要なのかと思ったわ
2017/11/26(日) 11:21:24.75ID:5qF5LlC+0
エントリポイントがあって、入出力のライブラリを読み込まなきゃいけないからしゃーない
……というのを理解する為に、基礎知識って必要なんすよな
2017/11/26(日) 11:26:52.04ID:KNE4EyEa0
>>897
分からない じゃなくて、 初心者のころ分からなかった。
2017/11/26(日) 11:27:52.79ID:fisQ6o8j0
コンソールアプリを作った時のmain関数の戻りが何故voidがデフォ?
2017/11/26(日) 11:28:34.60ID:KNE4EyEa0
この流れどうでもいいわ
>>861は責任とれよ
903デフォルトの名無しさん (ワッチョイ 8702-forR)
垢版 |
2017/11/26(日) 12:27:12.72ID:xDPLX0UM0
ゴミスレ
2017/11/26(日) 12:59:52.42ID:pGcZHtwF0
>>902
絡んできて最後はこれかよ w
905デフォルトの名無しさん (ワッチョイ 0775-forR)
垢版 |
2017/11/26(日) 19:53:03.03ID:esrARD9/0
今更だけどスレタイのふらっとって♭とかかてんだな
今気づいたわ。考えた奴センスあるな
2017/11/27(月) 05:07:40.67ID:zYU8hzi70
「C#」の失敗は
↑この名前そのもの。
名前に記号を含んだことでネット検索などでの調査が非常にしずらい。
現にこのスレのタイトルは検索で辿りつけるようにシャープを3種類(#,♯,#)も使っている。
2017/11/27(月) 05:28:02.06ID:J9PNM2DU0
C言語よりマシ
2017/11/27(月) 06:39:27.91ID:mxmQS4Eu0
Goなんてグーグルで検索するの大変、グーグルなのに
2017/11/27(月) 07:17:04.00ID:U9yOEuDb0
APLよりはマシ
910デフォルトの名無しさん (ワッチョイ 0775-forR)
垢版 |
2017/11/27(月) 07:57:54.24ID:9arhdycY0
普通に検索できるけど。
https://i.imgur.com/JuJbkc6.png
2017/11/27(月) 08:30:46.44ID:ENOa9M21M
>>906
> 名前に記号を含んだことでネット検索などでの調査が非常にしずらい。
いつの時代で止まってるんだよ w
2017/11/27(月) 08:32:52.42ID:Oy0eCX2Rr
検索で苦労したのは初期だね
ある程度広まると普通に検索できるようになった
Google先生をなめてはいけないw
2017/11/27(月) 11:20:17.01ID:moQmEOhzM
>>906
Google舐めんなよ、c#の検索で困ったことはないぞ
914デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/27(月) 11:56:36.72ID:YP5p2xtB6
名前の短さとユニーク性から言って他の言語の中で1番検索が手軽だろ
2017/11/27(月) 12:42:18.81ID:XW1caEg1p
記号よりもCの派生みたいな名前しといてわりとそんなことない方が問題
916デフォルトの名無しさん (ワッチョイ 7fe8-HoHO)
垢版 |
2017/11/27(月) 15:04:54.85ID:Nt2T9amD0
Golang
2017/11/27(月) 17:16:49.94ID:cJelrrxv0
でも初期はヒット数皆無だったね
2017/11/27(月) 17:45:58.74ID:6f5qj3RBd
>>917
昔々
2017/11/27(月) 18:04:10.89ID:vgvtax0D0
初期ってXP発売当時=21世紀の最初の頃だよな
2017/11/27(月) 19:10:17.82ID:OWKhgpwq0
>>915
まあどっちかっつーとDelphiの流れを汲んでるからな
2017/11/27(月) 19:51:53.13ID:cJelrrxv0
windows7出たあたりのときもc#とか記号入りの語句の検索に
Google自体が弱かった
922デフォルトの名無しさん (ワッチョイ a703-egQi)
垢版 |
2017/11/27(月) 20:08:46.06ID:kbE8zzrJ0
英語圏だとc sharpとかやるのにお前らなんでシーシャープとか検索の工夫せんのや?
2017/11/27(月) 20:11:02.29ID:za1uA7lb0
スレで聞いたり回答はしても自分でググらない人がいるのか
C# のあとに調べたこと書いて普通に見つかるのに
2017/11/27(月) 20:19:33.20ID:GUxcPAnYM
ドボンとか宇宙仮面みとけば良かったから問題ない
2017/11/27(月) 20:21:46.22ID:ENOa9M21M
>>917
記号を検索してくれなかったからな
なので演算子の検索とかも大変だった
2017/11/27(月) 21:37:45.69ID:zPT1usJA0
痴呆老人の繰り言のようだ
2017/11/28(火) 07:06:59.04ID:SLs8Sy3DM
ちょまどよりもドボンのが貢献度高いけどドボンはMSにスカウトされたの?
2017/11/28(火) 07:14:46.79ID:SLs8Sy3DM
C#でもDIしてみたいと思ったのですが、使うのは絶対にインターフェースなのでしょうか
抽象クラスを使ってる例を見ないので、ひょっとしたら抽象クラスは使わないのかと感じています
2017/11/28(火) 07:38:58.15ID:vyISmGF6d
>>928
必要があれば使うよ
2017/11/28(火) 08:44:27.50ID:tn7hDAAkM
>>928
インターフェース継承(必ずしもC#のinterfaceではなく、使う側からの見え方を継承するという意味ね)に抽象クラスを使うのは今時はあまり好まれない
規模の大きな開発だと、使われる側の前に使う側のクラスが先に実装されてしまうこともよくあるし、
いちいち個別に判断するより少々冗長になったとしても全部interfaceの方が分かりやすいし後で融通利くだろという考え方をすることが多い
抽象クラスを使って実装を共通化したい場合は、interfaceを抽象クラスが継承してそれを更に継承すればいい
2017/11/28(火) 09:16:48.34ID:7U+HR4FY0
インターフェースクラス自体いらんけどね
2017/11/28(火) 09:57:15.96ID:QXpLTJ6d0
インターフェースはクラスじゃないんだが、そこら辺から勉強やり直したほうが良いと思う
2017/11/28(火) 09:58:37.73ID:7U+HR4FY0
>>932
インターフェースいらん
何かメリットある?
2017/11/28(火) 10:04:21.92ID:QXpLTJ6d0
>>933
例えばusing構文は、interfaceに依存しているけど
アレ便利だと思わん?
2017/11/28(火) 10:06:06.04ID:7U+HR4FY0
>>934
思わん
実際意図通りに動くかどうかは中身を見ないとわからんから
usingで書いたけどリークしたりとかあるあるじゃん
2017/11/28(火) 10:07:25.71ID:7U+HR4FY0
他には?
2017/11/28(火) 10:07:35.24ID:PGwr6nW1M
>>927
ドボンの中の人は匿名で出たがりじゃ無いのでオファーが有っても断ってるだろうな。
2017/11/28(火) 10:14:53.34ID:7U+HR4FY0
そもそも不特定多数が突然触る環境って開発じゃないよな
ちゃんと設計してから組むのが当然であって
どんな場面を想定してるのか全くわからない
インターフェースを統一しようがどうだろうが必要なデータを必要なだけしか渡さないでほしい
2017/11/28(火) 10:15:16.01ID:QXpLTJ6d0
>>935
usingはDisposeを呼び出すだけの機能なんだから、バグが有るなら実装したアンタの責任だろ
2017/11/28(火) 10:16:56.59ID:7U+HR4FY0
>>939
別に俺が作ったときの話してるわけじゃない
そもそも俺はこのクソ機能嫌いだから使ってない
2017/11/28(火) 10:20:37.75ID:7U+HR4FY0
標準ライブラリぐらい共有されてるソースでしか使わないほうがいいんじゃない?
コミュニケーションコストが大きくない?
ドキュメントもそれなりに書かないとどこの誰向けのインターフェースなのかわかりにくい
お客様に使わせる前提?
サンプルソース用意した方が良さそうだし
942デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/28(火) 10:29:54.52ID:c9nafor26
抽象クラスだと一個しか共通機能付けれないじゃん。
2017/11/28(火) 10:37:12.94ID:fCILQp+K0
だからBindableBaseは使いにくいんじゃハゲ言われても
毎回INotifyPropertyChangedを実装してる方が毛根に悪いだろ
2017/11/28(火) 11:03:18.93ID:PGwr6nW1M
また、基地外湧いてる
2017/11/28(火) 11:05:45.21ID:yuNzgourM
>>944
ブーイモで認定とかないわ
2017/11/28(火) 11:31:18.53ID:PGwr6nW1M
会社の回線使って5ch見るとツーホーされるんでw
2017/11/28(火) 12:13:04.45ID:AHd0O/Rna
どうせならstaticおじさんパロって「しっくりこないんです」って言ってほしかった。
まあ、どっちにしろ面白くないよ悪いけど。

2chだからって無理して道化を演じなくてもいいんだよ。
20年前30年前ならわかるけど、まさか2017年にもなってネットの掲示板に書き込むことが
君にとって非日常なのか?w
2017/11/28(火) 12:21:50.69ID:OnZeiLZr0
2006年からC#スレにいる奴にとってはもはや日常を越えてるよな
2017/11/28(火) 13:01:21.00ID:vyISmGF6d
>>931
インターフェースクラスwww
2017/11/28(火) 13:17:00.01ID:yuNzgourM
staticおじさんは小難しい仕組みを延々と語ってたけど
俺は単純にメンバ変数がグローバル変数化するのが嫌でクラス使うのやめた
2017/11/28(火) 13:24:48.88ID:7U+HR4FY0
>>949
インターフェースのメリットを説明できないからそういうレスするんだよね
なにも作れないから言語の機能だけ覚えて身を固めたんでしょ?
説明をさせるとメッキが剥がれちゃうんだよね?
2017/11/28(火) 13:42:38.72ID:7U+HR4FY0
相手も想定してないのにインターフェースなんて意味ないって
誰に提供したいインターフェースなの?
ただ趣味で作ってるゴミコードなんでしょ?

あ、usingがメリットとか言ってたっけ?
アレのどこがメリットなんだよ
使うたびに実装できてるか中身確認しねーと解放できてるかもわかんねーじゃん
しかも明示的に実行されてるのかどうなのか見えなくなってるし
2017/11/28(火) 13:48:33.09ID:bfhutU2GM
>>952
> あ、usingがメリットとか言ってたっけ?
> アレのどこがメリットなんだよ
> 使うたびに実装できてるか中身確認しねーと解放できてるかもわかんねーじゃん
> しかも明示的に実行されてるのかどうなのか見えなくなってるし

詳しく
2017/11/28(火) 13:50:43.25ID:7U+HR4FY0
>>953
ブーイモじゃ嫌
でもusingが動いてるかどうかどうやって確認する?
2017/11/28(火) 14:24:36.03ID:h4MoZ9j60
普通にDispose書いたときに
Disposeが正しく動いてるかどうかを確認するのと
同じようにすればいいんじゃね
しらんけど
956デフォルトの名無しさん (ワッチョイ 8702-forR)
垢版 |
2017/11/28(火) 14:25:39.80ID:xJKXjbc10
>>954
インターフェースのデメリットを説明できないからそういうレスするんだよね
なにも作れないから言語の機能だけ覚えて身を固めたんでしょ?
説明をさせるとメッキが剥がれちゃうんだよね?
2017/11/28(火) 14:33:47.59ID:bfhutU2GM
>>954
usingなんてシンタックスシュガーなんでdisposeコードは自動展開されている。
逆コンパイルしてILコードでも見とけ。
2017/11/28(火) 14:40:17.59ID:7U+HR4FY0
>>955
え?どこみんの?
2017/11/28(火) 14:41:56.97ID:7U+HR4FY0
>>957
それ、わかりやすいコードなの?
解析が困難になってない?
2017/11/28(火) 15:00:07.13ID:bfhutU2GM
>>959
そこは、それ食べられるの? 美味しいの? だろ。
美味しいかどうかはわからんがCLRは食うぞ。
2017/11/28(火) 15:09:47.65ID:7U+HR4FY0
>>960
(*゚∀゚)bブーイモは期待通り駄目だな
962デフォルトの名無しさん (ワッチョイ 8702-forR)
垢版 |
2017/11/28(火) 16:23:31.62ID:1xNDji3d0
クラスの継承だと一個しか継承できないじゃん。
機能が被ってるけど親子関係にはないクラス作りたかったらそれぞれに同じ機能実装しないとダメじゃないの?どうやるの?
2017/11/28(火) 17:20:04.90ID:Qe8OZN310
多重継承
964デフォルトの名無しさん (ワッチョイ 874b-gKf3)
垢版 |
2017/11/28(火) 17:35:52.85ID:SapPVZy10
それぞれで実装しないといけないのはどっちでも同じだけどインターフェースがないと親子関係にないクラスに同じ機能があることを明示できない。
2017/11/28(火) 18:34:11.84ID:7U+HR4FY0
>>964
はぁ?
どういうケース?
2017/11/28(火) 18:58:30.06ID:AywzDJwi0
おまえ、.NETのライブラリがインターフェースだらけだと知って
インタフェースはイラネって言ってるのか?
967デフォルトの名無しさん (ワッチョイ 874b-gKf3)
垢版 |
2017/11/28(火) 19:05:52.27ID:MQt2+v8o0
>>965
どういうケースもクソもないだろ。
インターフェースってそういうもんだろ?
インターフェース使えば親子関係にないクラスでも同じ機能のメンバに同じ書き方でアクセスできるようにできるぞ。
968デフォルトの名無しさん (ワッチョイ 874b-forR)
垢版 |
2017/11/28(火) 19:08:08.25ID:MQt2+v8o0
>>966
みんなが使うライブラリならインターフェース使ってもいいけど同じチーム内でしか使わないならそんなのいらないらしい
2017/11/28(火) 19:09:54.51ID:7U+HR4FY0
>>966
企業が全体に提供するものは有りだと思ってる
インターフェースを提供する側と使用する側が明確じゃん
ドキュメントも割りとしっかり書かれるだろうし
サンプルソースもあれば
テストもしっかりされてる

でも人売り派遣プロジェクトではコミュニケーションコストが上がるだけなので無駄
10人以内のプロジェクトでは無駄ぐらいに受け取ってくれていい
2017/11/28(火) 19:17:20.15ID:AywzDJwi0
>>968
ユニットテストでモック使うときはインターフェース使うけどね。

奴隷派遣の戦場ではインターフェース不要は認める。
971デフォルトの名無しさん (ワッチョイ 874b-gKf3)
垢版 |
2017/11/28(火) 19:30:18.03ID:MQt2+v8o0
要するにインターフェースいるか要らんかは条件次第なのにインターフェース自体要らん(と言ってるように聞こえるようなこと)を言い出したそいつが諸悪の根源ってこと。
2017/11/28(火) 19:39:10.15ID:Z6M2FdMEH
俺が理解できないものは使わない ← これは正しい
俺が理解できないものは要らない ← 単なるおバカ
2017/11/28(火) 19:41:18.71ID:7U+HR4FY0
>>971
いや、大手ライブラリ提供側なら使ってもいいってだけで
メリットはさっぱりわからん
いらないんじゃない?
2017/11/28(火) 19:43:27.10ID:muuNV74C0
ソルジャーはインタフェースに定数を定義する
2017/11/28(火) 19:50:33.68ID:1gCYrVqGM
javaの様にinterfaceにトレイトを入れれば?
2017/11/28(火) 19:53:10.33ID:w7dx9OeN0
ジャップを以外に人売り派遣C#ユーザーなんかいねーから問題ねーだろ
977デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/28(火) 20:08:25.12ID:A5IfF+7K6
>>973
メリットはクラスになにかしらの共通の機能を次々と簡単に付加できること
そしてその機能を持ってるクラスのオブジェクトをまとめて処理可能
2017/11/28(火) 20:11:57.14ID:1gCYrVqGM
interfaceは必要なメンバーを持ってるよという印なだけで
機能追加は別な話
979デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/28(火) 20:15:05.35ID:A5IfF+7K6
どっちでもいい
例えばINotifyナンチャラとか付ければ簡単に新しい機能を付加できるしその機能があることをプログラムが知ることができる
2017/11/28(火) 20:34:10.41ID:7U+HR4FY0
>>978
俺もそう思う
機能追加は別だよね
2017/11/28(火) 20:36:14.43ID:7MxKQMqJ0
>>980
次スレ
982デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/28(火) 20:42:42.92ID:A5IfF+7K6
>>980
別だとしてもその実現の過程でインターフェースは必要になる
機能をペタペタ付加したいなら基底クラスの継承だけで共通化するより簡単になる
2017/11/28(火) 21:32:30.59ID:7U+HR4FY0
>>981
ふらっと C#,C♯,C#(初心者用) Part134
http://mevius.5ch.net/test/read.cgi/tech/1511872248/

mateの機能使ったらワッチョイ付いてなかったw
2017/11/28(火) 21:34:31.90ID:7U+HR4FY0
>>982
え?別にいらないし俺は
お前しか使ってないんだからお前が説明しろよw
2017/11/28(火) 21:46:03.84ID:Uj4nMEBrr
>>972
ww
まあよくいるけどね
そう言う人達
2017/11/28(火) 22:06:45.64ID:+2YCkirN0
>>984
初心者ならインターフェイスは不要
if使ってクラスごとに場合分けして書けば対応できる
この書き方が冗長だと感じたときに必要になる
2017/11/28(火) 22:10:01.45ID:7U+HR4FY0
>>986
昔はそういうのもあったかもしれんけど
今は明示的に書くことのわかりやすさの方を優先してるから
ゴミにしか見えないや
2017/11/28(火) 22:17:35.16ID:s2z2xmpX0
>>987
はいキチガイ
989デフォルトの名無しさん (ワッチョイ 0775-forR)
垢版 |
2017/11/28(火) 22:29:51.83ID:g1MyZtTV0
クソスレ
2017/11/29(水) 04:01:41.95ID:GKLQJ/Lf0
クソレス
2017/11/29(水) 06:39:28.26ID:72enVETJ0
>>952
これインターフェイス関係なく普通の継承でもそうじゃん
StreamのDisposeを使うときはあらゆる実装を確認するのかな
2017/11/29(水) 07:04:15.95ID:YmbiuT7DM
staticおじさんは直ぐに意固地になる

神が人間クラスにstaticおじさんインターフェースをimplementsした上、加齢により意固地になるメソッドに実装書かれたから
2017/11/29(水) 08:19:51.68ID:rMr3voC10
>>991
だから企業が提供してるなら有りって言ってんじゃん
でも手作りならやめるべき
2017/11/29(水) 08:39:14.71ID:VYTpT9vMM
>>993
ほんと中途半端な実装は迷惑だよね。
中身を見て殺意を覚えるようなのがあるよ。
2017/11/29(水) 09:31:54.46ID:rMr3voC10
>>994
お前が自分はそうじゃねぇって思ってるならその考えを改めるべき
996デフォルトの名無しさん (ワッチョイ 0775-forR)
垢版 |
2017/11/29(水) 09:33:48.08ID:bodUKsOx0

   ̄ヽ、   _ノ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     `'ー '´
      ○
       O
         ,r"´⌒`゙`ヽ
       / ,   -‐- !、
      / {,}f  -‐- ,,,__、)  と思うゴリラであった
    /   /  .r'~"''‐--、)
  ,r''"´⌒ヽ{   ヽ (・)ハ(・)}、
 /      \  (⊂`-'つ)i-、
          `}. (__,,ノヽ_ノ,ノ  \
           l   `-" ,ノ    ヽ
           } 、、___,j''      l
2017/11/29(水) 10:01:47.13ID:+NOPuT/4p
やけに盛り上がってると思ったらおじさん湧いてたのかぁ
2017/11/29(水) 10:29:15.32ID:rMr3voC10
>>997
お父さん(白い犬)チッス
2017/11/29(水) 10:49:50.75ID:gShtlFNMd
まだいたのかキチガイ
2017/11/29(水) 11:07:12.42ID:VFisOLC/M
>>999
同一人物か?
いくつ端末持ってんだ?
ガイジ過ぎるw
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 21日 13時間 55分 47秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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