ふらっと C#,C♯,C#(初心者用) Part148at TECH
ふらっと C#,C♯,C#(初心者用) Part148 - 暇つぶし2ch375:デフォルトの名無しさん
20/10/21 09:43:40.30 eNSg6QZpH.net
四捨五入の結果がおかしいのって自分だけかな・・・
decimal v = -0.0195m;
decimal rounded = Math.Round(v, 2, MidpointRounding.ToPositiveInfinity);
Console.WriteLine(rounded);
ってすると、小数点2桁までになるよう(小数点3桁目を)四捨五入するので
-0.02になるはずなのに、結果が-0.01になっちゃうんですけど・・・

376:デフォルトの名無しさん
20/10/21 09:56:42.42 lxmGvu010.net
>>367
Taskの中でlockする
URLリンク(docs.microsoft.com)

377:デフォルトの名無しさん
20/10/21 12:02:28.19 sg7OOy0L0.net
>>367-369
awaitで同期取ってるから問題ない
>>370
To Positive Infinityだから正数寄りになる
ゼロを基準にしたければMidpointRounding.AwayFromZeroを指定する
await(待つ)もそうだが、変な日本語のリファレンスよりも明快な解説が変数名に詰まってるんだからお前らはまずその単語をGoogle翻訳に掛けるべきだと思うわ

378:デフォルトの名無しさん
20/10/21 12:16:57.36 hl6LkBs90.net
>>372
いや
if(!locked){
実行
別タスクlockedのfalseを見て処理開始
 locked = true;
別タスク割り込まれたら困る処理開始
 await xxx.Task;←別タスクと衝突
 locked = false;
}
起こるじゃん

379:デフォルトの名無しさん
20/10/21 13:03:41.62 eNSg6QZpH.net
>>372
-0.01と-0.02の中間(MidPoint)である-0.015のときの丸め方(Rounding)として
「MidpointRounding.ToPositiveInfinity」を指定したつもりだったのですが・・・
MidPointじゃないときにも「ToPositiveInfinity」が適用されちゃうんですね・・・
JavaScriptのMath.Round()とおなじような(四捨五入される桁の数字が5の場合に
正の無限大の方向で丸める)四捨五入をしたかっただけなのですが、
関数を自作しないとだめみたいなので自作します。
お騒がせしました。

380:デフォルトの名無しさん
20/10/21 13:30:40.39 UaTtUbsy0.net
await絡みのときは、排他制御はSemaphoreSlim使うのが定番ですよ
URLリンク(www.atmarkit.co.jp)

381:デフォルトの名無しさん
20/10/21 13:44:12.17 RtxzEAIBa.net
四捨五入:わかる
銀行丸め:わかる
正の無限大の方向で丸める:何の意味があんのそれ?

382:デフォルトの名無しさん
20/10/21 13:52:03.73 xBoANC0iM.net
切り上げって知ってる?

383:デフォルトの名無しさん
20/10/21 14:15:10.32 sg7OOy0L0.net
>>374
それならこんな感じで簡単に作れるから頑張れ
static decimal[] table = new decimal[]{1E0m, 1E1m, 1E2m, 1E3m, 1E4m};
static decimal Round(decimal num, int pow) => Decimal.Floor((num * table[pow]) + 0.5m) / table[pow];
decimal num = Round(-0.015m, 2); // -0.01
>>373
普通にメインスレッドから叩いていればこうなるからな
if(!locked){ // thread 1
 locked = true; // thread 1
 await xxx.Task; // thread 2
 locked = false; // thread 1
}

384:デフォルトの名無しさん
20/10/21 14:19:07.15 lJjSrE40d.net
正負どっち方向に動くかわかんない変換より確実に方向がわかっている変換が必要なことはあるよ

385:デフォルトの名無しさん
20/10/21 14:26:27.71 RtxzEAIBa.net
-2.4 → -2
-2.5 → -2
-2.6 → -3
こういう丸めが意味を持つケースが一般的とは思えない
>>377
知らないのは君だと思うよ

386:デフォルトの名無しさん
20/10/21 14:32:15.81 lJjSrE40d.net
5捨6入って特定に分野では一般的な計算方法では?
俺は使わないけど

387:デフォルトの名無しさん
20/10/21 14:33:15.98 RtxzEAIBa.net
>>381
3.5 → 4
なんだよ

388:デフォルトの名無しさん
20/10/21 14:47:36.44 8k52si4D0.net
それでもう.NET5使ってええの?

389:デフォルトの名無しさん
20/10/21 14:52:13.96 v0oiVQF00.net
いいよ

390:デフォルトの名無しさん
20/10/21 15:00:31.64 5E7rZ8hS0.net
>>378
それが問題になるのは、そのifブロックが複数スレッドで実行されたときだからな

391:デフォルトの名無しさん
20/10/21 16:37:46.89 APVpE4AA0.net
>>378
はじめのlockedをみてるガードは別スレッドからのアクセスに対して無力だよ
そこはおk?
>>378の番号で言ったらThread3以上のスレッドからの話ね

392:デフォルトの名無しさん
20/10/21 17:36:18.89 sg7OOy0L0.net
>>386
つまりこういうのを危惧してるのか?
Task.Run(() => {
 if(!locked){
  locked = true;
  await xxx.Task;
  locked = false;
 }
});
だとしたらこんなのは仮定


393:に持ち出すのがそもそも間違い それ言い出したらフィールド操作するあらゆるメソッドで「並列で呼び出される可能性がある」とlock()で括らなきゃいけなくなってしまう



394:デフォルトの名無しさん
20/10/21 17:53:44.86 lxmGvu010.net
ifブロックがシングルスレッドでしか実行されない状況で
lockが必要な状況ってどういうの?

395:デフォルトの名無しさん
20/10/21 17:55:56.87 5E7rZ8hS0.net
元の質問がマルチスレッドでのロックに関する質問だと思うのだがな
このコードはスレッドセーフですか?
いいえ危険です
みんなが回答してるのはそういう事
このスレの趣旨や質問者のレベルを考えると妥当な仮定と回答だと思うぞ

396:デフォルトの名無しさん
20/10/21 17:58:26.66 5E7rZ8hS0.net
>>388
再入すればやばい気がしないでもない

397:デフォルトの名無しさん
20/10/21 18:02:52.19 sg7OOy0L0.net
元の質問って>>367だろ?
> async/awaitは同じスレッドに戻るからこんな単純なロックでも問題無い
「同じスレッドに戻る」を認識してるなら疑いなくtrueやん
ここで「でも別スレッドで動かしたら危険」と言うのは質問の前提を崩してる

398:デフォルトの名無しさん
20/10/21 18:14:17.17 MqdNiLmu0.net
崩してないな。

399:デフォルトの名無しさん
20/10/21 18:19:06.78 5E7rZ8hS0.net
そのawaitしてるのはasyncメソッドだから、メインスレッドからのみ呼ばれるとは限らん
つまりもどるのがメインスレッドだとは限らん
というの理解しているのならまあ大きなお世話だと言えなくもないが
あとフォームアプリじゃなければ、もとのスレッドに戻るも保障されないけどな

400:デフォルトの名無しさん
20/10/21 19:06:44.50 lxmGvu010.net
>>390
なるほど
ロックって言葉でちょっと意図を勘違いしてた
タスクが実行中ならもう1回呼ばれても実行しないようにしたいってことだったのか
タスクの中には他のスレッドと競合する処理はなく
ifブロックはUIスレッドでのみ実行されるという前提ならいいんじゃねって気がする

401:デフォルトの名無しさん
20/10/21 19:15:16.66 /GjtxlMb0.net
そもそも呼ばれないようにしろ

402:デフォルトの名無しさん
20/10/21 19:22:35.51 sg7OOy0L0.net
>>393
何か必死で調べたくさいこと言ってるが
asyncだから、って下りに無知が現れてるな

403:デフォルトの名無しさん
20/10/21 20:02:51.66 GqMp+oa10.net
>>367 の質問自体は「問題ない」が回答だけど、
そもそも質問の前提に危うさがあるんじゃない?
って感じではダメなんだろうか。

404:デフォルトの名無しさん
20/10/21 21:32:30.66 38qDfhYJM.net
>>339
まだ帳票開発したことないけど、やる機会があればDocurainってサービス使ってみようかなって思ってる

405:デフォルトの名無しさん
20/10/24 21:17:36.19 skFEsPcd0.net
for文で書き始めて、配列から要素を取り出すだけだからforeachに書き換えて、でもやっぱりiが必要になってfor文に戻すこと多くない?

406:デフォルトの名無しさん
20/10/24 21:32:32.75 //9fx+gF0.net
Index付きのSelect句で事足りる

407:デフォルトの名無しさん
20/10/24 21:50:33.27 878uww5f0.net
MoreLinqのIndex()がKeyValuePair<int, TSource>を返してくれる
簡単だから自分で実装してもいいけどライブラリ使うほうが管理含めて楽
foreach (var (i, x) in foo.Index()) {
Console.WriteLine($"{i}: {x}");
}

408:デフォルトの名無しさん
20/10/24 21:55:59.78 skFEsPcd0.net
そうなんだ

409:デフォルトの名無しさん
20/10/24 22:19:40.87 VOTutQQJ0.net
>>401
いや、これ書くぐらいならforで書くよな

410:デフォルトの名無しさん
20/10/24 23:15:08.92 GpR1sqnP0.net
>>403
たしかに

411:デフォルトの名無しさん
20/10/24 23:52:47.91 878uww5f0.net
またLinqバトル始まっちゃう感じ?

412:デフォルトの名無しさん
20/10/25 00:14:13.24 AkfEJdVF0.net
(index, value)と(value, index)でバグを作ってしまったから
Index拡張メソッドは控えることにした

413:デフォルトの名無しさん
20/10/25 00:16:36.51 wq/6wJQN0.net
>>406
それあるわ
他人のプログラムが前者で、自分は後者派だったからお互いえ?え?となったわ

414:デフォルトの名無しさん
20/10/25 00:24:48.70 lDlwJ32m0.net
そもそもforeachなんて作ったやつの脳みそ腐ってんだから仕方ない
何回回すのかもコードからわかんねーし
どう回したいのか変わると一気に産廃
そもそもforeachなんて産廃コード使うなよ
変更に激弱だろ
あ、インデックスN番目は処理したくない
→産廃
あ、後から処理しないと
→産廃
あ、奇数と偶数で処理変えないと
→産廃
あ、こっちの配列もみながらいっしょに処理しないと
→産廃
もうあれね
コードレビューでforeachを見つけたら
修正させるぐらいでいい

