[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 01/03 17:51 / Filesize : 300 KB / Number-of Response : 1017
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:名無C mailto:sage [2019/03/07(木) 06:35:41.12 ID:6L3KEJfe0.net]
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■関連スレ
C#, C♯, C#相談室 Part93
mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part141
mevius.5ch.net/test/read.cgi/tech/1544839627/
■コードを貼る場合は↓を使いましょう。
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
referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

416 名前:デフォルトの名無しさん [2019/04/19(金) 21:56:33.56 ID:5QVRwjzm0.net]
List<T>から要素を1つずつ要素を取り出して処理し、例外が起きたらその要素だけリストから消したいんだけどさあ
なんかいい手段ってないのかな?

雰囲気としてはこんな感じのが書きたいんだけど・・・・おらの頭じゃうまく書けんだ・・・・
foreach(var o in listOfObject){
try{ 例外処理以外では対処が難しい怪しい処理(o); }
catch{ 例外が起きた項目だけlistOfObjectから消したいが、ちゃんとforeachも回って欲しい(); }
}

417 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 22:02:58.03 ID:MllfoE8V0.net]
新しいList<T>作ってcatchしたときにAddして
foreach終わった後でRemoveしていく

418 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 22:04:41.49 ID:4Fr35pSP0.net]
>>410
foreachじゃなくfor (i = listOfObject.Count; i > -1; i--)とかじゃだめなのか
頑張ってforeachにしてもめんどくさくなるだけの気がする

419 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 22:04:44.06 ID:MllfoE8V0.net]
var erroredItems = new List<Hoge>();
foreach (var item in originalList) {
try { ... }
catch { erroredItems.Add(item); }
}
foreach (var item in erroredItems) {
originalList.Remove(item);
}

420 名前:デフォルトの名無しさん [2019/04/19(金) 22:09:40.78 ID:5QVRwjzm0.net]
ありがとう
こうやってやるもんなのか

421 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 22:27:07.32 ID:i0tIRf8t0.net]
listOfObject.RemoveAll(obj =>
{
  try
  {
・・・・・・なんか処理
    return false;
  }
  catch
  {
    return true;
  }
});

422 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 00:02:36.27 ID:/zNBD6gY0.net]
リストに追加前にtry処理したらダメなん?
それができないなら俺も415のやり方が良い

423 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 00:10:17.26 ID:4fcRoJkza.net]
public class MyUtil {
public static bool Try(Action a) {
try { a?.Invoke(); return true; }
catch { return false; }
}}

var b = a.Where(x => MyUtil.Try(() => ThrowableMethod(x)))
.ToList();

424 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 06:45:01.92 ID:eu9xvtsyM.net]
>>408
ガッ



425 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 06:45:18.46 ID:eu9xvtsyM.net]
>>409
ガッ

426 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 08:09:20.70 ID:u/QGNgma0.net]
このスレ的にはぬるぽではなくぬるりなのか。エロいな。

427 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 08:43:35.43 ID:ShWYWHRt0.net]
配列のソートのアルゴリズムが難しくて覚えられないんですが
簡単な書き方はりますか?

428 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 08:52:13.85 ID:tgvbScEyM.net]
>>421
プログラミングには適性があります。
貴方には向いていません。

429 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 09:08:29.42 ID:Q85hwvCt0.net]
>>410
foreach(var o in listOfObject){を
foreach(var o in listOfObject.ToArray()){
と配列にコピーしてから実行するのが定石です
そのループの中では既に列挙は終わっているから
listOfObjectにAddしてもRemoveしても例外は発生しないし列挙の順番にも影響を与えません

430 名前:デフォルトの名無しさん [2019/04/20(土) 09:12:26.10 ID:Q8Lkjfvy0.net]
>>421
一度リストで書いて、配列だとどう書くだろう?と考える。
アルゴリズムって基本リスト前提だからね。

431 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 09:15:16.95 ID:dmSDGLr5a.net]
>>424
いやソートアルゴリズムの殆どは特定のインデックスに対するランダムアクセスにO(N)を仮定するから配列前提だぞ

432 名前:425 mailto:sage [2019/04/20(土) 09:15:47.20 ID:dmSDGLr5a.net]
間違えたO(1)

433 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 12:09:52.47 ID:IppyQHdna.net]
>>421
今時そんなの覚える必要あんまりない気もするけど、
試験勉強ならがんばって覚えるしかないね

>>423
そもそも列挙と同時に削除をするって発想が筋悪。
別に列挙後ゆっくり削除すりゃあよい訳で、>>413がやってるように2つを分離する方が
考え方として自然で分かりやすいと思うけどね

