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

レス数が950を超えています。1000を超えると書き込みができなくなります。
2020/12/16(水) 11:29:35.35ID:TSvQ057dM
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part148
https://mevius.5ch.net/test/read.cgi/tech/1590578921/
■関連スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/03/08(月) 00:53:45.52ID:pnlhyJpZ0
>>862
https://www.kekyo.net/2016/12/06/6186

この記事が参考になるかも
2021/03/08(月) 01:01:23.25ID:8a53dPGk0
>>882
>>610 と同じ内容かな
ここら辺見返せばいいと思うよ
2021/03/08(月) 01:09:14.76ID:pnlhyJpZ0
asyncawait が前準備無しにドキュメントも無しに実装されているときは無意味な上に99.89%バグっているので安心してほしい
2021/03/08(月) 02:12:24.04ID:ZhwAN9h80
>>881
定義済みメソッドを非同期実行するなら>>880の方法でいいかと
此方もそんな感じでやってる
2021/03/08(月) 04:11:09.12ID:qzvxIX+G0
>>883
これの一番最初にあるサンプルコードをコピペして
Form1_Load()から呼び出すと止まるのですが
これは当然の結果なのでしょうか?

void Form1_Load(object sender, EventArgs e)
{
var radius = 1.0;
var area = CalculateCircleAreaAsync(radius).Result;
}
static async Task<double> CalculateCircleAreaAsync(double radius)
{
var π = await Task.Run(() =>
{
Thread.Sleep(3000);
return Math.PI; // 級数展開などで円周率を計算したとする
});
return π * Math.Pow(radius, 2); // 円の面積
}
2021/03/08(月) 04:37:29.21ID:V3d7DsS+0
どこからコピペしたか詳しく
2021/03/08(月) 08:35:47.21ID:lsfVgCLC0
>>887
はい、当然の結果です。
メインスレッドがデッドロックします。
2021/03/08(月) 08:55:46.45ID:pnlhyJpZ0
>>887
リンク先になくね?
891デフォルトの名無しさん (ワッチョイ fb02-kkZq)
垢版 |
2021/03/08(月) 13:21:09.68ID:qzvxIX+G0
>>888-890
すみません。こっちでした。
https://www.atmarkit.co.jp/ait/articles/1211/02/news066.html

>>887みたいな感じでForm_Load()から呼び出したいんですけど
その場合はどうすればいいんでしょうか?
2021/03/08(月) 14:31:07.77ID:DDkttHUo0
>>891
前のと同じ問題
Form1_Load()をasyncに変更してCalculateCircleAreaAsync()をawaitで待つ
Task.Resultは直接触ったら駄目
2021/03/08(月) 14:51:25.43ID:ZiVdiQxH0
まずは落ち着いて自分に宛てられたレスをきちんと理解するところから始めたら?
いくつかの質問にはすでに答えが付いてるよ。
2021/03/08(月) 15:00:46.23ID:qzvxIX+G0
>>892
たしかにForm_Load()にasync付けたらいけました。ありがとうございます。
>>893
申し訳ない。ちゃんと読み取れてなかったようでした。
2021/03/08(月) 15:12:14.98ID:qzvxIX+G0
これってメソッドの戻り値の型を自分で指定したい場合は
Task<T>でラップしないといけないって解釈でいいですかね?
2021/03/08(月) 15:30:58.68ID:qzvxIX+G0
webView2.CoreWebView2.ExecuteScriptAsync()
がTask<T>を受け取らないといけないせいで
既に戻り値を定義された色々なメソッドにも影響が出てしまって
どうにかそれらを全て書き換えるかしないといけないのが困ってる点ですね。
これどうにかならないんですかね?
2021/03/08(月) 16:02:08.72ID:qzvxIX+G0
しかもこれ自作クラスを戻り値にしてるメソッドだと
GetAwaiter()がないとかって怒られてそれも実装しないといけないみたいで凄い面倒で困る…
2021/03/08(月) 16:05:05.45ID:qzvxIX+G0
もう非同期とかいいので普通にこれでデータ取得できないもんなんですかね。
webView2.CoreWebView2.ExecuteScriptAsync()
非同期とかしなくていいんですよ。必要なら1分くらい待ってもいいので。
たったこれだけのことなのに凄い面倒だ。
2021/03/08(月) 16:20:50.73ID:ZiVdiQxH0
まず落ち着いて自分に宛てられたレスを最初から読み直してみるといいんじゃないかな。
2021/03/08(月) 16:31:12.58ID:cnxTx+zha
task.ConfigureAwait(false).GetAwaiter().GetResult()
2021/03/08(月) 16:47:22.57ID:R5ZHjmWC0
素直にasync/await対応したほうが建設的
悩んでいる時間で修正終わるわ
2021/03/08(月) 18:11:10.07ID:c6FLXLbe0
このレベルだとこんな所で教えてもどうせ理解出来ない
2021/03/08(月) 18:39:35.08ID:2YZIHCv70
今時めずらしいタイプだ
こういうのから金を巻き上げてその辺に棄てるのがスクールの役目のはず
2021/03/08(月) 19:15:52.15ID:qzvxIX+G0
>>901
面倒だけどそうすることにしました。
ひとつずつ地道に置き換えていきます。
2021/03/08(月) 20:13:34.27ID:pnlhyJpZ0
使用者に非同期処理が必要ないのに非同期処理しか実装されてないクソライブラリはクソだからないのでクソとしか表現のしようがないんだぜ
そこはおk?

