1 名前:デフォルトの名無しさん [2017/11/07(火) 21:11:25.20 ID:LeQqgpmT0.net] 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part132 mevius.5ch.net/test/read.cgi/tech/1507543256/ ■関連スレ C#, C♯, C#相談室 Part95 mevius.5ch.net/test/read.cgi/tech/1508180530/ ■コードを貼る場合は↓を使いましょう。 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 referencesource.microsoft.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
329 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 19:35:09.24 ID:sSxxq2Sz0.net] >>324 ソースがあるのだし自分でソースくらい見ろよ オープンソースでドキュメント期待する方が間違ってるぞwww
330 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 19:58:23.54 ID:0snQAOLI0.net] キチガイのバザール
331 名前:デフォルトの名無しさん [2017/11/14(火) 20:04:06.14 ID:QqwKiGyo6.net] >>322 どこが難しいと思うの?
332 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 20:39:11.83 ID:ElF9INq6r.net] >>328 俺に聞くなボケw 個人的には難しいとは思わんが とわざわざ書いたのにそれが目に入らぬか
333 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 20:59:27.95 ID:HCb+ZNawa.net] Listのaddメソッドって例外飛ばさないんですか? もう追加できないよ!みたいな感じで
334 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 21:01:39.87 ID:ozKhZGN+0.net] {〇,✕,✕,〇,△,△,△,〇,△}みたいなリストを{〇,✕,✕,}{〇,△,△,△,}{〇,△}って感じに分けたいんだけどLinqで簡単に出来ないかな? ループさせんのが面倒で
335 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 21:03:14.99 ID:cajczz9H0.net] >>318 英文表示にして段落毎にグーグル先生に翻訳して貰うと割と読める文章になることが多い。 グーグル翻訳でもサイト翻訳は翻訳精度が悪い。
336 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 21:07:06.30 ID:07a/swYLa.net] >>331 SkipとTake使えば?
337 名前:デフォルトの名無しさん [2017/11/14(火) 21:11:28.16 ID:6kJ9cNLk6.net] >>329 どこがみんなにとって難しいと思うから322で難しいとか書いたの?
338 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 21:13:21.13 ID:ElF9INq6r.net] >>334 これだけ意見相違があるから
339 名前:デフォルトの名無しさん [2017/11/14(火) 21:16:24.25 ID:6kJ9cNLk6.net] よくわからんが難しくないだろ。
340 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 21:17:36.48 ID:07a/swYLa.net] 例外を変なところでキャッチしちゃう人が多い メソッドAの
341 名前:中でメソッドBを呼んでまたメソッドCを呼んだとする メソッドC中で例外が起こってもメソッドC内でキャッチしちゃって メソッドCの戻り値をnullでリターンして メソッドBで戻り値のnullチェックしてnullだったらまた戻り値をnullでリターンして またメソッドAでチェックしてみたいな馬鹿な使い方をしてる メソッドAでキャッチしろって思う [] [ここ壊れてます]
342 名前:デフォルトの名無しさん [2017/11/14(火) 21:18:54.31 ID:6kJ9cNLk6.net] >>337 それだけだよね。 なんも難しくない
343 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 21:22:31.53 ID:ozKhZGN+0.net] >>333 んーそれ余計に面倒にならない?
344 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 21:23:42.17 ID:07a/swYLa.net] 例外を目の前でキャッチするくらいなら他の制御構文でヤレ
345 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 21:33:26.00 ID:sSxxq2Sz0.net] >>337 ホントそれ。 至る所にtry/catchがある。 try/finallyは多用するがtry/cathなんて滅多に使う事はない。 例外処理は至る所に例外処理コードを書かないために存在する。
346 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 21:54:38.57 ID:D89+JmTA0.net] >>341 だから何度も書いてやってん
347 名前:カゃん 仕分けが絶望的に面倒臭ぇから握り潰しちまうって だってさよく考えろよ ドキュメント化されてないメソッドが出す例外って全部でいくつかどうやって調査する? [] [ここ壊れてます]
348 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 22:03:00.14 ID:5gpUPtII0.net] 仕分けめんどくさいのは同意するけど、握りつぶすのはどうなんだ 仕分けした結果握りつぶして問題ないって判断したものならいいかもしれんが 極論として、全部握りつぶす or 全部スルーして上位にキャッチさせる どっち選ぶ?
349 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 22:03:51.57 ID:sSxxq2Sz0.net] >>342 ↑ 例外処理を誤解している典型例です。 皆さん絶対に真似しないように。
350 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 22:08:15.89 ID:sSxxq2Sz0.net] >>337 >例外を変なところでキャッチしちゃう人が多い かと思えば、例外が必要なところでtry/catch { } で握りぶしちゃう人も多い これも追加ね。 無駄なtry/cathと握りつぶし 例外が分かってないヤツの典型例
351 名前:デフォルトの名無しさん [2017/11/14(火) 22:09:59.38 ID:vkrHhpXR0.net] 例外の仕分けとは何なのか
352 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 22:11:36.04 ID:FOR7JOrW0.net] 分かったからママに教えてやれ お前が可愛いなら誉めてくれるだろう
353 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 22:12:26.72 ID:D89+JmTA0.net] >>346 だから例外で帰られちゃ困るのよ ちゃんと仕様で動作が決まってるのにもかかわらずそのメソッド的には例外なの
354 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 22:17:45.36 ID:sSxxq2Sz0.net] 例外を拾ってエラーチェックをしようとしているのが根本的な間違いだな。
355 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 22:28:42.81 ID:D89+JmTA0.net] >>349 バッカ、飛んでっちゃうだろ
356 名前:デフォルトの名無しさん [2017/11/14(火) 22:33:03.34 ID:Xx2aI1jk0.net] 仕分けとは 握りつぶしとは
357 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 22:41:27.61 ID:D89+JmTA0.net] >>351 アスペにもほどがあるだろ
358 名前:デフォルトの名無しさん [2017/11/14(火) 22:56:41.83 ID:Xx2aI1jk0.net] 初心者だから経験が浅いので分からん
359 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 22:58:32.66 ID:ypDSy74La.net] あからさまに変な人は相手にしないほうがいいよ 俺も言ってる意味がわからない
360 名前:デフォルトの名無しさん [2017/11/14(火) 23:00:13.12 ID:vkrHhpXR0.net] >>348 戻り値だったらいいの?例外となんか違うか?
361 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 23:02:10.19 ID:D89+JmTA0.net] >>355 お前、なんの例外がくるのか全部把握してる前提で話してるだろ?
362 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 23:06:39.11 ID:deF3FeCf0.net] 把握できてる(かつ握っても問題ない)例外だけ握ればいいんじゃないの? なんで全部握りつぶすの?
363 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 23:18:43.22 ID:D89+JmTA0.net] >>357 どこで例外発生するかわかんないから
364 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 23:25:37.86 ID:sSxxq2Sz0.net] >>358 何処で発生するか、しかも例外の内容も分からない例外を仕分けして何をしたいんだ?
365 名前:デフォルトの名無しさん [2017/11/14(火) 23:33:00.11 ID:vkrHhpXR0.net] >>356 お前なんの戻り値がくるのか全部把握してる前提で話してるだろ?
366 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 23:43:11.80 ID:D89+JmTA0.net] >>359 だから失敗でアプリ落としたくねーんだよ アスペか んで全ての例外に対応したいがメソッドの中身を読むも広大過ぎてなんの例外がくるのかわからない ときたら握り潰すしかないよね
367 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 23:43:49.21 ID:D89+JmTA0.net] >>360 それは成功以外は失敗じゃない?
368 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 23:48:21.45 ID:ypDSy74La.net] >>361 それはダメなやり方だよ 例外をキャッチしきれなければアプリを落とすべきなんだよ それが基本なんだよ 特殊な場合は別だけど普通はそう教わる
369 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 23:48:53.64 ID:sSxxq2Sz0.net] >>361 だったら、例外をcatchして例外メッセージをMessageBox.Show()しとけば良いだけだろ。
370 名前:デフォルトの名無しさん [2017/11/14(火) 23:49:57.17 ID:vkrHhpXR0.net] >>362 だったら例外も同じじゃない?
371 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 23:53:24.48 ID:+V2acIIZ0.net] こんな深夜に要件定義されていない議論するとか正気か?
372 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 23:58:02.52 ID:D89+JmTA0.net] >>365 だから落ちんなよって
373 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 23:58:11.24 ID:sSxxq2Sz0.net] >>363 >例外をキャッチしきれなければアプリを落とすべきなんだよ どんな例外もキャッチしなきゃダメだろ。 キャッチして「駄目だコリャ」の場合はログ吐いて落とすしかない。
374 名前:デフォルトの名無しさん [2017/11/14(火) 23:58:46.20 ID:A1uj0brl0.net] Windowsの場合、ハンドルされない例外で落としておけば、ユーザーには後日解決策が 提示される場合があると表示されて、パートナーには統計情報が連絡される。
375 名前:あ mailto:sage [2017/11/14(火) 23:59:42.34 ID:j+l8jijkd.net] 動いてそうだけど動いてないかもしれない、エラーが中で出てるけど見えないプログラムなんて、 ブレーキランプはつくけどホントにブレーキがかかるかわからない車みたい。 いっそ走らないほうがマシ。
376 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 00:01:02.73 ID:udlId46Ca.net] >>367-368 どうせネタのつもりで言ってるんだろうけど面白くないから
377 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 00:02:05.46 ID:iANpDJJe0.net] >>369 MS以外に例外情報を送信することができるのか?
378 名前:デフォルトの名無しさん [2017/11/15(水) 00:03:28.48 ID:2GqBFPwl0.net] >>372 統計情報だけもらえる。
379 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 00:03:40.40 ID:QiSxe5F2a.net] >>368 キャッチして何になるんだよ? アプリは予測してない状況になってるんだぞ 予測できてないから復旧もできないし 誤動作してシステム食いつぶすこともあるんだから生かしておく意味はありません そういうことしてDBに特定のデータだけ一晩中書き続けた例を知ってる
380 名前:デフォルトの名無しさん [2017/11/15(水) 00:03:57.83 ID:iCpU6Box0.net] >>367 むしろ例外の仕組みがない言語の方がプログラマーに制御できないとこで勝手に落ちるんじゃないの?
381 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 00:04:36.82 ID:MZOj6Nbl0.net] >>369 ダイアログ出てる間はプロセス掴んだままになるから、 素直にプロセス落として自動的に再起動させたい場合には邪魔になるやつね。
382 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 00:04:47.32 ID:iANpDJJe0.net] >>373 なにそれ?
383 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 00:05:46.61 ID:De4EEM1x0.net] ロガークラスなんかだと 中で例外全部握り潰すけど catch {}
384 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 00:06:23.35 ID:iANpDJJe0.net] >>374 だから、ログ吐いて落とすって書いてあるだろ。 殆どの場合、例外を拾ったら落とすしかない。
385 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 00:10:28.88 ID:pJdoypJN0.net] ダメだこいつら 話になんねー あるべき論はいいからさっさとアプリ動かせよ 握りつぶして動くなら動くでいいだろ メソッドの中身なんて3万行だか4万行だか読んでらんねんだよバカが その全てでテキトーに例外発生させてんだから握りつぶしてナンボだろこんなの
386 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 00:11:54.55 ID:De4EEM1x0.net] Office系は印刷中キャンセルボタン押しただけで COMException投げてきたりするから とりあえず握り潰すようにしている
387 名前:デフォルトの名無しさん [2017/11/15(水) 00:12:29.08 ID:2GqBFPwl0.net] DBはコミットしなければいいと思う。
388 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 00:20:37.66 ID:iANpDJJe0.net] >>380 じゃ、メッソッドの呼び出しもと全部にcatch {}入れとけよ。
389 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 00:26:18.34 ID:AeO6Jp1U0.net] 例外で落としたくないプログラムってのはたしかに存在するけど 基本そんなプログラムをC#で書くのが間違ってると思うわ 例外処理のっていうときに、C#での(あるいは.NETでの)例外処理は、って言うようにしようぜ つかまあこの話もう終わりで良いけど
390 名前:デフォルトの名無しさん [2017/11/15(水) 00:26:49.27 ID:2GqBFPwl0.net] ただまあ例外なんて滅多に出ないからね。
391 名前:デフォルトの名無しさん [2017/11/15(水) 00:27:26.82 ID:2GqBFPwl0.net] C++スレじゃないのか。
392 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 00:27:39.78 ID:rNYxO5wL0.net] >>337 そのメソッドAが戻り値あり立った場合は?さらに外?それともヌル返す?
393 名前:デフォルトの名無しさん [2017/11/15(水) 00:28:57.41 ID:nkl9Qzh90.net] 長々と無意味なレスバが続いてたけど、ひとつだけ皆が同意できそうなのは 例外がどういう用途で使われるべきかの一般的なコンセンサスに従う人は ID:D89+JmTA0 = ID:pJdoypJN0 と一緒に仕事したくない、という点だけだな
394 名前:デフォルトの名無しさん [2017/11/15(水) 00:30:13.38 ID:2GqBFPwl0.net] 異常は戻り値で知らせるなって言いたいんじゃないの。 まあそりゃそうだよねって言う。
395 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 00:57:36.26 ID:ESiJAd3S0.net] ここc#スレで合ってるよね…
396 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 01:09:16.87 ID:udlId46Ca.net] 勘違いする人がいると見てられないので一応書いとくけど、 例外の目的の一つはフェイルセーフ、つまりプログラマの想定外のことが起こった時に 「安全側に倒す」 = 「プログラムを強制終了させる」ことなので、 「プログラマの想定外のことが起こってもプログラムの実行が止まらないようにしたい」 などという馬鹿なことを考えてはいけない。
397 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 01:35:57.65 ID:pJdoypJN0.net] >>391 はぁ? 他の誰かのライブラリを使ったときに 使用者の想定内がライブラリ作成者の想定外のときなんて簡単に発生すんだろーがバーカ テメーはちんちんでも弄ってろ
398 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 02:16:30.38 ID:oUD9LeEe0.net] ここは間を取ってContractしよう
399 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 03:59:39.11 ID:f4TQv9de0.net] >>331 誰もみてないだろうけど多分解決したっぽいので質問取り下げます ほんとlinqって便利だな
400 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 06:34:16.49 ID:iANpDJJe0.net] >>392 具体的には何のライブラリ?
401 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 08:15:52.85 ID:M8NqkMX5d.net] >>395 キチガイに触んなすな
402 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 08:45:58.03 ID:6LdVh8Top.net] >>394 LINQでどうやるの?
403 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 09:21:08.88 ID:EAeU3mIh0.net] >>395 会社の お前のレス ガイジ過ぎるだろ ちょっと考えてからレスしたら
404 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 09:39:52.81 ID:tmuRT0930.net] ガイジコラボ
405 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 10:00:24.72 ID:K3LG5GcrM.net] >>399 お前、単発だけど 連結するとガイジなんだろ?w
406 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 10:01:55.68 ID:DCxsxqPWd.net] >>397 やりたいのは文字列じゃないけどこんな感じのイメージ パフォーマンスはしらない var list = new List<string>() { "○", "×", "×", "×" , "○", "△", "△", "○", "△" }; Func<string, bool> isFirst = (item) => item == "○"; int groupingId = 0; var result = list.Select(item =>{ if (isFirst(item)) { groupingId++; } return new { Id = groupingId, Value = item }; }) .GroupBy(pair => pair.Id, pair => pair.Value); // { "○", "×", "×", "×"}{"○", "△", "△"}{"○", "△" } List<List<string>> hoge = result.Select(group => group.ToList()).ToList();
407 名前:デフォルトの名無しさん [2017/11/15(水) 11:14:21.87 ID:LdCnvqY76.net] LINQと関数型プログラミングって何が違うの?
408 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 11:42:46.04 ID:l4Bv56LcM.net] >>402 ガイジ乙
409 名前:デフォルトの名無しさん [2017/11/15(水) 11:51:23.71 ID:CJEkfJ7L0.net] >>401 畳み込みですやってみた。 var list = new List<string>() { "○", "×", "×", "×", "○", "△", "△", "○", "△" }; var isFirst = new Func<string, bool>((item) => item == "○"); var result = list.Aggregate(new List<List<string>>(), (prevList, item) => { if (isFirst(item)) prevList.Add(new List<string>() { item }); else prevList.Last().Add(item); return prevList; }); // resultからhogeにクローン var hoge = (List<List<string>>)result.Select(group => (List<string>)group.Select(item => item));
410 名前:デフォルトの名無しさん [2017/11/15(水) 12:03:19.06 ID:RrK4s1ZI6.net] こっちの方がいいか。 var list = new List<string>() { "○", "×", "×", "×", "○", "△", "△", "○", "△" }; var isFirst = new Func<string, bool>((item) => item == "○"); var hoge = list.Aggregate(new List<List<string>>(), (prevList, item) => { if (isFirst(item)) { prevList.Add(new List<string>() }; prevList.Last().Add(item); return prevList; });
411 名前:デフォルトの名無しさん [2017/11/15(水) 12:05:06.75 ID:RrK4s1ZI6.net] if (isFirst(item)) { prevList.Add(new List<string>() }; 括弧ミスった
412 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 12:05:11.35 ID:Tar4qvIud.net] Func<T,bool> を受け取るSplit関数定義した方が後で楽じゃね?
413 名前:デフォルトの名無しさん [2017/11/15(水) 12:07:15.90 ID:RrK4s1ZI6.net] 確かにその方がスッキリするな。 いずれにしろsplitの中身を定義しないといけないけど
414 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 12:29:09.51 ID:DCxsxqPWd.net] >>405 Agreegate余り使ったことなかったけど便利だな こっちの方が綺麗だ if (isFirst(item) ||prevList.Count>0) 書いてなかったけど、リストの先頭が〇とは限らないのでこんな感じで
415 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 12:35:31.31 ID:MLdh1wBXM.net] Aggregateは宣言的でないので関数型に慣れたらむしろ読み辛く感じるようになる 考え方が実質的に手続き型だから、手続き型に慣れてる人には馴染みやすいので濫用されてしまいやすい
416 名前:デフォルトの名無しさん [2017/11/15(水) 12:43:50.52 ID:LdCnvqY76.net] 関数型の典型的な関数みたいにバッ、バッって感じじゃなくてズィーンて感じだからか。 >>401 のやり方だと使ってる関数はバッバだけ感じかもしれないけど外部変数使ってるから内外に絡み合ってるのがあれだけどどうすればいいんだろう
417 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 12:46:35.76 ID:h8srGYM+0.net] Select/Aggregateなんて変な書き方せず素直にmap/reduceでいいのにな SQLっぽくというコンセプトで台無しになってる感じ
418 名前:デフォルトの名無しさん [2017/11/15(水) 12:48:32.27 ID:LdCnvqY76.net] ズィーン→ズインッ→ズィッ→バッ こう見れば畳み込みも関数型に馴染む
419 名前:デフォルトの名無しさん [2017/11/15(水) 12:49:52.25 ID:LdCnvqY76.net] >>412 まあこの場合ではSQLを扱ってるわけじゃないしな
420 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 12:54:47.35 ID:l4Bv56LcM.net] 関数にした方が見やすいじゃん 無駄に不具合出して喜ぶ低能過ぎる
421 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 13:11:40.68 ID:DCxsxqPWd.net] 確かに目新しさにおおーってなったけど、これただのforeachでいいな やっぱシンプルにループさせるのが最強か var result = new List<List<string>>(); list.ForEach(item => { if (isFirst(item) || list.Count <= 0){ result.Add(new List<string>()); } result.Last().Add(item); });
422 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 13:14:41.39 ID:MLdh1wBXM.net] var sep = list.Select((x, i) => new {x, i}) .Where(xi => xi.x == '○') .Select(xi => new[] {'○'}.Concat( list.Skip(xi.i + 1).TakeWhile(x => x != '○'))); こうかな 関数作った方がいいのは同意する
423 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 14:15:45.67 ID:1p9gbgPTa.net] 上のお題、結果がIEnumerable<IEnumerable<string>>でいいなら、 var list = new List<string>() { "○", "×", "×", "×", "○", "△", "△", "○", "△" }; var index = 0; var hoge = list.GroupBy(x => x == "○" ? ++index : index); ではだめ?
424 名前:デフォルトの名無しさん [2017/11/15(水) 17:26:29.53 ID:7R79hyBA0.net] >>416 それ意味的にはaggregateと全く変わらない 初期値が外にあるか引数のところにあるかしか違いない
425 名前:デフォルトの名無しさん [2017/11/15(水) 17:30:36.24 ID:7R79hyBA0.net] >>417 それaggregateより読みやすいと思うか?
426 名前:デフォルトの名無しさん [2017/11/15(水) 17:40:07.85 ID:7R79hyBA0.net] >>418 その型じゃダメでしょ。
427 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 18:02:02.20 ID:1p9gbgPTa.net] >>421 過去ログろくに読まずに>>418 書いたけど、質問者もGrouBy使ってるじゃん>>401
428 名前:デフォルトの名無しさん [2017/11/15(水) 18:04:09.97 ID:uxhVFwQf0.net] >>422 変換しろよ その分だけコード長くなるぞ
429 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 18:09:17.28 ID:1p9gbgPTa.net] >>423 何に変換するの? 元々の質問には最終的に欲しい型の指定はない 単に列挙できれば良いならIEnumerable<IEnumerable<string>>として扱えれば十分