434 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 12:52:51.24 ID:XrXcMVKPd.net]
>>415が一番シンプルだな



435 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 13:49:32.83 ID:ajzSwZvNd.net]
処理と例外が出たものを除去は別の仕事だから処理も分離してるほうが好き

436 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 13:51:03.66 ID:4fcRoJkza.net]
そもそもフィルタかけて何に使うんだ?

437 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 13:53:51.78 ID:LQSO4VHxd.net]
>>415が質問者のしたいことにドンピシャなのに初心者スレだからラムダ式にアレルギーある奴が多いのかな

438 名前:デフォルトの名無しさん [2019/04/20(土) 14:01:01.21 ID:bN8wmmjE0.net]
一番まともな解答にはレス付けないのが2ちゃん式

439 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 14:06:22.07 ID:axr9T2Wu0.net]
>>431
>>410の処理の目的が条件に合わない要素の削除なら>>415がシンプルで良いけど、
全ての要素に処理をするのが目的で削除はおまけって場合は、>>415だと本来の目的が分かり辛い。

440 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 14:19:22.63 ID:rcvSJkam0.net]
まず、2分探索を、2分ヒープで作れば?
O(log N)

2^10 = 1,024 だから、千のデータを、10回で探索できる。
2^20 = 百万 のデータは、20回!

リストは、次の要素しかわからないから、ランダムアクセスは、O(N) になる。
例えば、1から5を見つけるのに、1,2,3,4,5 と、リンクをたどらないといけない

O(1)にするには、アドレスは計算式で求められるものだけ。
各要素が4バイト使うなら、1が100番地として、5は116番地みたいに

441 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 16:56:48.87 ID:ShWYWHRt0.net]
>>427
覚える必要ないんですか…List型のソートメソッドを使っていても後々問題にならないですかね

442 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 17:40:05.04 ID:tqoqa3JD0.net]
>>435
基本的なデータ構造とアルゴリズムは一通り理解して自分で書けるようになっておくといいぞ。
標準的な物はライブラリ等で用意されているから実際に業務等でコードを書くときはそれを使うが、独自の問題の解法を自分で考える際に、適切な速度や使用リソース量と工数の兼ね合いで良い方法を選択するには、基本は一通り押さえておく必要があるよ。

443 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 20:18:25.55 ID:zIfu5btc0.net]
必要な時に必要なものを覚えるだけでOK
最初から全部覚えようとしなくてもいいよ

444 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 20:23:09.94 ID:qqngOIWj0.net]
ソートに関しては基本情報処理技術者試験の教科書でも読めばいいんじゃないの



445 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 21:14:17.27 ID:f5BR4Kwsa.net]
ソートは自分なりに考えてlコードを書いてみてその後にいろいろ学ぶと勉強しやすい

446 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 08:02:20.34 ID:qTT7Abroa.net]
自前で書くソート処理と、.NET Frameworkに実装されてる(Microsoftのプロフェッショナルが実装した)ソート処理、
どっちがより高速でバグが少ないと思う?
https://referencesource.microsoft.com/#mscorlib/system/array.cs,d076876f5fbf4eec
↑ここから先に書かれている処理よりも優れたソート処理を自分で書けるならともかく、
そうでなければおとなしく出来合いのソート処理を利用するほうが無難だと思うけど

447 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 09:21:47.18 ID:enjRZRrv0.net]
>>440
出来合いのソート処理を利用するなとか誰か言ってんの?

448 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 09:22:37.85 ID:F9kXeXwV0.net]
独習3版読んでないとーしろはqueueも実装できないし、回帰とかも理解しないんだろ。

449 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 09:39:42.10 ID:+WROkW6ha.net]
>>440
初心者がソートを勉強しないと自分の書いたコードがなぜ遅いかわからない

ソートが魔法か何かで何でも一瞬で並び替えられると思ってしまうと終わり
そこから進展はない

ソートの回数を減らすように考えたりソート自体を行わないでうまく処理することを学ばないといけない

450 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 09:43:13.42 ID:cNLTxFDL0.net]
ソートがボトルネックになった時に最適化を迫られたら弄るしかないじゃんね

451 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 09:50:14.96 ID:+WROkW6ha.net]
ソートがボトルネックになったらじゃなくて普通にソートを使うときには必ず気に掛けるべき

ループの中にソート入れてるコードがあったりする
ループ出た後に一度やればいいだけなのにと思うがそういう所に思いが至らないんだろう

