!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part147
http://mevius.5ch.net/test/read.cgi/tech/1582100741/
■関連スレ
C#, C♯, C#相談室 Part94
http://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
ふらっと C#,C♯,C#(初心者用) Part148
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ df89-moxv)
2020/05/27(水) 20:28:41.27ID:Pggemlyq0584デフォルトの名無しさん (ワッチョイ 45da-a+w2)
2020/11/13(金) 22:02:04.34ID:qUM0ZuKL0 wikipediaに依ると円周率の計算は
π/4 =1- 1/3 + 1/5 - 1/7...らしい
BigIntegerで1を必要な桁数だけ大きくすれば良いような
π/4 =1- 1/3 + 1/5 - 1/7...らしい
BigIntegerで1を必要な桁数だけ大きくすれば良いような
585デフォルトの名無しさん (ワッチョイ 4d33-Y0tO)
2020/11/13(金) 22:07:03.28ID:KPuGe7Gc0586デフォルトの名無しさん (ワッチョイ 4ba7-PcSI)
2020/11/13(金) 22:26:47.07ID:A6rK79tx0 だから言語に分数型が必要だって言っただろアホが
587デフォルトの名無しさん (ワッチョイ 4bf2-pfTD)
2020/11/13(金) 23:04:03.67ID:V7nqUCXH0 いや、もっとストレートに円周率型が必要
588デフォルトの名無しさん (ワッチョイ 6347-NSHw)
2020/11/14(土) 00:22:57.13ID:XJ24TZhC0589デフォルトの名無しさん (ワッチョイ 4b63-RL7t)
2020/11/14(土) 05:05:39.51ID:hLsGLi/C0 分数型があったところで無理数は表現できなくね?
アレば便利なことには間違いないが
アレば便利なことには間違いないが
590デフォルトの名無しさん (ワッチョイ 4ba7-PcSI)
2020/11/14(土) 09:03:12.56ID:cYQm19/50591デフォルトの名無しさん (ワッチョイ cd7c-LlJe)
2020/11/14(土) 15:27:05.74ID:HtCqr6h30592デフォルトの名無しさん (ワッチョイ 4d33-Y0tO)
2020/11/15(日) 09:17:33.20ID:TE31pbc70 日本でC#使うのは殆どUnityかWindowsデスクトップアプリだからな
数値計算とかしたいならPython使うしかない
数値計算とかしたいならPython使うしかない
593デフォルトの名無しさん (アウアウクー MM41-2xue)
2020/11/15(日) 09:55:21.46ID:zLhs1absM 業務アプリで1/3することってあるよ
594デフォルトの名無しさん (スプッッ Sda1-U08M)
2020/11/15(日) 12:40:40.11ID:wWBHTATOd C#ってCやVC++と比べるとかなり遅い
ですか?
遅いなら、時間の掛かる処理だけは速い言語で作るべきか悩みます
マーシャリングすれば使えるみたいなので
ですか?
遅いなら、時間の掛かる処理だけは速い言語で作るべきか悩みます
マーシャリングすれば使えるみたいなので
595デフォルトの名無しさん (ワッチョイ e52d-gWUl)
2020/11/15(日) 12:45:13.00ID:MP+vmq9O0 >>594
処理の内容と書き方による
処理の内容と書き方による
596デフォルトの名無しさん (ブーイモ MM39-C8e5)
2020/11/15(日) 12:45:47.16ID:4zqmLj42M 物にもよるが3割減ぐらいに思っておけば
597デフォルトの名無しさん (ブーイモ MM6b-eZDb)
2020/11/15(日) 12:58:30.49ID:TbjZIaKaM 分数型を作るのは面白そうやん。約分や通分の機能を持たせておけば素敵。てかMS考えてくれ。
598デフォルトの名無しさん (アウアウイー Sa41-5TVo)
2020/11/15(日) 13:20:31.23ID:ttHD4odoa >>594
ファイル読み書きやネットワークアクセスが一切なくて100%CPUパワーを使うだけのプログラムなら差が出るかもしれないけど
そうでなければ処理時間の差などI/Oにかかる時間に比べればごくわずかで塵にも等しい
ので気にするだけ無駄
というかCPUパワーを極限まで使い倒すなら、C#でマルチコア並列実行できるよう処理を書いたほうが
C/C++のシングルスレッド処理よりよっぽど早いかもしれない
よほど低性能なマシンで実行するならともかく、今どきの環境なら全部C#で書くほうが無難だと思うけどね
ファイル読み書きやネットワークアクセスが一切なくて100%CPUパワーを使うだけのプログラムなら差が出るかもしれないけど
そうでなければ処理時間の差などI/Oにかかる時間に比べればごくわずかで塵にも等しい
ので気にするだけ無駄
というかCPUパワーを極限まで使い倒すなら、C#でマルチコア並列実行できるよう処理を書いたほうが
C/C++のシングルスレッド処理よりよっぽど早いかもしれない
よほど低性能なマシンで実行するならともかく、今どきの環境なら全部C#で書くほうが無難だと思うけどね
599デフォルトの名無しさん (ワンミングク MMa3-2Uwn)
2020/11/15(日) 13:23:38.35ID:y3jy+ngDM >>597
すでに有理数クラスがNugetにあるで
https://www.nuget.org/packages/Rationals/
Example usage:
Rational left = (Rational) 1 / 2;
Rational right = (Rational) 1 / 4;
Rational sum = left + right; // equals to: 3 / 4
すでに有理数クラスがNugetにあるで
https://www.nuget.org/packages/Rationals/
Example usage:
Rational left = (Rational) 1 / 2;
Rational right = (Rational) 1 / 4;
Rational sum = left + right; // equals to: 3 / 4
600デフォルトの名無しさん (ワッチョイ a37c-WW/G)
2020/11/15(日) 16:21:09.71ID:d0/9SCdg0 >>594
どうしてもC++のライブラリをC#で使いたいとかじゃないかぎり
そのマーシャリングの処理が何気に重い気がするので
関数を何度も呼び出すみたいな使い方するなら
ベンチマーク取ってみるとC#のみの方が速いかも知れないぐらいの差じゃないかな
どうしてもC++のライブラリをC#で使いたいとかじゃないかぎり
そのマーシャリングの処理が何気に重い気がするので
関数を何度も呼び出すみたいな使い方するなら
ベンチマーク取ってみるとC#のみの方が速いかも知れないぐらいの差じゃないかな
601デフォルトの名無しさん (ワッチョイ 2324-PC2A)
2020/11/15(日) 16:38:42.28ID:alkL58xG0 >>600
マーシャリングが重いって言うと例えば
extern IntPtr GetProcAddress(IntPtr hModule, [MarshalAs(UnmanagedType.LPStr)] string procName);
とする場合、のprocNameをAnsiに変換するときってヒープ使われるの?
ヒープ使われるんだとしたら自前でstackallocしてbyte*として渡そうと思うけど
マーシャリングが重いって言うと例えば
extern IntPtr GetProcAddress(IntPtr hModule, [MarshalAs(UnmanagedType.LPStr)] string procName);
とする場合、のprocNameをAnsiに変換するときってヒープ使われるの?
ヒープ使われるんだとしたら自前でstackallocしてbyte*として渡そうと思うけど
602デフォルトの名無しさん (アウアウウー Saa9-1iYl)
2020/11/16(月) 08:44:05.44ID:dMCYT8Lea603デフォルトの名無しさん (ワイーワ2 FF93-NSHw)
2020/11/16(月) 10:53:58.92ID:sF1WJXNTF GCは何時発動するか判らんのが欠点だけど
C#のGCはタイミングは常に判ってるのかな
C#のGCはタイミングは常に判ってるのかな
604デフォルトの名無しさん (ワッチョイ 7501-mYn1)
2020/11/16(月) 11:05:41.67ID:qYJ3Dm/90 タイミングがわかるわけじゃないけど引き起こす可能性のある手続きはわかっている
コーディングでそれを避けられる余地があるからUnityとかでまだ採用されてるんじゃない?
コーディングでそれを避けられる余地があるからUnityとかでまだ採用されてるんじゃない?
605デフォルトの名無しさん (ワッチョイ e52d-gWUl)
2020/11/16(月) 11:27:25.87ID:jhzDiMvL0 本当にクリティカルな区間はGCを(出来るだけ)禁止する等ある程度は制御できる
606デフォルトの名無しさん (ワッチョイ 257c-89Yn)
2020/11/16(月) 11:30:54.33ID:Ixi420Wb0 GC禁止する前に、あらかじめ明示的にGCって出来る?
607デフォルトの名無しさん (オッペケ Src1-RsxR)
2020/11/16(月) 12:05:22.31ID:g+EUxdXIr GC連打しまくればいいよ
608デフォルトの名無しさん (ワッチョイ e52d-gWUl)
2020/11/16(月) 13:22:47.27ID:jhzDiMvL0 GC.Collect()で強制実行出来るけど
世代上昇の問題もあるし使いこなすのは難しい
世代上昇の問題もあるし使いこなすのは難しい
609デフォルトの名無しさん (ワイーワ2 FF93-NSHw)
2020/11/16(月) 13:24:47.04ID:sF1WJXNTF 生き残りは強毒化するのか
610デフォルトの名無しさん (ワッチョイ 4ba7-1Ypv)
2020/11/16(月) 14:26:09.78ID:vD+2eRn00 強制GC連打派
30秒に一回とかやってる
それでもなんか1秒ぐらい止まるときあるよ
30秒に一回とかやってる
それでもなんか1秒ぐらい止まるときあるよ
611デフォルトの名無しさん (アウアウウー Saa9-1iYl)
2020/11/16(月) 15:09:58.28ID:dMCYT8Lea ストップザワールドしないGCを実装してくれたらもうアプリケーションでC/C++を使うことはないかも
612デフォルトの名無しさん (ワッチョイ 2324-5Hij)
2020/11/16(月) 15:48:59.14ID:eppT6X190 むしろVC++に絶対的なGUI決定版が出たら個人開発のデスクトップアプリでC#使う事なくなるだろうな
個人開発程度の規模だとマクロのあるC++の方が返って開発速度早くなることも多いし
個人開発程度の規模だとマクロのあるC++の方が返って開発速度早くなることも多いし
613デフォルトの名無しさん (ワッチョイ d55f-g/iO)
2020/11/16(月) 17:13:00.16ID:VrPIfzyD0 GCSettings.LatencyModeで選べるよ
614デフォルトの名無しさん (ワッチョイ ed5f-Y0tO)
2020/11/16(月) 18:58:34.38ID:ZSbSJvSB0 フォーム上に設置したボタンを表示したいのですが、
フォームだけ非表示もしくは透過0%にする方法を教えてください
フォームのopacityいじるとボタンも非表示になってしまいます
フォームだけ非表示もしくは透過0%にする方法を教えてください
フォームのopacityいじるとボタンも非表示になってしまいます
615デフォルトの名無しさん (ワッチョイ 6d78-Y0tO)
2020/11/16(月) 19:19:54.16ID:Le2Iq+UD0 フォームの背景を単一色で塗り潰してTransparencyKeyで透明にしたい色を指定
616デフォルトの名無しさん (ワッチョイ 2bdf-oL1k)
2020/11/16(月) 22:13:31.62ID:G4eaPjr50 c#とvsがなかったら一生プログラムやろうなんて思わなかった
617デフォルトの名無しさん (ブーイモ MM6b-VsI6)
2020/11/16(月) 23:04:37.19ID:cHmpQkkDM C#っていい言語だよね
飾らず、気取らず、それでいて力強い。
飾らず、気取らず、それでいて力強い。
618デフォルトの名無しさん (スプッッ Sd03-U08M)
2020/11/16(月) 23:25:26.59ID:LWdxEv1Gd >>595,598,600,602
ありがとうございます!
ありがとうございます!
619デフォルトの名無しさん (スプッッ Sd03-U08M)
2020/11/16(月) 23:34:54.33ID:LWdxEv1Gd >>596
ありがとうございます!
ありがとうございます!
620デフォルトの名無しさん (アウアウエー Sa13-RMlb)
2020/11/17(火) 01:43:59.23ID:lN0UCm9Ya ファイルの日付時刻を比較したいんですがどうしたら良いですか?
621デフォルトの名無しさん (ワッチョイ ddda-C8e5)
2020/11/17(火) 01:44:52.21ID:qgtrLMb80 datetime型を比較すれば?
622デフォルトの名無しさん (ワッチョイ 2db2-jJ5L)
2020/11/17(火) 10:32:21.22ID:sO+4iEeI0 >>620
datediffや
datediffや
623デフォルトの名無しさん (アウアウエー Sa13-PW4O)
2020/11/17(火) 13:16:45.53ID:GB1Hm8K4a >>614
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();
}
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();
}
624デフォルトの名無しさん (ワッチョイ cd9b-Y0tO)
2020/11/17(火) 15:43:12.61ID:WBCoLdBR0 WPFで作る利点ってのはクロスプラットフォームに出来るってこと?
Formしか作ったことないんやけど
Formしか作ったことないんやけど
625デフォルトの名無しさん (ワッチョイ e52d-gWUl)
2020/11/17(火) 16:31:37.70ID:EuUrSlgt0 >>624
WPFはWinFormsと同じくWindowsのみ
WPFはWinFormsと同じくWindowsのみ
626デフォルトの名無しさん (ワッチョイ d55f-g/iO)
2020/11/17(火) 16:58:38.50ID:RncVdZGd0 利点というか世界的に見たらWPFのほうが主流だから
むしろ今なぜFormなのかという感じだな
むしろ今なぜFormなのかという感じだな
627デフォルトの名無しさん (JP 0H43-LEMM)
2020/11/17(火) 17:15:11.29ID:ogxxYnEyH Formsの方が簡単だから……
628デフォルトの名無しさん (ブーイモ MM6b-C8e5)
2020/11/17(火) 18:04:37.48ID:YcEiD0LrM グラフィック関係が壊滅的なので
skiaとかで支援しないと使い物にならないWPF
を勧めるとはお主も悪よのう
skiaとかで支援しないと使い物にならないWPF
を勧めるとはお主も悪よのう
629デフォルトの名無しさん (ワッチョイ a37c-WW/G)
2020/11/17(火) 18:39:12.50ID:Hw9PIOp10 WPFなんて死産みたいなもんじゃね・・・
出て結構経つけどWPFの仕事とかの話全然聞かないわ
出て結構経つけどWPFの仕事とかの話全然聞かないわ
630デフォルトの名無しさん (ワッチョイ 2324-PC2A)
2020/11/17(火) 18:46:22.75ID:PM1Apx6y0 Visual Studioの皮ってWPFなんでしょ
631デフォルトの名無しさん (ワッチョイ 4ba7-1Ypv)
2020/11/17(火) 19:20:07.15ID:cGx3KuHJ0632デフォルトの名無しさん (スップ Sd03-RL7t)
2020/11/17(火) 19:24:53.52ID:FpFQah7Cd そういうタイプはunityとかのほうが楽そう
633デフォルトの名無しさん (ワッチョイ 45da-PQ6b)
2020/11/17(火) 19:26:16.29ID:iD8vjuLm0 うちは数年前から新製品で使い始めたよ。
特定業界向け会計ソフトだから一般の目に触れる事は殆どないと思うけど。
特定業界向け会計ソフトだから一般の目に触れる事は殆どないと思うけど。
634デフォルトの名無しさん (ワッチョイ 4ba7-1Ypv)
2020/11/17(火) 19:34:04.55ID:cGx3KuHJ0635デフォルトの名無しさん (ワッチョイ 4ba7-1Ypv)
2020/11/17(火) 19:37:52.56ID:cGx3KuHJ0 あと何気に困ったのが音
後ろで音楽かけてボタンとか押したら音鳴らしてってのが
わりかしできんかったっていうかなんかあやしいライブラリ使う羽目になったっていうか
まあ、色々動く画面作りたいときはいっそunity考えた方がいいと思う
後ろで音楽かけてボタンとか押したら音鳴らしてってのが
わりかしできんかったっていうかなんかあやしいライブラリ使う羽目になったっていうか
まあ、色々動く画面作りたいときはいっそunity考えた方がいいと思う
636デフォルトの名無しさん (ワッチョイ ddda-C8e5)
2020/11/17(火) 19:42:43.18ID:qgtrLMb80 unity 只け?
637デフォルトの名無しさん (ワッチョイ a54f-mYn1)
2020/11/17(火) 20:40:45.04ID:Tiv5/dm/0 いまだに新規開発案件でforms使うところあるの?
638デフォルトの名無しさん (ワッチョイ 23ad-1Yfl)
2020/11/17(火) 20:44:36.18ID:ooCV67uO0 あるよ
639デフォルトの名無しさん (ワッチョイ 2340-WhRI)
2020/11/17(火) 20:56:30.30ID:Fq1hGO400 FAだとformで十分でウマーです。
640デフォルトの名無しさん (ワッチョイ 4d33-Y0tO)
2020/11/17(火) 21:02:12.76ID:Qs8QfDsD0 windowsなのにformsを使わない理由を逆に知りたい
641デフォルトの名無しさん (ワッチョイ 032d-gWUl)
2020/11/17(火) 21:04:02.66ID:qYg8UIQi0642デフォルトの名無しさん (ワッチョイ 0d42-WW/G)
2020/11/17(火) 22:28:01.75ID:Rs8mNRLj0 そして来年からはWinUIというWPF紛いのものが登場する、と
Win10ぽいルックスとx:Bindでコンパイル時にバインドエラー発見ってのはかなり大きい
そのうちAOTコンパイルもサポートされるそうだ
Win10ぽいルックスとx:Bindでコンパイル時にバインドエラー発見ってのはかなり大きい
そのうちAOTコンパイルもサポートされるそうだ
643デフォルトの名無しさん (アウアウエー Sa13-PW4O)
2020/11/17(火) 22:33:32.13ID:GB1Hm8K4a WPFは(既に実質的にはそうだったけど)いよいよディスコンになるの?
644デフォルトの名無しさん (ワッチョイ 032d-gWUl)
2020/11/17(火) 22:39:07.63ID:qYg8UIQi0645デフォルトの名無しさん (アウアウエー Sa13-PW4O)
2020/11/17(火) 22:40:03.59ID:GB1Hm8K4a そうか無くなるわけじゃないよねw
メンテモードか
メンテモードか
646デフォルトの名無しさん (ワッチョイ 6d78-Y0tO)
2020/11/17(火) 22:48:31.36ID:60XguBAo0 .NET MAUI 楽しみ
647デフォルトの名無しさん (ワッチョイ a790-xKON)
2020/11/18(水) 00:03:39.25ID:MO86P+zt0 maui期待しないほうがいい
ただの名前変更レベルの予感
Microsoftはなぜxamarinが失敗したか総括したのか?
表面上何もかわってないように見える
技術的にはSlimRenderアーキテクチャだかようしらんが
ただの名前変更レベルの予感
Microsoftはなぜxamarinが失敗したか総括したのか?
表面上何もかわってないように見える
技術的にはSlimRenderアーキテクチャだかようしらんが
648デフォルトの名無しさん (オッペケ Srdf-sWCu)
2020/11/18(水) 15:05:11.31ID:7Ekft4aVr VScodeで成功してるんだがElectronでいいじゃん
Electron.Netを正式サポートしろよ
Electron.Netを正式サポートしろよ
649デフォルトの名無しさん (オッペケ Srdf-gKym)
2020/11/18(水) 15:10:25.22ID:870PPpSlr >>647
だね。
だね。
650デフォルトの名無しさん (ワッチョイ cf5f-MoyO)
2020/11/18(水) 15:39:37.23ID:P3jn+KK20 Electronは失敗だよな
VSCodeだけだし
VSCodeだけだし
651デフォルトの名無しさん (ワッチョイ 5701-n9sk)
2020/11/18(水) 15:46:24.24ID:UaAov2o20 >>76
C#というのは前身がDelphiという言語なんだ
そのDelphiはVBとの死闘の末敗れてしまった
だからC#(Delphi残党)がVBを憎んでいるのは当然なんだ
ガンダムで例えるとC#はネオジオンでVBは連邦軍なんだよ
C#というのは前身がDelphiという言語なんだ
そのDelphiはVBとの死闘の末敗れてしまった
だからC#(Delphi残党)がVBを憎んでいるのは当然なんだ
ガンダムで例えるとC#はネオジオンでVBは連邦軍なんだよ
652デフォルトの名無しさん (ワッチョイ 5f01-gKym)
2020/11/18(水) 15:54:18.16ID:IPbBahkD0 >>651
笑
笑
653デフォルトの名無しさん (ワッチョイ 5f01-gKym)
2020/11/18(水) 15:54:52.11ID:IPbBahkD0 >>650
笑
笑
654デフォルトの名無しさん (ワッチョイ eff1-ZOa4)
2020/11/18(水) 16:11:46.00ID:YM9VgCd+0 >>637
わたしは中国人あるよ
わたしは中国人あるよ
655デフォルトの名無しさん (ワッチョイ ef63-CyN+)
2020/11/18(水) 16:58:13.83ID:gt3SSD7y0 >>650
SlackやDiscordもElectronだよ
SlackやDiscordもElectronだよ
656デフォルトの名無しさん (ワッチョイ 62ad-8J9H)
2020/11/18(水) 16:59:19.38ID:oW5F7Byc0 Azure Data Studio
657デフォルトの名無しさん (ワントンキン MM92-rnDP)
2020/11/18(水) 19:57:00.23ID:hzlSiPtIM >>656
ゴミは引っ込んでろ
ゴミは引っ込んでろ
658デフォルトの名無しさん (ワッチョイ 62ad-8J9H)
2020/11/18(水) 20:11:49.12ID:oW5F7Byc0 >>657
え?
え?
659デフォルトの名無しさん (ワッチョイ 977b-5hWz)
2020/11/18(水) 21:07:17.11ID:RhWccaic0 こいつら質問スレでテンプレ無視して雑談しなきゃならない使命でもあるのか?
660デフォルトの名無しさん (ワッチョイ e224-08mV)
2020/11/19(木) 10:08:06.32ID:fvT6uEqW0 StringBuilderのパフォーマンス目的で使う割には最終的なToString()で再Allocが発生するという矛盾に嫌気がさして
アンセーフなstringラッパー作って
public Length => { fixed (char* p = str) *(int*)(p - 2) = value; }みたいなことしてマニュアルで長さ変えたりしてるんだけど、こういうことしてるとGCに影響あったりする?
初期バッファとしてstr = new string('\0', 0x1000);として0x1000文字分のメモリを頂戴したのに、上記の動作で長さを5に変えたりしてると、GCによる解放時に5文字分しか解放されずに残りがリークするって事にはならないんだろうか?
アンセーフなstringラッパー作って
public Length => { fixed (char* p = str) *(int*)(p - 2) = value; }みたいなことしてマニュアルで長さ変えたりしてるんだけど、こういうことしてるとGCに影響あったりする?
初期バッファとしてstr = new string('\0', 0x1000);として0x1000文字分のメモリを頂戴したのに、上記の動作で長さを5に変えたりしてると、GCによる解放時に5文字分しか解放されずに残りがリークするって事にはならないんだろうか?
661デフォルトの名無しさん (ワッチョイ 367c-yvYW)
2020/11/19(木) 11:07:34.05ID:xT43LVbE0 > StringBuilderのパフォーマンス目的で使う割には最終的なToString()で再Allocが発生するという矛盾
そもそもそこは別に矛盾じゃないだろ
「結合のたびにアロケーションが発生する」のを防ぐもんなんだから
そもそもそこは別に矛盾じゃないだろ
「結合のたびにアロケーションが発生する」のを防ぐもんなんだから
662デフォルトの名無しさん (ワッチョイ af8c-b6az)
2020/11/19(木) 11:21:03.45ID:RERzCypk0663デフォルトの名無しさん (ワッチョイ e224-08mV)
2020/11/19(木) 11:31:10.28ID:fvT6uEqW0 >>662
良く知らないけどそれもその都度string生成してるんじゃないの?
スレッドアンセーフで良いから生成は初回かキャパ更新程度に留めて使いまわしたいんだよね
そのキャパ更新の際に捨てるときにstring.Lengthを弄ってるとメモリリークの原因になるのではないかと
良く知らないけどそれもその都度string生成してるんじゃないの?
スレッドアンセーフで良いから生成は初回かキャパ更新程度に留めて使いまわしたいんだよね
そのキャパ更新の際に捨てるときにstring.Lengthを弄ってるとメモリリークの原因になるのではないかと
664デフォルトの名無しさん (ワッチョイ e224-08mV)
2020/11/19(木) 11:37:15.19ID:fvT6uEqW0 さすがに内部でcalloc(sizeof(char), 0x1000)とかしたときの確保サイズメモっておいてくれてるのかね
GC内部の細かい挙動はMS社員でもない限り知りようないか
GC内部の細かい挙動はMS社員でもない限り知りようないか
665デフォルトの名無しさん (ワッチョイ 4240-b6az)
2020/11/19(木) 13:58:51.49ID:5X7qze6C0 NameValueCollectionをコピペすると自動整形がうまくいかなくてかっこの位置がおかしくなるので
各行ごとにDelete→Enter→Endを繰り返して手動で整形しなおしてるのですが、ちゃんと整形してくれる方法ってあるんですか?
↓みたいになったりする。
NameValueCollection vals = new NameValueCollection
{
{ "hoge","hage"},
{ "fuge","hage"},
};
各行ごとにDelete→Enter→Endを繰り返して手動で整形しなおしてるのですが、ちゃんと整形してくれる方法ってあるんですか?
↓みたいになったりする。
NameValueCollection vals = new NameValueCollection
{
{ "hoge","hage"},
{ "fuge","hage"},
};
666デフォルトの名無しさん (ワッチョイ c766-G3Z5)
2020/11/19(木) 15:16:47.51ID:wGypJVfq0 1行にする
予期しないところにある改行が原因でフォーマッターが動かない
予期しないところにある改行が原因でフォーマッターが動かない
667デフォルトの名無しさん (ワントンキン MM92-rnDP)
2020/11/19(木) 15:26:56.05ID:3nmF1AP8M >>660
いやそもそもStringBuilder.ToString()は再アロケーションしないぞ
内部のバッファをそのまま引き継ぐ実装だ
その後StringBuilderの方に追加の変更が加えられた時点で再アロケーションが発生する
いやそもそもStringBuilder.ToString()は再アロケーションしないぞ
内部のバッファをそのまま引き継ぐ実装だ
その後StringBuilderの方に追加の変更が加えられた時点で再アロケーションが発生する
668デフォルトの名無しさん (ワッチョイ 4240-b6az)
2020/11/19(木) 15:52:44.75ID:5X7qze6C0 >>666
1行というのはこういうことですか?
NameValueCollection vals = new NameValueCollection{{ "hoge","hage"},{ "fuge","hage"},};
実際には{ "hoge","hage"},が50行とかあったりするので↑では視認性やエラーチェックが面倒になります。
1行というのはこういうことですか?
NameValueCollection vals = new NameValueCollection{{ "hoge","hage"},{ "fuge","hage"},};
実際には{ "hoge","hage"},が50行とかあったりするので↑では視認性やエラーチェックが面倒になります。
669デフォルトの名無しさん (ワッチョイ 0614-Cu+U)
2020/11/19(木) 16:13:28.80ID:XTntku/z0670デフォルトの名無しさん (ワッチョイ c766-G3Z5)
2020/11/19(木) 16:33:47.05ID:wGypJVfq0 >>668
そういう長いものに自動整形を期待しない
そういう長いものを人間が視認する必要性を排除する
この手の自動整形をしようとすると負荷が半端ないことになって実用性に欠けるのですっぱり切っているのだと思う
そういう長いものに自動整形を期待しない
そういう長いものを人間が視認する必要性を排除する
この手の自動整形をしようとすると負荷が半端ないことになって実用性に欠けるのですっぱり切っているのだと思う
671デフォルトの名無しさん (アウアウエー Sa3a-VuZ6)
2020/11/19(木) 16:48:49.64ID:k15rqtpOa672デフォルトの名無しさん (ワッチョイ a201-UbMm)
2020/11/19(木) 16:50:55.24ID:EbSX4tjh0 >>671
ソース見れば普通にわかるやろ
https://referencesource.microsoft.com/#mscorlib/system/text/stringbuilder.cs,338
string ret = string.FastAllocateString(Length);
ソース見れば普通にわかるやろ
https://referencesource.microsoft.com/#mscorlib/system/text/stringbuilder.cs,338
string ret = string.FastAllocateString(Length);
673デフォルトの名無しさん (ワッチョイ 62ad-8J9H)
2020/11/19(木) 17:07:14.79ID:9igY/Fs20 りふぁれんすそーすw
674デフォルトの名無しさん (アウアウエー Sa3a-VuZ6)
2020/11/19(木) 17:26:57.34ID:k15rqtpOa .NETのStringが機械語レベルでどう実装されてるか勉強したことはないが、
普通に考えればパスカルストリングとCストリングのあいの子みたいな単純な構造でしょたぶん。
ごにょごにょした後のバイト列を普通にstringと「みなす」だけにするよね。
わざわざ別のメモリ確保してベタコピーする馬鹿な実装をする人がいるだろうか。
その必要性ができてからで遅くないと思うんだけど。
普通に考えればパスカルストリングとCストリングのあいの子みたいな単純な構造でしょたぶん。
ごにょごにょした後のバイト列を普通にstringと「みなす」だけにするよね。
わざわざ別のメモリ確保してベタコピーする馬鹿な実装をする人がいるだろうか。
その必要性ができてからで遅くないと思うんだけど。
675デフォルトの名無しさん (ワッチョイ e224-08mV)
2020/11/19(木) 18:08:19.31ID:fvT6uEqW0 >>674
C#のstringはBStrというoffset0にlength、offset4からcharの配列、そのoffset4へのポインタがstringとなる
末尾がnull文字じゃなくても問題ないが基本は末尾にnull文字が入ってるためconst wchar_t*としても扱える
そんなことはどうでもよくてマネージド内で上記の内部バイナリを書き換える方法は一切無いからわざわざアンセーフstringラッパーを作ったんだよ
一見書き換えられてるように見えるstring操作は全て新stringとして生成されてるだけだからな
+連結は長さが変わるから想像できるだろうけど、Substringすらも切り取り参照をしている訳ではなく新たにstringを生成してる(それを解決しうるマネージドな手段としてReadOnlySpanというのも一応あるが)
C#のstringはBStrというoffset0にlength、offset4からcharの配列、そのoffset4へのポインタがstringとなる
末尾がnull文字じゃなくても問題ないが基本は末尾にnull文字が入ってるためconst wchar_t*としても扱える
そんなことはどうでもよくてマネージド内で上記の内部バイナリを書き換える方法は一切無いからわざわざアンセーフstringラッパーを作ったんだよ
一見書き換えられてるように見えるstring操作は全て新stringとして生成されてるだけだからな
+連結は長さが変わるから想像できるだろうけど、Substringすらも切り取り参照をしている訳ではなく新たにstringを生成してる(それを解決しうるマネージドな手段としてReadOnlySpanというのも一応あるが)
676デフォルトの名無しさん (ワッチョイ cf5f-MoyO)
2020/11/19(木) 19:50:48.14ID:nKYhLbF50 細かいことを気にしてまでC#を使う矛盾をどう解決してるのか気になるわ
677デフォルトの名無しさん (ワッチョイ e224-08mV)
2020/11/19(木) 20:59:45.17ID:fvT6uEqW0678デフォルトの名無しさん (ワッチョイ cf5f-MoyO)
2020/11/19(木) 21:03:40.41ID:nKYhLbF50 StringBuilderを使えというのは学ぶでしょ
そこまででいい
それ以上やるならもうC#使う意味ない
そこまででいい
それ以上やるならもうC#使う意味ない
679デフォルトの名無しさん (ワッチョイ e224-08mV)
2020/11/19(木) 21:04:23.57ID:fvT6uEqW0 >>678
それじゃSpanとか実装したMSがバカみたいじゃん
それじゃSpanとか実装したMSがバカみたいじゃん
680デフォルトの名無しさん (ワッチョイ e26a-Am47)
2020/11/19(木) 21:28:29.15ID:A4wcMVuA0 >>662 が挙げてたZStringの解説記事
個人的にはそこまでパフォーマンス気にするような物作ってないから「へー」って感じで読んだだけだけど
ZString – Unity/.NET CoreにおけるゼロアロケーションのC#文字列生成
ttps://tech.cygames.co.jp/archives/3383/
個人的にはそこまでパフォーマンス気にするような物作ってないから「へー」って感じで読んだだけだけど
ZString – Unity/.NET CoreにおけるゼロアロケーションのC#文字列生成
ttps://tech.cygames.co.jp/archives/3383/
681デフォルトの名無しさん (スップ Sd02-G3Z5)
2020/11/19(木) 21:32:12.66ID:s0VdR5fOd 国内C#erで有名どころだしstringはパフォーマンス絡みでよく上がるから割と有名な方じゃないかな?
あんなにパフォーマンス気にする人が知らないのには驚きだけどw
あんなにパフォーマンス気にする人が知らないのには驚きだけどw
682デフォルトの名無しさん (ワッチョイ 06f2-HYev)
2020/11/20(金) 01:24:52.99ID:ViPIBq0U0 パフォーマンスは気にしてないんじゃないの?
アロケーション気にしてただけで
アロケーション気にしてただけで
683デフォルトの名無しさん (ワッチョイ 06b5-i8bA)
2020/11/20(金) 07:19:27.10ID:ShozvaYJ0 C++は基本がスタック、C#は基本がヒープ
この二者の最大の差はこれなのでC#のパフォーマンス改善=アロケーション回避に終始する
この二者の最大の差はこれなのでC#のパフォーマンス改善=アロケーション回避に終始する
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 自閉症が「んなっしょい」と連呼するお🏡
- 【画像】エロい一般漫画はなぜこんなに抜けるのか
- 日本人の海外旅行したきのマナーよくなったのはいつから
- BTSのバラエティ面白すぎワロタ
- 寝癖ってどうしたらつかなくなるんや?
