ふらっと C#,C♯,C#(初心者用) Part148at TECH
ふらっと C#,C♯,C#(初心者用) Part148 - 暇つぶし2ch577:デフォルトの名無しさん
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;

724:デフォルトの名無しさん
20/11/28 20:02:20.04 M3lV8yHm0.net
Sectionの配列を得たいなら>>714にLinqのini.Keys.ToArray()

725:デフォルトの名無しさん
20/11/28 20:33:03.95 pMGwV9fR0.net
>>714,715
.NET 5 が出たのを機に c# を始めたところなのでよくわかっていません。
勉強がてら自作の Delphi7(Lazarus) の自作ライブラリと同じ物の作成に挑戦中です。
ini ファイルの読み込みもネットからダウンロードしたものをベースに
改造して動きを勉強しているところです。
ですので List になっている理由もまだ理解できていませんし、Dictionary も
今日初めて見た状態です。一応 List を外してみると
foreach (var dic1 in ini)
{
if (dic1.ContainsKey(section))
{
foreach (var dic2 in dic1[section])
{
if (dic2.ContainsKey(key))
{
return dic2[key];
}
}
}
}
のような場面で ContainsKey がエラーとなりました。
とりあえず Delphi の TMemIniFile と同じ程度までできました。

726:デフォルトの名無しさん
20/11/28 21:13:18.17 M3lV8yHm0.net
>>716
Listを外してforeachする場合はこう変える必要がある
foreach (var dic1 in ini)
{
if (dic1.Key == section)
{
foreach (var dic2 in dic1.Value)
{
if (dic2.Key == key)
{
return dic2.Value;
}
}
}
}
もっと簡単な方法は>>714に書かれてる通り
if (ini.TryGetValue(section, out var keys) && keys.TryGetValue(key, out var value)) return value;

727:デフォルトの名無しさん
20/11/28 21:20:41.11 M3lV8yHm0.net
pascalのiniなんてもう遥か昔に使ったきりだからあんまり覚えてないがそれっぽいの作るとしたらこんな感じか
Dictionary<string, Dictionary<string, string>> ini = Dictionary<string, Dictionary<string, string>>();
string ReadString(string section, string key)
{
if (ini.TryGetValue(section, out var keys) && keys.TryGetValue(key, out var value)) return value;
else return null;
}
これだとnullチェックが必要になるから、Tryメソッドの方が便利だったりする
bool TryReadString(string section, string key, out string value)
{
value = null;
return ini.TryGetValue(section, out var keys) && keys.TryGetValue(key, out value);
}

728:デフォルトの名無しさん
20/11/28 21:27:31.90 M3lV8yHm0.net
そういえばiniは無かった場合の規定値を第3引数に入れておけばいいだけか
それならTryメソッドいらんね

729:デフォルトの名無しさん
20/11/28 23:40:53.47 xlHMBUaz0.net
sectionの一覧が欲しいって言ってるのに、valueを取り出す説明を延々してる奴何なの?

730:デフォルトの名無しさん
20/11/29 00:02:00.65 agHPEKHb0.net
string GetValue(Dictionary<string, Dictionary<string, string >> ini, string section, string key){
if(! ini.ContainsKey(section)) return null;
if(! ini[section].ContainsKey(key)) return null;
return ini[section][key];
}
c#に限った事ではないが、何をしたいのか分かりやすいコードを目指そうな。

731:デフォルトの名無しさん
20/11/29 00:10:23.95 eEpZgXkU0.net
だから質問者が欲しいのはvalueじゃなくてsection一覧だっての

732:デフォルトの名無しさん
20/11/29 06:31:38.45 kNuJF9Ar0.net
datagridviewにユーザーコントロールを埋め込みたいんですけどどうすればいいですか?
windowsformアプリです
ていうかdatagridviewじゃなくてもユーザーコントロールをリストで表示できれば何でもいいです
どなたか教えて下さい

733:デフォルトの名無しさん
20/11/29 08:16:40.50 +pk7xniq0.net
>>723
TableLayoutPanel とか FlowLayoutPanel はどう?

734:デフォルトの名無しさん
20/11/29 08:16:40.50 +pk7xniq0.net
>>723
TableLayoutPanel とか FlowLayoutPanel はどう?

735:デフォルトの名無しさん
20/11/29 09:35:53.03 yrxBBFH+0.net
>>720
それは一番上に書いたんだが

736:デフォルトの名無しさん
20/11/29 09:40:01.71 yrxBBFH+0.net
>>721
section取り出す説明は昨日一番最初のレスで書いたからもう脱線して話すけどなんでここまでTryGet使わない奴って多いんだろうな
どうせ後々インデクサアクセスするならTryGetValueの方がよっぽど分かりやすいと思うんだが

737:デフォルトの名無しさん
20/11/29 12:22:24.94 kNuJF9Ar0.net
>>724
ありがとうございます
試してみます

738:デフォルトの名無しさん
20/11/29 17:19:06.82 b9LXd7l70.net
>>723
DataGridViewCellとDataGridViewColumnを継承して自作

739:デフォルトの名無しさん
20/11/29 17:32:18.08 MpNpLm4W0.net
>>727
ConstainsKey → []は、まずContainsKeyの内部でFindEntry走らせて存在確認し、存在したらインデクサアクセスして再度内部でFindEntry走らせて取り出すという2度手間してるIQ低いコード
TryGetValueは存在確認時にFindEntryしたついでに値も取り出すというスマートな関数
そもそも前者で済むならTryGetValueは存在意義ないから、上記の仕組みを想像できずとも「なんでTryGetValueってあるんだろう?」と疑問に思わなければいけない
ま、C#は多様性受け入れてる言語だから個人開発なら好きに書いたらいいが

740:デフォルトの名無しさん
20/11/29 18:14:07.88 o/YPVzQP0.net
そういう値をローカル変数に代入するのを無駄と言い張って勝手にワンライナーに書き直すような地雷プログラマの振りをするのはやめろよ……初心者が本気にしたらどうするんだよ