452 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 10:02:50.79 ID:9BhkjmpP0.net]
今なんねーよ流石に

453 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 10:09:09.80 ID:+WROkW6ha.net]
メソッドの中でソートして戻り値返してるのにもらった側でもソートしたりとか
無駄なことをする可能性はどこにでもある

他人に見られたときにこいつ馬鹿だなと思われないようなコードを書く練習をしよう

454 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 10:17:01.49 ID:HfCJ1F6L0.net]
listのsortメソッドって安定ソートだっけ?



455 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 10:19:40.66 ID:8e51ow7Fa.net]
>>444
それは細かい最適化よりも設計を見直すべきだと思うよ
物事を大域的に見ることができず小手先のハックだけでなんとかしようとするのはプログラマが陥りがちな非常に悪い癖だから注意

456 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 10:24:24.53 ID:+WROkW6ha.net]
小手先のハックじゃなくて基本だろ

どこでソートするかなんて基本中の基本

457 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 10:25:31.30 ID:+0R+dzN2M.net]
無意味な仕事を無くすように働きかけるのではなく、無意味な仕事を無駄に最適化しようとするのは低学歴な意識高い系プログラマあるある

458 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 11:39:31.85 ID:cgZSyzeqa.net]
>>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は安定ソート

459 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 12:31:18.60 ID:3jwnQLuZ0.net]
ソートはプログラムを覚えるために勉強するもので
実用上はライブラリ使えばいい

ただ、勉強するネタとしては割と上質なもの

460 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 12:34:57.35 ID:y1/myRC20.net]
(回答する方も)初心者スレらしくていい流れだね

461 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 12:46:19.25 ID:WZ0UQqME0.net]
こういうの、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]);
}
}

462 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 12:51:36.48 ID:9BhkjmpP0.net]
まだ、そんな産廃機能いじってんのか

463 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 13:00:01.62 ID:cgZSyzeqa.net]
>>455
https://ufcpp.net/study/csharp/sp_thread.html#lock
lock文はMonitor.EnterやMonitor.Exitを使った糖衣構文であって
Monitor.Enterでロックを取得する(=既にロックされているなら、それが解放されるまで待つ)
例示コードではTask中ではlockしているもののConsole.WriteLine箇所はlockがないので、すぐに実行される

464 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 13:12:13.25 ID:6I4G/mIH0.net]
>>455
lockの使い方が間違ってる(>>457)のと、Task.Delay()の使い方が間違ってる。
Task.Delay()は通常awaitして使うがlockステートメント中では使えないので、Task.Delay().Wait()するか代わりにThread.Sleep()にする。
後、Task.Run()で作ったタスクが実行開始されたか考慮していないから、大抵はConsole.WriteLine()が先に実行される。



465 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 14:40:03.19 ID:T6P0EJpRd.net]
>>441
俺だよ俺

466 名前:デフォルトの名無しさん [2019/04/21(日) 15:32:01.70 ID:WZ0UQqME0.net]
ありがとう、このコードだと欠陥だらけなのか・・・・
使用箇所ごとにLockが必要なのか、それとタスクより先に次の行が実行されてる可能性が高いのは全く気づいてなかった
ただ、
>Task.Delay()は通常awaitして使うがlockステートメント中では使えないので、Task.Delay().Wait()するか代わりにThread.Sleep()にする。
っていうのはどういうことなの?Lock外にスレッドを返されちゃうのかしら?

467 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 16:07:55.74 ID:i587kr5jd.net]
>>459
よおキチガイ

468 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 16:32:29.56 ID:RWXhngOc0.net]
>>460
Task.Delay()だけだと完了を待ってないから、実質無いのと同じ

469 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 17:35:25.00 ID:F9kXeXwV0.net]
>>460
ピーコックアンダーソンの非同期動画みてみればすぐに理解できるぞ

470 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 22:18:43.95 ID:rykfOnh80.net]
速度がどうとか言うんだったらc#なんか使うなよと少し思いました

471 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 22:35:33.45 ID:CLsKfNj20.net]
>>464
少しってなんだよ!

472 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 23:52:50.47 ID:SWXjVSz30.net]
>>465
a little

473 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 04:23:42.26 ID:29e/0Uiq0.net]
じゃあ残りの大半は何を思ってたの

474 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 19:50:45.64 ID:DglGSvcP0.net]
ソートってポインタやmalloc, memcpyとか使ってこねくり回すのが楽しいのにC#だとイマイチだよね



475 名前:デフォルトの名無しさん [2019/04/22(月) 20:39:27.38 ID:Xu5D3g840.net]
独自に作成したユーザコントロールを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();