415:デフォルトの名無しさん
20/10/25 07:44:18.56 yVRP623B0.net
インデックスを考えるような用途でforeach使うほうが悪いだろ。
偶数と奇数で処理変えるのも意味わからんし、イテーレタを一つずつって変更に強いと思うけど。
全部Linqでなんとかなることだけどさ。

416:デフォルトの名無しさん
20/10/25 08:02:57.19 bN5bdnqa0.net
紅白に塗るとかあるよね

417:デフォルトの名無しさん
20/10/25 09:10:32.90 WAUUQolqM.net
偶数の場合こう処理します!
プログラム解説サイトとかでありがち。
実務でそういうのに出くわしたことほぼない。

418:デフォルトの名無しさん
20/10/25 09:22:04.05 lDlwJ32m0.net
>>411
あるよ
datagridviewとか見にくいから偶数と奇数で色変えてくれってありがちじゃん

419:デフォルトの名無しさん
20/10/25 09:24:16.14 lDlwJ32m0.net
2行でワンセットになるデータで
上側だけ、下側だけって処理するときもお世話になるじゃん
どんだけ組んだことないんだよ

420:デフォルトの名無しさん
20/10/25 09:26:32.27 XkKy2l3/0.net
WPFみたいな割と最近のライブラリなら、
自前で偶数判断なんてせず交互に色を変えてくれる。

421:デフォルトの名無しさん
20/10/25 09:36:22.60 w//Xf3xfd.net
>>412
それはデータ行に対してやることじゃない。
行に対して表示非表示の制御加えるだけで破綻する。
表示中の画面の描画関数でやることであって、行をイテレートしてやることじゃない。
>>413
2行1セットなら、そのクラスを作って、1インスタンスごとに制御するのが王道でしょ。
どんだけ空想上の「組んだこと」で話してんの?それともボンクラなの?

422:デフォルトの名無しさん
20/10/25 09:37:37.76 lDlwJ32m0.net
>>415
え?いやでも必要じゃん
そんときforeach使わないよね

423:デフォルトの名無しさん
20/10/25 09:40:44.86 w//Xf3xfd.net
>>416
必要じゃないし、パース時点ではパーサ使うし、中では極力foreach使うよ。
2行で1アイテムが3行で1アイテムになったときにModulo全部変えてくの?
頭悪すぎるコーディングでしょ。

424:デフォルトの名無しさん
20/10/25 09:47:07.55 lDlwJ32m0.net
>>417
は?
いや客は単に奇数と偶数行で色変えてくれって言ってるだけやで

425:デフォルトの名無しさん
20/10/25 10:01:32.46 yVRP623B0.net
>>418
画面側でやること。
描画関数には何行目かそもそも渡ってくるからループなんぞする必要もないだろ。
それを客が言ってるからってデータでやるのは手早くて汚い方法取ってるか、それしか知らないって事じゃん?

426:デフォルトの名無しさん
20/10/25 10:29:58.35 j2oMvxGH0.net
>>419
うーん、確かにdatagridviewで偶数と奇数だとそれだけだなw
俺が悪かった

427:デフォルトの名無しさん
20/10/25 10:32:46.22 j2oMvxGH0.net
ループで奇数と偶数は別の描画ライブラリ使っててそっちの話だった
すまん

428:デフォルトの名無しさん
20/10/25 10:35:11.15 yVRP623B0.net
なんか俺も言い方悪かったな。すまん。

429:デフォルトの名無しさん
20/10/25 10:36:49.62 MD0uz1BLa.net
最近のC#ならTupleで書けるからindexつきSelectのほうが短く書けて楽かな
foreach (var (item, index) in items.Select((x, i) => (x, i)))
{
Console.WriteLine($"{index}: {item}");
}
for (var index = 0; index <= items.Length; i++)
{
var item = items[i];
Console.WriteLine($"{index}: {item}");
}
後者の書き方に仕込まれてるバグを目視だけで見つけるのはやっぱりしんどい

ていうかDataGridViewなら奇数行・偶数行のスタイルをそれぞれ別に設定できたはず
なんでそれ使わないでロジックで制御するんだろう

430:デフォルトの名無しさん
20/10/25 10:46:49.59 WAUUQolqM.net
>>412
そんな偶数奇数で色変えるとかはコントロール側で制御して、各機能では意識せずに作れるようにしてる。
有償のものは標準でそういう機能ついてる。
あなたのところは各機能でそんなことさせてるの?
ほとんどのシーンでforeachは使えるしforより可読性も高い。
C上がりのひとは頑なにfor文つかうよね。

431:デフォルトの名無しさん
20/10/25 10:48:09.55 WAUUQolqM.net
とか書いてたら話終わってた…

432:デフォルトの名無しさん
20/10/25 10:57:42.82 ad5S/9r+d.net
BASIC上がりの俺は頑なにforを使う

433:デフォルトの名無しさん
20/10/25 11:43:12.08 6wSnm1o40.net
フォームアプリを作成していて、
作ったタブページを一時的に表示させないようにしたいのですが
(開発者用なのでユーザーから隠したいタブページ)
invisible設定とかないのでしょうか?

434:デフォルトの名無しさん
20/10/25 11:54:01.85 bN5bdnqa0.net
visibleをfalseにしる

435:デフォルトの名無しさん
20/10/25 13:16:25.56 FzqccguI0.net
elisp上がりだとdolistか

436:デフォルトの名無しさん
20/10/25 13:18:15.58 MD0uz1BLa.net
>>427
URLリンク(dobon.net)

437:デフォルトの名無しさん
20/10/25 13:20:19.02 M7kzCKlu0.net
>>406
拡張メソッドの問題ではないような・・・
それはいいとして順番だけど
map/reduce系のAPIはindexがオプショナルなので引数の順番は(value, index)が一般的で
index付きのtuple的なもの返す場合は(index, value)で返すほうが一般的
自分の知ってる言語はどれもそうなってるよ

438:デフォルトの名無しさん
20/10/28 07:40:35.09 qnSD+cEJ0.net
C#で作られた2つの実行中プログラムの間でデータの受け渡しをするならどういう方法が考えられますか?
csvやデータベースくらいしか思いつかず

439:デフォルトの名無しさん
20/10/28 08:05:19.87 68kYXJV6d.net
>>432
ポート開けて通信する。
プロセス間通信する。
のどっちかかな。
Core化するなら、ポート開けて通信したほうが良いかも。
embedIOとか使うとhttpサーバがびっくりするほど簡単に立てられるよ。既存アプリの上に。

440:デフォルトの名無しさん
20/10/28 08:10:45.70 geAq98MI0.net
GUI同士ならSendMessageとかも

441:デフォルトの名無しさん
20/10/28 08:41:56.32 cCglm1Caa.net
>>432
小さいデータならソケットやパイプ
大きいデータなら共有メモリ
スピードを問われないならファイルやDBでもいい

442:デフォルトの名無しさん
20/10/28 09:08:45.24 Nt7id6vD0.net
Web API

443:デフォルトの名無しさん
20/10/28 09:13:36.29 DyAY2wG10.net
WCFの後継とかどうすりゃいんだ

444:デフォルトの名無しさん
20/10/28 09:22:47.39 Nt7id6vD0.net
>>437
URLリンク(github.com)

445:デフォルトの名無しさん
20/10/28 09:28:12.57 3bmwn6Ba0.net
WCF 開発者に gRPC を推奨する理由
URLリンク(docs.microsoft.com)

446:デフォルトの名無しさん
20/10/28 22:35:34.95 bWE1nSHc0.net
うちにはRemoting使ってて詰んでるレガシーがある

447:デフォルトの名無しさん
20/10/29 08:48:31.11 GkpRv4Lwa.net
MSMQという手も

448:デフォルトの名無しさん
20/10/29 12:27:01.55 VHRGFK1gM.net
MQTT

449:デフォルトの名無しさん
20/10/29 19:28:53.48 obW6sm8G0.net
>>435
共有メモリというのは知らなかったです
勉強してみます
ありがとうございます

450:デフォルトの名無しさん
20/10/29 20:32:35.12 ytciXGtBp.net
お前が好きだと今日言うメモリー
気持ちを交換共有メモリー

451:デフォルトの名無しさん
20/10/29 21:27:35.00 fAmed0Klr.net
動的なJsonを作成したいのですが、いい方法ありませんか?
今考えてるのは
1. Jsonシリアライズ用クラスを用意(複数)
2. 処理部で使用するタイミングで1.クラスnew
3. 2.でnewしたクラスのみ匿名型オブジェクトに突っ込む
4. 3.をシリアライズ
これで一応は出来るんですが、3.で分岐多くなるのが非常に汚くて。

452:デフォルトの名無しさん
20/10/29 21:28:58.34 fAmed0Klr.net
できれば使用したタイミングで、都度匿名型に追加できればいいんですが、実装方法わからず…

453:デフォルトの名無しさん
20/10/29 21:32:20.78 fAmed0Klr.net
都度匿名型に追加ってのはあくまでイメージですはい。

454:デフォルトの名無しさん
20/10/29 21:37:54.98 w+K6PrrE0.net
DynamicObjectとか使えばよかったような

455:デフォルトの名無しさん
20/10/29 21:45:46.98 HAxtGf170.net
いまいちよく分からんが、Dictionary<string, object>だとダメなの?

456:デフォルトの名無しさん
20/10/29 22:08:26.61 fAmed0Klr.net
>>448
あ、何かできそうな予感。試してみます。
>>449
使用の度にAddすればって事ですね。
…何かこれもできそうな予感…試してみます。

457:デフォルトの名無しさん
20/10/29 22:56:17.00 28O5aXgi0.net
>>426
Python が最初だとどうなるんだろうな

458:デフォルトの名無しさん
20/10/30 05:36:06.93 Of4L3rez0.net
スタティックライブラリーを使うためDLLにしているのだが、関数ポインタを引数にする関数があって困っています。
C#の関数をその関数ポインタに結びつける方法ありますか?

459:デフォルトの名無しさん
20/10/30 07:28:47.86 NoXL5vik0.net
>>452
関数ポインタ引数に対してはdelegateをそのまま渡せばいいよ
LPCTSTR引数に対してstringをそのまま放り込んでも成立するのと同様にdelegateもPVOIDとして解釈される
つまりそのDLLで使う関数の型のdelegate型を作って渡せば良いだけ

460:デフォルトの名無しさん
20/10/30 07:32:51.69 NoXL5vik0.net
ちなみにC#9だか10からは生の関数ポインタも扱えるって聞いた

461:デフォルトの名無しさん
20/10/30 09:43:54.51 Of4L3rez0.net
>>453
ありがとうございます。

