ふらっと C#,C♯,C#(初心者用) Part135
■ このスレッドは過去ログ倉庫に格納されています
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part134
http://mevius.5ch.net/test/read.cgi/tech/1511951038/
■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■コードを貼る場合は↓を使いましょう。
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: default:vvvvv:1000:512:----: EXT was configured uniontypeとか入れたい人がいるようだけど
void aaa(string | int | double a )
{
こんな感じで複数の型を受け入れられる c#始めて少しだけど、最初にデータバインドでつまづいて
今は非同期処理を使いこなせなくて辛い
linqもまだまだだし、1人前になるには少なくとも1年はかかるだろうか >>494
言語に振り回されてる
大事なことはプログラムを完成させることだし
処理を実現すること >>495
その通りなんだけど、そもそもやりたいことを実現するために機能が必要なことが多い
xamlに値を直接書きたくない→データバインド
webリクエストを投げてかえってきた結果をスクレイピングして使いたい→非同期処理
コレクションの処理を簡潔に記述したい→linq
全部使わなくても出来るとは思うけど、
どうせあとで書き換えることになるだろうし、
ちゃんと学んでおいた方が後の手戻りが少なくなると思う 動いてるものを書き換えることは少ないよ
特にlinqへ書き換えは趣味の世界 継続的に開発して変化に対応しやすいようにするならlinqは短いコードだけ
ちょっと複雑なのは普通にforやforeachがいい場合がある
linqは結局一つの列挙しか返さないから要素数が違ったりするものを組み合わせられない >>500
たぶん設計が狂ってるんだろうな
複雑なループってトランザクションスクリプト的な汚いシステム特有の現象だよ
要素数が違うってことは異なるエンティティってことだからそれらを同時に列挙してる時点でなにかがズレてるんじゃないの >>502
誰も複雑なループなんて言ってねーじゃん >>500
>ちょっと複雑なのは普通にforやforeachがいい場合がある
forやforeachってループじゃないのかぁ 理解力が低い自慢はいいよ
使いたい人はなんでもlinq使えばいい
linqは限られた用途で光るもの
上の方のレスにある属性がMaxの要素を取り出すにはlinqでは2回ループがいる
foreachやforでは1ループでいい
それがどうだと思う人は永遠に初心者のまま 複雑さと関係ない例だよねそれ
まあLinqで困るようじゃ区別つかんか 10年前からLINQは糞で遅いから普及しないって言われてた。 >>506
ほう
試しにMaxだと2回ループが走って、foreachだと走らないコード書いてみて 初心者の質問スレなんで質問でも回答でもない「先生方」は別のところに行ってください 関数型言語がなんで廃れてるかがよく分かる。KYなんだよ、彼らは。 「そうそう、アメリカは悪いーヤツなんだよね…」
「あ、俺、最近は洋楽聞いてるんだ…」
「関数型言語がなんで廃れてるかがよく分かる。KYなんだよ、彼らは…」
「コーヒー、砂糖入れなくていいからな…」 >>505
バカ?
複雑な処理はって話で
「複雑」はループにかかってる修飾語じゃねーだろ
プログラム言語の前に日本語なんとかしろよバーカ >>514
あのさ文脈少しは気にしたら?
複雑な処理をLinqでやるかループでやるかって比較してたんだろ
ならここでの複雑な処理っての複雑なループか複雑なLinqのどっちかなんだよ
このロジック君にはLinqより難しかったかな? jsonresultの使い方がよくわからないのですが、Ajaxとかでpostしたら結果を受けることができるって感じなんでしょうか
何故かあんまり解説落ちてない >>515
はぁ?
処理は複雑だけど
複雑なループになる確証はねぇだろ
早く死ねよw Linqで書けないような複雑なコレクション操作を何度も書くのはしんどいよ
仮にループで書くとしても1回書いたらそれをLinq拡張として再利用すべきだろうね [1]
var maxItem=null;
foreach(var item in list){
if(maxItem!=null&&item.Value>maxItem.Value)
maxItem=item;
}
[2]
var maxItem=list.OrderBy(item=>item.Value).Last();
[3]
var max=list.Max(item=>item.Value);
var maxItem=list.Select(item=>item.Value==max).First(); 一般的にLINQコードのほうが少ないワーキングメモリで理解できる 馬鹿らしい勝負だな
適材適所
linqが使い良い場所ならそこで使う
forやforeachが使い良い場所ならそこで使う
汎用性はfor foreachが上 最近書き直された独習C# ってどんなぐあいですか?
C#2.0 から知識は止まっているので、買ってみようと思うときもあるのですが >>520
[2]は悪手
ループが多すぎる
並べ替えで何回ループしてるかわからない
しかも無駄にループする可能性があるので
OrderBy Lastの組み合わせじゃなくてOrderByDescending First使うべき Lastだと最後まで列挙されるからってこと?
だから前の誰かはわざわざ降順にしてたのか 仕様通りに動けば中身はなんだっていいんだよ。(個人ならね) 今のはlistがIListならLastでもいい
しかし全部の内部の処理動作を覚えて
いちいちその違いを認識してコードを書くとは思えないので
どうしたらパッと見早く動くように見えるかロジカルに考える習慣をつけるべき デカいリストの時とか変わったループ処理のときだけ原始的な書き方でやればいいんだろうな そもそも内部構造によって悪手かもしれないなら
普通に[1]を選べばいい
何をやってるかわかるから デカイリストとか変なループ処理じゃないなら直感的なリンクでいいよね 書いたコードでその人が何を考えて書いたのかはわかるだろう
そして弱点があるならその人のレベルを疑うだろう
PGは無駄がなく速く動くコードを書きたいと願うもの
初心者はまだその域に達していないだけ >>535
でも1ってバグってね?
maxitemに値入るの? 1,2,3ってそれぞれ別のモンを掴んで来そうだけど
こんな欠陥コードで比較してて大丈夫なの? >>539
省略してあるんだろと思ったけどバグ入り 1,2,3を同じ結果が得られるコードだと思ってるなら不味いよ
っていうか普通にlinqわかりにくいから使ってる奴死のうねってコード
じゃあ、1の不具合修正版と全く同じ動作をする処理を
2と3の形式で書けよって言われるとあんまりlinq使う意味ないんだろ
捨てちゃえよコレ なに言ってるかわからんが、結局
デカいリストの時とか変わったループ処理のときだけ原始的な書き方でやればいいんだろうな >>527
親を殺されてるのに冷静でいられる奴の方が変だ 要素数が多い場合はDBで処理すればいい
シーケンスの集合演算で容易に解けないようなレアケースは一度だけベタに書いてIEnumerable拡張としてライブラリ化して二度とベタに書いちゃいけない
DRYは基本中の基本 オンメモリで処理できるものをDBみたいに糞遅いものに頼ることはないと思うけど
なんかちょいちょい変なやり方をこれがいいですよみたいな書き方はやめたほうがいいよ それにlinqから複数の要素数の違うシーケンスを取り出せないって書いてあるだけだろ
つまんね >>539
バグ以前にコンパイル通らないだろ
> var maxItem=null; >>546
こういうタイプの人がとんでもない件数のデータ取得してAPで集計するみたいな酷い処理を書くのかな そもそも「linqから複数の要素数の違うシーケンスを取り出せない」って意味不明な文が何を言いたいのか全くわからんのだが >>551
それな。
zipとかの関数は小さい方に合わせるんだがそういうことではないのかね。 デジタルネイティブならぬlinqネイティブな超初心者の俺には原始的なやり方を出来るだけ使わないやり方のほうが少ないワーキングメモリで理解できて楽なんだが、今まで地道な書き方してきた人はできるだけその書き方をしたいと思うのかね。 超初心者の多いPythonのスレだと関数型的な関数とか内包表記に対して誰も文句言わずに当たり前のように受け入れられてるしね。
俺からみたらこのスレのリンク拒絶反応民は言語学的にみても自然な流れなのにら抜き言葉を受け入れられない老人ってイメージ。 新しい技術を学ばない人なら「地道な書き方」を続けるだろうね linqは早くなるわけでもないので、見通しが悪くなる場合は使用を控えるのが得策だな
ただ、直感的に判りやすいものは積極的に使うべきだ >>557
>>520が全部違う結果がかえる時点で超わかりにくいじゃん 同意
LINQ云々以前にパッと見で分からん様な処理はちゃんと名前付けるべき 俺のような超初心者には、述語もなくて原始的であちこち飛びまくりで状態変数更新しまくりのコードを理解するのには、長いリンクコードと比較して3倍のストレスを感じてしまうな。
超初心者だから、デカいコレクションとかを効率的に裁かなければいけない状況にはほとんど出会わないけれど、古参のプロプログラマーは俺が普段扱うような大規模でないコレクションには出会わないのかね。 保守性もなく糞遅いLINQでわさわざ書く理由が分からない。
もはや初心者スレでマウンティングすることぐらいしかできていないアホ機能。 LINQしか使えない人がLINQ+そのほかの機能も使える人に噛みついてるだけ
全員補助輪つけろという抗議活動 >>561
それで友の会スレ使わないで初心者スレきてんだ?w
初心者マウンティングがやりたくてわざわざこんなとこで貼ってるのかよ マウンティングならちゃんとやって欲しい
バグコードなんかダッチワイフとシコシコやってるのと変わらないだろ 大したモン作れないから
初心者スレで初心者が見慣れないコード貼って悦に入るゴミクズ
そうでないというなら友の会スレ新しく建ててそっち行けよ
前のはもう消えたけどなlinqなんて誰も使ってねーから >>555
人語の場合は正しいかどうかの基準は合理性ではないのでその議論はナンセンス。
日本語にも英語にも不合理な文法なんかいくらでもある。
あと、どうせ言っても分からんと思うけど、世代論に限らず「〜ガー」っていうのは
他人からは言ってる本人の被害者意識や被害妄想を語るに落ちてるようにしか聞こえないことに
いい歳こいてるなら気が付いた方がいいと思うw
もちろん受け取る側の他人もいろいろだけどね >>567
> 「〜ガー」っていうのは
> 他人からは言ってる本人の被害者意識や被害妄想を語るに落ちてるようにしか聞こえない
なにかトラウマでもあるんだろうな w >>566
>linqなんて誰も使ってねーから
はいキチガイ じゃあどうして友の会スレは消えちゃったの?
誰も書き込んでなかったからでしょ? C#の言語内機能でしかないシロモノで、単品で語る様な物じゃなかったからねえ
スレ自体は落ちて当然というか
むしろWPFスレとかよく残ってんなっていう
(まあそりゃ厳密にはC#以外でも使えるが) WPF終わったなって書き込むと
そもそも始まってないしって返ってくるスレ 深入りしなければ悪くない
個人的にFormsを使うことはなくなったし
ただエヴァンジェリストとかMVPとかの発言は聞き流すべきだなと思った WPF食わず嫌いしてたけど使ってみるとすごく楽で良かった
ただレイヤー分割をしっかりできないと逆に使いにくいのかなとも思った
日本の開発の現場ではレイヤー分割の概念がまだ広まってないからそこで失敗して嫌になっちゃうのかもしれない
早すぎたんだろうな WPFは個人的にも好きだよ
あくまで、linqと立ち位置を比較しての話ね
>エヴァンジェリストとかMVPとかの発言は聞き流すべきだなと思った
これには全力で同意だが 馬の耳に念仏って実際かなりあるからなんとも言えんな
エヴァンジェリストやMVPの言ってるのとがレベル高すぎて理解できないだけかもしれん
完全に理解したうえで論理的に反論するならともかく リンク使ってるだけで悦に入ってると思うとかどんなコンプだよ...
linqネイティブの俺には想像もつかんわ。 むしろ原始的な書き方をしてる人のほうが悦に入ってそう... w プログラミングがどうしてもできない人もいればなんの不自由もなくできる人がいるように、リンクがどうしても難しい人がいるんだな w
リンク書けるのに原始的な書き方を書けない人は居ない
原始的な書き方はできるけどリンク書けない人は居ないとは限らない w これがやりたくて友の会スレから脱獄してきたガイジなんでしょ?
誰も聞いて無いのに突然linq書き出して迷惑してますって被害届出てるよ >>586
どう考えても、LINQなんか使ってるやついないって言ってるお前がガイジ Linq最大の失敗はLinqすら理解できずにぶちぶち文句言う雑魚が存在することを予測できなかったことだな >>588
関係ないけど標準語ではぶつぶつ文句を言うだけど
ぶちぶちてどこの方言なんだ? 「でぶでぶ」太る、とかいう人もいるから、その類じゃないかな
ちょっと変わった擬態語でインパクトを与える、というのは日本語ならではだと思います リンク使っただけでブチブチ言われるとかどんな世の中だよ...
便利で簡単だから使ってるのにそれを難しく感じる連中どもの意見なんて要らない w ■ このスレッドは過去ログ倉庫に格納されています