741:デフォルトの名無しさん
20/11/29 18:23:09.50 MpNpLm4W0.net
>>731
今の話でローカル変数やワンライナーが出てくる余地あるか?

742:デフォルトの名無しさん
20/11/29 18:52:20.22 o/YPVzQP0.net
>>732
明確にガード節で判定が切り分けられているのに、
「TryGetValueなら判定と取得を同時に行える」と言い出すのはまさしくワンライナー君の物言いだぞ
ifをあえて二つ用意してContainsKeyを使ってる時点で
「ははーん、論理重視のコーディングスタイルか」と察してやるのが有能なプログラマってもんだ

743:デフォルトの名無しさん
20/11/29 18:58:47.11 MpNpLm4W0.net
>>733
???
2連続で全く不必要に同じ処理を挟むような奴がとても論理重視とは思えないんだが、ContainsKey + []とTryGetValueじゃ2倍以上パフォーマンス変わってくるって知ってる?
さっきも言ったけどContainsKeyでも内部的にFindEntryが走り、インデクサアクセスでも再度FindEntryが走るという無駄がある
再度言うがMSがなんでTryGetValueというメソッドを公式でわざわざ用意したかって疑問に思わない?
簡潔さ全振りならそもそもLinq使えばいい話

744:デフォルトの名無しさん
20/11/29 19:01:28.82 tRrXGfded.net
メソッドの戻り値を一回判定するだけなら
一行で書かないほうが変じゃね?
それをわざわざ一旦保存とか逆になんの意図があるのかと
たまにはデバッグやらログで出したいからと言うのはあるがそれは2回利用に当たるから入れて当然やしな

745:デフォルトの名無しさん
20/11/29 19:41:11.64 o/YPVzQP0.net
>>734
久々にふふってなった
まるで昨日の俺を見ているようだ……お前にもいつか悟れる日が来ると良いな

746:デフォルトの名無しさん
20/11/29 20:16:26.39 EVjNfLc/0.net
判定と取得を行いたいんじゃなくて取得を行いたい
なのに判定しないとプログラム上まずいことになるので判定機能付きの取得メソッドを使う
読む上でわざわざ判定と取得を別に書いてるならそこにあえての理由があるんだろうな、と推測しないといけない
今回のケースならあえてのケースなど無いので可読性を下げる要因でしか無い

747:デフォルトの名無しさん
20/11/29 20:17:12.32 3Ka2HmX40.net
>>736
きみ中学生?
男?女?どこ住み?

748:デフォルトの名無しさん
20/11/29 20:28:09.84 HJnVnweF0.net
>>736
それは廓然大悟かね?

749:デフォルトの名無しさん
20/11/29 20:31:48.44 yrxBBFH+0.net
>>737
これのどっちが可読性良いかなんて個人の感想レベルだろ
実際俺は100%下のほうで書いてるけど一度もコードレビューで指摘されたことないしな
そして>>734が言うように実行効率は下の方が2倍近く良いので下を選択すべき理由はある
一方で上を選択すべき理由は見当たらない
if(! ini.ContainsKey(section)) return null;
if(! ini[section].ContainsKey(key)) return null;
return ini[section][key];
if (!ini.TryGetValue(section, out var keys)) return null;
if (!keys.TryGetValue(key, out var value)) return null;
return value;

750:デフォルトの名無しさん
20/11/29 20:43:57.67 yrxBBFH+0.net
一応言っておくけどここでは713や720に合わせて書いてるだけで実際には1行で書いたりこんなに複数retは使わない
returnは一つにしろというレビューは受けたことあるんでな

751:デフォルトの名無しさん
20/11/29 20:51:31.28 3Ka2HmX40.net
>>740
普通に英語として下の方が直感的に分かる
上だと今ですら非直感的な上に変数名によっては更に分かりづらくなる可能性をはらんでる

752:デフォルトの名無しさん
20/11/29 20:54:18.24 YUoXGIHl0.net
>>720
TryGetValue()知ってるオレカッケー
って言うおこちゃまだろw

753:デフォルトの名無しさん
20/11/29 20:56:55.50 EVjNfLc/0.net
無理に一行にするな、が通るならreturnを1つにしなくていいのでは?
数十行あるメソッドのいろんな箇所でreturnしてると気持ち悪いと思うが、こういうタイプなら複数returnで良い
可読性が個人レベルなのはそのとおり
文字の並びが似通っている、ではなくどういう機能を呼んでいるか?という意味
判定付き取得メソッドが標準で用意され、しかもメジャーな内容でパフォーマンスも良い
それでもあえてそれを呼ばないのは特殊な事情があるのでは?と読み手の思考を止めることにつながるという意味

754:デフォルトの名無しさん
20/11/29 21:06:40.39 o/YPVzQP0.net
>>740
上のコードを採用する理由は何の値を戻しているか即座に分かるところ、と俺は判断した
return ini[section][key];
この一文で読解に要する数秒を削る為だけに2倍程度のパフォーマンスを許容するのは普通にありだよ

755:デフォルトの名無しさん
20/11/29 21:23:27.82 EVjNfLc/0.net
メソッド名見りゃそれはわかんじゃん
return文にそういう責務を与える意味は?
どうしても必要というならコメントでも書いとけば良い

756:デフォルトの名無しさん
20/11/29 21:36:16.22 yrxBBFH+0.net
>>744
returnについては可読性に関わる納得できた理由はちゃんとあるんだが自分やチームが使わないというだけで別にうちのコーディング規約を議題に上げるつもりはない(ツッコんでくる人いそうだったから一応書いただけ)
まぁもう好きにしたらええんやない
C#メインで使っていきたいなら言語として用意されてるものは出来る限り利用すべきと思うけど
そこまで学習コスト払いたくないってことなら一つの方法を出来る限り使いまわすというのも利に適ってるしな