476 名前:469 [2019/04/22(月) 20:40:58.08 ID:Xu5D3g840.net]
ちなみに私が試したのはvisualStudioの2017です

477 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 20:42:29.96 ID:5zGuWDFU0.net]
c#だと遅くて無理みたいな高尚なプログラム触ってないからよくわからん
cppとc#でどれくれい違うん?

478 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 20:52:55.67 ID:doLks5OSd.net]
>>471
何するかによるし言語仕様理解せずにコーディングすればC++だろうがC#だろうが遅くはなる
早くしたけりゃどの言語だってコンパイラが吐くコード見ろになるし極論アセンブラしてろになる
シビアな演算速度求められるようなソフトじゃなきゃ気にするような速度は無い
個人的にいろいろ開発してて速度面で困ったことはない

479 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 21:35:41.32 ID:puVU3XKCM.net]
特定のアプリを監視して表示された文字(画像)をテキストにするアプリ作ったけど
c#だとチェックに1秒、c++とGDIのDLLだと0.01秒とかそんな感じだった

c#で作って必要ならc++にコンバートするのでいいと思う

480 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 21:59:37.22 ID:a2wjQuhnM.net]
>>468
unsafe使えば

481 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 00:01:21.36 ID:5LmBAPnu0.net]
画像処理とかその部分はunsafeとかcだろ。それぐらいは当たり前

482 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 00:14:05.59 ID:Bc6Ot9Tr0.net]
別にC#でいくらでも早くできるけどそれしないでC++より遅いってそりゃそうだよねとしか
GCの恩恵受けてunsafe使わずセーフティな状態でしょ
突き詰めたC++と突き詰めたC#なら.NETで動く分C#が不利なのは仕方ない
突き詰める必要がない部分で恩恵を受けられるんだから、処理速度以外にメリット感じないなら速い言語やればいい
言語なんて所詮道具なんだから適材適所

483 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 00:15:59.36 ID:lAbUfbw70.net]
sleepが1ms単位指定なのに平気で30msくらいかかったりする

484 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 00:21:34.72 ID:Qu51xl5v0.net]
>>477
Windowsの仕様なのでC#と関係なく発生するよ



485 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 00:22:35.63 ID:1xhRm/Xtd.net]
OSの内部クロックのせい

486 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 02:07:58.81 ID:TPVsn91QM.net]
>>473
そりゃあおまえさんのコードが糞なだけや

487 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 02:09:14.72 ID:V6IaHlzqa.net]
OSにクロックはないでしょうw
いやスケジューリングとかタイムスライスとかそんなことが言いたいんだとは思うけど

488 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 02:35:38.55 ID:1xhRm/Xtd.net]
>>481
え…

489 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 07:53:20.75 ID:5v63vvPIa.net]
TickCountの事だと思う。

490 名前:デフォルトの名無しさん [2019/04/23(火) 11:11:38.25 ID:D0U8cwP90.net]
awaitのついた文の次の文を実行する際に、await前と同じスレッドに帰ってきてもらうことってできないの?

491 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 11:25:52.45 ID:NBcK336D0.net]
元のスレッドがそういうことできる機能を持ってればできるよ
WinFormやWPFのGUIスレッドはメッセージループで実現してて
それらの場合はGUIスレッドでawaitすればGUIスレッドに戻ってくるのが既定だし

492 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 12:18:02.90 ID:m6tbNaeWM.net]
Pythonでカラー画像をRGBごとに分割して出力するスクリプトを書いたんだけど、
opencv使わずにC#でも出来るのかな?
C#でもnumpyみたいなの無いの?

493 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 12:20:58.93 ID:4ETsFZLA0.net]
どんだけ馬鹿なんだよ

494 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 13:00:40.13 ID:N4fQ2uHcd.net]
>>486
numpyってrubyですか?



495 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 15:41:23.24 ID:elaW7zc+0.net]
>>486
まんまは無いけど部分的にだったら何らかのライブラリで補完できるんじゃないかな?
これとか
https://numerics.mathdotnet.com

496 名前:デフォルトの名無しさん [2019/04/23(火) 16:29:44.88 ID:D0U8cwP90.net]
>>485
コンソールアプリ等だとなかなか難しいんかな

497 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 16:33:48.41 ID:EaCRsjQU0.net]
>>490
Task.WaitAnyとかでできんもんか?

498 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 17:58:47.89 ID:xFm0RmkHa.net]
>>484
いやいや最初から同じスレッドですからww
そもそも同一メソッド内で別のスレッドを起動することはあっても
実行中に途中のスレッドに切り替わるとかそんなのありえへんwww

499 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 19:05:14.26 ID:hvzt5+/sd.net]
>>492
しょうもない嘘をつくな

500 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 19:28:13.89 ID:2vLu2U8QM.net]
誤解が誤解を生む

仕様について理解が足りない

501 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 19:35:04.22 ID:xFm0RmkHa.net]
ネタじゃなくて本気で変な誤解してるのか...
メソッドの途中で行が変わると別のスレッドで実行されるとかそんな言語怖くて使えないよwww

502 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 19:36:05.31 ID:2vLu2U8QM.net]
お前は勘違いしてる

GUIとCUIで仕様が違ってる

503 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 19:50:14.81 ID:2vLu2U8QM.net]
await/asyncは単なるTask非同期処理を簡易的に書ける糖衣構文
次にawaitの次をどのスレッドになるかはその時の状態次第

GUIではそれでは困るのでデフォルトで同じスレッドが処理をするようにしてあるだけ

504 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:19:35.25 ID:xFm0RmkHa.net]
訳のわからん勘違いをしてるのはどっちだよ
自信満々で馬鹿じゃないマジで



505 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:30:14.95 ID:aIitEIPQ0.net]
https://ufcpp.wordpress.com/2012/11/12/asyncawait%E3%81%A8%E5%90%8C%E6%99%82%E5%AE%9F%E8%A1%8C%E5%88%B6%E5%BE%A1/

506 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:30:27.32 ID:PlCSQgU2M.net]
deligate

507 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:36:54.48 ID:iDnak3xha.net]
>>495
https://ideone.com/7wVOXT

508 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:41:16.72 ID:xFm0RmkHa.net]
勘違いをしているのは俺の方だった...
申し訳ないですw

509 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 21:04:08.70 ID:2vLu2U8QM.net]
すなおでいいんでない?

510 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 21:19:00.48 ID:7omDh/oid.net]
煽る時点で目糞鼻糞

511 名前:デフォルトの名無しさん [2019/04/23(火) 21:57:22.24 ID:D0U8cwP90.net]
同じスレッドに戻ってきてもらうのに、簡単な方法ってないのかな・・・・

512 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 22:10:23.58 ID:iDnak3xha.net]
>>505
>>490を見るに、コンソールアプリで特定スレッドで処理したいみたいだけど、どういった理由?
GUIなら、時間がかかる処理は別スレッドで、画面更新は絶対にUIスレッドで、といった使い分けがあるけど
CUIで特定スレッドを意識する理由がちょっと思いつかないんだ

513 名前:デフォルトの名無しさん [2019/04/23(火) 22:42:29.23 ID:D0U8cwP90.net]
>>506
WebAPIサーバを作りたく、その中で扱うデータについてトランザクション処理みたいなことをしたかったんです
通信関連でAwaitが多用されている中でも、データのロックをできるだけ減らしたい、またうっかりミスしてロック外に出ないでほしいと思ったんです

514 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 00:21:10.86 ID:9Dlmymg8a.net]
>>507
それを聞いても、「特定スレッドで絶対に処理したい」が主目標にはならない気がする
「ロックにReaderWriterLockSlimを使っていて、ロック取得と解放は同じスレッドで行う必要がある」のような状況ならまだ分かるんだけど
もしもこの状況であるなら、SemaphoreSlimでロックするようにすれば、WaitOneAsyncで待つスレッドと、Releaseするスレッドを別にできる(=間でawaitできる)
万一本当に何か理由があって特定スレッドで処理を続けたいのなら、Taskをawaitするのでなく.Wait()で待つようにすれば、スレッドは切り替わらなくなる

> うっかりミスしてロック外に出ないでほしい
これが「ロックを取得したけど、解放を忘れる」ことを指すのであれば
try {} finally {} や、ラップクラスを作ってIDisposable実装してusing() {} するのが対策になるかもしれない
取得と解放がメソッドを跨いだりするなら面倒くさくなるけど……



515 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 23:50:01.61 ID:1l/c830P0.net]
https://ideone.com/TM1zJh
if (ob.volume == volume)この部分なのですが
左辺は引数で取ったobのメンバ変数であることは分かるのですが右辺はどのメンバ変数なんでしょうか?
入門書のコードなのですが…

516 名前:デフォルトの名無しさん [2019/04/25(木) 23:52:47.61 ID:LJHMbymK0.net]
>>509
6行目






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<300KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef