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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 8b75-uWnk)
垢版 |
2018/02/04(日) 22:02:28.59ID:FbKpa1HN0
「どんなにくだらない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
2018/02/17(土) 13:18:14.51ID:JhxlZtl8a
uniontypeとか入れたい人がいるようだけど

void aaa(string | int | double a )
{

こんな感じで複数の型を受け入れられる
2018/02/17(土) 13:43:29.29ID:FvBroJk9p
c#始めて少しだけど、最初にデータバインドでつまづいて
今は非同期処理を使いこなせなくて辛い
linqもまだまだだし、1人前になるには少なくとも1年はかかるだろうか
2018/02/17(土) 14:13:33.07ID:7mikedr/0
>>494
言語に振り回されてる
大事なことはプログラムを完成させることだし
処理を実現すること
2018/02/17(土) 14:34:56.50ID:FvBroJk9p
>>495
その通りなんだけど、そもそもやりたいことを実現するために機能が必要なことが多い

xamlに値を直接書きたくない→データバインド
webリクエストを投げてかえってきた結果をスクレイピングして使いたい→非同期処理
コレクションの処理を簡潔に記述したい→linq

全部使わなくても出来るとは思うけど、
どうせあとで書き換えることになるだろうし、
ちゃんと学んでおいた方が後の手戻りが少なくなると思う
2018/02/17(土) 14:37:48.23ID:m4knDq8I0
まあ頑張れ
要は慣れだ
2018/02/17(土) 14:38:59.68ID:JhxlZtl8a
動いてるものを書き換えることは少ないよ

特にlinqへ書き換えは趣味の世界
2018/02/17(土) 14:41:34.73ID:7mikedr/0
>>496
なんか君なんもできなさそうw
2018/02/17(土) 14:42:04.74ID:JhxlZtl8a
継続的に開発して変化に対応しやすいようにするならlinqは短いコードだけ
ちょっと複雑なのは普通にforやforeachがいい場合がある

linqは結局一つの列挙しか返さないから要素数が違ったりするものを組み合わせられない
2018/02/17(土) 19:07:10.24ID:YrEj1JRO0
zipとか使えばいい普通にできるやろ
2018/02/17(土) 19:20:25.20ID:Q3QDcnMIM
>>500
たぶん設計が狂ってるんだろうな
複雑なループってトランザクションスクリプト的な汚いシステム特有の現象だよ
要素数が違うってことは異なるエンティティってことだからそれらを同時に列挙してる時点でなにかがズレてるんじゃないの
2018/02/17(土) 19:49:37.27ID:7mikedr/0
>>502
誰も複雑なループなんて言ってねーじゃん
2018/02/17(土) 19:53:57.55ID:DOQJ47ER0
レベルの低い知ったかにいちいち構わなくていいよ
2018/02/17(土) 20:02:16.62ID:Q3QDcnMIM
>>500
>ちょっと複雑なのは普通にforやforeachがいい場合がある

forやforeachってループじゃないのかぁ
2018/02/17(土) 20:10:45.35ID:JhxlZtl8a
理解力が低い自慢はいいよ

使いたい人はなんでもlinq使えばいい

linqは限られた用途で光るもの
上の方のレスにある属性がMaxの要素を取り出すにはlinqでは2回ループがいる
foreachやforでは1ループでいい
それがどうだと思う人は永遠に初心者のまま
2018/02/17(土) 20:18:29.66ID:Q3QDcnMIM
複雑さと関係ない例だよねそれ
まあLinqで困るようじゃ区別つかんか
2018/02/17(土) 20:19:41.50ID:Jdt4KZPZa
しっくりこないんです、まで読んだ
509デフォルトの名無しさん (ワッチョイ 3783-qi38)
垢版 |
2018/02/17(土) 20:38:57.31ID:cHSXrfCe0
10年前からLINQは糞で遅いから普及しないって言われてた。
2018/02/17(土) 20:42:15.77ID:eicgzYYd0
>>506
ほう
試しにMaxだと2回ループが走って、foreachだと走らないコード書いてみて
2018/02/17(土) 20:42:54.34ID:42ie9Ser0
初心者の質問スレなんで質問でも回答でもない「先生方」は別のところに行ってください
512デフォルトの名無しさん (ワッチョイ 3783-qi38)
垢版 |
2018/02/17(土) 20:44:25.26ID:cHSXrfCe0
関数型言語がなんで廃れてるかがよく分かる。KYなんだよ、彼らは。
2018/02/17(土) 20:51:25.85ID:2dhflQ+l0
「そうそう、アメリカは悪いーヤツなんだよね…」
「あ、俺、最近は洋楽聞いてるんだ…」
「関数型言語がなんで廃れてるかがよく分かる。KYなんだよ、彼らは…」
「コーヒー、砂糖入れなくていいからな…」
2018/02/17(土) 21:07:14.35ID:7mikedr/0
>>505
バカ?
複雑な処理はって話で
「複雑」はループにかかってる修飾語じゃねーだろ
プログラム言語の前に日本語なんとかしろよバーカ
2018/02/17(土) 21:23:13.78ID:Q3QDcnMIM
>>514
あのさ文脈少しは気にしたら?

複雑な処理をLinqでやるかループでやるかって比較してたんだろ
ならここでの複雑な処理っての複雑なループか複雑なLinqのどっちかなんだよ

このロジック君にはLinqより難しかったかな?
516デフォルトの名無しさん (ワッチョイ 5710-brYG)
垢版 |
2018/02/17(土) 21:29:52.32ID:lDUnRFry0
jsonresultの使い方がよくわからないのですが、Ajaxとかでpostしたら結果を受けることができるって感じなんでしょうか
何故かあんまり解説落ちてない
2018/02/17(土) 21:37:14.41ID:7mikedr/0
>>515
はぁ?
処理は複雑だけど
複雑なループになる確証はねぇだろ
早く死ねよw
2018/02/17(土) 21:48:19.37ID:Q3QDcnMIM
>>517
やっぱりわからないんだね
2018/02/17(土) 21:50:55.57ID:RP1Lckbc0
Linqで書けないような複雑なコレクション操作を何度も書くのはしんどいよ
仮にループで書くとしても1回書いたらそれをLinq拡張として再利用すべきだろうね
2018/02/17(土) 22:30:36.59ID:YrEj1JRO0
[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();
2018/02/17(土) 22:35:44.05ID:7mikedr/0
>>518
ハイ、逃げたw
2018/02/17(土) 22:37:00.85ID:Q3QDcnMIM
>>521
お前がな
2018/02/17(土) 22:46:43.47ID:XsSESzO/0
一般的にLINQコードのほうが少ないワーキングメモリで理解できる
2018/02/17(土) 22:52:46.47ID:7mikedr/0
>>522
いいよ
受けて立つよ
お前雑魚だし
2018/02/17(土) 23:00:29.41ID:Q3QDcnMIM
>>524
OK
じゃレス読み返してこい
2018/02/17(土) 23:02:57.51ID:ttY9XQata
馬鹿らしい勝負だな

適材適所
linqが使い良い場所ならそこで使う
forやforeachが使い良い場所ならそこで使う

汎用性はfor foreachが上
2018/02/17(土) 23:13:34.50ID:vxC6ekeQ0
なんでいつもlinqの話になると荒れるんだよ
2018/02/17(土) 23:22:34.74ID:I0BNlfaX0
最近書き直された独習C# ってどんなぐあいですか?
C#2.0 から知識は止まっているので、買ってみようと思うときもあるのですが
2018/02/17(土) 23:28:11.51ID:ttY9XQata
>>520
[2]は悪手
ループが多すぎる
並べ替えで何回ループしてるかわからない

しかも無駄にループする可能性があるので
OrderBy Lastの組み合わせじゃなくてOrderByDescending First使うべき
2018/02/17(土) 23:33:32.24ID:4BHNVcm10
>>516
JsonResultで検索して真っ先に出てきたここで
http://www.atmarkit.co.jp/ait/articles/0907/10/news109_3.html
解説十分に思うし何が分からんのか分からんのだけども
2018/02/17(土) 23:55:53.51ID:YrEj1JRO0
Lastだと最後まで列挙されるからってこと?
だから前の誰かはわざわざ降順にしてたのか
2018/02/18(日) 00:03:26.43ID:EJho87+R0
仕様通りに動けば中身はなんだっていいんだよ。(個人ならね)
2018/02/18(日) 00:07:37.02ID:9OPZsITra
今のはlistがIListならLastでもいい

しかし全部の内部の処理動作を覚えて
いちいちその違いを認識してコードを書くとは思えないので
どうしたらパッと見早く動くように見えるかロジカルに考える習慣をつけるべき
2018/02/18(日) 00:11:53.26ID:sStJYnT/0
デカいリストの時とか変わったループ処理のときだけ原始的な書き方でやればいいんだろうな
2018/02/18(日) 00:13:33.71ID:9OPZsITra
そもそも内部構造によって悪手かもしれないなら
普通に[1]を選べばいい

何をやってるかわかるから
2018/02/18(日) 00:14:40.67ID:sStJYnT/0
デカイリストとか変なループ処理じゃないなら直感的なリンクでいいよね
2018/02/18(日) 00:33:58.85ID:9OPZsITra
書いたコードでその人が何を考えて書いたのかはわかるだろう
そして弱点があるならその人のレベルを疑うだろう

PGは無駄がなく速く動くコードを書きたいと願うもの

初心者はまだその域に達していないだけ
2018/02/18(日) 00:36:10.92ID:sStJYnT/0
アセンブラでも使っとけ。
2018/02/18(日) 01:10:42.14ID:RhG0Chqj0
>>535
でも1ってバグってね?
maxitemに値入るの?
2018/02/18(日) 01:15:11.21ID:RhG0Chqj0
1,2,3ってそれぞれ別のモンを掴んで来そうだけど
こんな欠陥コードで比較してて大丈夫なの?
2018/02/18(日) 01:19:07.73ID:9OPZsITra
>>539
省略してあるんだろと思ったけどバグ入り
2018/02/18(日) 01:25:51.97ID:RhG0Chqj0
1,2,3を同じ結果が得られるコードだと思ってるなら不味いよ
っていうか普通にlinqわかりにくいから使ってる奴死のうねってコード
じゃあ、1の不具合修正版と全く同じ動作をする処理を
2と3の形式で書けよって言われるとあんまりlinq使う意味ないんだろ
捨てちゃえよコレ
2018/02/18(日) 01:57:03.00ID:sStJYnT/0
なに言ってるかわからんが、結局
デカいリストの時とか変わったループ処理のときだけ原始的な書き方でやればいいんだろうな
2018/02/18(日) 03:46:52.93ID:ZiIqzVln0
>>527
親を殺されてるのに冷静でいられる奴の方が変だ
2018/02/18(日) 08:24:37.51ID:AO2fZqe80
要素数が多い場合はDBで処理すればいい
シーケンスの集合演算で容易に解けないようなレアケースは一度だけベタに書いてIEnumerable拡張としてライブラリ化して二度とベタに書いちゃいけない
DRYは基本中の基本
2018/02/18(日) 08:58:21.87ID:BzKV6Wa9M
オンメモリで処理できるものをDBみたいに糞遅いものに頼ることはないと思うけど
なんかちょいちょい変なやり方をこれがいいですよみたいな書き方はやめたほうがいいよ
2018/02/18(日) 09:00:31.77ID:BzKV6Wa9M
それにlinqから複数の要素数の違うシーケンスを取り出せないって書いてあるだけだろ
つまんね
2018/02/18(日) 09:26:20.84ID:f4Owde4c0
>>539
バグ以前にコンパイル通らないだろ
> var maxItem=null;
2018/02/18(日) 10:13:08.45ID:q/GX9XKTd
マウント取りたいだけのゴミクズなんだからNGしろ
2018/02/18(日) 10:56:25.36ID:JlUJeRggM
>>546
こういうタイプの人がとんでもない件数のデータ取得してAPで集計するみたいな酷い処理を書くのかな
2018/02/18(日) 11:19:36.09ID:AO2fZqe80
そもそも「linqから複数の要素数の違うシーケンスを取り出せない」って意味不明な文が何を言いたいのか全くわからんのだが
2018/02/18(日) 11:29:52.89ID:P65j4to9M
linqはゴミだな
2018/02/18(日) 12:26:53.66ID:xgCSzXkx0
>>551
それな。
zipとかの関数は小さい方に合わせるんだがそういうことではないのかね。
2018/02/18(日) 12:34:55.86ID:xgCSzXkx0
デジタルネイティブならぬlinqネイティブな超初心者の俺には原始的なやり方を出来るだけ使わないやり方のほうが少ないワーキングメモリで理解できて楽なんだが、今まで地道な書き方してきた人はできるだけその書き方をしたいと思うのかね。
2018/02/18(日) 12:40:46.69ID:xgCSzXkx0
超初心者の多いPythonのスレだと関数型的な関数とか内包表記に対して誰も文句言わずに当たり前のように受け入れられてるしね。
俺からみたらこのスレのリンク拒絶反応民は言語学的にみても自然な流れなのにら抜き言葉を受け入れられない老人ってイメージ。
2018/02/18(日) 12:41:10.66ID:JLsQDeR60
新しい技術を学ばない人なら「地道な書き方」を続けるだろうね
2018/02/18(日) 12:52:21.36ID:1gDuaBcq0
linqは早くなるわけでもないので、見通しが悪くなる場合は使用を控えるのが得策だな
ただ、直感的に判りやすいものは積極的に使うべきだ
2018/02/18(日) 12:59:36.89ID:i9xlu85wM
>>557
>>520が全部違う結果がかえる時点で超わかりにくいじゃん
2018/02/18(日) 13:01:01.74ID:/P4rmifc0
同意
LINQ云々以前にパッと見で分からん様な処理はちゃんと名前付けるべき
2018/02/18(日) 13:02:06.23ID:xgCSzXkx0
俺のような超初心者には、述語もなくて原始的であちこち飛びまくりで状態変数更新しまくりのコードを理解するのには、長いリンクコードと比較して3倍のストレスを感じてしまうな。
超初心者だから、デカいコレクションとかを効率的に裁かなければいけない状況にはほとんど出会わないけれど、古参のプロプログラマーは俺が普段扱うような大規模でないコレクションには出会わないのかね。
561デフォルトの名無しさん (ワッチョイ 3783-qi38)
垢版 |
2018/02/18(日) 13:17:48.49ID:+tLYeZ1A0
保守性もなく糞遅いLINQでわさわざ書く理由が分からない。
もはや初心者スレでマウンティングすることぐらいしかできていないアホ機能。
2018/02/18(日) 13:25:56.99ID:CuHWMF/m0
LINQすら使えないゴミがまた湧いてんのか
2018/02/18(日) 13:32:16.48ID:BzKV6Wa9M
LINQしか使えない人がLINQ+そのほかの機能も使える人に噛みついてるだけ
全員補助輪つけろという抗議活動
2018/02/18(日) 13:43:53.51ID:RhG0Chqj0
>>561
それで友の会スレ使わないで初心者スレきてんだ?w
初心者マウンティングがやりたくてわざわざこんなとこで貼ってるのかよ
2018/02/18(日) 13:48:41.01ID:YGh6gLdw0
マウンティングならちゃんとやって欲しい
バグコードなんかダッチワイフとシコシコやってるのと変わらないだろ
2018/02/18(日) 13:56:57.83ID:RhG0Chqj0
大したモン作れないから
初心者スレで初心者が見慣れないコード貼って悦に入るゴミクズ
そうでないというなら友の会スレ新しく建ててそっち行けよ
前のはもう消えたけどなlinqなんて誰も使ってねーから
2018/02/18(日) 14:09:38.35ID:PqnfJfooa
>>555
人語の場合は正しいかどうかの基準は合理性ではないのでその議論はナンセンス。
日本語にも英語にも不合理な文法なんかいくらでもある。

あと、どうせ言っても分からんと思うけど、世代論に限らず「〜ガー」っていうのは
他人からは言ってる本人の被害者意識や被害妄想を語るに落ちてるようにしか聞こえないことに
いい歳こいてるなら気が付いた方がいいと思うw

もちろん受け取る側の他人もいろいろだけどね
2018/02/18(日) 14:24:40.19ID:WO6mnsrqM
>>567
> 「〜ガー」っていうのは
> 他人からは言ってる本人の被害者意識や被害妄想を語るに落ちてるようにしか聞こえない
なにかトラウマでもあるんだろうな w
2018/02/18(日) 15:15:56.96ID:CuHWMF/m0
>>566
>linqなんて誰も使ってねーから
はいキチガイ
2018/02/18(日) 15:53:32.39ID:ZiIqzVln0
違うよアベンジャーだよ
2018/02/18(日) 16:10:23.12ID:JlUJeRggM
お年寄りなのかな
2018/02/18(日) 16:54:53.07ID:RhG0Chqj0
じゃあどうして友の会スレは消えちゃったの?
誰も書き込んでなかったからでしょ?
2018/02/18(日) 16:59:22.79ID:OJ07T80y0
C#の言語内機能でしかないシロモノで、単品で語る様な物じゃなかったからねえ
スレ自体は落ちて当然というか

むしろWPFスレとかよく残ってんなっていう
(まあそりゃ厳密にはC#以外でも使えるが)
2018/02/18(日) 17:06:51.25ID:bB0zBNw30
WPF悪くないぜ。
2018/02/18(日) 17:15:11.69ID:ZiIqzVln0
WPF終わったなって書き込むと
そもそも始まってないしって返ってくるスレ
2018/02/18(日) 17:19:44.75ID:ZiIqzVln0
深入りしなければ悪くない
個人的にFormsを使うことはなくなったし
ただエヴァンジェリストとかMVPとかの発言は聞き流すべきだなと思った
577デフォルトの名無しさん (ワッチョイ 3783-qi38)
垢版 |
2018/02/18(日) 17:21:43.47ID:+tLYeZ1A0
C#が失速したのはWPFのせいだと思う。
578デフォルトの名無しさん (ワッチョイ 9fe0-T3WU)
垢版 |
2018/02/18(日) 17:26:42.00ID:XTUoNfC80
重くて遅いんでしょ
そりゃ誰も使わないよね
2018/02/18(日) 17:29:44.35ID:JlUJeRggM
WPF食わず嫌いしてたけど使ってみるとすごく楽で良かった
ただレイヤー分割をしっかりできないと逆に使いにくいのかなとも思った
日本の開発の現場ではレイヤー分割の概念がまだ広まってないからそこで失敗して嫌になっちゃうのかもしれない
早すぎたんだろうな
2018/02/18(日) 17:30:54.04ID:OJ07T80y0
WPFは個人的にも好きだよ
あくまで、linqと立ち位置を比較しての話ね

>エヴァンジェリストとかMVPとかの発言は聞き流すべきだなと思った
これには全力で同意だが
2018/02/18(日) 17:36:25.36ID:JlUJeRggM
馬の耳に念仏って実際かなりあるからなんとも言えんな
エヴァンジェリストやMVPの言ってるのとがレベル高すぎて理解できないだけかもしれん
完全に理解したうえで論理的に反論するならともかく
2018/02/18(日) 17:41:14.32ID:4qWLRsuo0
リンク使ってるだけで悦に入ってると思うとかどんなコンプだよ...
linqネイティブの俺には想像もつかんわ。
2018/02/18(日) 17:56:25.68ID:4qWLRsuo0
むしろ原始的な書き方をしてる人のほうが悦に入ってそう... w
2018/02/18(日) 18:04:51.87ID:4qWLRsuo0
プログラミングがどうしてもできない人もいればなんの不自由もなくできる人がいるように、リンクがどうしても難しい人がいるんだな w
リンク書けるのに原始的な書き方を書けない人は居ない
原始的な書き方はできるけどリンク書けない人は居ないとは限らない w
2018/02/18(日) 18:09:44.28ID:OLHt6KLG0
初心者相手にマウンティングってこれかな?w
2018/02/18(日) 18:14:34.10ID:OLHt6KLG0
これがやりたくて友の会スレから脱獄してきたガイジなんでしょ?
誰も聞いて無いのに突然linq書き出して迷惑してますって被害届出てるよ
2018/02/18(日) 18:18:05.06ID:CuHWMF/m0
>>586
どう考えても、LINQなんか使ってるやついないって言ってるお前がガイジ
2018/02/18(日) 18:23:24.38ID:JlUJeRggM
Linq最大の失敗はLinqすら理解できずにぶちぶち文句言う雑魚が存在することを予測できなかったことだな
2018/02/18(日) 18:32:40.13ID:VlgXSgC9a
>>588
関係ないけど標準語ではぶつぶつ文句を言うだけど
ぶちぶちてどこの方言なんだ?
2018/02/18(日) 18:36:49.68ID:AAhzNgFK0
「でぶでぶ」太る、とかいう人もいるから、その類じゃないかな
ちょっと変わった擬態語でインパクトを与える、というのは日本語ならではだと思います
2018/02/18(日) 18:40:36.23ID:sStJYnT/0
リンク使っただけでブチブチ言われるとかどんな世の中だよ...
便利で簡単だから使ってるのにそれを難しく感じる連中どもの意見なんて要らない w
2018/02/18(日) 18:42:39.07ID:VlgXSgC9a
自演の白状かなw

ちがうならどこの方言?
2018/02/18(日) 18:43:19.97ID:JlUJeRggM
>>589
「ぶちぶち」は文句を言うときのオノマトペ(擬音語・擬声語)です。
語彙力は大事だぞ少年よ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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