!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part93
http://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part141
http://mevius.5ch.net/test/read.cgi/tech/1544839627/
■コードを貼る場合は↓を使いましょう。
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/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
ふらっと C#,C♯,C#(初心者用) Part142
■ このスレッドは過去ログ倉庫に格納されています
1名無C ◆jPpg5.obl6 (ワッチョイ 762c-FuHz)
2019/03/07(木) 06:35:41.12ID:6L3KEJfe0436デフォルトの名無しさん (ワッチョイ 7252-U8iM)
2019/04/20(土) 17:40:05.04ID:tqoqa3JD0 >>435
基本的なデータ構造とアルゴリズムは一通り理解して自分で書けるようになっておくといいぞ。
標準的な物はライブラリ等で用意されているから実際に業務等でコードを書くときはそれを使うが、独自の問題の解法を自分で考える際に、適切な速度や使用リソース量と工数の兼ね合いで良い方法を選択するには、基本は一通り押さえておく必要があるよ。
基本的なデータ構造とアルゴリズムは一通り理解して自分で書けるようになっておくといいぞ。
標準的な物はライブラリ等で用意されているから実際に業務等でコードを書くときはそれを使うが、独自の問題の解法を自分で考える際に、適切な速度や使用リソース量と工数の兼ね合いで良い方法を選択するには、基本は一通り押さえておく必要があるよ。
437デフォルトの名無しさん (ワッチョイ 2517-YIQo)
2019/04/20(土) 20:18:25.55ID:zIfu5btc0 必要な時に必要なものを覚えるだけでOK
最初から全部覚えようとしなくてもいいよ
最初から全部覚えようとしなくてもいいよ
438デフォルトの名無しさん (ワッチョイ 7247-Sl/5)
2019/04/20(土) 20:23:09.94ID:qqngOIWj0 ソートに関しては基本情報処理技術者試験の教科書でも読めばいいんじゃないの
439デフォルトの名無しさん (アウアウウー Sacd-hooH)
2019/04/20(土) 21:14:17.27ID:f5BR4Kwsa ソートは自分なりに考えてlコードを書いてみてその後にいろいろ学ぶと勉強しやすい
440デフォルトの名無しさん (アウアウエー Sada-PIYw)
2019/04/21(日) 08:02:20.34ID:qTT7Abroa 自前で書くソート処理と、.NET Frameworkに実装されてる(Microsoftのプロフェッショナルが実装した)ソート処理、
どっちがより高速でバグが少ないと思う?
https://referencesource.microsoft.com/#mscorlib/system/array.cs,d076876f5fbf4eec
↑ここから先に書かれている処理よりも優れたソート処理を自分で書けるならともかく、
そうでなければおとなしく出来合いのソート処理を利用するほうが無難だと思うけど
どっちがより高速でバグが少ないと思う?
https://referencesource.microsoft.com/#mscorlib/system/array.cs,d076876f5fbf4eec
↑ここから先に書かれている処理よりも優れたソート処理を自分で書けるならともかく、
そうでなければおとなしく出来合いのソート処理を利用するほうが無難だと思うけど
441デフォルトの名無しさん (ワッチョイ 12ad-XxWr)
2019/04/21(日) 09:21:47.18ID:enjRZRrv0 >>440
出来合いのソート処理を利用するなとか誰か言ってんの?
出来合いのソート処理を利用するなとか誰か言ってんの?
442デフォルトの名無しさん (ワッチョイ 6963-pikq)
2019/04/21(日) 09:22:37.85ID:F9kXeXwV0 独習3版読んでないとーしろはqueueも実装できないし、回帰とかも理解しないんだろ。
443デフォルトの名無しさん (アウアウウー Sacd-hooH)
2019/04/21(日) 09:39:42.10ID:+WROkW6ha >>440
初心者がソートを勉強しないと自分の書いたコードがなぜ遅いかわからない
ソートが魔法か何かで何でも一瞬で並び替えられると思ってしまうと終わり
そこから進展はない
ソートの回数を減らすように考えたりソート自体を行わないでうまく処理することを学ばないといけない
初心者がソートを勉強しないと自分の書いたコードがなぜ遅いかわからない
ソートが魔法か何かで何でも一瞬で並び替えられると思ってしまうと終わり
そこから進展はない
ソートの回数を減らすように考えたりソート自体を行わないでうまく処理することを学ばないといけない
444デフォルトの名無しさん (ワッチョイ 515f-WJ29)
2019/04/21(日) 09:43:13.42ID:cNLTxFDL0 ソートがボトルネックになった時に最適化を迫られたら弄るしかないじゃんね
445デフォルトの名無しさん (アウアウウー Sacd-hooH)
2019/04/21(日) 09:50:14.96ID:+WROkW6ha ソートがボトルネックになったらじゃなくて普通にソートを使うときには必ず気に掛けるべき
ループの中にソート入れてるコードがあったりする
ループ出た後に一度やればいいだけなのにと思うがそういう所に思いが至らないんだろう
ループの中にソート入れてるコードがあったりする
ループ出た後に一度やればいいだけなのにと思うがそういう所に思いが至らないんだろう
446デフォルトの名無しさん (ワッチョイ 5561-oal8)
2019/04/21(日) 10:02:50.79ID:9BhkjmpP0 今なんねーよ流石に
447デフォルトの名無しさん (アウアウウー Sacd-hooH)
2019/04/21(日) 10:09:09.80ID:+WROkW6ha メソッドの中でソートして戻り値返してるのにもらった側でもソートしたりとか
無駄なことをする可能性はどこにでもある
他人に見られたときにこいつ馬鹿だなと思われないようなコードを書く練習をしよう
無駄なことをする可能性はどこにでもある
他人に見られたときにこいつ馬鹿だなと思われないようなコードを書く練習をしよう
448デフォルトの名無しさん (ワッチョイ 1261-YIQo)
2019/04/21(日) 10:17:01.49ID:HfCJ1F6L0 listのsortメソッドって安定ソートだっけ?
449デフォルトの名無しさん (アウアウエー Sada-4dYu)
2019/04/21(日) 10:19:40.66ID:8e51ow7Fa450デフォルトの名無しさん (アウアウウー Sacd-hooH)
2019/04/21(日) 10:24:24.53ID:+WROkW6ha 小手先のハックじゃなくて基本だろ
どこでソートするかなんて基本中の基本
どこでソートするかなんて基本中の基本
451デフォルトの名無しさん (ドコグロ MM71-4dYu)
2019/04/21(日) 10:25:31.30ID:+0R+dzN2M 無意味な仕事を無くすように働きかけるのではなく、無意味な仕事を無駄に最適化しようとするのは低学歴な意識高い系プログラマあるある
452デフォルトの名無しさん (アウアウエー Sada-nHqp)
2019/04/21(日) 11:39:31.85ID:cgZSyzeqa >>448
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1.sort
> This implementation performs an unstable sort
ついでにいうとArray.Sortも不安定ソートで、Enumerable.OrderByと.ThenByは安定ソート
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1.sort
> This implementation performs an unstable sort
ついでにいうとArray.Sortも不安定ソートで、Enumerable.OrderByと.ThenByは安定ソート
453デフォルトの名無しさん (ワッチョイ f642-YIQo)
2019/04/21(日) 12:31:18.60ID:3jwnQLuZ0 ソートはプログラムを覚えるために勉強するもので
実用上はライブラリ使えばいい
ただ、勉強するネタとしては割と上質なもの
実用上はライブラリ使えばいい
ただ、勉強するネタとしては割と上質なもの
454デフォルトの名無しさん (ワッチョイ 5e63-Pr8H)
2019/04/21(日) 12:34:57.35ID:y1/myRC20 (回答する方も)初心者スレらしくていい流れだね
455デフォルトの名無しさん (ワッチョイ 092d-RDgi)
2019/04/21(日) 12:46:19.25ID:WZ0UQqME0 こういうの、listにロックをかけたのに何で同listを使う後続処理がすぐ実行されちゃうの?
https://paiza.io/projects/e/EbjQiWv8ebNkW4bbkAY_YQ
using System.Collections.Generic;
using System.Threading.Tasks;
using System;
public class Hello{
public static void Main(){
var list = new List<int>();
for(int i=1; i<=1000; i++)
{
list.Add(i);
}
Task.Run(()=>{
lock(list){
Task.Delay(10000);
}
});
Console.WriteLine(list[123]);
}
}
https://paiza.io/projects/e/EbjQiWv8ebNkW4bbkAY_YQ
using System.Collections.Generic;
using System.Threading.Tasks;
using System;
public class Hello{
public static void Main(){
var list = new List<int>();
for(int i=1; i<=1000; i++)
{
list.Add(i);
}
Task.Run(()=>{
lock(list){
Task.Delay(10000);
}
});
Console.WriteLine(list[123]);
}
}
456デフォルトの名無しさん (ワッチョイ 5561-oal8)
2019/04/21(日) 12:51:36.48ID:9BhkjmpP0 まだ、そんな産廃機能いじってんのか
457デフォルトの名無しさん (アウアウエー Sada-nHqp)
2019/04/21(日) 13:00:01.62ID:cgZSyzeqa >>455
https://ufcpp.net/study/csharp/sp_thread.html#lock
lock文はMonitor.EnterやMonitor.Exitを使った糖衣構文であって
Monitor.Enterでロックを取得する(=既にロックされているなら、それが解放されるまで待つ)
例示コードではTask中ではlockしているもののConsole.WriteLine箇所はlockがないので、すぐに実行される
https://ufcpp.net/study/csharp/sp_thread.html#lock
lock文はMonitor.EnterやMonitor.Exitを使った糖衣構文であって
Monitor.Enterでロックを取得する(=既にロックされているなら、それが解放されるまで待つ)
例示コードではTask中ではlockしているもののConsole.WriteLine箇所はlockがないので、すぐに実行される
458デフォルトの名無しさん (ワッチョイ 655f-8I1V)
2019/04/21(日) 13:12:13.25ID:6I4G/mIH0459デフォルトの名無しさん (スププ Sdb2-Sl/5)
2019/04/21(日) 14:40:03.19ID:T6P0EJpRd >>441
俺だよ俺
俺だよ俺
460デフォルトの名無しさん (ワッチョイ 092d-RDgi)
2019/04/21(日) 15:32:01.70ID:WZ0UQqME0 ありがとう、このコードだと欠陥だらけなのか・・・・
使用箇所ごとにLockが必要なのか、それとタスクより先に次の行が実行されてる可能性が高いのは全く気づいてなかった
ただ、
>Task.Delay()は通常awaitして使うがlockステートメント中では使えないので、Task.Delay().Wait()するか代わりにThread.Sleep()にする。
っていうのはどういうことなの?Lock外にスレッドを返されちゃうのかしら?
使用箇所ごとにLockが必要なのか、それとタスクより先に次の行が実行されてる可能性が高いのは全く気づいてなかった
ただ、
>Task.Delay()は通常awaitして使うがlockステートメント中では使えないので、Task.Delay().Wait()するか代わりにThread.Sleep()にする。
っていうのはどういうことなの?Lock外にスレッドを返されちゃうのかしら?
461デフォルトの名無しさん (スッップ Sdb2-XxWr)
2019/04/21(日) 16:07:55.74ID:i587kr5jd >>459
よおキチガイ
よおキチガイ
462デフォルトの名無しさん (ワッチョイ 69e7-ctQZ)
2019/04/21(日) 16:32:29.56ID:RWXhngOc0 >>460
Task.Delay()だけだと完了を待ってないから、実質無いのと同じ
Task.Delay()だけだと完了を待ってないから、実質無いのと同じ
463デフォルトの名無しさん (ワッチョイ 6963-pikq)
2019/04/21(日) 17:35:25.00ID:F9kXeXwV0 >>460
ピーコックアンダーソンの非同期動画みてみればすぐに理解できるぞ
ピーコックアンダーソンの非同期動画みてみればすぐに理解できるぞ
464デフォルトの名無しさん (ワッチョイ ee0d-X0Gq)
2019/04/21(日) 22:18:43.95ID:rykfOnh80 速度がどうとか言うんだったらc#なんか使うなよと少し思いました
465デフォルトの名無しさん (ワッチョイ 31f5-DNyu)
2019/04/21(日) 22:35:33.45ID:CLsKfNj20 >>464
少しってなんだよ!
少しってなんだよ!
466デフォルトの名無しさん (ワッチョイ 1261-oal8)
2019/04/21(日) 23:52:50.47ID:SWXjVSz30 >>465
a little
a little
467デフォルトの名無しさん (ワッチョイ 5e63-Pr8H)
2019/04/22(月) 04:23:42.26ID:29e/0Uiq0 じゃあ残りの大半は何を思ってたの
468デフォルトの名無しさん (ワッチョイ b5e6-YIQo)
2019/04/22(月) 19:50:45.64ID:DglGSvcP0 ソートってポインタやmalloc, memcpyとか使ってこねくり回すのが楽しいのにC#だとイマイチだよね
469デフォルトの名無しさん (ワッチョイ c23e-HmQt)
2019/04/22(月) 20:39:27.38ID:Xu5D3g840 独自に作成したユーザコントロールをdataGridViewのカラムに追加する処理を作成しているんですが
追加したものをそのまま削除するとうまく削除出来ず、一方のユーザコントロールが必ず画面上に残ってしまうんですが
なぜでしょうか?原因がわからず悩んでいます
どなたか教えてください
//@ひとまず空のデータを作成してdataGridViewに格納
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] {new DataColumn(), new DataColumn(), });
dt.Rows.Add(new object[] { "", "" });
this.dataGridView1.DataSource = dt;
//Aユーザコントロール1をdataGridViewに追加
UserControl1 userControl1 = new UserControl1();
this.dataGridView1.Controls.Add(userControl1);
userControl1.Location = this.dataGridView1.GetCellDisplayRectangle(0, 0, true).Location;
//Bユーザコントロール2をdataGridViewに追加
UserControl1 userControl2 = new UserControl1();
this.dataGridView1.Controls.Add(userControl2);
userControl2.Location = this.dataGridView1.GetCellDisplayRectangle(1, 0, true).Location;
//C追加したユーザコントロールを削除→何故かユーザコントロール2だけが残る
dataGridView1.Controls.Clear();
追加したものをそのまま削除するとうまく削除出来ず、一方のユーザコントロールが必ず画面上に残ってしまうんですが
なぜでしょうか?原因がわからず悩んでいます
どなたか教えてください
//@ひとまず空のデータを作成してdataGridViewに格納
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] {new DataColumn(), new DataColumn(), });
dt.Rows.Add(new object[] { "", "" });
this.dataGridView1.DataSource = dt;
//Aユーザコントロール1をdataGridViewに追加
UserControl1 userControl1 = new UserControl1();
this.dataGridView1.Controls.Add(userControl1);
userControl1.Location = this.dataGridView1.GetCellDisplayRectangle(0, 0, true).Location;
//Bユーザコントロール2をdataGridViewに追加
UserControl1 userControl2 = new UserControl1();
this.dataGridView1.Controls.Add(userControl2);
userControl2.Location = this.dataGridView1.GetCellDisplayRectangle(1, 0, true).Location;
//C追加したユーザコントロールを削除→何故かユーザコントロール2だけが残る
dataGridView1.Controls.Clear();
470469 (ワッチョイ c23e-HmQt)
2019/04/22(月) 20:40:58.08ID:Xu5D3g840 ちなみに私が試したのはvisualStudioの2017です
471デフォルトの名無しさん (ワッチョイ 92e0-JNgg)
2019/04/22(月) 20:42:29.96ID:5zGuWDFU0 c#だと遅くて無理みたいな高尚なプログラム触ってないからよくわからん
cppとc#でどれくれい違うん?
cppとc#でどれくれい違うん?
472デフォルトの名無しさん (スップ Sd12-yS2j)
2019/04/22(月) 20:52:55.67ID:doLks5OSd >>471
何するかによるし言語仕様理解せずにコーディングすればC++だろうがC#だろうが遅くはなる
早くしたけりゃどの言語だってコンパイラが吐くコード見ろになるし極論アセンブラしてろになる
シビアな演算速度求められるようなソフトじゃなきゃ気にするような速度は無い
個人的にいろいろ開発してて速度面で困ったことはない
何するかによるし言語仕様理解せずにコーディングすればC++だろうがC#だろうが遅くはなる
早くしたけりゃどの言語だってコンパイラが吐くコード見ろになるし極論アセンブラしてろになる
シビアな演算速度求められるようなソフトじゃなきゃ気にするような速度は無い
個人的にいろいろ開発してて速度面で困ったことはない
473デフォルトの名無しさん (ブーイモ MMa6-hooH)
2019/04/22(月) 21:35:41.32ID:puVU3XKCM 特定のアプリを監視して表示された文字(画像)をテキストにするアプリ作ったけど
c#だとチェックに1秒、c++とGDIのDLLだと0.01秒とかそんな感じだった
c#で作って必要ならc++にコンバートするのでいいと思う
c#だとチェックに1秒、c++とGDIのDLLだと0.01秒とかそんな感じだった
c#で作って必要ならc++にコンバートするのでいいと思う
474デフォルトの名無しさん (ブーイモ MMad-3Z9U)
2019/04/22(月) 21:59:37.22ID:a2wjQuhnM >>468
unsafe使えば
unsafe使えば
475デフォルトの名無しさん (ワッチョイ 1990-Xw8j)
2019/04/23(火) 00:01:21.36ID:5LmBAPnu0 画像処理とかその部分はunsafeとかcだろ。それぐらいは当たり前
476デフォルトの名無しさん (ワッチョイ d963-yS2j)
2019/04/23(火) 00:14:05.59ID:Bc6Ot9Tr0 別にC#でいくらでも早くできるけどそれしないでC++より遅いってそりゃそうだよねとしか
GCの恩恵受けてunsafe使わずセーフティな状態でしょ
突き詰めたC++と突き詰めたC#なら.NETで動く分C#が不利なのは仕方ない
突き詰める必要がない部分で恩恵を受けられるんだから、処理速度以外にメリット感じないなら速い言語やればいい
言語なんて所詮道具なんだから適材適所
GCの恩恵受けてunsafe使わずセーフティな状態でしょ
突き詰めたC++と突き詰めたC#なら.NETで動く分C#が不利なのは仕方ない
突き詰める必要がない部分で恩恵を受けられるんだから、処理速度以外にメリット感じないなら速い言語やればいい
言語なんて所詮道具なんだから適材適所
477デフォルトの名無しさん (ワッチョイ ee0d-X0Gq)
2019/04/23(火) 00:15:59.36ID:lAbUfbw70 sleepが1ms単位指定なのに平気で30msくらいかかったりする
478デフォルトの名無しさん (ワッチョイ 2517-YIQo)
2019/04/23(火) 00:21:34.72ID:Qu51xl5v0 >>477
Windowsの仕様なのでC#と関係なく発生するよ
Windowsの仕様なのでC#と関係なく発生するよ
479デフォルトの名無しさん (スッップ Sdb2-XxWr)
2019/04/23(火) 00:22:35.63ID:1xhRm/Xtd OSの内部クロックのせい
480デフォルトの名無しさん (ブーイモ MMd5-pikq)
2019/04/23(火) 02:07:58.81ID:TPVsn91QM >>473
そりゃあおまえさんのコードが糞なだけや
そりゃあおまえさんのコードが糞なだけや
481デフォルトの名無しさん (アウアウエー Sada-shJk)
2019/04/23(火) 02:09:14.72ID:V6IaHlzqa OSにクロックはないでしょうw
いやスケジューリングとかタイムスライスとかそんなことが言いたいんだとは思うけど
いやスケジューリングとかタイムスライスとかそんなことが言いたいんだとは思うけど
482デフォルトの名無しさん (スッップ Sdb2-XxWr)
2019/04/23(火) 02:35:38.55ID:1xhRm/Xtd >>481
え…
え…
483デフォルトの名無しさん (アウアウウー Sacd-v9Kr)
2019/04/23(火) 07:53:20.75ID:5v63vvPIa TickCountの事だと思う。
484デフォルトの名無しさん (ワッチョイ 092d-RDgi)
2019/04/23(火) 11:11:38.25ID:D0U8cwP90 awaitのついた文の次の文を実行する際に、await前と同じスレッドに帰ってきてもらうことってできないの?
485デフォルトの名無しさん (ワッチョイ 6e7c-lfmU)
2019/04/23(火) 11:25:52.45ID:NBcK336D0 元のスレッドがそういうことできる機能を持ってればできるよ
WinFormやWPFのGUIスレッドはメッセージループで実現してて
それらの場合はGUIスレッドでawaitすればGUIスレッドに戻ってくるのが既定だし
WinFormやWPFのGUIスレッドはメッセージループで実現してて
それらの場合はGUIスレッドでawaitすればGUIスレッドに戻ってくるのが既定だし
486デフォルトの名無しさん (オイコラミネオ MM91-8JmN)
2019/04/23(火) 12:18:02.90ID:m6tbNaeWM Pythonでカラー画像をRGBごとに分割して出力するスクリプトを書いたんだけど、
opencv使わずにC#でも出来るのかな?
C#でもnumpyみたいなの無いの?
opencv使わずにC#でも出来るのかな?
C#でもnumpyみたいなの無いの?
487デフォルトの名無しさん (ワッチョイ a2a5-hooH)
2019/04/23(火) 12:20:58.93ID:4ETsFZLA0 どんだけ馬鹿なんだよ
488デフォルトの名無しさん (スププ Sdb2-Sl/5)
2019/04/23(火) 13:00:40.13ID:N4fQ2uHcd >>486
numpyってrubyですか?
numpyってrubyですか?
489デフォルトの名無しさん (ワッチョイ 7988-yS2j)
2019/04/23(火) 15:41:23.24ID:elaW7zc+0490デフォルトの名無しさん (ワッチョイ 092d-RDgi)
2019/04/23(火) 16:29:44.88ID:D0U8cwP90 >>485
コンソールアプリ等だとなかなか難しいんかな
コンソールアプリ等だとなかなか難しいんかな
491デフォルトの名無しさん (ワッチョイ 3235-DNyu)
2019/04/23(火) 16:33:48.41ID:EaCRsjQU0 >>490
Task.WaitAnyとかでできんもんか?
Task.WaitAnyとかでできんもんか?
492デフォルトの名無しさん (アウアウエー Sada-shJk)
2019/04/23(火) 17:58:47.89ID:xFm0RmkHa493デフォルトの名無しさん (スププ Sdb2-Sl/5)
2019/04/23(火) 19:05:14.26ID:hvzt5+/sd >>492
しょうもない嘘をつくな
しょうもない嘘をつくな
494デフォルトの名無しさん (ブーイモ MMd5-hooH)
2019/04/23(火) 19:28:13.89ID:2vLu2U8QM 誤解が誤解を生む
仕様について理解が足りない
仕様について理解が足りない
495デフォルトの名無しさん (アウアウエー Sada-shJk)
2019/04/23(火) 19:35:04.22ID:xFm0RmkHa ネタじゃなくて本気で変な誤解してるのか...
メソッドの途中で行が変わると別のスレッドで実行されるとかそんな言語怖くて使えないよwww
メソッドの途中で行が変わると別のスレッドで実行されるとかそんな言語怖くて使えないよwww
496デフォルトの名無しさん (ブーイモ MMd5-hooH)
2019/04/23(火) 19:36:05.31ID:2vLu2U8QM お前は勘違いしてる
GUIとCUIで仕様が違ってる
GUIとCUIで仕様が違ってる
497デフォルトの名無しさん (ブーイモ MMd5-hooH)
2019/04/23(火) 19:50:14.81ID:2vLu2U8QM await/asyncは単なるTask非同期処理を簡易的に書ける糖衣構文
次にawaitの次をどのスレッドになるかはその時の状態次第
GUIではそれでは困るのでデフォルトで同じスレッドが処理をするようにしてあるだけ
次にawaitの次をどのスレッドになるかはその時の状態次第
GUIではそれでは困るのでデフォルトで同じスレッドが処理をするようにしてあるだけ
498デフォルトの名無しさん (アウアウエー Sada-shJk)
2019/04/23(火) 20:19:35.25ID:xFm0RmkHa 訳のわからん勘違いをしてるのはどっちだよ
自信満々で馬鹿じゃないマジで
自信満々で馬鹿じゃないマジで
499デフォルトの名無しさん (ワッチョイ 0d00-YIQo)
2019/04/23(火) 20:30:14.95ID:aIitEIPQ0500デフォルトの名無しさん (ワンミングク MM62-tFh+)
2019/04/23(火) 20:30:27.32ID:PlCSQgU2M deligate
501デフォルトの名無しさん (アウアウエー Sada-nHqp)
2019/04/23(火) 20:36:54.48ID:iDnak3xha502デフォルトの名無しさん (アウアウエー Sada-shJk)
2019/04/23(火) 20:41:16.72ID:xFm0RmkHa 勘違いをしているのは俺の方だった...
申し訳ないですw
申し訳ないですw
503デフォルトの名無しさん (ブーイモ MMd5-hooH)
2019/04/23(火) 21:04:08.70ID:2vLu2U8QM すなおでいいんでない?
504デフォルトの名無しさん (スップ Sd12-yS2j)
2019/04/23(火) 21:19:00.48ID:7omDh/oid 煽る時点で目糞鼻糞
505デフォルトの名無しさん (ワッチョイ 092d-RDgi)
2019/04/23(火) 21:57:22.24ID:D0U8cwP90 同じスレッドに戻ってきてもらうのに、簡単な方法ってないのかな・・・・
506デフォルトの名無しさん (アウアウエー Sada-nHqp)
2019/04/23(火) 22:10:23.58ID:iDnak3xha507デフォルトの名無しさん (ワッチョイ 092d-RDgi)
2019/04/23(火) 22:42:29.23ID:D0U8cwP90 >>506
WebAPIサーバを作りたく、その中で扱うデータについてトランザクション処理みたいなことをしたかったんです
通信関連でAwaitが多用されている中でも、データのロックをできるだけ減らしたい、またうっかりミスしてロック外に出ないでほしいと思ったんです
WebAPIサーバを作りたく、その中で扱うデータについてトランザクション処理みたいなことをしたかったんです
通信関連でAwaitが多用されている中でも、データのロックをできるだけ減らしたい、またうっかりミスしてロック外に出ないでほしいと思ったんです
508デフォルトの名無しさん (アウアウエー Sada-nHqp)
2019/04/24(水) 00:21:10.86ID:9Dlmymg8a >>507
それを聞いても、「特定スレッドで絶対に処理したい」が主目標にはならない気がする
「ロックにReaderWriterLockSlimを使っていて、ロック取得と解放は同じスレッドで行う必要がある」のような状況ならまだ分かるんだけど
もしもこの状況であるなら、SemaphoreSlimでロックするようにすれば、WaitOneAsyncで待つスレッドと、Releaseするスレッドを別にできる(=間でawaitできる)
万一本当に何か理由があって特定スレッドで処理を続けたいのなら、Taskをawaitするのでなく.Wait()で待つようにすれば、スレッドは切り替わらなくなる
> うっかりミスしてロック外に出ないでほしい
これが「ロックを取得したけど、解放を忘れる」ことを指すのであれば
try {} finally {} や、ラップクラスを作ってIDisposable実装してusing() {} するのが対策になるかもしれない
取得と解放がメソッドを跨いだりするなら面倒くさくなるけど……
それを聞いても、「特定スレッドで絶対に処理したい」が主目標にはならない気がする
「ロックにReaderWriterLockSlimを使っていて、ロック取得と解放は同じスレッドで行う必要がある」のような状況ならまだ分かるんだけど
もしもこの状況であるなら、SemaphoreSlimでロックするようにすれば、WaitOneAsyncで待つスレッドと、Releaseするスレッドを別にできる(=間でawaitできる)
万一本当に何か理由があって特定スレッドで処理を続けたいのなら、Taskをawaitするのでなく.Wait()で待つようにすれば、スレッドは切り替わらなくなる
> うっかりミスしてロック外に出ないでほしい
これが「ロックを取得したけど、解放を忘れる」ことを指すのであれば
try {} finally {} や、ラップクラスを作ってIDisposable実装してusing() {} するのが対策になるかもしれない
取得と解放がメソッドを跨いだりするなら面倒くさくなるけど……
509デフォルトの名無しさん (ワッチョイ 23ad-BP9Y)
2019/04/25(木) 23:50:01.61ID:1l/c830P0 https://ideone.com/TM1zJh
if (ob.volume == volume)この部分なのですが
左辺は引数で取ったobのメンバ変数であることは分かるのですが右辺はどのメンバ変数なんでしょうか?
入門書のコードなのですが…
if (ob.volume == volume)この部分なのですが
左辺は引数で取ったobのメンバ変数であることは分かるのですが右辺はどのメンバ変数なんでしょうか?
入門書のコードなのですが…
510デフォルトの名無しさん (ワッチョイ 2d5f-KI0z)
2019/04/25(木) 23:52:47.61ID:LJHMbymK0 >>509
6行目
6行目
511デフォルトの名無しさん (ワッチョイ 2d5f-KI0z)
2019/04/25(木) 23:54:19.01ID:LJHMbymK0 いや、thisって答えた方が良いのか
512デフォルトの名無しさん (ワッチョイ 4b2c-t8aL)
2019/04/25(木) 23:59:26.79ID:8Sf9N2Ww0 19行目にも同じ構造があるけどそっちはすんなり入ったんだろうか
513デフォルトの名無しさん (ワッチョイ 23ad-BP9Y)
2019/04/26(金) 00:01:25.44ID:6Aa9jI4a0514デフォルトの名無しさん (ワッチョイ cbda-KxX0)
2019/04/26(金) 23:30:08.64ID:9lAtl2Yi0 コンストラクタ内で例外をthrowするのはご法度ですか?
515デフォルトの名無しさん (スフッ Sd43-jluM)
2019/04/26(金) 23:43:18.42ID:p/I2x8fjd >>514
定石ですよ
定石ですよ
516デフォルトの名無しさん (アウアウエー Sa13-jWJP)
2019/04/27(土) 00:06:35.36ID:Ern7/KCha >>514
ご法度ではないし、むしろインスタンスを正しく構築できないなら積極的にthrowしてほしい
例えばStreamReader(String)の場合、ArgumentException系列から
FileNotFoundExceptionやDirectoryNotFoundExceptionのIOException系列までthrowする
ご法度ではないし、むしろインスタンスを正しく構築できないなら積極的にthrowしてほしい
例えばStreamReader(String)の場合、ArgumentException系列から
FileNotFoundExceptionやDirectoryNotFoundExceptionのIOException系列までthrowする
517デフォルトの名無しさん (ドコグロ MM93-iwjh)
2019/04/27(土) 00:38:42.27ID:yEc5G7yUM 悪いとは言わないけど、最近はあまりコンストラクタで例外投げるような処理やらなくなったなあ
何故かと考えたら、async/awaitのせいだと気付いた
コンストラクタではawaitできないから、昔みたいにコンストラクタでファイル読んだりするのはほぼ無くなった
何故かと考えたら、async/awaitのせいだと気付いた
コンストラクタではawaitできないから、昔みたいにコンストラクタでファイル読んだりするのはほぼ無くなった
518デフォルトの名無しさん (アウアウエー Sa13-iwjh)
2019/04/27(土) 00:45:53.35ID:k66IsG4/a あとDIと相性が悪い
DI使ってると、コンストラクタで例外投げたらそもそもアプリが起動しない
DI使ってると、コンストラクタで例外投げたらそもそもアプリが起動しない
519デフォルトの名無しさん (ワッチョイ 4d61-r3uF)
2019/04/27(土) 02:44:50.91ID:ni4YCIMc0 ドキュメントもコンストラクタで投げる可能性のある例外一覧が必要になるけど
実際あげきれなくて手薄になりがち
そうなると設計できない
例外の種類でその後の動作をハンドリングしたいときに動かしてみて
キャッチの種類を分けるしかない
仕様書に書いてあるこのエラー出せないんすけど?
このときの例外増やしてもらえます?
→入れた引数から判断できるでしょ?とかキチガイかよって
実際あげきれなくて手薄になりがち
そうなると設計できない
例外の種類でその後の動作をハンドリングしたいときに動かしてみて
キャッチの種類を分けるしかない
仕様書に書いてあるこのエラー出せないんすけど?
このときの例外増やしてもらえます?
→入れた引数から判断できるでしょ?とかキチガイかよって
520デフォルトの名無しさん (ワッチョイ 6347-jluM)
2019/04/27(土) 02:55:41.53ID:TtZ/uEZc0 >>519
例外の種類を完全に把握できないのはコンストラクタに限ったことではないだろ
例外の種類を完全に把握できないのはコンストラクタに限ったことではないだろ
521デフォルトの名無しさん (ワッチョイ 4d61-r3uF)
2019/04/27(土) 03:07:26.16ID:ni4YCIMc0522デフォルトの名無しさん (ワッチョイ 6347-jluM)
2019/04/27(土) 03:45:53.67ID:TtZ/uEZc0 その例外を全部把握しなきゃいけないというのがアホな考えなんだよ
予期できないのはExeceptionとしてまとめてキャッチして処理しとけばなんの問題もないね
予期できないのはExeceptionとしてまとめてキャッチして処理しとけばなんの問題もないね
523デフォルトの名無しさん (ワッチョイ 0d38-c7g7)
2019/04/27(土) 06:32:15.89ID:QhVWSAZD0 どっちも乱暴だな
524デフォルトの名無しさん (ワッチョイ 4d61-KxX0)
2019/04/27(土) 07:35:46.92ID:3SWE0tmA0 例外は握りつぶすのが定石
525デフォルトの名無しさん (ワッチョイ 4d61-r3uF)
2019/04/27(土) 08:12:46.03ID:PiMoxWjk0 >>522
設計書になんて書くん?
俺んとこ例外使うなら設計書に書いてない例外出しちゃうと大変なんだよ
MSのドキュメントも全部はねーし
マジ厄介
でもお客の言い分もわかる気がするんだよね
流石に何が来るかわかりませんってのはどうなの?
って思う
設計書になんて書くん?
俺んとこ例外使うなら設計書に書いてない例外出しちゃうと大変なんだよ
MSのドキュメントも全部はねーし
マジ厄介
でもお客の言い分もわかる気がするんだよね
流石に何が来るかわかりませんってのはどうなの?
って思う
526デフォルトの名無しさん (ワッチョイ 4d61-r3uF)
2019/04/27(土) 08:15:07.62ID:PiMoxWjk0 >>522
ああ、だから例外返さないよねそれ
ああ、だから例外返さないよねそれ
527デフォルトの名無しさん (スフッ Sd43-jluM)
2019/04/27(土) 08:34:22.02ID:9yG2LI1yd 例外の発生要因なんてあらゆるものがあるんだから全部明示しろというお客の主張が不条理
設計書に例外全部明示しろとか要求されたことないね
設計書に例外全部明示しろとか要求されたことないね
528デフォルトの名無しさん (アウアウエー Sa13-OsmV)
2019/04/27(土) 08:51:37.56ID:yNGf8etVa 規約が足かせになってる場合は無視したほうがいい
スキル低い人が大昔に作った規約かもしれないし
例外は復旧可能かつ復旧したいものだけキャッチして対処
それ以外はアスペクトでまとめて処理すればいいよ
スキル低い人が大昔に作った規約かもしれないし
例外は復旧可能かつ復旧したいものだけキャッチして対処
それ以外はアスペクトでまとめて処理すればいいよ
529デフォルトの名無しさん (ワッチョイ 4b63-peSw)
2019/04/27(土) 09:11:45.63ID:ibduGkrL0 コンストラクタで例外がってC+出身者みたいだな
530デフォルトの名無しさん (ワッチョイ 852f-jluM)
2019/04/27(土) 09:25:13.44ID:YyIkYDM+0 >>529
.NET Frameworkクラスもコンストラクタで例外投げるのに?
.NET Frameworkクラスもコンストラクタで例外投げるのに?
531デフォルトの名無しさん (アウアウエー Sa13-iwjh)
2019/04/27(土) 09:26:49.68ID:k66IsG4/a >>529
C++のその説は迷信だけど、C#では事実としてawaitができないという重大な制約があるからなあ
コンストラクタで例外を投げてはいけないわけではないが、そもそも例外を投げる可能性のあるような処理をコンストラクタでやらせることができるケースが少ないのは間違いない
C++のその説は迷信だけど、C#では事実としてawaitができないという重大な制約があるからなあ
コンストラクタで例外を投げてはいけないわけではないが、そもそも例外を投げる可能性のあるような処理をコンストラクタでやらせることができるケースが少ないのは間違いない
532531 (アウアウエー Sa13-iwjh)
2019/04/27(土) 09:33:56.80ID:k66IsG4/a もちろん、ArgumentNullExceptionのようにバグを検出してアプリを落とすことを目的とする例外は別だよ
そういうのを除けば、例外を投げうる処理ってのはだいたいIOを含んでいてawaitが必要になるケースが多い
そういうのを除けば、例外を投げうる処理ってのはだいたいIOを含んでいてawaitが必要になるケースが多い
533デフォルトの名無しさん (アウアウエー Sa13-mEZ1)
2019/04/27(土) 09:36:37.55ID:yyWoHVeQa いまだにオブジェクト倶楽部のをベースにしたC#コーディング規約なのかな
10年くらい前の時点でも悪評ぷんぷんだったのにどれだけ時代遅れなことしてるんだ
コーディング規約作ってる奴のスキルが低い/古すぎ/多言語の知識しか持ち合わせてなくて
クソな規約になってることはよくある
コンストラクタで例外吐くのが望ましくないのはC++の話であってC#ではそんなこと全然ない
例外すべて列挙しなきゃいけないのはJavaの話であってC#にもそれを持ち込むのはナンセンス
でも大抵規約のクソさ加減と規約作成者・組織の老害度は比例するんだよな
指摘しても直ることはないだろうから「これはクソなコードだ」と自覚を持ったうえで
規約通りのコードを書くしかない
10年くらい前の時点でも悪評ぷんぷんだったのにどれだけ時代遅れなことしてるんだ
コーディング規約作ってる奴のスキルが低い/古すぎ/多言語の知識しか持ち合わせてなくて
クソな規約になってることはよくある
コンストラクタで例外吐くのが望ましくないのはC++の話であってC#ではそんなこと全然ない
例外すべて列挙しなきゃいけないのはJavaの話であってC#にもそれを持ち込むのはナンセンス
でも大抵規約のクソさ加減と規約作成者・組織の老害度は比例するんだよな
指摘しても直ることはないだろうから「これはクソなコードだ」と自覚を持ったうえで
規約通りのコードを書くしかない
534デフォルトの名無しさん (ドコグロ MM93-r3uF)
2019/04/27(土) 11:46:22.17ID:V1c8eqNrM >>527
それって制御できないって言ってるんだよね?
その時はtry catchで握り潰せばいいんだけど
君はどうなればいいと思ってるの?
ある日例外が起きてアプリが止まっちゃってもそれは時代の流れでしょうがないと思ってるってこと?
それって制御できないって言ってるんだよね?
その時はtry catchで握り潰せばいいんだけど
君はどうなればいいと思ってるの?
ある日例外が起きてアプリが止まっちゃってもそれは時代の流れでしょうがないと思ってるってこと?
535デフォルトの名無しさん (スフッ Sd43-jluM)
2019/04/27(土) 12:00:49.48ID:ASguEO4td >>534
予期せぬ例外が起きたら発生箇所のスタックトレースを表示させてバグ修正に役立てるよ
客もその画面キャプチャを送ってくれる
Execeptionにはそういうデバッグに役立つ情報入ってるからマジ便利だわ
予期せぬ例外が起きたら発生箇所のスタックトレースを表示させてバグ修正に役立てるよ
客もその画面キャプチャを送ってくれる
Execeptionにはそういうデバッグに役立つ情報入ってるからマジ便利だわ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」 [ぐれ★]
- 「日本はドイツと違い反省せず」…中国外相、独外相に対日批判 台湾問題で理解求める [少考さん★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★6 [七波羅探題★]
- 【苺ましまろ】立民衆院議員、人気漫画の水着少女画像を「醜悪」タイ人少女の性搾取事件と関連付け…党内で反発 [少考さん★]
- 「残業キャンセル界隈」若者が増加?「職務放棄」との批判も…“定時退社の権利”どこまで通用するか [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★5 [蚤の市★]
- 93年ジャップ「外米なんて不味くて嫌だ、高くても日本米食わせろ!」今ジャップ「日本米なんて高くて嫌だ、安い外米食わせろ!」 [616817505]
- 日本人のおでん離れ。作る回数減った30.1%🍢 [256556981]
- 覚醒がとまらない橋下徹氏、今日もド正論を繰り返す「そもそも言わせてもらうけど中国機のレーダーだって高市のせいだろ!😡」 [339712612]
- 【高市悲報】中国軍「公海で空母の発着訓練するって事前通告したのになんで自衛隊機は急接近してきたんだ…?」中国軍困惑 [931948549]
- 30過ぎた大人おじさんが大学生(昔)のままのファッションをする「おじさんキッズコーデ」、炎上して問題視される。 [153490809]
- 【妄想】石破元総理、高市自民に完全に愛想を尽かして造反…か? [517791167]