ああ、クソじゃん・・・

って話よ?
2021/03/08(月) 20:20:54.40ID:lWZwpqsv0
鶏糞と牛糞の詰め合わせでも送ってやろうか?
2021/03/08(月) 20:21:12.62ID:pnlhyJpZ0
散々罵った挙げ句に同期処理が用意されてることがわかったときは死にたくなるぐらい恥ずかしいので気をつけるんだぜ
2021/03/08(月) 20:54:37.86ID:qzvxIX+G0
>>907
どうやればいいんでしょうか?
2021/03/08(月) 21:39:32.19ID:lsfVgCLC0
>>908
理解せず簡単に済ますなら900の方法か、
UIスレッドから新しいTaskを作って、そのタスク内で非同期メソッドの結果をawaitして、UIスレッドは作ったTaskのResultを取得すれば良い。
2021/03/09(火) 02:15:52.82ID:Km1Y7VEG0
>>909
900さんの方法でもイケるんですね。ありがとうございます。
あとこんな風にやったら一応自分が求めてる感じにもなりました。
Invoke((MethodInvoker)(async () => {
var task = await func();
}));
2021/03/09(火) 13:25:20.94ID:/HWklS3sa
>>887
これ、今更だけど
var radius = 1.0;
Task<double> task = null;
Task.Run(() => task = CalculateCircleAreaAsync(radius)).Wait();
var area = task.Result;
じゃいかんのかな知らんけど。

しかし、非同期メソッドの結果をawaitせずに求めるなんて考えたこともなかったし、
一瞬そんなの簡単だろと思ったけど意外と面倒なのね。
というか非同期メソッドの戻り値は呼び出し元のスレッドで実行される自分自身になるのな。

っていうか、>>891の引用元のコードはバグ?
何年も前の記事なのに誰も突っ込んでないのかな
2021/03/09(火) 14:04:19.73ID:G6YhpKjy0
引用元はコンソールアプリケーションだからな
2021/03/09(火) 19:16:54.66ID:v67EGRm00
独習C#でもコンソールアプリ以外だとデッドロックするコードが書いてあるからな。
2021/03/09(火) 21:21:04.94ID:mjd4ZCLWa
コンソールかどうか関係ある?

コンソールだろうが何だろうが、「自分が宿題をやり終わるのを寝ながら待つ」子は
死ぬまで宿題完成しないでしょ。
2021/03/09(火) 21:25:50.24ID:zZk3I07S0
>>914
あるよ
SynchronizationContext.Currentが設定されていないから挙動が変わる
2021/03/09(火) 21:40:53.62ID:G6YhpKjy0
なんでタスクで実行すればデッドロックが発生しないか理解してなさそう
こことか分かりやすく書いてくれてるから見てくるといい
ttps://chronoir.net/cs-async-await-taskrun/
2021/03/09(火) 21:43:31.37ID:mjd4ZCLWa
>>915
へーなるほどそうなのか。

非同期メソッドをawaitせずに呼び出した時の挙動なんて
よく考えたことがなかったし知らんかったよ。
2021/03/09(火) 22:52:54.19ID:BIanm+fj0
そもそもTask型が帰ってくるのだから非同期前提だしなぁ
言わばスレッドで実行出来る形にしましたよという事なんだし
非同期だとスレッドセーフかどうかも本来なら問題になる事ではあるけど
2021/03/10(水) 10:40:32.47ID:ayODL1B00
stackallocが使われてる関数ってAggressiveInlining属性付けてもインライン展開されないの?
920デフォルトの名無しさん (ワッチョイ fb02-kkZq)
垢版 |
2021/03/11(木) 03:25:40.12ID:5JzLcMRo0
System.Web.Helpers.Json.Decode()これと同じ機能を持つのって他にないでしょうか?
使ってるとMaxJsonLength の値を超えています。とエラーがでる時があって。
2021/03/11(木) 12:01:38.32ID:YEgU3HLW0
Json.NET とか?
2021/03/11(木) 12:20:29.59ID:QyQtpTU4M
>>920
MaxJsonLengthは設定で拡張可能
2021/03/11(木) 16:20:05.07ID:5JzLcMRo0
921-922
ありがとうございます!
2021/03/11(木) 21:28:32.37ID:DBtckLkr0
いえいえ
925デフォルトの名無しさん (ワッチョイ a905-pfBZ)
垢版 |
2021/03/15(月) 11:36:48.53ID:hpWLXBIY0
C#でSocketIOサーバーを作りたいと思ったのですが、SocketIOのライブラリに思いっきりclientと書いてあるのでサーバーにはなれないんですかね?
926デフォルトの名無しさん (ワッチョイ 619b-IMun)
垢版 |
2021/03/15(月) 12:48:51.81ID:fhTxsYs40
表形式を扱うデータ構造といえばList<T>の入れ子、構造体、DataTableクラスとありますが
速度的に一番有利なのはどれでしょうか?
2021/03/15(月) 12:57:13.67ID:qxmjw6qQa
二次元配列、ジャグ配列、その他の順番でしょう。
2021/03/15(月) 13:14:39.26ID:dLPloTkj0
何をやるときの速度?
929デフォルトの名無しさん (ワッチョイ 619b-IMun)
垢版 |
2021/03/15(月) 13:19:09.67ID:fhTxsYs40
2つのテーブルから共通のコード番号を手掛かりに新しいテーブルを作る処理です

2次元配列が一番速いのですか
最初に件数をカウントしておく必要がありますね
2021/03/15(月) 13:25:10.25ID:dLPloTkj0
>>929
それって2つのテーブルをAとBとしたときBのテーブルはAの1レコードに対して全レコードアクセスは回避できないよね?
どう持っても早くはならないでFAじゃね?
2021/03/15(月) 15:18:17.81ID:W4mhVG7e0
>>929
SQLのJoinアルゴリズムと考え方は同じなのでそういうの解説してるサイトをググればいいんじゃない
基本はSort Merge Join, Nested Loop Join, Hash Joinの3種類
2021/03/16(火) 13:43:13.37ID:ClH9askc0
>>925
使ってないからリポジトリ眺めただけだけど、Socket.IOのサーバと接続するのに
手順を簡略化できるだけで、サーバは普通にWebサーバにjavascriptとかで
作れみたいだよ

https://github.com/doghappy/socket.io-client-csharp
2021/03/16(火) 21:36:32.98ID:Wl/nKXCF0
float[] array_A = new float[] { 0.2, 0.4, 0.6 };
float[] array_B = new float[] { 0.4, 0.6, 0.8 };

List<float[]> hoge = new List<float[]> { array_A, array_B };

floatの配列を要素に持つリストhogeがあったとして、配列の対応する要素の平均を算出してリストを返すスマートな方法ってありますか?
LINQでうまいことやれそうな気がしたものの、やり方が分からず今はfor文でゴリ押してしまっています

最終的にこういうリストが返ってきて欲しいです
{ 0.3, 0.5, 0.7 };
2021/03/16(火) 21:40:37.58ID:xlIBh31U0
>>933
普通にforでやりゃいいじゃん
それ以上は初心者じゃねぇだろ
相談室でも行け
2021/03/16(火) 22:22:56.72ID:6arf77iJ0
Enumerable.zipでも使っとけ
2021/03/17(水) 01:49:18.61ID:YSkJqwOsa
Zipって上手いネーミングだよね関係ないけど
2021/03/17(水) 21:54:38.73ID:96WF7Dou0
最近C#の勉強を始めて、オブジェクト指向に関して何となく分かったけどプログラムに落とし込むまでは理解出来ていません
手を動かさなきゃ身につかないと思うのですが練習になる例題などあったら教えて頂きたいです
2021/03/17(水) 22:43:21.99ID:EwAVXU9r0
作りたいものがないのにプログラミング言語の学習を始めるってつらくない?

あと大きく分けてコンソールアプリ、Windowsとかのアプリ、Webアプリ(サイト)とかあるけど、
(多分コンソールが一番勉強するには素直に始められそうだけど)
どれがやりたいとかないの?
VS使えるならそれぞれプロジェクト作れば大体helloworldくらいまでは勝手に作ってくれるよ
2021/03/17(水) 23:04:26.73ID:5t1i5SYf0
>>937
Unityとかだとオブジェクト指向を楽しく学べそう。
2021/03/17(水) 23:44:31.78ID:U0+PPwHU0
>>937
Microsoft VOTT を超えるアノテーションツール
を作ってみては?

マジレスするとpinta辺りのソースを読んで見たまえ
2021/03/18(木) 02:59:56.18ID:/DoLsZj+a
>>937
ライブラリのクラスで比較的単純そうなのを
あえて車輪の再発明してみるとか。
例えばList<T>の簡易版を自分で作ってみる。

ただ、オブジェクト指向を習得したいという目標設定自体が
本当に意味があるかどうかは疑った方がいいかもしれないね。

以下個人の見解ですだけど、オブジェクト指向なんて別に
そんな難しい話じゃない。

机上で本読んでる時にはもやもやしてても
コード書いてる間に自然に府に落ちてくる類のものかもしれないよ。
少なくとも俺はそうだった。
2021/03/18(木) 15:19:17.41ID:9YUM+NUH0
ソースファイル数十くらいの規模からじゃないとオブジェクト指向は必要にならないから
初心者は暫くstaticマンとして修業するしかない
2021/03/18(木) 15:24:02.53ID:8benOtEXa
えっ
メインだけならいらんけど
そうじゃないならオブジェクト指向したほうがいい
2021/03/18(木) 16:44:12.97ID:U1xZnkhE0
オブジェクト指向もカプセル化の恩恵は結構簡単に実感できるが
多態性のほうは有効な場面が可也少ない
2021/03/18(木) 21:08:28.76ID:e7yzUD160
オブジェクト指向の恩恵のほとんどはinterfaceだからなぁ。
自分で作ったのを他の人が使うようになって始めて、迂闊にクラスを参照させてはならない、
カプセル化していたとしても実装変えにくくなって詰みやすいと気づくわけで。

自分で作って自分だけで使ってる分には気づきにくい。
2021/03/18(木) 22:34:39.09ID:6dHUIFjDa
何がオブジェクト指向の本質かについてはいろんな人がいろんなこと言ってる
(要するに定説がない)けど、個人的には多態はあくまで付随的な物であって本質じゃないと思う。

オブジェクト指向というかOOPの本質は文字通りオブジェクトという仮想機械をクラスという形で
ストレートにコードに表現できることだと思う。

それが正しいかどうかはともかく、初心者が最初に理解すべき考え方はこれ、
つまりクラスとは仮想機械を記述するものだということだと思う。
2021/03/19(金) 00:55:17.23ID:ZleoXut0M
本来そんな小難しい話じゃなくて、プログラムを人間のメンタルモデルに合わせようというのがオブジェクト指向だよ
人間の感覚に合った設計は破綻しにくいという経験則というか仮説に基づいている
2021/03/19(金) 09:24:53.90ID:VtGgyeTV0
人間のメンタルモデルってか進化論モデルだよ
経験則どころか30億年以上の運用実績があるから信頼性が高い
2021/03/19(金) 10:10:47.26ID:kWUqr5xc0
進化の過程においてミッシングリンクというものが存在しててな。
30億年かどうかは怪しい
2021/03/19(金) 10:20:02.87ID:fdf62zP+M
進化の法則が乱れる!
2021/03/19(金) 10:30:15.00ID:B4QNkIexM
オブジェクト指向とか正直よくわからんが
クラスは、ラムダの変数キャプチャを冗長化、明示化、理解容易化したもの、として考えるようになってから、すべてがうまく噛み合うようになった
2021/03/19(金) 13:07:40.64ID:HbCpBKgza
メンタルモデル(笑)とか進化論モデル(笑)とか言い出すと
昔のJava界隈みたいな胡散臭さが出てくるなw
2021/03/19(金) 13:18:48.59ID:HbCpBKgza
まあ特定の機能を担う仮想的な装置(オブジェクト)に分割統治するのは
人間の脳というか認知能力の都合だというのはその通りだけどね。

繰り返しになるけど、重要なのはその「特定の機能を担う仮想的な装置」を
クラスで表現できることになったことなんだよね。

アルゴルズムの教科書に出てくるようなデータ構造はオブジェクト指向が提唱される前からあった。
画期的だったのは、それらをQueueとかDictionaryとか言ったまんまの名前を付けたクラスで書けるようになったこと。
2021/03/19(金) 13:31:05.56ID:Jtw21w2UM
昔あったJavaの月刊誌はやたら哲学用語を多用する記事とかあったな
2021/03/19(金) 13:40:56.61ID:Oem/eeea0
ニューロマンサーっぽく解説して
2021/03/19(金) 14:04:48.51ID:Qsi2J9ai0
世の中では「部品化」と言う、もう少し判りやすい言い方を使っているんじゃないかな
2021/03/19(金) 14:05:45.45ID:pO9QgyHvM
double[] real; double[] imag;でもってる値をComplex[] compへの変換を1行できれいに書けないでしょうか?
comp[0] = new Complex(real[0], imag[0])を配列に対して操作できればかけそうな気がするのですが、LINQとかで表現できますか?
2021/03/19(金) 14:20:19.54ID:gG/OqDxy0
>>957
var comp = real.Zip( imag, ( r, i ) => new Complex( r, i ) ).ToArray();
2021/03/19(金) 14:25:33.56ID:ysVgQ22g0
>>956
部品が関数でもいいよね?
2021/03/19(金) 14:28:10.86ID:pO9QgyHvM
>>958
ありがとうございます。
Linqにzipなんてものがあったんですね。
2021/03/19(金) 21:21:23.14ID:vK2IShGtM
ひょっとしなくても>>933のも
var hoge = array_A.Zip(array_B, (a, b) => new float[]{ a, b }).ToList()
でいけたのか

でもこれだったらちょっと冗長でも
var hoge = Enumerable.Zip(array_A, array_B, (a, b) => new float[]{ a, b }).ToList()
って書きたいなあ
2021/03/19(金) 21:30:14.38ID:vK2IShGtM
あ間違えた
var hoge = Enumerable.Zip(array_A, array_B, (a, b) => (a + b) / 2).ToList()
2021/03/19(金) 22:55:51.95ID:dz1o2wrK0
まだ間違ってる
2021/03/21(日) 08:33:37.34ID:O9O05/ov0
class OrderにはItemCodeとQuantityがあり、
List<Order> order1とorder2をまとめたいです
具体的にはItemCodeが同じならばQuantityを合計し、なければ新たに追加する、といった具合です
foreachを使えばできますが、Linqを使用して簡潔に書ける方法があれば教えてください
965デフォルトの名無しさん (ブーイモ MMcb-vxZl)
垢版 |
2021/03/21(日) 09:25:40.37ID:ai+yXZclM
ConcatしてitemCodeでGroupByしてSum
2021/03/21(日) 12:14:40.89ID:hh+THzL2M
>>965
ありがとうございます
今出先なのでまた帰ったら試してみます
2021/03/21(日) 18:29:47.64ID:O9O05/ov0
>>965
order1.Concat(order2).GroupBy(o => o.ItemCode).Select(x => new Order() {ItemCode = x.Key, Quantity = x.Sum(y => y.Quantity) });

こんな感じですか?
2021/03/21(日) 21:15:46.56ID:B8RMscJD0
>>967
こういうの現場でたまに見かけるけど、とても完結だとは思えない。
加算メソッドをOrderクラスに実装するべきだと思う。
2021/03/21(日) 21:28:25.98ID:rOmbGrT+0
え、簡潔と完結を書き間違えたんでしょ?
違うのかな…
2021/03/21(日) 21:56:25.09ID:S+S4XTWp0
>>967
こんなの書いてはいけませんっていういい見本
2021/03/21(日) 22:19:00.23ID:B8RMscJD0
>>969
誤字ですね。簡潔です。
2021/03/21(日) 22:31:46.08ID:S+S4XTWp0
>>967
こんなの現場で書くとどう扱われるか教えてやろうか?

○○さんの書くプログラムはわかりやすいけど
君のはわかりにくいね
読みにくいっていうか
これはどういう処理をしてるの?
仕様を書いてほしいんだけど
文章で書けなかったら
普通の.net2.0ぐらいの機能で書いてくれないかな?
それと○○さんと比べて進捗も遅いよね?
こんな書き方してるからじゃない?
あと処理経過がわかるログも出してほしいんだけど
この書き方のままじゃ出せないでしょ?

とかね
目立つことしないほうがいいよ
2021/03/21(日) 22:43:13.77ID:ejnWrGNOa
長いメソッドの途中でいきなりこれが出てきたら気持ち悪いけど
OrganizeOrdersとか名前つけてメソッドに切り出すなら許せるかな
正しいメソッド名は英語ネイティブに聞いて
2021/03/21(日) 22:47:23.75ID:4uqTNWnz0
>あと処理経過がわかるログも出してほしいんだけど
これは流石に設計書いた奴が無能すぎるわ
2021/03/21(日) 22:48:14.21ID:ejnWrGNOa
>>972
それほぼ全部カウンター食らうから気をつけたほうがいい

わかりにくい→感覚でしゃべるな、コードメトリクス測定したらLinqのほうが成績良い
どういう処理をしてるの→見たまんまorder1とorder2を繋いでItemCodeでグループ化してQuantityの合計を計算しtwる
使用を書いてほしい→↑が仕様
普通の.net2.0で書く→古い言語仕様に合わせる理由がない
進捗→状況次第
2021/03/21(日) 22:49:08.96ID:ejnWrGNOa
ログ出して→この程度の処理でいちいちログ出したらログが汚れるしパフォーマンスも悪化する
2021/03/21(日) 22:54:55.17ID:gB+oqGaT0
>>967
これってそんなに読みにくい?
自分も他の人もこのくらいなら普通に書くけど。
どうしてもなら、各メソッドの間に改行入れて各行ごとに処理内容のコメントを書いてもいいし。

こう言うのでログを出して欲しいって要望を受けたことはないけど自分でそれ用の拡張メソッドを書けば出せないこともないし。とか言ってみる。
2021/03/21(日) 22:58:09.33ID:S+S4XTWp0
>>975
いいよ別に
後はリアルで味わったらいいよ
みんな暖かく接してくれるよ
2021/03/21(日) 23:16:39.83ID:O9O05/ov0
>>967です
たくさんのレスがついていてビックリしています
書いていて思ったのは>>977さんがいうように各メソッドの間に改行を入れればまだ読みやすいと思ったのと、
Orderのプロパティが多いようだとどんどん読みづらくなっていくな、と思いました

foreachで書いたのはこんな感じですが、よりいい方法があれば知りたいです
var allItem = new List<Order>(order1);
foreach (var o in order2)
{
var duplicate = allItem.FirstOrDefault(x => x.ItemCode == o.ItemCode);

if (duplicate is null)
allItem.Add(o);
else
duplicate.Quantity += o.Quantity;
}
2021/03/21(日) 23:21:28.52ID:O9O05/ov0
>>979
最初にvar allItem = new List<Order>(order1);をしていますが、
duplicate.Quantity += o.Quantity;をするとorder1の内容も更新されてしまいますね
DeepCopyなどで複製するべきでした
2021/03/22(月) 00:13:51.82ID:dAcW2Slk0
>>971
質問者も簡潔と完結を間違えてるんじゃね?ってダブルの冗談さ
2021/03/22(月) 00:23:14.95ID:0zPdt/v20
C# Seleniumでブラウザを閉じるときに

Quit();
Close();

の動作が最近のChromeのアップデートでかなり遅くなっています。
私だけでしょうか?
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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