757:デフォルトの名無しさん
20/11/29 21:49:34.68 EVjNfLc/0.net
チーム内でのローカルルールがどうなってるかはどうでも良いんですよ
そのチームで合意が取れてるならなんの問題もない
ローカルルールを隠した状態で突っ込まれてローカルルールなんです!って言われても知るかよ、という感想しか出ない
ローカルなものでないなら、基本的には標準に準拠すべきで標準がわざわざtryメソッドを回避している書き方をしていない限り公の場でもそれに準じたほうが良いのでは?というだけ

758:デフォルトの名無しさん
20/11/29 21:53:07.17 yrxBBFH+0.net
>>748
いやだからTryGetValueに関してはそれが標準だろっていうのが一貫した俺の意見であってローカルルールなのは>>741で書いた事
実際にギブハブなんかで数多くのプロジェクト参考にしてきたけどLinqで手っ取り早く書く事は多くてもTryGetValueを使わずにContainsとインデクサとかいう非効率な方法採用してる人なんて見た記憶ないしな

759:デフォルトの名無しさん
20/11/29 21:58:49.11 EVjNfLc/0.net
>>749
なんで突っかかってくるかわからんけど747の前半は複数retの話、後半はtryの話
わざわざローカルの話である複数retのことなんざ話題に上げんで良いよ、try使うのが標準なんだからそれに習ったほうがよくね、
後半は君と同意見なんだよ

760:デフォルトの名無しさん
20/11/29 22:01:07.98 yrxBBFH+0.net
>>750
捕捉程度のノリで書いた事に異様に突っ込んでくるなと思ってビックリしたんでね
それも議題に上げたいのであれば>>740でそういう書き方してるから

761:デフォルトの名無しさん
20/11/29 22:11:12.12 EVjNfLc/0.net
>>751
前提として標準に準拠したほうが良いよね、という主張がある
標準では複数retなんて当たり前に使ってる
それをなぜか否定しているので突っ込んだらローカルルールだ!と言われる
そういうローカルルールがあるのは構わんが、それならそう明記しなきゃ標準に準拠しようという主張とズレてブレブレなだけでは?
まさかレビューを受けたことがある、がうちにはそういうコーディング規約があるんです、の意味だったの?

762:デフォルトの名無しさん
20/11/29 22:16:38.50 yrxBBFH+0.net
>>752
だから本気で否定したいなら739でもそうやって書いてるって言ってるやん
740で書いたのは「沢山return書いてる時点で可読性低い」みたいなツッコミが入るかなーと予測して"一応"と前置きして書いたと言っただろ
そこを議論するつもりはないと書いたのに異様に拘るんだな

763:デフォルトの名無しさん
20/11/29 22:22:25.03 kxXRvhGP0.net
複数リターン禁止www

764:デフォルトの名無しさん
20/11/29 22:22:55.87 o/YPVzQP0.net
>>749
正直俺も見たことないが、>>721が書いてるんだからいるところにはいるんだろ
肝心なのはそいつが何を思ってそういうスタイルにしたのか察して評価してやることで、
>>730みたいに重箱の隅突いて喜ぶのはただの地雷コーダーだからやめるべきだよ
例えば誰かが「ギブハブ」とか言ってても、わざわざ「ギブハブってなんだよバカかよ」と噛み付く必要はないだろ?
GitHubなのは分かるし話は通じてるんだからこいつの中ではこうなのかと納得して「ほーん、ギブハブがどうした?」と聞き返すのが有能なんだよ

765:デフォルトの名無しさん
20/11/29 22:26:49.20 EVjNfLc/0.net
>>753
意味がわからんけど補足がなけりゃツッコミなんてなかったんだよw
こだわってるのはそっちでしょwこっちはそうですか、という感想しか無いよって言ってるやんw

766:デフォルトの名無しさん
20/11/29 22:38:58.86 5TTB8+bC0.net
チャゲアスASUKAのギフハブに監視されてるネタに掛けてGitHubをギフハブと呼ぶのは5chの標準語だと俺も思ってたがそこまで浸透してないのか

767:デフォルトの名無しさん
20/11/29 22:42:09.42 T9vV3uABa.net
なんとも不思議な世界があるんだなあ・・・・
TryGetValueを使うのが今どきの常識的なコーディングだと思ってた自分としては
老害(あるいは悪意があって不適切なコーディングを押し付けようとしてる人)が世迷言をほざいてるだけにしか見えないや

768:デフォルトの名無しさん
20/11/29 22:53:33.81 yrxBBFH+0.net
>>755
その理屈で行くとコードレビューなんて出来なくなるな
(これ明らかに意味のない文だけど何かスピリチュアル的な深い意味があるのだろうか…?配慮して指摘すべきではないか…?)なんて一々考察しなきゃいけないのかよ

769:デフォルトの名無しさん
20/11/29 23:00:13.09 YUoXGIHl0.net
了解

770:デフォルトの名無しさん
20/11/29 23:03:55.81 YUoXGIHl0.net
>>754
MISRAにもあるし高信頼性を要求される場面ではそれなりにありがちな話だよ

771:デフォルトの名無しさん
20/11/29 23:14:22.90 iy3zNsHi0.net
>>759
レビュー受けてるような新人はそんなこと考えなくていいと思うよ
多次元辞書でアクセスそのまま返す利点が分からないならまだお勉強段階なんだから、そういうやり方もあると素直に学んでおけば良い
とりあえずチューニングはベテランがもっと後でやる仕事だから、パフォーマンスがーとか言い出すのは十年早い

772:デフォルトの名無しさん
20/11/29 23:30:20.42 yrxBBFH+0.net
そう主張するのであれば具体的な利点を述べろよ
TryGetValue派は俺以外にもメリット述べてる奴いるけどContainsKey派は「そのほうが見やすい」程度の個人の感想以上は出てきてない
勿論それもメリットではあるがTryGetValueの方が見やすいと言う人もいるのでそこでは差は付かない

773:デフォルトの名無しさん
20/11/29 23:51:14.64 kxXRvhGP0.net
>>761
ねーよ

774:デフォルトの名無しさん
20/11/29 23:59:15.56 AAs5LLYH0.net
宗教論争オモロイなw

775:デフォルトの名無しさん
20/11/30 00:00:33.52 n5NKB6GR0.net
>>763
しょうがないな
こういうケースは極端化すれば明確になる
dic.TryGetValue(a, out var dic2)
dic2.TryGetValue(b, out var dic3)
dic3.TryGetValue(c, out var dic4)
dic4.TryGetValue(d, out var dic5)
dic5.TryGetValue(e, out var value)
vs
var value = dic[a][b][c][d][e]
とりあえず値の取得を比較した場合こうなる
非常に馬鹿げたコードだが後者の方が察しやすくバグりにくいのは分かるはず
これは分岐を差し込んでも同じこと
こんなコードは現実にあり得ないから無効と言い張るなら、所詮はその程度のレベルなんだから黙るべき

776:デフォルトの名無しさん
20/11/30 00:20:59.97 9x2/PpIx0.net
TryGetValue vs ContainsKey+[]の争いでしょ?
なら下はちゃんと一つ一つにContainsKey挟むべき
そして後者の方がバグりにくい理由が全く分からない。まず何のバグを対象としているのか明確に

777:デフォルトの名無しさん
20/11/30 00:25:39.57 G1P0/YpK0.net
レビューを受けるのが新人とか言ってる時点でまともじゃないでしょ
いつの時代のエンジニア思想よw

778:デフォルトの名無しさん
20/11/30 00:26:29.87 E5czHbG2a.net
なんというかb7e4-nc77みたいなのがレビュアーやったら地獄だな
自分が新人だったらたまったもんじゃない

779:デフォルトの名無しさん
20/11/30 00:36:41.15 EEdVS6ls0.net
>>767
お前さんプログラマ向いてないから転職した方が良いよ、マジで
ちゃんと理屈で教えられたことを受け付けないとか先が無さすぎる

780:デフォルトの名無しさん
20/11/30 00:39:46.85 qXuQLmTVa.net
どうせ過疎スレだからスレ消費するのは問題ないと思うけど
あまりに下らな過ぎる論争で萎えるねw
よく読んでないので素っ頓狂なこと言ってるかもしれないけど、
iniファイルぐらいなら馬鹿正直にDictionaryをネストなんかしなくても
section+keyをキーにして平坦化しても良いような気もする

781:デフォルトの名無しさん
20/11/30 00:45:42.05 9x2/PpIx0.net
>>770
答えられないんだね

782:デフォルトの名無しさん
20/11/30 01:29:55.64 a85534SW0.net
ini parserの中身を見たらContainsKey + インデクサだった
URLリンク(github.com)
自分なら使う側のコードがシンプルになるようにini[section][key]かini[section]?[key]の形で
sectionかkeyがnullならnullを返すようにDictionaryを少し拡張するかな

783:デフォルトの名無しさん
20/11/30 05:30:56.15 lgcZd+iw0.net
>>764
お前がそういう世界を知らんだけ

784:デフォルトの名無しさん
20/11/30 08:23:44.56 gN60+pZv0.net
相変わらず質問者無視で議論してるのウケる
テンプレ読めない人多すぎでしょw

785:デフォルトの名無しさん
20/11/30 08:57:23.41 8S8hZPx60.net
>>771
そもそもini直接操作するならWin32APIにセクション名とキー名と無かった場合の規定値を突っ込むだけで良いからDictionaryすらも何もいらない
pascalにはMemIniみたいな基本はファイルには書き込まないクラスがあるからそれを実装しようと思ったらDictionaryがベストなんじゃない
>>775
section一覧を返す方法は一昨日の一番最初のレスでしたって昨日言ったはずだが無視してるのはお前の方だろ

786:デフォルトの名無しさん
20/11/30 09:04:32.51 8S8hZPx60.net
>>773
そのプロジェクト見た感じTryGetValueを一度も使ってないから恐らくJavaか何か出身で存在知らないんだろうな
ContainsKeyは割と色んな言語にあるからこっちの方が認知度高いのは間違いない
なので昨日も言ったが一々C#に学習コスト払いたくないって人もいるだろうからそういう場合は好きにしたらいい

787:デフォルトの名無しさん
20/11/30 10:07:26.68 3MSQwEh40.net
>>776
テンプレ読めよ
「議論」するなと言っているんだが

788:デフォルトの名無しさん
20/11/30 10:12:11.16 I8/NWgIp0.net
テンプレ読めないって事はレスも読めないんだから言っても無駄
粛々とNG

789:デフォルトの名無しさん
20/11/30 10:29:32.82 lgcZd+iw0.net
>>766-767
まあここまで極端な例なら
try {
var value = dic[a][b][c][d][e];
} catch(){
}
ってやる事を検討してもいいかも

790:デフォルトの名無しさん
20/11/30 10:45:42.20 0LXXOsdO0.net
>>777
お、ようやく自分の間違いを認めたか
まあContainsKeyの方が可読性高いのは当たり前なんだが
762 名前:デフォルトの名無しさん (ワッチョイ 9f24-GtYN) [sage] :2020/11/29(日) 23:30:20.42 ID:yrxBBFH+0
そう主張するのであれば具体的な利点を述べろよ
TryGetValue派は俺以外にもメリット述べてる奴いるけどContainsKey派は「そのほうが見やすい」程度の個人の感想以上は出てきてない
勿論それもメリットではあるがTryGetValueの方が見やすいと言う人もいるのでそこでは差は付かない

791:デフォルトの名無しさん
20/11/30 11:16:43.36 o8riI3080.net
>>781
可読性と認知度は全然違う意味だと思うけど、っていうのは置いといて
>>733とか>>766とかさすがに釣りでしょって思わせるレスがちらほらあるから、喧嘩両成敗はちょっと可哀想な流れ

792:デフォルトの名無しさん
20/11/30 11:55:30.78 tpJ2df0N0.net
>>774
ちょっとはググれよ

793:デフォルトの名無しさん
20/11/30 11:58:06.51 UK/ABAdxa.net
認知度と可読性が別物か
職場で宇宙人って呼ばれてそう

794:デフォルトの名無しさん
20/11/30 12:11:19.73 zbjAWIZjd.net
>>780
これでええやん
例外が重い?知るかよ

795:デフォルトの名無しさん
20/11/30 12:13:44.19 lgcZd+iw0.net
>>783
> ちょっとはググれよ
ブーメラン過ぎる、ってかググっても悪魔の証明はできないぞw

796:デフォルトの名無しさん
20/11/30 12:15:09.00 0LXXOsdO0.net
TryGetValueを使うことに拘りすぎててアスペ臭しか感じない
好きにしろと言いながら必死で反論してんのが特にな
多様性を許容するっていうのは>>755みたいなスタンスなんだよ
ここまで言われて「何言ってんのか分かんない」と騒ぎ続けるのは感情で理解を拒んでるだけの地雷君
「そういうの嫌われるからやめよ?」って指摘されてるのに「なんで? 俺が正しいじゃん?」って返すのは馬鹿を通り越した何かだわ

797:デフォルトの名無しさん
20/11/30 12:26:00.27 tnWbc17e0.net
こういうレスちんぽバトルやめねぇ?

798:デフォルトの名無しさん
20/11/30 12:51:21.50 tpJ2df0N0.net
>>786
MISRAって名前まで分かってるのに?

799:デフォルトの名無しさん
20/11/30 12:52:22.17 PPubPKASd.net
いまだに複数リターン禁止なんて言ってる時代錯誤なやつがいるのかよ…

800:デフォルトの名無しさん
20/11/30 14:08:46.39 lgcZd+iw0.net
>>789
???
ないことの証明だよ?
悪魔の証明って知らんの?

801:デフォルトの名無しさん
20/11/30 14:09:59.63 lgcZd+iw0.net
>>790
だからお前等の知らない世界があるって話
まあC++とかC#だと例外とか使えるからだいぶ緩和されるけど

802:デフォルトの名無しさん
20/11/30 14:11:44.42 tpJ2df0N0.net
>>791
まずはあることを示してから

803:デフォルトの名無しさん
20/11/30 14:31:16.69 zbjAWIZjd.net
>>792
アセンブラ以外でFalseは即リターンなんてベストプラクティスやん
if elseとか基本ダサいんだよね

804:デフォルトの名無しさん
20/11/30 15:11:50.10 lgcZd+iw0.net
>>793
それこそ misra multiple return とかでググればいくらでも出てくるだろw
URLリンク(www.viva64.com)
>>794
だからそう言うのが非推奨な現場があるというだけの事
個人的には関数の頭でのエラーチェックでエラーだったら即リターンとかよくやってる

805:デフォルトの名無しさん
20/11/30 15:27:06.61 tpJ2df0N0.net
>>795
それのどこがC#なんだ?

806:デフォルトの名無しさん
20/11/30 16:36:59.20 r8rQ87Qr0.net
関数の出口が、複数ある奴か。
危険だから、MISRA-C の禁止事項
一方、Linux では関数の冒頭で、処理しない場合は、即リターンするとかやってる。
関数の出口に、goto で例外処理をまとめたりとか
MISRA-Cを守らない場合は、逸脱手続きが必要。
トヨタなどは、MISRA-Cで、4/100 しか点数を取れなかったとか聞いたw
MISRA-C研究会にも、トヨタのベテランが加入してるのに

807:デフォルトの名無しさん
20/11/30 16:46:43.31 dO4rlTbV0.net
俺社環だけど、これ指摘したらそれは例外処理や自動メモリ管理がないCであって、C#ではそこまで気にする必要ないんじゃね?で終わったな

808:デフォルトの名無しさん
20/11/30 16:53:06.40 r8rQ87Qr0.net
辞書のキーが存


809:在しないのは、例外じゃない。 最初から想定内の事で、予想がつくから 例外はファイルが存在しないとか Go では例外を嫌って、複数の戻り値で、エラー値を返す



810:796
20/11/30 16:56:08.66 r8rQ87Qr0.net
漏れは、戻り値を変数に入れておいて、return は1つだけにしてる
if 条件
result = 1
else
result = 2
end
return result

811:デフォルトの名無しさん
20/11/30 17:07:26.72 pPofn0IB0.net
うっかりミスってreturnし忘れてもIDEが警告してくれるから、分岐それぞれでreturnするほうが好き

812:デフォルトの名無しさん
20/11/30 17:08:29.73 8S8hZPx60.net
複数returnとかワンライナーとかはそれこそ正解の無い事だから各々好きにしてくれよ
TryGetValueとContainskey+インデクサは正解があると思ってるからこっちはつい反論し続けてしまったが

813:デフォルトの名無しさん
20/11/30 17:11:06.92 DAJE5R+zd.net
なぜこのスレはテンプレを見る限り質問スレなのにスレタイにそれを示唆する文言が入っていないのですか?

814:デフォルトの名無しさん
20/11/30 17:15:26.09 3PLmCTmV0.net
ヌルチェックやりはじめてから一刻も早くreturnすることを考えて書くようになった
階層が深くならないので見やすいし、上の部分だけである条件にあてはまった処理が完結してるので読みやすい

815:デフォルトの名無しさん
20/11/30 17:24:24.88 tpJ2df0N0.net
>>798
ね、Cですら"推奨"なのに

816:デフォルトの名無しさん
20/11/30 18:17:44.47 a85534SW0.net
>>797
>危険だから、MISRA-C の禁止事項
Mandatory, Required, Advisoryの3段階のうちAdvisoryなので禁止事項ではないね

817:デフォルトの名無しさん
20/11/30 18:30:53.38 n+7nNLssM.net
>>801
さすがにMISRAとかが言ってるのはそう言う低レベルな話じゃなくて途中脱出でのリソース開放漏れとかを心配してる
なのでC#なら例外とかusingとかを適切に使えばそれほど問題にならない
クラス継承させた時のIDisposeのコーディングが面倒なのがたまにキズだけど

818:デフォルトの名無しさん
20/11/30 18:52:25.38 +JMSCADPD.net
議論は然るべきスレでどうぞ
ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net
スレリンク(tech板)

819:デフォルトの名無しさん
20/11/30 19:48:14.13 xZxi3SwM0.net
>>806
またRuby君がいい加減な知識で嘘を垂れ流そうとしてたわけか

820:デフォルトの名無しさん
20/11/30 21:11:19.50 X4ikUZ5gM.net
いい加減なのは知識じゃなくて遺伝子じゃねえのか
欠陥品なんだから

821:デフォルトの名無しさん
20/11/30 21:11:29.21 a85534SW0.net
少し調べてみたけどMISRAがsingle returnを推奨する根拠に上げてるIEC 61508には
”subprograms should have a single entry and a single exit only;”と書かれているだけ
そこに参考文献としてヨードン/コンスタンティンの「ソフトウェアの構造化設計法」を上げてるが
ヨードンやダイクストラが提唱したsingle exitは時代的にも意味が違うのでルール自体の根拠が薄い
URLリンク(softwareengineering.stackexchange.com)
1993年出版のCode Completeでも今回のようなケースはmultiple returnが推奨されてるくらいなので
single returnはリソースクリーンアップが必要だけど
他の方法がどうしても取れないような特殊なケースでしか意味がないと思って良さそう

822:デフォルトの名無しさん
20/11/30 21:15:38.40 tnWbc17e0.net
どうでもよくねw

823:796
20/11/30 21:56:17.24 r8rQ87Qr0.net
Cプログラミングの落とし穴
C Traps and Pitfalls, Andrew Koenig, 1989
ここから、Lint, MISRA-C などが出来た

824:デフォルトの名無しさん
20/11/30 22:27:10.33 n5+DCEBK0.net
c#スレなんですがそれは

825:デフォルトの名無しさん
20/12/01 11:25:23.55 ZwYRJuoF0.net
C#とはC++++、つまりCとC++を継承した言語である
よってC#スレにおいてCとC++は範囲内
悔しかったら言語名を変えることだな

826:デフォルトの名無しさん
20/12/01 11:27:04.96 vLuBExG+d.net
キチガイ

827:デフォルトの名無しさん
20/12/01 11:45:19.44 K5BMxGNOM.net
似た話でelseを省略するな派もたまにいるけど、元はCOBOLの文法ではelse書かないとブロックの区切りが分かりにくいかららしいね

828:デフォルトの名無しさん
20/12/01 12:14:20.95 k3h/30i7a.net
そんな流派の人に会ったことないけど、意図はたぶん古典的なぶら下がり問題対策だろうね
俺はこんなミスしたことないしIDEの時代には杞憂だと思うけど
if (true)
  if (false) {}
else Console.WriteLine("来ないはず");

829:デフォルトの名無しさん
20/12/01 14:56:29.62 6hEFZljjM.net
elseを省略しちゃダメって言うのは俺も見たことないな
>>818みたいなのを避けるために { } を省略しちゃダメって言うのは見かけるけど

830:デフォルトの名無しさん
20/12/02 00:57:12.14 +AssLSaA0.net
最近久しぶりに起動したらVSのテキストエディタの「自動メンバー表示」の項目ををカーソルキーで動かすのがとんでもなく重いんだけど俺環?

831:デフォルトの名無しさん
20/12/02 01:47:00.65 HjUyDubp0.net
Dispose()しないといけない条件がいまいち分からないんですが、
コンポジションとして参照を保持しているメンバーがDispose()メソッドを持ってたら、Dispose()を実装しないといけない、ていう理解でいいんでしょうか?

832:デフォルトの名無しさん
20/12/02 10:14:54.41 ebqkblVHH.net
>>821
たとえばファイルを開いて中身を書き換える処理をFileStreamでするじゃん
開いてる間は他の人やプログラムがそのファイルを使えない状況になるから
使い終わったらちゃんとDisposeで閉じましょうねって事

833:デフォルトの名無しさん
20/12/02 12:15:24.35 q6qthHEM0.net
画像とかメモリ消費量が多いオブジェクトに対して、使い終わったらちゃんとDisposeで破棄しましょうねって事

834:デフォルトの名無しさん
20/12/02 12:32:26.40 /5AdVnEZ0.net
>>821
基本はYes
内部でそのメンバをDisposeする仕組みが他にあるなら別に実装しなくても良いが、とは言えIDisposableを実装しておけばそのラップクラスでもusingステートメント使えるから分かりやすいしね
IDisposableはコードでDisposeせずともGCによる破棄タイミングでDisposeしてくれるから最悪し忘れても大丈夫だが(GCによるオートDisposeはパフォーマンスが悪いので出来れば避けるべきだが)

835:デフォルトの名無しさん
20/12/02 12:51:23.41 VuN4nxV5M.net
>>821
そうとは限らない
たとえば外部のAPIを使っていて、使い終わったら必ずある処理を最後に呼ばなければならないという決まりがある場合
たとえばある一連の処理の間は一時ファイルを作り、最後に消す必要がある場合
そういったユースケースをクラスにするならDisposeを実装することになるだろうな
Disposeってのはつまり、最後に特定の処理を必ず呼ばなければならないという規約に他ならない

836:デフォルトの名無しさん
20/12/02 18:14:26.77 w77bbFvMa.net
>>821
エンジニアは教条主義的に考えてはいけない。
何も難しくない。
オブジェクトが自分のメンバー(フィールドかプロパティ)のDisposeを呼ぶべきタイミングを
自分で判断できるならわざわざDisposeを実装して他人にそれを任せる必要はない。
できないならDisposeを晒して他人にお願いする。
それだけでしょ。
でも「Disposeを呼ぶべきタイミングを自分で判断できる」のはメソッド呼び出しが
完了した後も別のスレッドで動作を続けるタイプのオブジェクトだけなので
そうは多くないはずだよね。

837:デフォルトの名無しさん
20/12/02 19:47:17.83 o81q9kO+D.net
>>1
> なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#, C♯, C#相談室 Part94
スレリンク(tech板)
ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net
スレリンク(tech板)
テンプレも読めない奴らがする議論は、
もはや議論ではなくマウンティング合戦

838:デフォルトの名無しさん
20/12/02 20:41:49.29 w77bbFvMa.net
>>827
君がやってるのもそのマウンティング合戦のうちなのは自覚して欲しいよねw
もはや5ch全体がそうだけど特にここは過疎スレなわけで、そんな目くじら立てることないと思うよ
誰か困る奴いるの?w
誰もいないって。

839:デフォルトの名無しさん
20/12/02 21:21:31.32 hwkqsjy70.net
過疎スレでもルールは守れよ

840:デフォルトの名無しさん
20/12/02 21:58:13.02 4huF2MSH0.net
マウンティング合戦なんか起こってたら
初心者が尻込みして書き込むのをやめてしまったりするわな

841:デフォルトの名無しさん
20/12/03 00:08:24.38 AfLSjnCy0.net
winformでwebview2を使ってるんですけどcookieをセットする方法がわからなくて困ってます
どなたかわかる方教えて下さい

842:820
20/12/03 02:05:41.69 plL1xX/c0.net
みなさんありがとうございます。
そして何かすみませんでした。

843:デフォルトの名無しさん
20/12/03 06:58:36.35 HwhU8QlY0.net
>>832
絶対に許さねぇからな
末代まで祝ってやるから覚悟しろよ

844:デフォルトの名無しさん
20/12/03 07:07:12.64 UmUyqAch0.net
今更訊きづらいけどgoto文のラベルの命名ルールって
     goto maki;
hirohisa:
     System.Console.WriteLine("誰だよ");
     goto hell;
maki:
     System.Console.WriteLine("知ってる");
     goto hirohisa;
hell:
     System.Console.WriteLine("そうだな");
こんなんでいいの?

845:デフォルトの名無しさん
20/12/03 09:22:44.20 Mqqeu2dm0.net
>>831
webView2.CoreWebView2.CookieManagerはどう?

846:デフォルトの名無しさん
20/12/03 16:26:09.15 UmUyqAch0.net
webview2とCEFSharpのどっちがいいのか

847:デフォルトの名無しさん
20/12/04 01:59:10.27 /XRPGQMq0.net
IDisposable obj = otherObj;
using(obj){
obj = anotherObj;
}

848:デフォルトの名無しさん
20/12/04 03:16:37.86 yDsXPkFS0.net
>>837
これビルド通るの?
>オブジェクトは、using ブロック内では読み取り専用です。変更したり再割り当てしたりすることはできません。

849:デフォルトの名無しさん
20/12/04 16:12:00.25 ZsgfFad40.net
nugetからインストールしたライブラリですが
別のパソコンから同じプロジェクトを開けるとusing句がエラーになってしまい
ライブラリを一度アンインストール→インストールし直さなくてはなりません
複数のパソコンで同一プロジェクトを編集するときnugetは使えないのでしょうか

850:デフォルトの名無しさん
20/12/04 16:16:23.76 0hbyHhKrd.net
nugetの修復みたいなことすれば足りないもの探して再DLしてくれるよ

851:デフォルトの名無しさん
20/12/04 16:31:08.42 e5C89TYX0.net
”別のパソコンから”ってもしかしてネットワーク共有して直接開いてるの?

852:デフォルトの名無しさん
20/12/04 16:55:03.48 ot5BaqCCa.net
>>839
COMじゃないならライブラリのアセンブリをプロジェクトのフォルダ内に置いて
それを参照すれば一応できるんじゃないの?
やったことないから知らんけど

853:デフォルトの名無しさん
20/12/04 16:55:13.19 edWfS5jb0.net
>>839
nugetのライブラリって各PCっていうかVS毎に管理しているから、ソースを別の場所に
持っていったらその環境で指定されているライブラリを拾わないとダメなんじゃ
なかったっけ?
>>840が言ってるみたいなことがnugetの管理ツールだかメニューにあったような

854:デフォルトの名無しさん
20/12/04 17:04:36.37 ZLeuk8KN0.net
>>839
チキンマックナゲットは
セールのときは5個入り200円だから
そのときに買うのがベストだと思うよ。

855:デフォルトの名無しさん
20/12/04 17:05:31.23 ZLeuk8KN0.net
ソースは必ずバーベキューを。
バーベキュー以外は糞まずくハズレ。

856:デフォルトの名無しさん
20/12/04 17:25:30.91 0hbyHhKrd.net
CIでビルドするとき、確実にnugetの修復が必要になるから構築したことあるならわかるはず
コマンドラインからnugetにsln渡してやればDLしてくれる
つうかオンラインからいつでも好きなversionを落としてこれるのがnuget等ライブラリ管理ソフトの強みなんだからプロジェクト内にファイルなんて置いたらメリットが減る
外部ライブラリを編集しないのにバージョン管理下においてプロジェクトを肥大化させる意味がない

857:デフォルトの名無しさん
20/12/04 17:50:19.19 EWRKs4L00.net
Nugetってmpnと比べて
なんでなんなにトラブルの?

858:デフォルトの名無しさん
20/12/04 17:56:44.09 vwTMj3ZS0.net
mpn…なんな…?

859:デフォルトの名無しさん
20/12/04 18:37:31.14 4RJVpdFOr.net
わりっ!

860:デフォルトの名無しさん
20/12/04 18:50:13.35 V5csDP6P0.net
dotnet restoreすればいいけどdotnet buildとかやれば勝手にやってくれる

861:デフォルトの名無しさん
20/12/04 18:57:48.00 L60rBM570.net
>>838
適当なクラスに置き換え�


862:スらビルドできますよ。



863:デフォルトの名無しさん
20/12/04 22:05:08.94 9AUT9QCq0.net
新潟から週2回東京に出勤、サイボウズの複業採用社員に聞く複業ライフのリアル。
URLリンク(www.businessinsider.jp)
兼業でフリーライター、サイボウズ社員・明石悠佳に学ぶパラレルワーク術
URLリンク(www.wwdjapan.com)
「複業を解禁しなければ人も企業も成長しない」複業全面OKのサイボウズ社長と実践社員の本音対談
URLリンク(www.businessinsider.jp)
育休は最長6年、副業もOK! サイボウズはなぜ「100人100通りの人事制度」を作ったのか
URLリンク(logmi.jp)
超異例「週休4日制」の導入をSMBC日興証券社長が決めた理由
URLリンク(diamond.jp)
週休3日制をさらに進めた週休4日制
URLリンク(www.k-society.com)
採用情報(週休3日制を超えた週休4日制の正社員求人 | 副業OK
URLリンク(www.k-society.com)
2020年4月より「週休3日制」を導入。テックカンパニー化に向け、好循環を生み出すエンジニアリング組織へ
URLリンク(prtimes.jp)

864:デフォルトの名無しさん
20/12/05 09:07:58.88 7mh3qGhb0.net
ライブラリの話ですみません
SevenZipSharpにてSolid圧縮ファイルを[STAThread](FormやWPFのメインスレッド)にてExtractArchiveするとフリーズしてしまうのは私だけでしょうか?
別スレッドやTask化したり、そもそもSTAThreadが使われないConsoleアプリでは同期でも全く正常にSolid圧縮も解凍されるのですが

865:デフォルトの名無しさん
20/12/05 10:37:20.60 kSej4vti0.net
List<List<List<int>>>→List<List<int>>
List<List<int>>→List<int>
にする方法ってLINQでは不可能ですか?
並び順は変えないとします。
for使うしかないですか?

866:デフォルトの名無しさん
20/12/05 10:38:07.01 kSej4vti0.net
後者が
{1,2,4}{3,9,8}→1,2,4,3,9,8って感じ

867:デフォルトの名無しさん
20/12/05 11:00:35.05 DXfBmITDd.net
>>854
var result = iList.SelectMany( i => i )

868:デフォルトの名無しさん
20/12/05 11:12:57.38 +y18mv1b0.net
ぐぐればすぐ見つかるわよ

869:デフォルトの名無しさん
20/12/05 11:31:13.29 CCPlFK06M.net
>>857
なぐるわよ

870:デフォルトの名無しさん
20/12/05 11:42:56.05 kSej4vti0.net
>>856
順番変わりますか?

871:デフォルトの名無しさん
20/12/05 11:52:38.53 qYbtudQ20.net
TOARRAYのADDRANGEだよさっさとしろよグズ

872:デフォルトの名無しさん
20/12/05 12:31:48.70 fwzFFaeU0.net
>>859
多分変わらないけど、やってみて。

873:デフォルトの名無しさん
20/12/05 12:39:27.19 qL2nBB2w0.net
>>853
それは本来1秒とかで終わるはずがいつまで経っても終わらないってこと?
まあUIスレッドでやることじゃないからTask使ってればいいよ

874:デフォルトの名無しさん
20/12/05 13:26:31.39 UBJq3HVh0.net
nlogで入れた.configが読み専になったから、しょうがなくありものを先に置いといてnugetしなおしたらなんとかなった

875:デフォルトの名無しさん
20/12/05 14:02:33.08 cSIoQ91v0.net
>>859
仮に駄目なら自分で拡張メソッド書けばいいだけだよ
数分で書ける程度のもの

876:デフォルトの名無しさん
20/12/05 15:30:56.23 OcFAL7DuM.net
手元では大丈夫でもリリースした先でダメでした、というオチがたのしそう

877:デフォルトの名無しさん
20/12/06 10:13:12.99 a+vxG21/r.net
c#9.0でガラッと変わるので皆さん頑張ってお勉強してください

878:デフォルトの名無しさん
20/12/06 10:18:38.00 a+vxG21/r.net
C#の思想が塗り替えられています

879:デフォルトの名無しさん
20/12/06 10:20:10.96 xxrxxdsn0.net
たとえば?

880:デフォルトの名無しさん
20/12/06 10:26:12.41 a+vxG21/r.net
recordです
他の言語から輸入した超便利機能です

881:デフォルトの名無しさん
20/12/06 11:07:39.97 GAck2gc00.net
recordは便利だけど勉強しなおさなきゃいけないレベルでもない
新しいこといくつか覚えればいいだけ

882:デフォルトの名無しさん
20/12/06 11:11:11.75 HPmVPA7T0.net
expression blocksあたりが来たらC#はC#とは違う別のなにかになりそうな勢いだな

883:デフォルトの名無しさん
20/12/06 11:38:38.75 q4vfNSTS0.net
recordって別にただのstructだろ?
比較の仕方が違うだけで

884:デフォルトの名無しさん
20/12/06 11:42:51.47 bQe6lBYR0.net
参照型のイコールの動作がわかんなかった

885:デフォルトの名無しさん
20/12/06 11:51:20.42 oEu15NIyd.net
>>872
根本的に勘違いしてるぞお前
record はstructじゃねーよ

886:デフォルトの名無しさん
20/12/06 12:22:22.88 3Mg1tJ4o0.net
>>874
KWSK

887:デフォルトの名無しさん
20/12/06 12:41:32.76 GAck2gc00.net
URLリンク(docs.microsoft.com)
レコード型を使用すると、変更できない参照型を .NET で簡単に作成できます。
従来、.NET 型は、参照型 (クラス型と匿名型を含む) と値型 (構造体とタプルを含む) に大別されています。

888:デフォルトの名無しさん
20/12/06 12:56:19.96 E6YSEnmp0.net
つまり、リードオンリーで参照するみたいな感じか?

889:デフォルトの名無しさん
20/12/06 13:08:05.96 e5/goOFG0.net
record自体に動的な参照型は持てない感じ?

890:デフォルトの名無しさん
20/12/06 13:08:42.54 a+vxG21/r.net
多分今後recordを使ってないコードを見るとイライラするようになるでしょう
今すぐにじゃなくてもそのうち確実に
古いコードは全部打ち捨てられるでしょう
ただMVVM命の人には関係ないでしょう

891:デフォルトの名無しさん
20/12/06 13:13:29.20 a+vxG21/r.net
そして普通にprivateを使わなくなる可能性もあります
C#の初期の思想が徐々に塗り替えられ捨てられていきます


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