462:デフォルトの名無しさん
20/10/30 09:48:27.53 +BFmFpNo0.net
関数ポインタをDLL側が保持する(寿命が関数から返ってくるまでより長い)場合は
マネージ側もその間そのdelegateインスタンスを保持しとかないとだめだぞ

463:デフォルトの名無しさん
20/10/30 12:16:19.25 7MkyV1CpF.net
>>445
msgpack

464:デフォルトの名無しさん
20/10/30 23:02:16.07 YXzIJ61G0.net
>>454
どどど、どう書くの?

465:デフォルトの名無しさん
20/10/31 12:17:23.59 8cswqFVg0.net
>>458
URLリンク(ufcpp.net)

466:デフォルトの名無しさん
20/10/31 12:27:36.76 fxcwqRC2F.net
>>459
URLリンク(www.youtube.com)

467:デフォルトの名無しさん
20/10/31 20:35:43.78 jPO/JqMva.net
最近最新版がプレリリースされたwebView2って、C#ではまだ使えないんでしょうか?
URLリンク(docs.microsoft.com)
上記サイトに習ってnugetからインストールし、1日いろいろ試して全く動作しませんでした。
ソリューションエクスプローラーの参照の、webView2をダブルクリックすると、「このプロジェクトは利用不可能き、またはビルドされていないため、オブジェクトブラウザで表示できません」と表示されます。
webView2もVisualStudioもMicrosoft Edgeも最新版をインストールしてもダメでした。

468:デフォルトの名無しさん
20/10/31 20:37:54.93 jPO/JqMva.net
間違えました。
「このプロジェクトは利用不可能か、またはビルドされていないため、オブジェクトブラウザでは表示できません。」の間違いです。

469:デフォルトの名無しさん
20/10/31 20:40:31.48 4IwElBvx0.net
WindowsFormsを勉強しはじめたんだけど
テキストボックスに処理の状況を逐一表示させたい場合ってどうやるのが正しいやり方?
とりあえずこんな感じで作ってみたら動くけどなんか違う気がする
URLリンク(ideone.com)

470:デフォルトの名無しさん
20/10/31 20:55:29.78 Pj54f0iv0.net
ログ的な事をやりたいんだったらListBox使う方が良いよ
一定行数に達したら先頭(最終)行を削除とかも簡単に実装できる

471:デフォルトの名無しさん
20/10/31 21:00:31.63 +32PkI4zM.net
>>463
allocconsole してconsole に出力するの吉

472:デフォルトの名無しさん
20/10/31 21:00:33.78 1joLaKYt0.net
>>463
それでも良いと思うけどConsole.WriteLineみたいに強制改行関数作っといたら?
あとC#自体のアドバイスになるけど、"処理しています……" + "\r\n"は+いらないから"処理しています……\r\n"で良いし
変数挟むときは$を付けて{}で囲む$"あと{i}秒\r\n"って書き方は各プログラミング言語の中でもトップクラスに便利だから覚えておいた方が良い

473:デフォルトの名無しさん
20/10/31 21:34:45.65 2P+i0kOV0.net
>>463
>>466の言うように文字列とか送るだけで表示するメソッド作っておくといろいろ後付けで改変しやすくなる
RichTextBox使えば状況に応じて文字列ごとに色やフォントを変えることもできるし
あとAppendTextは自動でTextBoxをスクロールしてくれる便利なものだけどメソッドの先頭で念のためFocus()かSelect()しておくと確実
フォーカス当たってないと自動スクロールしてくれないので

474:デフォルトの名無しさん
20/10/31 21:59:39.41 b+5qg5vxa.net
>>463
何に不満や違和感を感じてるのか具体的に言わないと誰も答えようがないよw
プログラミングの分野に限らず他人に自分の意図を正確に伝えることってほんと大事

475:デフォルトの名無しさん
20/10/31 22:07:28.55 1TbrihkJ0.net
>>463
その方法が正攻法だと思って良い
あとは他の人のアドバイスのように便利なメソッド作って使いやすくすればいいと思う

476:デフォルトの名無しさん
20/10/31 22:21:19.47 4IwElBvx0.net
>>464
ありがとう。使ってみる
>>465
今回やりたい事は違うけどこれはこれで知りたかった事だ。ありがとう
>>466
改行用の関数をForm1の方で作っといてdelegateかfuncで処理用クラスに渡す感じかな?
$マークのやつそういう使い方だったんかサンクス
あと改行だけ分けたのは元のコードで「str + “¥r¥n”」の形だったのを直した名残だわ
>>467
フォーカス当たってないとスクロールしてくれないのか
なんか動いてくれないと思ってたんだよな

477:デフォルトの名無しさん
20/10/31 22:39:35.75 syXSgGXN0.net
>>470
積極的にコンソールを使う意図が無いのであれば、AllocConsoleよりも
System.Diagnostics名前空間のDebug.WriteLine()やTrace.WriteLine()を勧める
VSのデバッグ出力画面やDebugView++等のアプリで見れる

478:デフォルトの名無しさん
20/10/31 23:14:04.52 +32PkI4zM.net
コンソールにはコンソールのメリットが
あるからなぁw

479:デフォルトの名無しさん
20/11/01 00:44:45.18 TS2lQNKS0.net
>>461
本当に書かれている通りにやったの?
・WebView2はプレリリース版でなければならない(今だと1.0.674-prereleaseかな?)
・EdgeはCanary版でなければならない
なんとなく、WebView2のプレリリース版でなく安定版の方を入れてそうな予感

480:デフォルトの名無しさん
20/11/01 08:45:28.58 R1ZyiuLQa.net
>>473
ありがとうございます!
通常版のedgeをアンインストールして、edgeのcanary版をインストールして、再度通常版のedgeをインストールしたらできました!
2種類のedgeがインストールしてないと動作しないんですね。
webview2を使う場合は、全ユーザーも、canary版のedgeをインストールしていないと使用できないんでしょうか?

481:デフォルトの名無しさん
20/11/01 16:17:54.64 hv15RbEG0.net
まあまだ.NET版はpereleaseだからな

482:デフォルトの名無しさん
20/11/01 18:01:16.91 CXNCiFbu0.net
WinUI版のWebView2使ってみたが、マウスの戻るボタンが効いたのに感動したわ
コレをどうにかするためにどんだけ苦労したことか

483:デフォルトの名無しさん
20/11/02 07:35:20.34 kZXAdCJzM.net
クラスの自動プロパティについて質問
自動プロパティがない頃は、頭にアンダースコア(_hogeHoge)をつけたprivate変数を用意しておいて、
コンストラクタやメソッドではそちらを読み書きしていた。
でも自動プロパティができたら、アンダースコアのprivate変数は不要になった。
これまで何も考えずに、コンストラクタやメソッドではプロパティそのもの(HogeHoge)に対して読み書きしているんだが、これでいいんだろうか…
それともクラス内部で読み書きが発生する場合は自動プロパティ使わないほうがいい?

484:デフォルトの名無しさん
20/11/02 08:40:37.73 J1SwCvmZ0.net
getterに副作用持たせてるの?

485:デフォルトの名無しさん
20/11/02 08:54:07.90 kZXAdCJzM.net
>>478
何も考えずにpublic string HogeHoge{get;set;}しか書いてない

486:デフォルトの名無しさん
20/11/02 12:37:17.75 NZsZuJ1ia.net
>>477
何を悩んでるのか分からない。
同じ機能なら簡潔に書けるほうがいいに決まってるので
自動実装プロパティーで必要な機能が過不足なく実現できるなら
自動実装プロパティーを使わない理由はないんじゃないの?
別にpublicやinternalなメンバーにクラス内からアクセスしてはいけないなんて変なルールはないよw

487:デフォルトの名無しさん
20/11/02 12:39:05.37 kZXAdCJzM.net
>>480
そのそんなルールはないよというのが聞きたかった。
ありがとう。

488:デフォルトの名無しさん
20/11/02 13:48:19.73 iMasp6IMD.net
c#にも、cでいうプログラミング言語Cみたいなバイブルと言える本はありますか?

489:デフォルトの名無しさん
20/11/02 17:57:45.09 9N3uvmex0.net
どんどん言語がアップデートされていってるからなあ

490:デフォルトの名無しさん
20/11/02 18:02:08.07 kfCt0hOOd.net
googleかmsか
ufcppでもいいと思うけど

491:デフォルトの名無しさん
20/11/02 18:19:04.77 8cdEIkcV0.net
K&Rみたいな読んでるとドヤれる(気がする)ようなのはC#ではないよね

492:デフォルトの名無しさん
20/11/02 19:33:36.63 QcicrBn8M.net
ちょっと前までrtfでインストールされてたじゃん

493:デフォルトの名無しさん
20/11/02 21:55:02.37 KMJSmLX80.net
>>482
「プログラミング.NET Framework 第4版」Jeffrey Richter 著、藤原 雄介 訳 

494:デフォルトの名無しさん
20/11/02 22:06:56.80 8/l8UOwbr.net
ガチの素人で趣味でプログラミングを始めました
フォントファミリー名を取得してフォントファミリー名一覧コンボボックスを作成、そのあとコンボボックスで選んだフォントファミリーの名前で横においてるテキストブロックのフォントを変えるプログラムを作ってるんですけど、選択したコンボボックスからフォントファミリー名の取得はできてると思うんですがテキストブロックのフォントが変わりません
どうすればうまくいきますか?

495:デフォルトの名無しさん
20/11/02 22:27:22.35 onwGyibB0.net
pictureBox1.Image = @"パス";
PictureBoxで画像を表示している時、別の画像に切り替えるときはDisposeしてからパスを変更したほうがいいでしょうか?

496:デフォルトの名無しさん
20/11/02 22:31:57.70 8/l8UOwbr.net
もしかしてフォントファミリーは文字型変数じゃ指定できないの?

497:デフォルトの名無しさん
20/11/02 22:51:52.41 IceSdPzo0.net
>>490
たぶんFontFamilyの名前が間違っている
>>489
メモリが一時的に積みあがっていくけど適当なところでガーベージコレクタが動くはずだから問題ない
それはDispose()というかGC.Collect()で解決する

498:デフォルトの名無しさん
20/11/02 22:54:08.63 NZsZuJ1ia.net
>>488
適当にやってみた
public Form1()
{
  InitializeComponent();
  cboFont.DropDownStyle = ComboBoxStyle.DropDownList;
  cboFont.DisplayMember = "Name";
  cboFont.Items.AddRange(FontFamily.Families);
  cboFont.SelectedIndex = 0;
  cboSize.DropDownStyle = ComboBoxStyle.DropDownList;
  for (int i = 6; i < 81; i++) cboSize.Items.Add(i);
  cboSize.SelectedIndex = 0;
  EventHandler eh = (sender, e) => textBox1.Font = TextFont;
  Load += eh;
  cboFont.SelectedIndexChanged += eh;
  cboSize.SelectedIndexChanged += eh;
}

499:デフォルトの名無しさん
20/11/02 22:54:27.55 NZsZuJ1ia.net
private int TextSize
{
  get
  {
    return (int)cboSize.SelectedItem;
  }
}
private Font TextFont
{
  get
  {
    return new Font((FontFamily)cboFont.SelectedItem, TextSize);
  }
}

500:デフォルトの名無しさん
20/11/02 23:36:41.20 8/l8UOwbr.net
ありがとうございます
今日はもう遅いので明日やってみます

501:デフォルトの名無しさん
20/11/02 23:49:15.55 onwGyibB0.net
>>491
そうなのですね
そのままパスを変更するだけに留めます
先輩ありがとうございます!

502:デフォルトの名無しさん
20/11/03 01:34:50.34 qmbI+CcG0.net
>>495
こいつVBAで荒らしていた馬鹿じゃないか?

503:デフォルトの名無しさん
20/11/03 01:58:10.34 jzL8Touo0.net
>>496
VBAスレは見てないので人違いですね

504:デフォルトの名無しさん
20/11/03 08:28:33.94 dsOM4bkh0.net
MahApps.MetroってC#はどうってことないがxamlがヤベえのね

505:デフォルトの名無しさん
20/11/04 13:54:59.77 MUmomvCg0.net
GUIはXAMLが基本です

506:デフォルトの名無しさん
20/11/07 10:45:15.58 t7w6OMp4a.net
プログラムの実行を優先して、ユーザーのマウスやキーボード操作をパソコンが受け付けないようにしたいんですが可能ですか?

507:デフォルトの名無しさん
20/11/07 10:51:39.94 nZ+0GoS70.net
それをするとプログラムに(応答無し)って表示されるけど可能は可能

508:デフォルトの名無しさん
20/11/07 12:17:39.90 39mGoKKv0.net
メッセージポンプして全部removeしてしまえばよろし
あかよろし

509:デフォルトの名無しさん
20/11/07 12:59:34.40 t7w6OMp4a.net
>>501
応答なしと表示されても問題ありません。ボタンを押した後、プログラムの一部区間だけユーザーの操作を無効化したいです。
理由は、ダイアログボックスが表示されてからSendKeysで文字を入力する際に、他の操作によりプログラムが正常動作しない時があるためです。SendKeysしか方法がなかったのでそうしています。

510:デフォルトの名無しさん
20/11/07 13:48:23.82 GpP1ZiKDa.net
>>503
SendKeysじゃなくてWin32のPostMessageかSendMessageを使うことを
考えるべきじゃないの?
SendKeysの仕様に合わせるためにそんな大鉈を振るうとかまともな考�


511:ヲとは思えんよw



512:デフォルトの名無しさん
20/11/07 14:59:35.50 6IQ4ek2K0.net
>>500
マウスイベントとキーボードイベントをグローバルフックして、イベントをチェーンせずに握り潰す

513:デフォルトの名無しさん
20/11/07 16:41:34.70 cxYX5+z2p.net
>>505
すみません。初心者には難しそうです。諦めます。

514:デフォルトの名無しさん
20/11/07 22:57:41.32 39mGoKKv0.net
sendを理解出来るならpeekも出来るでしょ?

515:デフォルトの名無しさん
20/11/09 13:06:44.87 YQs0Gheb0.net
.NetCore3.1のWPFアプリってエントリポイント変えられないの?
WPFのエントリポイント変更でググるとApp.xamlのビルドアクションを「アプリケーション定義」から「ページ」に変更してMainメソッド作ればいいって書かれてるけど
.NET Coreだとまずそのビルドアクションを変えられない

516:デフォルトの名無しさん
20/11/09 13:27:48.21 9M/x9jqfd.net
>>508
こんなん?
URLリンク(blog.magnusmontin.net)

517:デフォルトの名無しさん
20/11/09 14:29:20.29 YQs0Gheb0.net
>>509
ありがとう
出来た

518:デフォルトの名無しさん
20/11/10 12:46:09.92 Wkf+3jxV0.net
.net5が今日発表される予定らしい
URLリンク(www.dotnetconf.net)

519:デフォルトの名無しさん
20/11/10 14:36:59.32 gS6kMlPu0.net
.NET5でVisual Studioはどう変わるの?
我々はこれまで通り「プロジェクトのプロパティ」から「対象のフレームワーク」で3.5を選んどけばいいんでしょ?

520:デフォルトの名無しさん
20/11/10 20:55:17.07 PRedF3Ga0.net
3.5?

521:デフォルトの名無しさん
20/11/10 21:45:01.26 ZFV7gHPc0.net
3.5は流石に草生える

522:デフォルトの名無しさん
20/11/10 21:54:25.94 whduyV8l0.net
4.0だろ当然

523:デフォルトの名無しさん
20/11/10 22:16:39.16 HXXQLae8M.net
4.0はサポートされていないの?
3.5のほうがいいわけ?

524:デフォルトの名無しさん
20/11/11 00:11:32.86 9mAhI+SY0.net
混乱しておりますねえ

525:デフォルトの名無しさん
20/11/11 00:42:32.57 BDEAVR3x0.net
サポート切れの4.0使うよりは3.5縛りのほうが健全に思えてきたわ
4.5.2に揃えたいけど、古いサーバー多いのよね

526:デフォルトの名無しさん
20/11/11 01:37:56.99 foWqNnZI0.net
>>512
我々は先(.NET 5)に行く、君は3.5を頼む!

527:デフォルトの名無しさん
20/11/11 02:30:08.95 szx2KMpX0.net
>>518
すまないこのファイルZIPでくれ。
なぉ外部DLLの読み込みはダメ

528:デフォルトの名無しさん
20/11/11 04:26:49.73 zN1eFwAm0.net
元ネタがわかんねえw
うち3.5どころか2.0や1.1の化石あるぜ……嘘みたいだろ?

529:デフォルトの名無しさん
20/11/11 07:13:29.31 A0Zt6oTk0.net
C++部がVC6でしかビルドできない

530:デフォルトの名無しさん
20/11/11 07:32:57.28 szx2KMpX0.net
zip関係は4.xから標準実装

531:デフォルトの名無しさん
20/11/11 07:48:32.66 DyE7m0HI0.net
configファイルを作らないまたは削除する連中が嫌いだわ

532:デフォルトの名無しさん
20/11/11 10:40:12.91 96Q/I0na0.net
VS16.8.0に更新したら.NET Coreのプロジェクトは1クリックで.NET5に移行出来たな
.NET Frameworkのプロジェクトも簡単に移行できるのかな?

533:デフォルトの名無しさん
20/11/11 10:44:10.46 QZePbwpJM.net
できるわけないでしょ
WebFormsとWCF廃止の時点で半数くらいのアプリは事実上移行不可能
そうでなくても変なサードのライブラリ使ってたりして移行できないケースも多いだろうね

534:デフォルトの名無しさん
20/11/11 12:47:24.27 5X85No/50.net
16.8でuwpのリリースビルドが実行不能になったわ

535:デフォルトの名無しさん
20/11/11 19:44:06.91 96Q/I0na0.net
あれ、.NET5ってWindowsアプリからコンソールアプリに変更できないの?
プロジェクトプロパティから出力の種類をコンソールアプリに変えてもコンソール出てこないんだが
プロパティ開きなおすとWindowsアプリに戻ってるし

536:デフォルトの名無しさん
20/11/11 20:49:57.45 WaPRIfZP0.net
WCFって代わりに何使えって言ってる?

537:デフォルトの名無しさん
20/11/11 21:00:29.49 szx2KMpX0.net
>>529
MQTT

538:デフォルトの名無しさん
20/11/12 00:35:56.66 qoiJF5zI0.net
C#実践しながら効率良く覚えたいんだけど良い教材ないかな
とりあえずWinアプリ作りたい
頑張って独習C#を9割読んだのにもうほとんど内容覚えてない

539:デフォルトの名無しさん
20/11/12 00:56:44.98 nVOC+il80.net
そりゃ手を動かさんと覚えんよ

540:デフォルトの名無しさん
20/11/12 00:59:41.35 +Hg40DyF0.net
何でも良いから作りゃいいんだよ
ベタなのは電卓
少機能なものをガンガン作る

541:デフォルトの名無しさん
20/11/12 02:56:18.65 XDpnN8VW0.net
仕事してるならいつもやってるちょっとした作業を代替させるようなアプリがモチベになるきっと

542:デフォルトの名無しさん
20/11/12 05:54:42.02 6+k25fjF0.net
WinUIとMAUIの区別が曖昧にしか認識できてないんですが、
具体的な違いを説明してくれてる情報源があれば教えてください。

543:デフォルトの名無しさん
20/11/12 06:11:12.88 xNvOr4tgd.net
日頃やってる単純作業をなんでもいいから自動化
エロ動画収集とかエロ画像整理とかあるだろ

544:デフォルトの名無しさん
20/11/12 12:00:28.21 f5BAQJxFF.net
>>534
めっちゃ判ります
画面キャプチャしてpdfに製本するアプリ造ったら捗った

545:デフォルトの名無しさん
20/11/12 14:31:20.02 s2LM5erN0.net
C#で小数点の倍精度演算をするには自分で作るしか無いの?
整数はBigIntegerで出来るのに

546:デフォルトの名無しさん
20/11/12 14:41:04.78 pnQCXdZla.net
Double 構造体
URLリンク(docs.microsoft.com)
> 倍精度浮動小数点数を表します。

547:デフォルトの名無しさん
20/11/12 15:01:22.45 s2LM5erN0.net
倍精度じゃ無くて多倍長だった
めんご

548:デフォルトの名無しさん
20/11/12 15:16:14.73 f5BAQJxFF.net
BigInteger

549:デフォルトの名無しさん
20/11/12 15:21:45.07 f5BAQJxFF.net
URLリンク(archive.codeplex.com)
URLリンク(web.archive.org)URLリンク(www.emilstefanov.net)

550:デフォルトの名無しさん
20/11/12 15:30:12.32 f5BAQJxFF.net
こっちか
URLリンク(www.nuget.org)
URLリンク(ja.wikipedia.org)

551:デフォルトの名無しさん
20/11/12 17:45:20.41 s2LM5erN0.net
>>543
Math.Gmp.Native.NET
有効桁数20桁じゃん
メモリが許す限りの桁数の小数点数を扱いたいときはどうするの?

552:デフォルトの名無しさん
20/11/12 17:46:57.77 6nU3MdtG0.net
>>544
それを標準機能や標準関数で実装してる言語ってあるの?

553:デフォルトの名無しさん
20/11/12 17:49:22.72 yAJG0kR/0.net
>>544
メモリが許す限りの何かを扱いたいのなら数値に限らず自作しないと、そんな都合のいいものはない

554:デフォルトの名無しさん
20/11/12 18:50:06.12 n9rTzoEP0.net
>>546
馬鹿は黙っていれば良い例

555:デフォルトの名無しさん
20/11/12 19:03:16.89 eGo0h3N+0.net
Pandasに相当するライブラリないの?

556:デフォルトの名無しさん
20/11/12 19:03:45.07 eGo0h3N+0.net
まあC#でやる必要ないかw

557:デフォルトの名無しさん
20/11/12 19:52:59.46 OqW4/kLba.net
ググってみたらdoubleの仮数部は52ビットらしけど、52ビットの分解能じゃ
不足する分野って何なんだろうねw
地球の赤道に1ミクロン単位で目盛りを振っても余裕でおつりがくる分解能みたいだけど

558:デフォルトの名無しさん
20/11/12 20:42:07.53 aPogCkhJ0.net
>>550
円周率じゃん?

559:デフォルトの名無しさん
20/11/12 20:42:17.55 /VjS/nppM.net
>>550
オーダーの異なる多数の数値を何も考えずに前から順に足し合わせたりすれば簡単に狂うよ

560:デフォルトの名無しさん
20/11/12 21:28:06.03 +Hg40DyF0.net
めんどくさいから整数で演算して結果の小数点を動かすわ
ってかみんなそうやってやんないの?
そりゃ高パフォーマンスで多倍長浮動小数扱えるならそれが一番だろうけど

561:デフォルトの名無しさん
20/11/12 21:30:18.59 mp0oTovH0.net
一番面倒臭いのはケチ付けたいだけのID:s2LM5erN0

562:デフォルトの名無しさん
20/11/12 21:32:48.72 WhH2oDBM0.net
GMP使うからC#ではせんな。
CUGにmiracle ってライブラリーがあったけど
これも当然C#用では無いなぁ

563:デフォルトの名無しさん
20/11/12 21:51:54.26 OqW4/kLba.net
>>553
誤差が累積しないような演算方法を工夫するのが普通だろうね

564:デフォルトの名無しさん
20/11/12 21:59:49.04 4tCV4GAu0.net
すまんが、↓こう言う時の「=>」ってどう言う意味なの?
string asdf => $"jkl";
この画面の11行目でそんな感じのが出てきたんだけど・・・・
URLリンク(youtu.be)

565:デフォルトの名無しさん
20/11/12 22:15:18.46 QnwokErS0.net
読み取り専用プロパティの簡単な書き方
string asdf { get { $"jkl"; } }
string asdf { get => $"jkl"; }
string asdf => $"jkl";
string asdf { get; } = $"jkl"; // これだけ意味が違う

566:デフォルトの名無しさん
20/11/13 00:55:38.66 eU7TEgK20.net
>>565
private string _asdf = $"jkl";
string asdf { get { return this._asdf; } }
を1行で書いたもの

567:デフォルトの名無しさん
20/11/13 05:21:57.56 quhoX/Ovr.net
>>544
何の計算したいの?

568:デフォルトの名無しさん
20/11/13 11:17:32.36 d7Iu7DLU0.net
>>560
単なる道楽なんだけどね
昔の放送大学でUBASICを使った自然対数の底と円周率の演算をやってたから
同じことをC#でやろうと思ったけどIEEE754の倍精度実数では桁が足りなかった
BigIntegerがあるならBigFloatも欲しかったなと

569:デフォルトの名無しさん
20/11/13 11:21:41.58 RWm0omqa0.net
放送大学アーカイブズ
懐かしの名講義
再放送中毒

570:デフォルトの名無しさん
20/11/13 11:32:20.13 ehJZ/AtC0.net
URLリンク(bangumi.ouj.ac.jp)

571:デフォルトの名無しさん
20/11/13 12:37:29.01 907SkV9V0.net
>>561
結局欲しいのは多倍長整数なのか倍精度浮動小数なのか
道楽なら自作ライブラリでも作れば良い

572:デフォルトの名無しさん
20/11/13 14:16:13.05 WOWtwvuFd.net
>>564
なんでずれた回答するの?
「作るしかない」
なら良い回答なのに。
新しい人どんどん減っちゃうよ

573:デフォルトの名無しさん
20/11/13 14:18:25.76 RWm0omqa0.net
「作るしかない」
の方が最近の新しい人は逃げる傾向にあるからな

574:デフォルトの名無しさん
20/11/13 15:13:21.55 od/5f45td.net
作るしか無いってことはほぼ世の中にはそんなものは求められていないってこと
そんなものを要求するのは根本が間違ってるか何でも周りに頼り過ぎか
真に有益なものならむしろ作って公開すりゃ良い実績になる

575:デフォルトの名無しさん
20/11/13 15:22:11.67 WOWtwvuFd.net
>>567
なんかそれがもうずれてんだよね。
「作るしかないの?いいのないの?」って聞かれてるんだから
「ないよ。作るしかないよ」って答えればいいのに。
世の中で求められてないとか質問に関係なくない?
有益云々も今ないから作ったら公開してくれって言えば利益にもなんのに。
残念

576:デフォルトの名無しさん
20/11/13 15:25:44.29 fnhS2xNE0.net
20年位前のうbyの時代はそれが通ったけど
若い人にそういう文化はもう無い

577:デフォルトの名無しさん
20/11/13 15:29:35.13 od/5f45td.net
>>568
質問への回答じゃないのにズレてるとかいうレスがそもそもズレてるって思わないの?
というか悪魔の証明はできないんだから無いよ、なんて軽々しく言えないという前提がわかってる?
ついでに誰にも求められていないものを公開して利益になるロジックを教えて

578:デフォルトの名無しさん
20/11/13 16:12:04.51 /kJTTxU10.net
>>558
>>559
ありがとう!
記号系はググりづらくて、本当助かったぜ!

579:デフォルトの名無しさん
20/11/13 16:31:13.21 WOWtwvuFd.net
>>570
そうなの。質問への回答じゃないの。
悪魔の証明とかかたっ苦しく考えなくていいのに。
知らないなら知らないで、「俺はしらんなぁ、作るしかないんじゃない?」で答えるか黙ってればいいじゃない。知ってる人がいれば答えればいいし。
>ついでに誰にも求められていないものを公開して利益になるロジックを教えて
これは
>真に有益なものならむしろ作って公開すりゃ良い実績になる
ここからね。
ないものができるんだから利益でしょ。使う使わないは人それぞれ。少なくとも質問者には必要なんだから。
なんかすまんね

580:デフォルトの名無しさん
20/11/13 16:42:13.42 907SkV9V0.net
>>565
欲しいものの要件をハッキリ言わないからだよ
>>540で多倍長って言いながら、>>544では小数って言ってる
小数求めてるのに>>561ではBigFloat求めてる
Bigは大数の接頭辞
自分で欲しいものを理解してないのに人に探してもらうことは難しいよ

581:デフォルトの名無しさん
20/11/13 16:47:50.11 907SkV9V0.net
精度の高い計算をするためのツールがUBASICなわけ
あえてそれを使わずにC#でやるのは本人の自由だけど、
要件をハッキリさせずにいながら出てきた案はダメ出し
そりゃ顰蹙も買うさ

582:デフォルトの名無しさん
20/11/13 17:05:08.44 od/5f45td.net
>>572
だから答えようがないから質問を見た感想を述べているだけなんでしょ?
それをなんで、その回答はズレている!なんて突っ込むの?
質問者が求めてるなら
誰にも求められていない
に該当しないじゃんw
質問者は世の中含まれていないの?

583:デフォルトの名無しさん
20/11/13 17:39:01.74 j87fJt3YM.net
>>573
多倍長と小数は相反する概念じゃ無いぞ
BigFloatも普通にJuliaとかである型だし
このスレ理系がいなさすぎだろ
多倍長浮動小数点演算求められてんのに
「そんなものは誰にも必要じゃ無いから存在しない!自分で作れ!」とか
普通にGMPとかあるし普通はそれを奨める

584:デフォルトの名無しさん
20/11/13 17:41:05.56 WOWtwvuFd.net
>>575
前半はこっちがはやとちったね。ごめんね。
後半はなんか文脈から言葉遊び以上の君が言ってること理解できないから俺の頭がおかしいんだな。
君が正しいよ。

>>573
>要件をハッキリさせずにいながら出てきた案はダメ出し
>そりゃ顰蹙も買うさ
そりゃそうだな。すまんね

585:デフォルトの名無しさん
20/11/13 18:28:33.10 qE0lneeB0.net
ワッチョイ dd9b-Y0tO ワッチョイ 459b-Y0tO ワンミングク MMa3-Y0tO 質問の仕方も使う言葉も不正確で調べた回答者にダメ出しの上にワッチョイコロコロ
NGでいいよ

586:デフォルトの名無しさん
20/11/13 18:33:46.11 lrdHTx5AM.net
BigFloatって 10÷3 するとメモリ喰らい尽くしてくれるの?

587:デフォルトの名無しさん
20/11/13 18:44:41.25 UDp7AbcK0.net
>>579
扱う桁数を設定しておくんでしょ
juliaだとsetprecisionというのを使うらしい

588:デフォルトの名無しさん
20/11/13 18:45:15.53 907SkV9V0.net
>>576
>>544

589:デフォルトの名無しさん
20/11/13 18:46:10.29 od/5f45td.net
え?普通にgmp勧めてそれじゃ精度が足りん!ってなったんじゃないの?
中身の詳細までわからんが…
C++に有効桁数100桁の演算とかあるみたいだけど要求はメモリたくさん使うレベルなんだから兆オーダーレベルの桁数なんでしょ?

590:デフォルトの名無しさん
20/11/13 18:47:51.67 iD09dkB6M.net
>>576
554で勧めたんだがスルーされたんだよ

591:デフォルトの名無しさん
20/11/13 18:59:56.02 WXkqFeV00.net
やろうとしたこと無いから知らんのだけど例えば円周率を何兆も計算するのあると思うけど、そういう演算ってその桁数の小数点演算必要になるの?
普通にdouble程度で十分だと勝手に思ってたけど

592:デフォルトの名無しさん
20/11/13 22:02:04.34 qUM0ZuKL0.net
wikipediaに依ると円周率の計算は
π/4 =1- 1/3 + 1/5 - 1/7...らしい
BigIntegerで1を必要な桁数だけ大きくすれば良いような

593:デフォルトの名無しさん
20/11/13 22:07:03.28 KPuGe7Gc0.net
>>584
整数演算だけで出来るぞ
というかすべての小数点演算は整数演算の組み合わせで出来る
>>582
GMPのデフォルト精度は64ビットだから20桁くらいしかいけない
precに大きなビット数設定してやれば何万桁でもいける

594:デフォルトの名無しさん
20/11/13 22:26:47.07 A6rK79tx0.net
だから言語に分数型が必要だって言っただろアホが

595:デフォルトの名無しさん
20/11/13 23:04:03.67 V7nqUCXH0.net
いや、も


596:っとストレートに円周率型が必要



597:デフォルトの名無しさん
20/11/14 00:22:57.13 XJ24TZhC0.net
>>585
URLリンク(www.youtube.com)

598:デフォルトの名無しさん
20/11/14 05:05:39.51 hLsGLi/C0.net
分数型があったところで無理数は表現できなくね?
アレば便利なことには間違いないが

599:デフォルトの名無しさん
20/11/14 09:03:12.56 cYQm19/50.net
>>590
三分の一が表現できるってだけで結構便利なんだな
自分でクラス作ってもいいけど

600:デフォルトの名無しさん
20/11/14 15:27:05.74 HtCqr6h30.net
>>538
URLリンク(www.dotsakura.com)

601:デフォルトの名無しさん
20/11/15 09:17:33.20 TE31pbc70.net
日本でC#使うのは殆どUnityかWindowsデスクトップアプリだからな
数値計算とかしたいならPython使うしかない

602:デフォルトの名無しさん
20/11/15 09:55:21.46 zLhs1absM.net
業務アプリで1/3することってあるよ

603:デフォルトの名無しさん
20/11/15 12:40:40.11 wWBHTATOd.net
C#ってCやVC++と比べるとかなり遅い
ですか?
遅いなら、時間の掛かる処理だけは速い言語で作るべきか悩みます
マーシャリングすれば使えるみたいなので

604:デフォルトの名無しさん
20/11/15 12:45:13.00 MP+vmq9O0.net
>>595
処理の内容と書き方による

605:デフォルトの名無しさん
20/11/15 12:45:47.16 4zqmLj42M.net
物にもよるが3割減ぐらいに思っておけば

606:デフォルトの名無しさん
20/11/15 12:58:30.49 TbjZIaKaM.net
分数型を作るのは面白そうやん。約分や通分の機能を持たせておけば素敵。てかMS考えてくれ。

607:デフォルトの名無しさん
20/11/15 13:20:31.23 ttHD4odoa.net
>>595
ファイル読み書きやネットワークアクセスが一切なくて100%CPUパワーを使うだけのプログラムなら差が出るかもしれないけど
そうでなければ処理時間の差などI/Oにかかる時間に比べればごくわずかで塵にも等しい
ので気にするだけ無駄
というかCPUパワーを極限まで使い倒すなら、C#でマルチコア並列実行できるよう処理を書いたほうが
C/C++のシングルスレッド処理よりよっぽど早いかもしれない
よほど低性能なマシンで実行するならともかく、今どきの環境なら全部C#で書くほうが無難だと思うけどね

608:デフォルトの名無しさん
20/11/15 13:23:38.35 y3jy+ngDM.net
>>598
すでに有理数クラスがNugetにあるで
URLリンク(www.nuget.org)
Example usage:
Rational left = (Rational) 1 / 2;
Rational right = (Rational) 1 / 4;
Rational sum = left + right; // equals to: 3 / 4

609:デフォルトの名無しさん
20/11/15 16:21:09.71 d0/9SCdg0.net
>>595
どうしてもC++のライブラリをC#で使いたいとかじゃないかぎり
そのマーシャリングの処理が何気に重い気がするので
関数を何度も呼び出すみたいな使い方するなら
ベンチマーク取ってみるとC#のみの方が速いかも知れないぐらいの差じゃないかな

610:デフォルトの名無しさん
20/11/15 16:38:42.28 alkL58xG0.net
>>601
マーシャリングが重いって言うと例えば
extern IntPtr GetProcAddress(IntPtr hModule, [MarshalAs(UnmanagedType.LPStr)] string procName);
とする場合、のprocNameをAnsiに変換するときってヒープ使われるの?
ヒープ使われるんだとしたら自前でstackallocしてbyte*として渡そうと思うけど

611:デフォルトの名無しさん
20/11/16 08:44:05.44 dMCYT8Lea.net
>>595
C#とC/C++の処理速度はほとんど変わらないよ
ただ、C#はどうしてもGCの影響を受けるから、数msでも遅れたら困る用途には使えない
まあ、そんな要求は滅多に無いけどね

612:デフォルトの名無しさん
20/11/16 10:53:58.92 sF1WJXNTF.net
GCは何時発動するか判らんのが欠点だけど
C#のGCはタイミングは常に判ってるのかな

613:デフォルトの名無しさん
20/11/16 11:05:41.67 qYJ3Dm/90.net
タイミングがわかるわけじゃないけど引き起こす可能性のある手続きはわかっている
コーディングでそれを避けられる余地があるからUnityとかでまだ採用されてるんじゃない?

614:デフォルトの名無しさん
20/11/16 11:27:25.87 jhzDiMvL0.net
本当にクリティカルな区間はGCを(出来るだけ)禁止する等ある程度は制御できる

615:デフォルトの名無しさん
20/11/16 11:30:54.33 Ixi420Wb0.net
GC禁止する前に、あらかじめ明示的にGCって出来る?

616:デフォルトの名無しさん
20/11/16 12:05:22.31 g+EUxdXIr.net
GC連打しまくればいいよ

617:デフォルトの名無しさん
20/11/16 13:22:47.27 jhzDiMvL0.net
GC.Collect()で強制実行出来るけど
世代上昇の問題もあるし使いこなすのは難しい

618:デフォルトの名無しさん
20/11/16 13:24:47.04 sF1WJXNTF.net
生き残りは強毒化するのか

619:デフォルトの名無しさん
20/11/16 14:26:09.78 vD+2eRn00.net
強制GC連打派
30秒に一回とかやってる
それでもなんか1秒ぐらい止まるときあるよ

620:デフォルトの名無しさん
20/11/16 15:09:58.28 dMCYT8Lea.net
ストップザワールドしないGCを実装してくれたらもうアプリケーションでC/C++を使うことはないかも

621:デフォルトの名無しさん
20/11/16 15:48:59.14 eppT6X190.net
むしろVC++に絶対的なGUI決定版が出たら個人開発のデスクトップアプリでC#使う事なくなるだろうな
個人開発程度の規模だとマクロのあるC++の方が返って開発速度早くなることも多いし

622:デフォルトの名無しさん
20/11/16 17:13:00.16 VrPIfzyD0.net
GCSettings.LatencyModeで選べるよ

623:デフォルトの名無しさん
20/11/16 18:58:34.38 ZSbSJvSB0.net
フォーム上に設置したボタンを表示したいのですが、
フォームだけ非表示もしくは透過0%にする方法を教えてください
フォームのopacityいじるとボタンも非表示になってしまいます

624:デフォルトの名無しさん
20/11/16 19:19:54.16 Le2Iq+UD0.net
フォームの背景を単一色で塗り潰してTransparencyKeyで透明にしたい色を指定

625:デフォルトの名無しさん
20/11/16 22:13:31.62 G4eaPjr50.net
c#とvsがなかったら一生プログラムやろうなんて思わなかった

626:デフォルトの名無しさん
20/11/16 23:04:37.19 cHmpQkkDM.net
C#っていい言語だよね
飾らず、気取らず、それでいて力強い。

627:デフォルトの名無しさん
20/11/16 23:25:26.59 LWdxEv1Gd.net
>>596,599,601,603
ありがとうございます!

628:デフォルトの名無しさん
20/11/16 23:34:54.33 LWdxEv1Gd.net
>>597
ありがとうございます!

629:デフォルトの名無しさん
20/11/17 01:43:59.23 lN0UCm9Ya.net
ファイルの日付時刻を比較したいんですがどうしたら良いですか?

630:デフォルトの名無しさん
20/11/17 01:44:52.21 qgtrLMb80.net
datetime型を比較すれば?

631:デフォルトの名無しさん
20/11/17 10:32:21.22 sO+4iEeI0.net
>>621
datediffや

632:デフォルトの名無しさん
20/11/17 13:16:45.53 GB1Hm8K4a.net
>>615
WPFなら普通にできたはずだけどFormでは簡単にはいかないと思うよ。
不完全だけど一番簡単にそれっぽいのを作る方法はButtonを乗せるためだけの別のform2を作って
form1をそれの親にすること。
public Form1()
{
  InitializeComponent();
  var loc = new Point(100, 100);
  var form2 = new Form2();
  Action a = () => form2.Location = PointToScreen(loc);
  form2.Show(this);
  Load += (s, e) => a();
  Move += (s, e) => a();
}

633:デフォルトの名無しさん
20/11/17 15:43:12.61 WBCoLdBR0.net
WPFで作る利点ってのはクロスプラットフォームに出来るってこと?
Formしか作ったことないんやけど

634:デフォルトの名無しさん
20/11/17 16:31:37.70 EuUrSlgt0.net
>>625
WPFはWinFormsと同じくWindowsのみ

635:デフォルトの名無しさん
20/11/17 16:58:38.50 RncVdZGd0.net
利点というか世界的に見たらWPFのほうが主流だから
むしろ今なぜFormなのかという感じだな

636:デフォルトの名無しさん
20/11/17 17:15:11.29 ogxxYnEyH.net
Formsの方が簡単だから……

637:デフォルトの名無しさん
20/11/17 18:04:37.48 YcEiD0LrM.net
グラフィック関係が壊滅的なので
skiaとかで支援しないと使い物にならないWPF
を勧めるとはお主も悪よのう

638:デフォルトの名無しさん
20/11/17 18:39:12.50 Hw9PIOp10.net
WPFなんて死産みたいなもんじゃね・・・
出て結構経つけどWPFの仕事とかの話全然聞かないわ

639:デフォルトの名無しさん
20/11/17 18:46:22.75 PM1Apx6y0.net
Visual Studioの皮ってWPFなんでしょ

640:デフォルトの名無しさん
20/11/17 19:20:07.15 cGx3KuHJ0.net
>>630
仕事はいくつかあった
建物の入り口にあるディスプレイに飾っとくようなアプリ
3D空間にオブジェクトを配置するアプリ

641:デフォルトの名無しさん
20/11/17 19:24:53.52 FpFQah7Cd.net
そういうタイプはunityとかのほうが楽そう

642:デフォルトの名無しさん
20/11/17 19:26:16.29 iD8vjuLm0.net
うちは数年前から新製品で使い始めたよ。
特定業界向け会計ソフトだから一般の目に触れる事は殆どないと思うけど。

643:デフォルトの名無しさん
20/11/17 19:34:04.55 cGx3KuHJ0.net
>>633
全くその通りで結局開発が進んで行くうちに帯に短し襷に長しみたいな中途半端力凄い
>>634
そういうのは絶対Webアプリのが使い勝手いいんだよなぁ
ログインしたらどこでもどのPCでも同じって強過ぎるよね

644:デフォルトの名無しさん
20/11/17 19:37:52.56 cGx3KuHJ0.net
あと何気に困ったのが音
後ろで音楽かけてボタンとか押したら音鳴らしてってのが
わりかしできんかったっていうかなんかあやしいライブラリ使う羽目になったっていうか
まあ、色々動く画面作りたいときはいっそunity考えた方がいいと思う

645:デフォルトの名無しさん
20/11/17 19:42:43.18 qgtrLMb80.net
unity 只け?

646:デフォルトの名無しさん
20/11/17 20:40:45.04 Tiv5/dm/0.net
いまだに新規開発案件でforms使うところあるの?

647:デフォルトの名無しさん
20/11/17 20:44:36.18 ooCV67uO0.net
あるよ

648:デフォルトの名無しさん
20/11/17 20:56:30.30 Fq1hGO400.net
FAだとformで十分でウマーです。

649:デフォルトの名無しさん
20/11/17 21:02:12.76 Qs8QfDsD0.net
windowsなのにformsを使わない理由を逆に知りたい

650:デフォルトの名無しさん
20/11/17 21:04:02.66 qYg8UIQi0.net
>>641
高DPI対応が面倒
バインディングが使い物にならない

651:デフォルトの名無しさん
20/11/17 22:28:01.75 Rs8mNRLj0.net
そして来年からはWinUIというWPF紛いのものが登場する、と
Win10ぽいルックスとx:Bindでコンパイル時にバインドエラー発見ってのはかなり大きい
そのうちAOTコンパイルもサポートされるそうだ

652:デフォルトの名無しさん
20/11/17 22:33:32.13 GB1Hm8K4a.net
WPFは(既に実質的にはそうだったけど)いよいよディスコンになるの?

653:デフォルトの名無しさん
20/11/17 22:39:07.63 qYg8UIQi0.net
>>644
現状維持
これからはWinUI推しでWinFormsとWPFは放置だろ

654:デフォルトの名無しさん
20/11/17 22:40:03.59 GB1Hm8K4a.net
そうか無くなるわけじゃないよねw
メンテモードか

655:デフォルトの名無しさん
20/11/17 22:48:31.36 60XguBAo0.net
.NET MAUI 楽しみ

656:デフォルトの名無しさん
20/11/18 00:03:39.25 MO86P+zt0.net
maui期待しないほうがいい
ただの名前変更レベルの予感
Microsoftはなぜxamarinが失敗したか総括したのか?
表面上何もかわってないように見える
技術的にはSlimRenderアーキテクチャだかようしらんが

657:デフォルトの名無しさん
20/11/18 15:05:11.31 7Ekft4aVr.net
VScodeで成功してるんだがElectronでいいじゃん
Electron.Netを正式サポートしろよ

658:デフォルトの名無しさん
20/11/18 15:10:25.22 870PPpSlr.net
>>648
だね。

659:デフォルトの名無しさん
20/11/18 15:39:37.23 P3jn+KK20.net
Electronは失敗だよな
VSCodeだけだし

660:デフォルトの名無しさん
20/11/18 15:46:24.24 UaAov2o20.net
>>76
C#というのは前身がDelphiという言語なんだ
そのDelphiはVBとの死闘の末敗れてしまった
だからC#(Delphi残党)がVBを憎んでいるのは当然なんだ
ガンダムで例えるとC#はネオジオンでVBは連邦軍なんだよ

661:デフォルトの名無しさん
20/11/18 15:54:18.16 IPbBahkD0.net
>>652


662:デフォルトの名無しさん
20/11/18 15:54:52.11 IPbBahkD0.net
>>651


663:デフォルトの名無しさん
20/11/18 16:11:46.00 YM9VgCd+0.net
>>638
わたしは中国人あるよ

664:デフォルトの名無しさん
20/11/18 16:58:13.83 gt3SSD7y0.net
>>651
SlackやDiscordもElectronだよ

665:デフォルトの名無しさん
20/11/18 16:59:19.38 oW5F7Byc0.net
Azure Data Studio

666:デフォルトの名無しさん
20/11/18 19:57:00.23 hzlSiPtIM.net
>>657
ゴミは引っ込んでろ

667:デフォルトの名無しさん
20/11/18 20:11:49.12 oW5F7Byc0.net
>>658
え?

668:デフォルトの名無しさん
20/11/18 21:07:17.11 RhWccaic0.net
こいつら質問スレでテンプレ無視して雑談しなきゃならない使命でもあるのか?

669:デフォルトの名無しさん
20/11/19 10:08:06.32 fvT6uEqW0.net
StringBuilderのパフォーマンス目的で使う割には最終的なToString()で再Allocが発生するという矛盾に嫌気がさして
アンセーフなstringラッパー作って
public Length => { fixed (char* p = str) *(int*)(p - 2) = value; }みたいなことしてマニュアルで長さ変えたりしてるんだけど、こういうことしてるとGCに影響あったりする?
初期バッファとしてstr = new string('\0', 0x1000);として0x1000文字分のメモリを頂戴したのに、上記の動作で長さを5に変えたりしてると、GCによる解放時に5文字分しか解放されずに残りがリークするって事にはならないんだろうか?

670:デフォルトの名無しさん
20/11/19 11:07:34.05 xT43LVbE0.net
> StringBuilderのパフォーマンス目的で使う割には最終的なToString()で再Allocが発生するという矛盾
そもそもそこは別に矛盾じゃないだろ
「結合のたびにアロケーションが発生する」のを防ぐもんなんだから

671:デフォルトの名無しさん
20/11/19 11:21:03.45 RERzCypk0.net
>>661
ZStringを使いなよ
色々な悩みから解放されるよ

672:デフォルトの名無しさん
20/11/19 11:31:10.28 fvT6uEqW0.net
>>663
良く知らないけどそれもその都度string生成してるんじゃないの?
スレッドアンセーフで良いから生成は初回かキャパ更新程度に留めて使いまわしたいんだよね
そのキャパ更新の際に捨てるときにstring.Lengthを弄ってるとメモリリークの原因になるのではないかと

673:デフォルトの名無しさん
20/11/19 11:37:15.19 fvT6uEqW0.net
さすがに内部でcalloc(sizeof(char), 0x1000)とかしたときの確保サイズメモっておいてくれてるのかね
GC内部の細かい挙動はMS社員でもない限り知りようないか

674:デフォルトの名無しさん
20/11/19 13:58:51.49 5X7qze6C0.net
NameValueCollectionをコピペすると自動整形がうまくいかなくてかっこの位置がおかしくなるので
各行ごとにDelete→Enter→Endを繰り返して手動で整形しなおしてるのですが、ちゃんと整形してくれる方法ってあるんですか?
↓みたいになったりする。
   NameValueCollection vals = new NameValueCollection
   {
{ "hoge","hage"},
{ "fuge","hage"},
   };

675:デフォルトの名無しさん
20/11/19 15:16:47.51 wGypJVfq0.net
1行にする
予期しないところにある改行が原因でフォーマッターが動かない

676:デフォルトの名無しさん
20/11/19 15:26:56.05 3nmF1AP8M.net
>>661
いやそもそもStringBuilder.ToString()は再アロケーションしないぞ
内部のバッファをそのまま引き継ぐ実装だ
その後StringBuilderの方に追加の変更が加えられた時点で再アロケーションが発生する

677:デフォルトの名無しさん
20/11/19 15:52:44.75 5X7qze6C0.net
>>667
1行というのはこういうことですか?
NameValueCollection vals = new NameValueCollection{{ "hoge","hage"},{ "fuge","hage"},};
実際には{ "hoge","hage"},が50行とかあったりするので↑では視認性やエラーチェックが面倒になります。

678:デフォルトの名無しさん
20/11/19 16:13:28.80 XTntku/z0.net
>>668
StringBuilderはchar[]であってstringではない
たとえStringBuilderのCapacityがLengthと丁度良く=であったとしてもToStringで別途string用にアロケーションされる
StringBuilderはLengthを自由に変更出来て任意のインデックスからappendできるので、内部バッファがそのまま返されるようならstringは不変という法則が簡単に崩れ去れることになり>>661がやってるunsafeと何ら変わらなくなる

679:デフォルトの名無しさん
20/11/19 16:33:47.05 wGypJVfq0.net
>>669
そういう長いものに自動整形を期待しない
そういう長いものを人間が視認する必要性を排除する
この手の自動整形をしようとすると負荷が半端ないことになって実用性に欠けるのですっぱり切っているのだと思う

680:デフォルトの名無しさん
20/11/19 16:48:49.64 k15rqtpOa.net
>>670
そんな馬鹿な実装するはずがないと思うよw
そもそもイミュータブルとは状態を変更する方法を外部に提供しない、という意味以上でも以下でもない。
そこのところを勘違いしている気がする

681:デフォルトの名無しさん
20/11/19 16:50:55.24 EbSX4tjh0.net
>>672
ソース見れば普通にわかるやろ
URLリンク(referencesource.microsoft.com)
string ret = string.FastAllocateString(Length);

682:デフォルトの名無しさん
20/11/19 17:07:14.79 9igY/Fs20.net
りふぁれんすそーすw

683:デフォルトの名無しさん
20/11/19 17:26:57.34 k15rqtpOa.net
.NETのStringが機械語レベルでどう実装されてるか勉強したことはないが、
普通に考えればパスカルストリングとCストリングのあいの子みたいな単純な構造でしょたぶん。
ごにょごにょした後のバイト列を普通にstringと「みなす」だけにするよね。
わざわざ別のメモリ確保してベタコピーする馬鹿な実装をする人がいるだろうか。
その必要性ができてからで遅くないと思うんだけど。

