!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
ふらっと C#,C♯,C#(初心者用) Part149
レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん (ワキゲー MMca-Gz4g)
2020/12/16(水) 11:29:35.35ID:TSvQ057dM879デフォルトの名無しさん (ワッチョイ ef62-FSd8)
2021/03/07(日) 23:53:49.57ID:hG4ECmLc0 意味わからんがとりあえずasync await を使わないコードを書いてくれ
まずはそこから
まずはそこから
880デフォルトの名無しさん (ワッチョイ 4b2d-0RAh)
2021/03/08(月) 00:00:47.06ID:2O4m7huW0 >>876
やりたいことが良く分からないけれど
Task.Run()を使えば良いんじゃないかな。
var result = await Task.Run( () => SayYes( "hoge" ) );
やりたいことが良く分からないけれど
Task.Run()を使えば良いんじゃないかな。
var result = await Task.Run( () => SayYes( "hoge" ) );
881デフォルトの名無しさん (ワッチョイ fb02-kkZq)
2021/03/08(月) 00:21:38.35ID:qzvxIX+G0 >>878
上手く言えてなくてすみません。
既に定義された形のメソッドを渡す必要があって
戻り値の型を変えられないんです。変えられるかもしれないけど他人が書いた部分なので弄りたくない感じです。
その場合は無理でしょうか?
上手く言えてなくてすみません。
既に定義された形のメソッドを渡す必要があって
戻り値の型を変えられないんです。変えられるかもしれないけど他人が書いた部分なので弄りたくない感じです。
その場合は無理でしょうか?
882デフォルトの名無しさん (ワッチョイ fb02-kkZq)
2021/03/08(月) 00:31:52.37ID:qzvxIX+G0883デフォルトの名無しさん (ワッチョイ 3ba7-k3/Y)
2021/03/08(月) 00:53:45.52ID:pnlhyJpZ0884デフォルトの名無しさん (ワッチョイ ef62-FSd8)
2021/03/08(月) 01:01:23.25ID:8a53dPGk0885デフォルトの名無しさん (ワッチョイ 3ba7-k3/Y)
2021/03/08(月) 01:09:14.76ID:pnlhyJpZ0 asyncawait が前準備無しにドキュメントも無しに実装されているときは無意味な上に99.89%バグっているので安心してほしい
886デフォルトの名無しさん (ワッチョイ 9bc3-yEdm)
2021/03/08(月) 02:12:24.04ID:ZhwAN9h80887デフォルトの名無しさん (ワッチョイ fb02-kkZq)
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); // 円の面積
}
これの一番最初にあるサンプルコードをコピペして
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); // 円の面積
}
888デフォルトの名無しさん (ワッチョイ efda-tl3b)
2021/03/08(月) 04:37:29.21ID:V3d7DsS+0 どこからコピペしたか詳しく
889デフォルトの名無しさん (ワッチョイ 3b33-YXAD)
2021/03/08(月) 08:35:47.21ID:lsfVgCLC0890デフォルトの名無しさん (ワッチョイ 3ba7-k3/Y)
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()から呼び出したいんですけど
その場合はどうすればいいんでしょうか?
すみません。こっちでした。
https://www.atmarkit.co.jp/ait/articles/1211/02/news066.html
>>887みたいな感じでForm_Load()から呼び出したいんですけど
その場合はどうすればいいんでしょうか?
892デフォルトの名無しさん (ワッチョイ 4b2d-0RAh)
2021/03/08(月) 14:31:07.77ID:DDkttHUo0893デフォルトの名無しさん (ワッチョイ fb02-zlPp)
2021/03/08(月) 14:51:25.43ID:ZiVdiQxH0 まずは落ち着いて自分に宛てられたレスをきちんと理解するところから始めたら?
いくつかの質問にはすでに答えが付いてるよ。
いくつかの質問にはすでに答えが付いてるよ。
894デフォルトの名無しさん (ワッチョイ fb02-kkZq)
2021/03/08(月) 15:00:46.23ID:qzvxIX+G0895894 (ワッチョイ fb02-kkZq)
2021/03/08(月) 15:12:14.98ID:qzvxIX+G0 これってメソッドの戻り値の型を自分で指定したい場合は
Task<T>でラップしないといけないって解釈でいいですかね?
Task<T>でラップしないといけないって解釈でいいですかね?
896デフォルトの名無しさん (ワッチョイ fb02-kkZq)
2021/03/08(月) 15:30:58.68ID:qzvxIX+G0 webView2.CoreWebView2.ExecuteScriptAsync()
がTask<T>を受け取らないといけないせいで
既に戻り値を定義された色々なメソッドにも影響が出てしまって
どうにかそれらを全て書き換えるかしないといけないのが困ってる点ですね。
これどうにかならないんですかね?
がTask<T>を受け取らないといけないせいで
既に戻り値を定義された色々なメソッドにも影響が出てしまって
どうにかそれらを全て書き換えるかしないといけないのが困ってる点ですね。
これどうにかならないんですかね?
897894 (ワッチョイ fb02-kkZq)
2021/03/08(月) 16:02:08.72ID:qzvxIX+G0 しかもこれ自作クラスを戻り値にしてるメソッドだと
GetAwaiter()がないとかって怒られてそれも実装しないといけないみたいで凄い面倒で困る…
GetAwaiter()がないとかって怒られてそれも実装しないといけないみたいで凄い面倒で困る…
898デフォルトの名無しさん (ワッチョイ fb02-kkZq)
2021/03/08(月) 16:05:05.45ID:qzvxIX+G0 もう非同期とかいいので普通にこれでデータ取得できないもんなんですかね。
webView2.CoreWebView2.ExecuteScriptAsync()
非同期とかしなくていいんですよ。必要なら1分くらい待ってもいいので。
たったこれだけのことなのに凄い面倒だ。
webView2.CoreWebView2.ExecuteScriptAsync()
非同期とかしなくていいんですよ。必要なら1分くらい待ってもいいので。
たったこれだけのことなのに凄い面倒だ。
899デフォルトの名無しさん (ワッチョイ fb02-zlPp)
2021/03/08(月) 16:20:50.73ID:ZiVdiQxH0 まず落ち着いて自分に宛てられたレスを最初から読み直してみるといいんじゃないかな。
900デフォルトの名無しさん (アウアウエー Sa3f-gdNk)
2021/03/08(月) 16:31:12.58ID:cnxTx+zha task.ConfigureAwait(false).GetAwaiter().GetResult()
901デフォルトの名無しさん (ワッチョイ 9f42-/obZ)
2021/03/08(月) 16:47:22.57ID:R5ZHjmWC0 素直にasync/await対応したほうが建設的
悩んでいる時間で修正終わるわ
悩んでいる時間で修正終わるわ
902デフォルトの名無しさん (ワッチョイ 9f7c-/obZ)
2021/03/08(月) 18:11:10.07ID:c6FLXLbe0 このレベルだとこんな所で教えてもどうせ理解出来ない
903デフォルトの名無しさん (ワッチョイ 0f63-IW+M)
2021/03/08(月) 18:39:35.08ID:2YZIHCv70 今時めずらしいタイプだ
こういうのから金を巻き上げてその辺に棄てるのがスクールの役目のはず
こういうのから金を巻き上げてその辺に棄てるのがスクールの役目のはず
904デフォルトの名無しさん (ワッチョイ fb02-kkZq)
2021/03/08(月) 19:15:52.15ID:qzvxIX+G0905デフォルトの名無しさん (ワッチョイ 3ba7-k3/Y)
2021/03/08(月) 20:13:34.27ID:pnlhyJpZ0 使用者に非同期処理が必要ないのに非同期処理しか実装されてないクソライブラリはクソだからないのでクソとしか表現のしようがないんだぜ
そこはおk?
ああ、クソじゃん・・・
って話よ?
そこはおk?
ああ、クソじゃん・・・
って話よ?
906デフォルトの名無しさん (ワッチョイ 0fda-SsJe)
2021/03/08(月) 20:20:54.40ID:lWZwpqsv0 鶏糞と牛糞の詰め合わせでも送ってやろうか?
907デフォルトの名無しさん (ワッチョイ 3ba7-k3/Y)
2021/03/08(月) 20:21:12.62ID:pnlhyJpZ0 散々罵った挙げ句に同期処理が用意されてることがわかったときは死にたくなるぐらい恥ずかしいので気をつけるんだぜ
908デフォルトの名無しさん (ワッチョイ fb02-kkZq)
2021/03/08(月) 20:54:37.86ID:qzvxIX+G0 >>907
どうやればいいんでしょうか?
どうやればいいんでしょうか?
909デフォルトの名無しさん (ワッチョイ 3b33-YXAD)
2021/03/08(月) 21:39:32.19ID:lsfVgCLC0 >>908
理解せず簡単に済ますなら900の方法か、
UIスレッドから新しいTaskを作って、そのタスク内で非同期メソッドの結果をawaitして、UIスレッドは作ったTaskのResultを取得すれば良い。
理解せず簡単に済ますなら900の方法か、
UIスレッドから新しいTaskを作って、そのタスク内で非同期メソッドの結果をawaitして、UIスレッドは作ったTaskのResultを取得すれば良い。
910デフォルトの名無しさん (ワッチョイ fb02-kkZq)
2021/03/09(火) 02:15:52.82ID:Km1Y7VEG0 >>909
900さんの方法でもイケるんですね。ありがとうございます。
あとこんな風にやったら一応自分が求めてる感じにもなりました。
Invoke((MethodInvoker)(async () => {
var task = await func();
}));
900さんの方法でもイケるんですね。ありがとうございます。
あとこんな風にやったら一応自分が求めてる感じにもなりました。
Invoke((MethodInvoker)(async () => {
var task = await func();
}));
911デフォルトの名無しさん (アウアウウー Sa0f-kkZq)
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の引用元のコードはバグ?
何年も前の記事なのに誰も突っ込んでないのかな
これ、今更だけど
var radius = 1.0;
Task<double> task = null;
Task.Run(() => task = CalculateCircleAreaAsync(radius)).Wait();
var area = task.Result;
じゃいかんのかな知らんけど。
しかし、非同期メソッドの結果をawaitせずに求めるなんて考えたこともなかったし、
一瞬そんなの簡単だろと思ったけど意外と面倒なのね。
というか非同期メソッドの戻り値は呼び出し元のスレッドで実行される自分自身になるのな。
っていうか、>>891の引用元のコードはバグ?
何年も前の記事なのに誰も突っ込んでないのかな
912デフォルトの名無しさん (ワッチョイ ef62-FSd8)
2021/03/09(火) 14:04:19.73ID:G6YhpKjy0 引用元はコンソールアプリケーションだからな
913デフォルトの名無しさん (ワッチョイ ab01-YXAD)
2021/03/09(火) 19:16:54.66ID:v67EGRm00 独習C#でもコンソールアプリ以外だとデッドロックするコードが書いてあるからな。
914デフォルトの名無しさん (アウアウウー Sa0f-kkZq)
2021/03/09(火) 21:21:04.94ID:mjd4ZCLWa コンソールかどうか関係ある?
コンソールだろうが何だろうが、「自分が宿題をやり終わるのを寝ながら待つ」子は
死ぬまで宿題完成しないでしょ。
コンソールだろうが何だろうが、「自分が宿題をやり終わるのを寝ながら待つ」子は
死ぬまで宿題完成しないでしょ。
915デフォルトの名無しさん (ワッチョイ 4b2d-0RAh)
2021/03/09(火) 21:25:50.24ID:zZk3I07S0916デフォルトの名無しさん (ワッチョイ ef62-FSd8)
2021/03/09(火) 21:40:53.62ID:G6YhpKjy0 なんでタスクで実行すればデッドロックが発生しないか理解してなさそう
こことか分かりやすく書いてくれてるから見てくるといい
ttps://chronoir.net/cs-async-await-taskrun/
こことか分かりやすく書いてくれてるから見てくるといい
ttps://chronoir.net/cs-async-await-taskrun/
917デフォルトの名無しさん (アウアウウー Sa0f-kkZq)
2021/03/09(火) 21:43:31.37ID:mjd4ZCLWa918デフォルトの名無しさん (ワッチョイ 9f7c-/obZ)
2021/03/09(火) 22:52:54.19ID:BIanm+fj0 そもそもTask型が帰ってくるのだから非同期前提だしなぁ
言わばスレッドで実行出来る形にしましたよという事なんだし
非同期だとスレッドセーフかどうかも本来なら問題になる事ではあるけど
言わばスレッドで実行出来る形にしましたよという事なんだし
非同期だとスレッドセーフかどうかも本来なら問題になる事ではあるけど
919デフォルトの名無しさん (ワッチョイ cb24-xiWk)
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 の値を超えています。とエラーがでる時があって。
使ってるとMaxJsonLength の値を超えています。とエラーがでる時があって。
921デフォルトの名無しさん (ワッチョイ fb5f-+xDJ)
2021/03/11(木) 12:01:38.32ID:YEgU3HLW0 Json.NET とか?
922デフォルトの名無しさん (ブーイモ MM8f-WiTX)
2021/03/11(木) 12:20:29.59ID:QyQtpTU4M >>920
MaxJsonLengthは設定で拡張可能
MaxJsonLengthは設定で拡張可能
923デフォルトの名無しさん (ワッチョイ fb02-kkZq)
2021/03/11(木) 16:20:05.07ID:5JzLcMRo0 921-922
ありがとうございます!
ありがとうございます!
924デフォルトの名無しさん (ワッチョイ 0bac-4pgk)
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クラスとありますが
速度的に一番有利なのはどれでしょうか?
速度的に一番有利なのはどれでしょうか?
927デフォルトの名無しさん (アウアウウー Sac5-YyH6)
2021/03/15(月) 12:57:13.67ID:qxmjw6qQa 二次元配列、ジャグ配列、その他の順番でしょう。
928デフォルトの名無しさん (ワッチョイ 8da7-ABek)
2021/03/15(月) 13:14:39.26ID:dLPloTkj0 何をやるときの速度?
929デフォルトの名無しさん (ワッチョイ 619b-IMun)
2021/03/15(月) 13:19:09.67ID:fhTxsYs40 2つのテーブルから共通のコード番号を手掛かりに新しいテーブルを作る処理です
2次元配列が一番速いのですか
最初に件数をカウントしておく必要がありますね
2次元配列が一番速いのですか
最初に件数をカウントしておく必要がありますね
930デフォルトの名無しさん (ワッチョイ 8da7-ABek)
2021/03/15(月) 13:25:10.25ID:dLPloTkj0931デフォルトの名無しさん (ワッチョイ c201-Ruah)
2021/03/15(月) 15:18:17.81ID:W4mhVG7e0 >>929
SQLのJoinアルゴリズムと考え方は同じなのでそういうの解説してるサイトをググればいいんじゃない
基本はSort Merge Join, Nested Loop Join, Hash Joinの3種類
SQLのJoinアルゴリズムと考え方は同じなのでそういうの解説してるサイトをググればいいんじゃない
基本はSort Merge Join, Nested Loop Join, Hash Joinの3種類
932デフォルトの名無しさん (ワッチョイ 8284-drwQ)
2021/03/16(火) 13:43:13.37ID:ClH9askc0 >>925
使ってないからリポジトリ眺めただけだけど、Socket.IOのサーバと接続するのに
手順を簡略化できるだけで、サーバは普通にWebサーバにjavascriptとかで
作れみたいだよ
https://github.com/doghappy/socket.io-client-csharp
使ってないからリポジトリ眺めただけだけど、Socket.IOのサーバと接続するのに
手順を簡略化できるだけで、サーバは普通にWebサーバにjavascriptとかで
作れみたいだよ
https://github.com/doghappy/socket.io-client-csharp
933デフォルトの名無しさん (ワッチョイ 7d5f-qwqs)
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 };
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 };
934デフォルトの名無しさん (ワッチョイ 8da7-ABek)
2021/03/16(火) 21:40:37.58ID:xlIBh31U0935デフォルトの名無しさん (ワッチョイ ee63-fwr7)
2021/03/16(火) 22:22:56.72ID:6arf77iJ0 Enumerable.zipでも使っとけ
936デフォルトの名無しさん (アウアウウー Sac5-YyH6)
2021/03/17(水) 01:49:18.61ID:YSkJqwOsa Zipって上手いネーミングだよね関係ないけど
937デフォルトの名無しさん (ワッチョイ 82e4-pJz1)
2021/03/17(水) 21:54:38.73ID:96WF7Dou0 最近C#の勉強を始めて、オブジェクト指向に関して何となく分かったけどプログラムに落とし込むまでは理解出来ていません
手を動かさなきゃ身につかないと思うのですが練習になる例題などあったら教えて頂きたいです
手を動かさなきゃ身につかないと思うのですが練習になる例題などあったら教えて頂きたいです
938デフォルトの名無しさん (ワッチョイ f1ac-LiHY)
2021/03/17(水) 22:43:21.99ID:EwAVXU9r0 作りたいものがないのにプログラミング言語の学習を始めるってつらくない?
あと大きく分けてコンソールアプリ、Windowsとかのアプリ、Webアプリ(サイト)とかあるけど、
(多分コンソールが一番勉強するには素直に始められそうだけど)
どれがやりたいとかないの?
VS使えるならそれぞれプロジェクト作れば大体helloworldくらいまでは勝手に作ってくれるよ
あと大きく分けてコンソールアプリ、Windowsとかのアプリ、Webアプリ(サイト)とかあるけど、
(多分コンソールが一番勉強するには素直に始められそうだけど)
どれがやりたいとかないの?
VS使えるならそれぞれプロジェクト作れば大体helloworldくらいまでは勝手に作ってくれるよ
939デフォルトの名無しさん (ワッチョイ 4d33-Wsu4)
2021/03/17(水) 23:04:26.73ID:5t1i5SYf0 >>937
Unityとかだとオブジェクト指向を楽しく学べそう。
Unityとかだとオブジェクト指向を楽しく学べそう。
940デフォルトの名無しさん (ワッチョイ 2eda-8efn)
2021/03/17(水) 23:44:31.78ID:U0+PPwHU0941デフォルトの名無しさん (アウアウウー Sac5-YyH6)
2021/03/18(木) 02:59:56.18ID:/DoLsZj+a >>937
ライブラリのクラスで比較的単純そうなのを
あえて車輪の再発明してみるとか。
例えばList<T>の簡易版を自分で作ってみる。
ただ、オブジェクト指向を習得したいという目標設定自体が
本当に意味があるかどうかは疑った方がいいかもしれないね。
以下個人の見解ですだけど、オブジェクト指向なんて別に
そんな難しい話じゃない。
机上で本読んでる時にはもやもやしてても
コード書いてる間に自然に府に落ちてくる類のものかもしれないよ。
少なくとも俺はそうだった。
ライブラリのクラスで比較的単純そうなのを
あえて車輪の再発明してみるとか。
例えばList<T>の簡易版を自分で作ってみる。
ただ、オブジェクト指向を習得したいという目標設定自体が
本当に意味があるかどうかは疑った方がいいかもしれないね。
以下個人の見解ですだけど、オブジェクト指向なんて別に
そんな難しい話じゃない。
机上で本読んでる時にはもやもやしてても
コード書いてる間に自然に府に落ちてくる類のものかもしれないよ。
少なくとも俺はそうだった。
942デフォルトの名無しさん (ワッチョイ 6124-BeTG)
2021/03/18(木) 15:19:17.41ID:9YUM+NUH0 ソースファイル数十くらいの規模からじゃないとオブジェクト指向は必要にならないから
初心者は暫くstaticマンとして修業するしかない
初心者は暫くstaticマンとして修業するしかない
943デフォルトの名無しさん (アウアウエー Sa8a-+gzz)
2021/03/18(木) 15:24:02.53ID:8benOtEXa えっ
メインだけならいらんけど
そうじゃないならオブジェクト指向したほうがいい
メインだけならいらんけど
そうじゃないならオブジェクト指向したほうがいい
944デフォルトの名無しさん (ワッチョイ ed42-IMun)
2021/03/18(木) 16:44:12.97ID:U1xZnkhE0 オブジェクト指向もカプセル化の恩恵は結構簡単に実感できるが
多態性のほうは有効な場面が可也少ない
多態性のほうは有効な場面が可也少ない
945デフォルトの名無しさん (ワッチョイ a973-mhyL)
2021/03/18(木) 21:08:28.76ID:e7yzUD160 オブジェクト指向の恩恵のほとんどはinterfaceだからなぁ。
自分で作ったのを他の人が使うようになって始めて、迂闊にクラスを参照させてはならない、
カプセル化していたとしても実装変えにくくなって詰みやすいと気づくわけで。
自分で作って自分だけで使ってる分には気づきにくい。
自分で作ったのを他の人が使うようになって始めて、迂闊にクラスを参照させてはならない、
カプセル化していたとしても実装変えにくくなって詰みやすいと気づくわけで。
自分で作って自分だけで使ってる分には気づきにくい。
946デフォルトの名無しさん (アウアウウー Sac5-YyH6)
2021/03/18(木) 22:34:39.09ID:6dHUIFjDa 何がオブジェクト指向の本質かについてはいろんな人がいろんなこと言ってる
(要するに定説がない)けど、個人的には多態はあくまで付随的な物であって本質じゃないと思う。
オブジェクト指向というかOOPの本質は文字通りオブジェクトという仮想機械をクラスという形で
ストレートにコードに表現できることだと思う。
それが正しいかどうかはともかく、初心者が最初に理解すべき考え方はこれ、
つまりクラスとは仮想機械を記述するものだということだと思う。
(要するに定説がない)けど、個人的には多態はあくまで付随的な物であって本質じゃないと思う。
オブジェクト指向というかOOPの本質は文字通りオブジェクトという仮想機械をクラスという形で
ストレートにコードに表現できることだと思う。
それが正しいかどうかはともかく、初心者が最初に理解すべき考え方はこれ、
つまりクラスとは仮想機械を記述するものだということだと思う。
947デフォルトの名無しさん (ワントンキン MMd3-EoOz)
2021/03/19(金) 00:55:17.23ID:ZleoXut0M 本来そんな小難しい話じゃなくて、プログラムを人間のメンタルモデルに合わせようというのがオブジェクト指向だよ
人間の感覚に合った設計は破綻しにくいという経験則というか仮説に基づいている
人間の感覚に合った設計は破綻しにくいという経験則というか仮説に基づいている
948デフォルトの名無しさん (ワッチョイ 5924-FrbH)
2021/03/19(金) 09:24:53.90ID:VtGgyeTV0 人間のメンタルモデルってか進化論モデルだよ
経験則どころか30億年以上の運用実績があるから信頼性が高い
経験則どころか30億年以上の運用実績があるから信頼性が高い
949デフォルトの名無しさん (ワッチョイ fbda-1L9j)
2021/03/19(金) 10:10:47.26ID:kWUqr5xc0 進化の過程においてミッシングリンクというものが存在しててな。
30億年かどうかは怪しい
30億年かどうかは怪しい
950デフォルトの名無しさん (ラクッペペ MMeb-UnMa)
2021/03/19(金) 10:20:02.87ID:fdf62zP+M 進化の法則が乱れる!
951デフォルトの名無しさん (ブーイモ MMcb-92UB)
2021/03/19(金) 10:30:15.00ID:B4QNkIexM オブジェクト指向とか正直よくわからんが
クラスは、ラムダの変数キャプチャを冗長化、明示化、理解容易化したもの、として考えるようになってから、すべてがうまく噛み合うようになった
クラスは、ラムダの変数キャプチャを冗長化、明示化、理解容易化したもの、として考えるようになってから、すべてがうまく噛み合うようになった
952デフォルトの名無しさん (アウアウウー Sa5d-Xoi0)
2021/03/19(金) 13:07:40.64ID:HbCpBKgza メンタルモデル(笑)とか進化論モデル(笑)とか言い出すと
昔のJava界隈みたいな胡散臭さが出てくるなw
昔のJava界隈みたいな胡散臭さが出てくるなw
953デフォルトの名無しさん (アウアウウー Sa5d-Xoi0)
2021/03/19(金) 13:18:48.59ID:HbCpBKgza まあ特定の機能を担う仮想的な装置(オブジェクト)に分割統治するのは
人間の脳というか認知能力の都合だというのはその通りだけどね。
繰り返しになるけど、重要なのはその「特定の機能を担う仮想的な装置」を
クラスで表現できることになったことなんだよね。
アルゴルズムの教科書に出てくるようなデータ構造はオブジェクト指向が提唱される前からあった。
画期的だったのは、それらをQueueとかDictionaryとか言ったまんまの名前を付けたクラスで書けるようになったこと。
人間の脳というか認知能力の都合だというのはその通りだけどね。
繰り返しになるけど、重要なのはその「特定の機能を担う仮想的な装置」を
クラスで表現できることになったことなんだよね。
アルゴルズムの教科書に出てくるようなデータ構造はオブジェクト指向が提唱される前からあった。
画期的だったのは、それらをQueueとかDictionaryとか言ったまんまの名前を付けたクラスで書けるようになったこと。
954デフォルトの名無しさん (ブーイモ MM4d-Rp6h)
2021/03/19(金) 13:31:05.56ID:Jtw21w2UM 昔あったJavaの月刊誌はやたら哲学用語を多用する記事とかあったな
955デフォルトの名無しさん (ワッチョイ 8b63-rG+B)
2021/03/19(金) 13:40:56.61ID:Oem/eeea0 ニューロマンサーっぽく解説して
956デフォルトの名無しさん (ワッチョイ 1142-4Ddi)
2021/03/19(金) 14:04:48.51ID:Qsi2J9ai0 世の中では「部品化」と言う、もう少し判りやすい言い方を使っているんじゃないかな
957デフォルトの名無しさん (テテンテンテン MMeb-V411)
2021/03/19(金) 14:05:45.45ID:pO9QgyHvM double[] real; double[] imag;でもってる値をComplex[] compへの変換を1行できれいに書けないでしょうか?
comp[0] = new Complex(real[0], imag[0])を配列に対して操作できればかけそうな気がするのですが、LINQとかで表現できますか?
comp[0] = new Complex(real[0], imag[0])を配列に対して操作できればかけそうな気がするのですが、LINQとかで表現できますか?
958デフォルトの名無しさん (ワッチョイ 992d-D9EE)
2021/03/19(金) 14:20:19.54ID:gG/OqDxy0 >>957
var comp = real.Zip( imag, ( r, i ) => new Complex( r, i ) ).ToArray();
var comp = real.Zip( imag, ( r, i ) => new Complex( r, i ) ).ToArray();
959デフォルトの名無しさん (ワッチョイ 9301-lXNI)
2021/03/19(金) 14:25:33.56ID:ysVgQ22g0 >>956
部品が関数でもいいよね?
部品が関数でもいいよね?
960957 (テテンテンテン MMeb-V411)
2021/03/19(金) 14:28:10.86ID:pO9QgyHvM961デフォルトの名無しさん (テテンテンテン MMeb-NT4g)
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()
って書きたいなあ
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()
って書きたいなあ
962デフォルトの名無しさん (テテンテンテン MMeb-NT4g)
2021/03/19(金) 21:30:14.38ID:vK2IShGtM あ間違えた
var hoge = Enumerable.Zip(array_A, array_B, (a, b) => (a + b) / 2).ToList()
か
var hoge = Enumerable.Zip(array_A, array_B, (a, b) => (a + b) / 2).ToList()
か
963デフォルトの名無しさん (ワッチョイ d133-3UcT)
2021/03/19(金) 22:55:51.95ID:dz1o2wrK0 まだ間違ってる
964デフォルトの名無しさん (ワッチョイ 9389-jgaO)
2021/03/21(日) 08:33:37.34ID:O9O05/ov0 class OrderにはItemCodeとQuantityがあり、
List<Order> order1とorder2をまとめたいです
具体的にはItemCodeが同じならばQuantityを合計し、なければ新たに追加する、といった具合です
foreachを使えばできますが、Linqを使用して簡潔に書ける方法があれば教えてください
List<Order> order1とorder2をまとめたいです
具体的にはItemCodeが同じならばQuantityを合計し、なければ新たに追加する、といった具合です
foreachを使えばできますが、Linqを使用して簡潔に書ける方法があれば教えてください
965デフォルトの名無しさん (ブーイモ MMcb-vxZl)
2021/03/21(日) 09:25:40.37ID:ai+yXZclM ConcatしてitemCodeでGroupByしてSum
966デフォルトの名無しさん (アウアウクー MM05-jgaO)
2021/03/21(日) 12:14:40.89ID:hh+THzL2M967デフォルトの名無しさん (ワッチョイ 9389-4Ddi)
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) });
こんな感じですか?
order1.Concat(order2).GroupBy(o => o.ItemCode).Select(x => new Order() {ItemCode = x.Key, Quantity = x.Sum(y => y.Quantity) });
こんな感じですか?
968デフォルトの名無しさん (ワッチョイ 4901-3UcT)
2021/03/21(日) 21:15:46.56ID:B8RMscJD0969デフォルトの名無しさん (ワッチョイ 8b63-rG+B)
2021/03/21(日) 21:28:25.98ID:rOmbGrT+0 え、簡潔と完結を書き間違えたんでしょ?
違うのかな…
違うのかな…
970デフォルトの名無しさん (ワッチョイ 51a7-FMtt)
2021/03/21(日) 21:56:25.09ID:S+S4XTWp0 >>967
こんなの書いてはいけませんっていういい見本
こんなの書いてはいけませんっていういい見本
971デフォルトの名無しさん (ワッチョイ 4901-3UcT)
2021/03/21(日) 22:19:00.23ID:B8RMscJD0 >>969
誤字ですね。簡潔です。
誤字ですね。簡潔です。
972デフォルトの名無しさん (ワッチョイ 51a7-FMtt)
2021/03/21(日) 22:31:46.08ID:S+S4XTWp0 >>967
こんなの現場で書くとどう扱われるか教えてやろうか?
○○さんの書くプログラムはわかりやすいけど
君のはわかりにくいね
読みにくいっていうか
これはどういう処理をしてるの?
仕様を書いてほしいんだけど
文章で書けなかったら
普通の.net2.0ぐらいの機能で書いてくれないかな?
それと○○さんと比べて進捗も遅いよね?
こんな書き方してるからじゃない?
あと処理経過がわかるログも出してほしいんだけど
この書き方のままじゃ出せないでしょ?
とかね
目立つことしないほうがいいよ
こんなの現場で書くとどう扱われるか教えてやろうか?
○○さんの書くプログラムはわかりやすいけど
君のはわかりにくいね
読みにくいっていうか
これはどういう処理をしてるの?
仕様を書いてほしいんだけど
文章で書けなかったら
普通の.net2.0ぐらいの機能で書いてくれないかな?
それと○○さんと比べて進捗も遅いよね?
こんな書き方してるからじゃない?
あと処理経過がわかるログも出してほしいんだけど
この書き方のままじゃ出せないでしょ?
とかね
目立つことしないほうがいいよ
973デフォルトの名無しさん (アウアウエー Sae3-92UB)
2021/03/21(日) 22:43:13.77ID:ejnWrGNOa 長いメソッドの途中でいきなりこれが出てきたら気持ち悪いけど
OrganizeOrdersとか名前つけてメソッドに切り出すなら許せるかな
正しいメソッド名は英語ネイティブに聞いて
OrganizeOrdersとか名前つけてメソッドに切り出すなら許せるかな
正しいメソッド名は英語ネイティブに聞いて
974デフォルトの名無しさん (ワッチョイ 3178-4Ddi)
2021/03/21(日) 22:47:23.75ID:4uqTNWnz0 >あと処理経過がわかるログも出してほしいんだけど
これは流石に設計書いた奴が無能すぎるわ
これは流石に設計書いた奴が無能すぎるわ
975デフォルトの名無しさん (アウアウエー Sae3-92UB)
2021/03/21(日) 22:48:14.21ID:ejnWrGNOa >>972
それほぼ全部カウンター食らうから気をつけたほうがいい
わかりにくい→感覚でしゃべるな、コードメトリクス測定したらLinqのほうが成績良い
どういう処理をしてるの→見たまんまorder1とorder2を繋いでItemCodeでグループ化してQuantityの合計を計算しtwる
使用を書いてほしい→↑が仕様
普通の.net2.0で書く→古い言語仕様に合わせる理由がない
進捗→状況次第
それほぼ全部カウンター食らうから気をつけたほうがいい
わかりにくい→感覚でしゃべるな、コードメトリクス測定したらLinqのほうが成績良い
どういう処理をしてるの→見たまんまorder1とorder2を繋いでItemCodeでグループ化してQuantityの合計を計算しtwる
使用を書いてほしい→↑が仕様
普通の.net2.0で書く→古い言語仕様に合わせる理由がない
進捗→状況次第
976デフォルトの名無しさん (アウアウエー Sae3-92UB)
2021/03/21(日) 22:49:08.96ID:ejnWrGNOa ログ出して→この程度の処理でいちいちログ出したらログが汚れるしパフォーマンスも悪化する
977デフォルトの名無しさん (ワッチョイ b102-+i0H)
2021/03/21(日) 22:54:55.17ID:gB+oqGaT0 >>967
これってそんなに読みにくい?
自分も他の人もこのくらいなら普通に書くけど。
どうしてもなら、各メソッドの間に改行入れて各行ごとに処理内容のコメントを書いてもいいし。
こう言うのでログを出して欲しいって要望を受けたことはないけど自分でそれ用の拡張メソッドを書けば出せないこともないし。とか言ってみる。
これってそんなに読みにくい?
自分も他の人もこのくらいなら普通に書くけど。
どうしてもなら、各メソッドの間に改行入れて各行ごとに処理内容のコメントを書いてもいいし。
こう言うのでログを出して欲しいって要望を受けたことはないけど自分でそれ用の拡張メソッドを書けば出せないこともないし。とか言ってみる。
978デフォルトの名無しさん (ワッチョイ 51a7-FMtt)
2021/03/21(日) 22:58:09.33ID:S+S4XTWp0レス数が950を超えています。1000を超えると書き込みができなくなります。