684:デフォルトの名無しさん
20/11/19 18:08:19.31 fvT6uEqW0.net
>>675
C#のstringはBStrというoffset0にlength、offset4からcharの配列、そのoffset4へのポインタがstringとなる
末尾がnull文字じゃなくても問題ないが基本は末尾にnull文字が入ってるためconst wchar_t*としても扱える
そんなことはどうでもよくてマネージド内で上記の内部バイナリを書き換える方法は一切無いからわざわざアンセーフstringラッパーを作ったんだよ
一見書き換えられてるように見えるstring操作は全て新stringとして生成されてるだけだからな
+連結は長さが変わるから想像できるだろうけど、Substringすらも切り取り参照をしている訳ではなく新たにstringを生成してる(それを解決しうるマネージドな手段としてReadOnlySpanというのも一応あるが)

685:デフォルトの名無しさん
20/11/19 19:50:48.14 nKYhLbF50.net
細かいことを気にしてまでC#を使う矛盾をどう解決してるのか気になるわ

686:デフォルトの名無しさん
20/11/19 20:59:45.17 fvT6uEqW0.net
>>677
だからプライベートリポの8割はC/C++って程度には普段はC使ってるけど
でもその理論言っちゃうと本家StringBuilderも要らんってことになるしな
全部+とか$"{}"でええやん

687:デフォルトの名無しさん
20/11/19 21:03:40.41 nKYhLbF50.net
StringBuilderを使えというのは学ぶでしょ
そこまででいい
それ以上やるならもうC#使う意味ない

688:デフォルトの名無しさん
20/11/19 21:04:23.57 fvT6uEqW0.net
>>679
それじゃSpanとか実装したMSがバカみたいじゃん

689:デフォルトの名無しさん
20/11/19 21:28:29.15 A4wcMVuA0.net
>>663 が挙げてたZStringの解説記事
個人的にはそこまでパフォーマンス気にするような物作ってないから「へー」って感じで読んだだけだけど
ZString – Unity/.NET CoreにおけるゼロアロケーションのC#文字列生成
URLリンク(tech.cygames.co.jp)

690:デフォルトの名無しさん
20/11/19 21:32:12.66 s0VdR5fOd.net
国内C#erで有名どころだしstringはパフォーマンス絡みでよく上がるから割と有名な方じゃないかな?
あんなにパフォーマンス気にする人が知らないのには驚きだけどw

691:デフォルトの名無しさん
20/11/20 01:24:52.99 ViPIBq0U0.net
パフォーマンスは気にしてないんじゃないの?
アロケーション気にしてただけで

692:デフォルトの名無しさん
20/11/20 07:19:27.10 ShozvaYJ0.net
C++は基本がスタック、C#は基本がヒープ
この二者の最大の差はこれなのでC#のパフォーマンス改善=アロケーション回避に終始する

693:デフォルトの名無しさん
20/11/21 03:48:47.56 zIAbzPq60.net
俺バカだから何万回の処理で何ms差が出るのか教えてほしい

694:デフォルトの名無しさん
20/11/21 08:27:18.63 WoKZFdST0.net
手段が目的と化している人達にそんなこと聞いても無駄だよ

695:デフォルトの名無しさん
20/11/21 11:57:08.18 6fJp/BaL0.net
初心者スレらしい馬鹿がいて嬉しい

696:デフォルトの名無しさん
20/11/21 11:59:54.22 zQZxJMDr0.net
>>681のブログ主みたいな人の方が結局生産性も高いのだから、パフォーマンス厨を馬鹿にするのは知への嫉妬にしか見えない
尤も初心者用スレで話す内容ではないが

697:デフォルトの名無しさん
20/11/21 13:04:44.65 Ny+zGkjNa.net
まあちょっと前の数値演算の話と同じだよ。
純粋な学問として円周率の桁数を追求することを否定する人はいないけど、
実用上必要ないのにそれを追求するのはただの馬鹿なフェティシズム

698:デフォルトの名無しさん
20/11/21 13:16:59.22 QfF2kXL70.net
こだわっている当人が>>663を提案されているのに
>良く知らないけどそれもその都度string生成してるんじゃないの
って見もせずに切り捨てているのがわけわからない。自分の作ったunsafeメソッド誉めてほしかったの?

699:デフォルトの名無しさん
20/11/21 15:32:05.57 TFceIuuT0.net
誰も>>661の質問自体には答えてあげてないんだからスレチとしてスルーで良いのでは

700:デフォルトの名無しさん
20/11/21 16:59:03.08 ZU3qCVhf0.net
ASP.NET Coreを勉強してみようと思うんだけど
レンタルサーバの「使えるプログラム」のところに
PHP, Ruby, PyThon, Sh としか書かれてないところはダメですよね?

701:デフォルトの名無しさん
20/11/21 18:32:27.77 +zQLxjm30.net
勉強ならローカルで動かせばよろし。

702:デフォルトの名無しさん
20/11/21 19:15:26.59 pEQG3awY0.net
>>690
ライブラリ教えてなんてレスは一度もしてないし主題とは違う返信に対して検索や外部リンクまでチェックする義務が発生する理屈の方が訳わからない
提案してくれた>>663には感謝するけど、あくまで自分の質問は660のレス内容
C#の質問をしたつもりだけど言語の質問とは違うということであればスレチと言われても仕方ないが

703:デフォルトの名無しさん
20/11/21 20:16:31.79 WQW9Bpg70.net
>>669
編集してるXXX.csファイルを読み込んで
NameValueCollection vals = new NameValueCollection行の次の
{行からそのあとの};行の間の行に先頭スペースを揃えて挿入して
ファイルを上書き保存するミニアプリを作って実行すればいい
テキストの平文ファイルだから編集は簡単
VSで編集中にそのような外部エディタで編集がされると
編集を反映しますかって即座に聞いてくるからはいすれば位置がそろう

704:デフォルトの名無しさん
20/11/21 23:02:14.09 eXf0RCq40.net
>>689 全世界で行われてる円周率演算がすべて世界記録出すために動いてると思ってる馬鹿

705:デフォルトの名無しさん
20/11/22 02:05:01.90 eyJ/0uPg0.net
>>694
①マジレスするとメモリリークはしない。こんなのはGC.Collectしてメモリ使用量を見比べるだけで分かる
②でも>>661の使い方ではインターンプールで潜在的なバグを抱えるからやめた方が良い
③やりたいこと汲み取るなら先人が同じ悩みから到達したソースを使うべき
④ZStringいいよ
余計な遠回りをしないようにこの結論から言ってくれてるんだよ
>>663は優しい奴だよ、まったく

706:デフォルトの名無しさん
20/11/22 02:09:21.16 r7dn6Jzr0.net
>>696
何のためにやってるの?自己満オナニー?

707:デフォルトの名無しさん
20/11/22 02:37:39.25 XfbnXwSba.net
>>696
どっから世界記録とか出てくるの?w
読解力大丈夫かこの人

708:デフォルトの名無しさん
20/11/22 08:48:28.54 VTf/cbNB0.net
>>697
マジレスすると今のところはヘッダオンリーならぬ単ソースオンリーで済ませたいのであんまり外部ライブラリには乗り気じゃないというのもあるが
とは言えZStringを拝見したところu8stringをC#で実装出来てる凄いライブラリであるようなのでtext系ファイルやらwebやらdbのクエリやらで利用したい構想立ちまくったのでありがたくスターポチって記憶させていただく
確かにただのバッファとして作ったものの実態はstringに違いないので何かの拍子にstring.Internしてしまうと結構不味いことになるね
とりあえずGCに影響ないと教えてくれて大分スッキリしたのでありがとう

709:デフォルトの名無しさん
20/11/22 09:03:29.09 0zyBqMyr0.net
>>699
「円周率の桁数を追求する」ってのは結局そういうこと

710:デフォルトの名無しさん
20/11/22 09:27:31.41 7FLAKb9y0.net
一番じゃないと駄目なんですか?

711:デフォルトの名無しさん
20/11/22 13:34:50.51 vJ51qgrt0.net
superPIじゃ駄目なんですか?

712:デフォルトの名無しさん
20/11/25 08:28:57.90 5XzEVJhy0.net
COMインターフェイスをstructに付けてboxing発生させずに使用する方法って皆無でしょうか?

713:デフォルトの名無しさん
20/11/28 16:25:59.35 Msb6oswN0.net
c# プログラマは goto でコロナを拡散してるから、ウィルス作成罪とかで刑務所にぶちこむべき。
もちろん、実質的に goto と同じ if文 、swich case とか使ってるc# プログラマも有罪。
swift や Pythonプログラマは goto 使ってないから無罪。

714:デフォルトの名無しさん
20/11/28 17:07:38.54 goyIH8CW0.net
面白いと思って書いたの?

715:デフォルトの名無しさん
20/11/28 17:18:49.30 qYAW4hVUM.net
705は死刑

716:デフォルトの名無しさん
20/11/28 17:53:33.87 yGy7muY00.net
>>705
Go To Hell

717:デフォルトの名無しさん
20/11/28 17:57:32.34 qYAW4hVUM.net
>>708
このハゲェ!

718:デフォルトの名無しさん
20/11/28 18:38:36.41 pMGwV9fR0.net
Windowsの ini ファイルの内容を Section, Key, Value の順で
List<Dictionary<string, List<Dictionary<string, string>>>> ini;
ini = new List<Dictionary<string, List<Dictionary<string, string>>>>();
として取り込んだものから Section の一覧(Delphi の ReadSections 相当)を
得たいのですが方法がわかりません。
教えていただけませんでしょうか。

719:デフォルトの名無しさん
20/11/28 18:43:14.08 YkgqIE2E0.net
それのどこが分からないのか分からん
あとListはいらなくない?

720:デフォルトの名無しさん
20/11/28 18:54:47.55 v3rIW/CF0.net
>>705
よくわかりません。
C#はgotoを使わずとも実質gotoできるが、
swiftやPythonが実質gotoもできない根拠を示して下さい。

721:デフォルトの名無しさん



722:>2020/11/28(土) 19:14:35.24 ID:pMGwV9fR0.net



723:デフォルトの名無しさん
20/11/28 19:41:10.86 7NcH7NyO0.net
>>710
自分もList使う意味が見いだせない
var ini = Dictionary<string, Dictionary<string, string>>とかで良いんじゃないの?
これならvar value = ini["セクション名"]["キー名"]で取り出せる
if (ini.TryGetValue("セクション名", out var keys) && keys.TryGetValue("キー名", out var value)) とやったほうが良いと思うが
代入はini["セクション名"]["キー名"] = value;


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch