!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:Pggemlyq0642デフォルトの名無しさん (ワッチョイ 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#のパフォーマンス改善=アロケーション回避に終始する
684デフォルトの名無しさん (ワッチョイ a7ab-b6az)
2020/11/21(土) 03:48:47.56ID:zIAbzPq60 俺バカだから何万回の処理で何ms差が出るのか教えてほしい
685デフォルトの名無しさん (ワッチョイ 5f01-i8bA)
2020/11/21(土) 08:27:18.63ID:WoKZFdST0 手段が目的と化している人達にそんなこと聞いても無駄だよ
686デフォルトの名無しさん (ワッチョイ fb9e-b6az)
2020/11/21(土) 11:57:08.18ID:6fJp/BaL0 初心者スレらしい馬鹿がいて嬉しい
687デフォルトの名無しさん (ワッチョイ 5701-b6az)
2020/11/21(土) 11:59:54.22ID:zQZxJMDr0 >>680のブログ主みたいな人の方が結局生産性も高いのだから、パフォーマンス厨を馬鹿にするのは知への嫉妬にしか見えない
尤も初心者用スレで話す内容ではないが
尤も初心者用スレで話す内容ではないが
688デフォルトの名無しさん (アウアウエー Sa3a-VuZ6)
2020/11/21(土) 13:04:44.65ID:Ny+zGkjNa まあちょっと前の数値演算の話と同じだよ。
純粋な学問として円周率の桁数を追求することを否定する人はいないけど、
実用上必要ないのにそれを追求するのはただの馬鹿なフェティシズム
純粋な学問として円周率の桁数を追求することを否定する人はいないけど、
実用上必要ないのにそれを追求するのはただの馬鹿なフェティシズム
689デフォルトの名無しさん (ワッチョイ e77b-3Yk1)
2020/11/21(土) 13:16:59.22ID:QfF2kXL70 こだわっている当人が>>662を提案されているのに
>良く知らないけどそれもその都度string生成してるんじゃないの
って見もせずに切り捨てているのがわけわからない。自分の作ったunsafeメソッド誉めてほしかったの?
>良く知らないけどそれもその都度string生成してるんじゃないの
って見もせずに切り捨てているのがわけわからない。自分の作ったunsafeメソッド誉めてほしかったの?
690デフォルトの名無しさん (ワッチョイ 3b02-cChY)
2020/11/21(土) 15:32:05.57ID:TFceIuuT0 誰も>>660の質問自体には答えてあげてないんだからスレチとしてスルーで良いのでは
691デフォルトの名無しさん (ワッチョイ c29b-b6az)
2020/11/21(土) 16:59:03.08ID:ZU3qCVhf0 ASP.NET Coreを勉強してみようと思うんだけど
レンタルサーバの「使えるプログラム」のところに
PHP, Ruby, PyThon, Sh としか書かれてないところはダメですよね?
レンタルサーバの「使えるプログラム」のところに
PHP, Ruby, PyThon, Sh としか書かれてないところはダメですよね?
692デフォルトの名無しさん (ワッチョイ 8bad-p2Dd)
2020/11/21(土) 18:32:27.77ID:+zQLxjm30 勉強ならローカルで動かせばよろし。
693デフォルトの名無しさん (ワッチョイ e224-08mV)
2020/11/21(土) 19:15:26.59ID:pEQG3awY0694デフォルトの名無しさん (ワッチョイ e201-MoyO)
2020/11/21(土) 20:16:31.79ID:WQW9Bpg70 >>668
編集してるXXX.csファイルを読み込んで
NameValueCollection vals = new NameValueCollection行の次の
{行からそのあとの};行の間の行に先頭スペースを揃えて挿入して
ファイルを上書き保存するミニアプリを作って実行すればいい
テキストの平文ファイルだから編集は簡単
VSで編集中にそのような外部エディタで編集がされると
編集を反映しますかって即座に聞いてくるからはいすれば位置がそろう
編集してるXXX.csファイルを読み込んで
NameValueCollection vals = new NameValueCollection行の次の
{行からそのあとの};行の間の行に先頭スペースを揃えて挿入して
ファイルを上書き保存するミニアプリを作って実行すればいい
テキストの平文ファイルだから編集は簡単
VSで編集中にそのような外部エディタで編集がされると
編集を反映しますかって即座に聞いてくるからはいすれば位置がそろう
695デフォルトの名無しさん (ワッチョイ 3b33-b6az)
2020/11/21(土) 23:02:14.09ID:eXf0RCq40 >>688 全世界で行われてる円周率演算がすべて世界記録出すために動いてると思ってる馬鹿
696デフォルトの名無しさん (ワッチョイ ab1a-7G0V)
2020/11/22(日) 02:05:01.90ID:eyJ/0uPg0697デフォルトの名無しさん (ワッチョイ 06f2-HYev)
2020/11/22(日) 02:09:21.16ID:r7dn6Jzr0 >>695
何のためにやってるの?自己満オナニー?
何のためにやってるの?自己満オナニー?
698デフォルトの名無しさん (アウアウエー Sa3a-VuZ6)
2020/11/22(日) 02:37:39.25ID:XfbnXwSba699デフォルトの名無しさん (ワッチョイ e224-08mV)
2020/11/22(日) 08:48:28.54ID:VTf/cbNB0 >>696
マジレスすると今のところはヘッダオンリーならぬ単ソースオンリーで済ませたいのであんまり外部ライブラリには乗り気じゃないというのもあるが
とは言えZStringを拝見したところu8stringをC#で実装出来てる凄いライブラリであるようなのでtext系ファイルやらwebやらdbのクエリやらで利用したい構想立ちまくったのでありがたくスターポチって記憶させていただく
確かにただのバッファとして作ったものの実態はstringに違いないので何かの拍子にstring.Internしてしまうと結構不味いことになるね
とりあえずGCに影響ないと教えてくれて大分スッキリしたのでありがとう
マジレスすると今のところはヘッダオンリーならぬ単ソースオンリーで済ませたいのであんまり外部ライブラリには乗り気じゃないというのもあるが
とは言えZStringを拝見したところu8stringをC#で実装出来てる凄いライブラリであるようなのでtext系ファイルやらwebやらdbのクエリやらで利用したい構想立ちまくったのでありがたくスターポチって記憶させていただく
確かにただのバッファとして作ったものの実態はstringに違いないので何かの拍子にstring.Internしてしまうと結構不味いことになるね
とりあえずGCに影響ないと教えてくれて大分スッキリしたのでありがとう
700デフォルトの名無しさん (ワッチョイ 3b33-b6az)
2020/11/22(日) 09:03:29.09ID:0zyBqMyr0 >>698
「円周率の桁数を追求する」ってのは結局そういうこと
「円周率の桁数を追求する」ってのは結局そういうこと
701デフォルトの名無しさん (ワッチョイ 06a7-KMSj)
2020/11/22(日) 09:27:31.41ID:7FLAKb9y0 一番じゃないと駄目なんですか?
702デフォルトの名無しさん (ワッチョイ 5f01-FFKJ)
2020/11/22(日) 13:34:50.51ID:vJ51qgrt0 superPIじゃ駄目なんですか?
703デフォルトの名無しさん (ワッチョイ 977d-P4WK)
2020/11/25(水) 08:28:57.90ID:5XzEVJhy0 COMインターフェイスをstructに付けてboxing発生させずに使用する方法って皆無でしょうか?
704デフォルトの名無しさん (ワッチョイ 9f07-78y3)
2020/11/28(土) 16:25:59.35ID:Msb6oswN0 c# プログラマは goto でコロナを拡散してるから、ウィルス作成罪とかで刑務所にぶちこむべき。
もちろん、実質的に goto と同じ if文 、swich case とか使ってるc# プログラマも有罪。
swift や Pythonプログラマは goto 使ってないから無罪。
もちろん、実質的に goto と同じ if文 、swich case とか使ってるc# プログラマも有罪。
swift や Pythonプログラマは goto 使ってないから無罪。
705デフォルトの名無しさん (ワッチョイ 1793-zmjO)
2020/11/28(土) 17:07:38.54ID:goyIH8CW0 面白いと思って書いたの?
706デフォルトの名無しさん (ブーイモ MMdb-bcw7)
2020/11/28(土) 17:18:49.30ID:qYAW4hVUM 705は死刑
707デフォルトの名無しさん (ワッチョイ ffb5-W+Es)
2020/11/28(土) 17:53:33.87ID:yGy7muY00 >>704
Go To Hell
Go To Hell
708デフォルトの名無しさん (ブーイモ MMdb-bcw7)
2020/11/28(土) 17:57:32.34ID:qYAW4hVUM >>707
このハゲェ!
このハゲェ!
709デフォルトの名無しさん (ワッチョイ d776-OOND)
2020/11/28(土) 18:38:36.41ID:pMGwV9fR0 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 相当)を
得たいのですが方法がわかりません。
教えていただけませんでしょうか。
List<Dictionary<string, List<Dictionary<string, string>>>> ini;
ini = new List<Dictionary<string, List<Dictionary<string, string>>>>();
として取り込んだものから Section の一覧(Delphi の ReadSections 相当)を
得たいのですが方法がわかりません。
教えていただけませんでしょうか。
710デフォルトの名無しさん (ワッチョイ ff2c-wz4o)
2020/11/28(土) 18:43:14.08ID:YkgqIE2E0 それのどこが分からないのか分からん
あとListはいらなくない?
あとListはいらなくない?
711デフォルトの名無しさん (ワッチョイ bfad-P4WK)
2020/11/28(土) 18:54:47.55ID:v3rIW/CF0712デフォルトの名無しさん (ワッチョイ d776-OOND)
2020/11/28(土) 19:14:35.24ID:pMGwV9fR0 >>710
説明が下手ですいません。
セクション名の一覧が下記のような考え方で取得できないかと考えていました。
public void ReadSections(ref string[] sections)
{
Array.Resize(ref sections, ini.Count);
var i = 0;
foreach (var dic1 in ini)
{
sections[i] = セクション名
i++;
}
}
書き込んだ後、下記のようにしたら希望の動作をしました。
public void ReadSections(ref string[] sections)
{
Array.Resize(ref sections, ini.Count);
var i = 0;
foreach (var dic1 in ini)
{
dic1.Keys.CopyTo(sections, i);
i++;
}
}
説明が下手ですいません。
セクション名の一覧が下記のような考え方で取得できないかと考えていました。
public void ReadSections(ref string[] sections)
{
Array.Resize(ref sections, ini.Count);
var i = 0;
foreach (var dic1 in ini)
{
sections[i] = セクション名
i++;
}
}
書き込んだ後、下記のようにしたら希望の動作をしました。
public void ReadSections(ref string[] sections)
{
Array.Resize(ref sections, ini.Count);
var i = 0;
foreach (var dic1 in ini)
{
dic1.Keys.CopyTo(sections, i);
i++;
}
}
713デフォルトの名無しさん (ワッチョイ 1745-C0hB)
2020/11/28(土) 19:41:10.86ID:7NcH7NyO0 >>709
自分もList使う意味が見いだせない
var ini = Dictionary<string, Dictionary<string, string>>とかで良いんじゃないの?
これならvar value = ini["セクション名"]["キー名"]で取り出せる
if (ini.TryGetValue("セクション名", out var keys) && keys.TryGetValue("キー名", out var value)) とやったほうが良いと思うが
代入はini["セクション名"]["キー名"] = value;
自分もList使う意味が見いだせない
var ini = Dictionary<string, Dictionary<string, string>>とかで良いんじゃないの?
これならvar value = ini["セクション名"]["キー名"]で取り出せる
if (ini.TryGetValue("セクション名", out var keys) && keys.TryGetValue("キー名", out var value)) とやったほうが良いと思うが
代入はini["セクション名"]["キー名"] = value;
714デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/28(土) 20:02:20.04ID:M3lV8yHm0 Sectionの配列を得たいなら>>713にLinqのini.Keys.ToArray()
715デフォルトの名無しさん (ワッチョイ d776-OOND)
2020/11/28(土) 20:33:03.95ID:pMGwV9fR0 >>713,714
.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 と同じ程度までできました。
.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 と同じ程度までできました。
716デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/28(土) 21:13:18.17ID:M3lV8yHm0717デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/28(土) 21:20:41.11ID:M3lV8yHm0 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);
}
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);
}
718デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/28(土) 21:27:31.90ID:M3lV8yHm0 そういえばiniは無かった場合の規定値を第3引数に入れておけばいいだけか
それならTryメソッドいらんね
それならTryメソッドいらんね
719デフォルトの名無しさん (ワッチョイ d733-xdSs)
2020/11/28(土) 23:40:53.47ID:xlHMBUaz0 sectionの一覧が欲しいって言ってるのに、valueを取り出す説明を延々してる奴何なの?
720デフォルトの名無しさん (ワッチョイ 5701-xdSs)
2020/11/29(日) 00:02:00.65ID:agHPEKHb0 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#に限った事ではないが、何をしたいのか分かりやすいコードを目指そうな。
if(! ini.ContainsKey(section)) return null;
if(! ini[section].ContainsKey(key)) return null;
return ini[section][key];
}
c#に限った事ではないが、何をしたいのか分かりやすいコードを目指そうな。
721デフォルトの名無しさん (ワッチョイ 7778-P4WK)
2020/11/29(日) 00:10:23.95ID:eEpZgXkU0 だから質問者が欲しいのはvalueじゃなくてsection一覧だっての
722デフォルトの名無しさん (ワッチョイ 1f3e-++yk)
2020/11/29(日) 06:31:38.45ID:kNuJF9Ar0 datagridviewにユーザーコントロールを埋め込みたいんですけどどうすればいいですか?
windowsformアプリです
ていうかdatagridviewじゃなくてもユーザーコントロールをリストで表示できれば何でもいいです
どなたか教えて下さい
windowsformアプリです
ていうかdatagridviewじゃなくてもユーザーコントロールをリストで表示できれば何でもいいです
どなたか教えて下さい
723デフォルトの名無しさん (ワッチョイ 7754-FP8+)
2020/11/29(日) 08:16:40.50ID:+pk7xniq0 >>722
TableLayoutPanel とか FlowLayoutPanel はどう?
TableLayoutPanel とか FlowLayoutPanel はどう?
724デフォルトの名無しさん (ワッチョイ 7754-FP8+)
2020/11/29(日) 08:16:40.50ID:+pk7xniq0 >>722
TableLayoutPanel とか FlowLayoutPanel はどう?
TableLayoutPanel とか FlowLayoutPanel はどう?
725デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/29(日) 09:35:53.03ID:yrxBBFH+0 >>719
それは一番上に書いたんだが
それは一番上に書いたんだが
726デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/29(日) 09:40:01.71ID:yrxBBFH+0 >>720
section取り出す説明は昨日一番最初のレスで書いたからもう脱線して話すけどなんでここまでTryGet使わない奴って多いんだろうな
どうせ後々インデクサアクセスするならTryGetValueの方がよっぽど分かりやすいと思うんだが
section取り出す説明は昨日一番最初のレスで書いたからもう脱線して話すけどなんでここまでTryGet使わない奴って多いんだろうな
どうせ後々インデクサアクセスするならTryGetValueの方がよっぽど分かりやすいと思うんだが
727デフォルトの名無しさん (ワッチョイ 1f3e-++yk)
2020/11/29(日) 12:22:24.94ID:kNuJF9Ar0728デフォルトの名無しさん (ワッチョイ 9f2f-OOND)
2020/11/29(日) 17:19:06.82ID:b9LXd7l70 >>722
DataGridViewCellとDataGridViewColumnを継承して自作
DataGridViewCellとDataGridViewColumnを継承して自作
729デフォルトの名無しさん (ワッチョイ d740-qZd/)
2020/11/29(日) 17:32:18.08ID:MpNpLm4W0 >>720>>726
ConstainsKey → []は、まずContainsKeyの内部でFindEntry走らせて存在確認し、存在したらインデクサアクセスして再度内部でFindEntry走らせて取り出すという2度手間してるIQ低いコード
TryGetValueは存在確認時にFindEntryしたついでに値も取り出すというスマートな関数
そもそも前者で済むならTryGetValueは存在意義ないから、上記の仕組みを想像できずとも「なんでTryGetValueってあるんだろう?」と疑問に思わなければいけない
ま、C#は多様性受け入れてる言語だから個人開発なら好きに書いたらいいが
ConstainsKey → []は、まずContainsKeyの内部でFindEntry走らせて存在確認し、存在したらインデクサアクセスして再度内部でFindEntry走らせて取り出すという2度手間してるIQ低いコード
TryGetValueは存在確認時にFindEntryしたついでに値も取り出すというスマートな関数
そもそも前者で済むならTryGetValueは存在意義ないから、上記の仕組みを想像できずとも「なんでTryGetValueってあるんだろう?」と疑問に思わなければいけない
ま、C#は多様性受け入れてる言語だから個人開発なら好きに書いたらいいが
730デフォルトの名無しさん (ワッチョイ 771a-nc77)
2020/11/29(日) 18:14:07.88ID:o/YPVzQP0 そういう値をローカル変数に代入するのを無駄と言い張って勝手にワンライナーに書き直すような地雷プログラマの振りをするのはやめろよ……初心者が本気にしたらどうするんだよ
731デフォルトの名無しさん (ワッチョイ d740-qZd/)
2020/11/29(日) 18:23:09.50ID:MpNpLm4W0 >>730
今の話でローカル変数やワンライナーが出てくる余地あるか?
今の話でローカル変数やワンライナーが出てくる余地あるか?
732デフォルトの名無しさん (ワッチョイ 771a-nc77)
2020/11/29(日) 18:52:20.22ID:o/YPVzQP0 >>731
明確にガード節で判定が切り分けられているのに、
「TryGetValueなら判定と取得を同時に行える」と言い出すのはまさしくワンライナー君の物言いだぞ
ifをあえて二つ用意してContainsKeyを使ってる時点で
「ははーん、論理重視のコーディングスタイルか」と察してやるのが有能なプログラマってもんだ
明確にガード節で判定が切り分けられているのに、
「TryGetValueなら判定と取得を同時に行える」と言い出すのはまさしくワンライナー君の物言いだぞ
ifをあえて二つ用意してContainsKeyを使ってる時点で
「ははーん、論理重視のコーディングスタイルか」と察してやるのが有能なプログラマってもんだ
733デフォルトの名無しさん (ワッチョイ d740-qZd/)
2020/11/29(日) 18:58:47.11ID:MpNpLm4W0 >>732
???
2連続で全く不必要に同じ処理を挟むような奴がとても論理重視とは思えないんだが、ContainsKey + []とTryGetValueじゃ2倍以上パフォーマンス変わってくるって知ってる?
さっきも言ったけどContainsKeyでも内部的にFindEntryが走り、インデクサアクセスでも再度FindEntryが走るという無駄がある
再度言うがMSがなんでTryGetValueというメソッドを公式でわざわざ用意したかって疑問に思わない?
簡潔さ全振りならそもそもLinq使えばいい話
???
2連続で全く不必要に同じ処理を挟むような奴がとても論理重視とは思えないんだが、ContainsKey + []とTryGetValueじゃ2倍以上パフォーマンス変わってくるって知ってる?
さっきも言ったけどContainsKeyでも内部的にFindEntryが走り、インデクサアクセスでも再度FindEntryが走るという無駄がある
再度言うがMSがなんでTryGetValueというメソッドを公式でわざわざ用意したかって疑問に思わない?
簡潔さ全振りならそもそもLinq使えばいい話
734デフォルトの名無しさん (スフッ Sdbf-a5dV)
2020/11/29(日) 19:01:28.82ID:tRrXGfded メソッドの戻り値を一回判定するだけなら
一行で書かないほうが変じゃね?
それをわざわざ一旦保存とか逆になんの意図があるのかと
たまにはデバッグやらログで出したいからと言うのはあるがそれは2回利用に当たるから入れて当然やしな
一行で書かないほうが変じゃね?
それをわざわざ一旦保存とか逆になんの意図があるのかと
たまにはデバッグやらログで出したいからと言うのはあるがそれは2回利用に当たるから入れて当然やしな
735デフォルトの名無しさん (ワッチョイ 771a-nc77)
2020/11/29(日) 19:41:11.64ID:o/YPVzQP0736デフォルトの名無しさん (ワッチョイ ff63-ykbH)
2020/11/29(日) 20:16:26.39ID:EVjNfLc/0 判定と取得を行いたいんじゃなくて取得を行いたい
なのに判定しないとプログラム上まずいことになるので判定機能付きの取得メソッドを使う
読む上でわざわざ判定と取得を別に書いてるならそこにあえての理由があるんだろうな、と推測しないといけない
今回のケースならあえてのケースなど無いので可読性を下げる要因でしか無い
なのに判定しないとプログラム上まずいことになるので判定機能付きの取得メソッドを使う
読む上でわざわざ判定と取得を別に書いてるならそこにあえての理由があるんだろうな、と推測しないといけない
今回のケースならあえてのケースなど無いので可読性を下げる要因でしか無い
737デフォルトの名無しさん (ワッチョイ f77c-FP8+)
2020/11/29(日) 20:17:12.32ID:3Ka2HmX40738デフォルトの名無しさん (ワッチョイ b7da-ZcDd)
2020/11/29(日) 20:28:09.84ID:HJnVnweF0 >>735
それは廓然大悟かね?
それは廓然大悟かね?
739デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/29(日) 20:31:48.44ID:yrxBBFH+0 >>736
これのどっちが可読性良いかなんて個人の感想レベルだろ
実際俺は100%下のほうで書いてるけど一度もコードレビューで指摘されたことないしな
そして>>733が言うように実行効率は下の方が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;
これのどっちが可読性良いかなんて個人の感想レベルだろ
実際俺は100%下のほうで書いてるけど一度もコードレビューで指摘されたことないしな
そして>>733が言うように実行効率は下の方が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;
740デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/29(日) 20:43:57.67ID:yrxBBFH+0 一応言っておくけどここでは713や720に合わせて書いてるだけで実際には1行で書いたりこんなに複数retは使わない
returnは一つにしろというレビューは受けたことあるんでな
returnは一つにしろというレビューは受けたことあるんでな
741デフォルトの名無しさん (ワッチョイ f77c-FP8+)
2020/11/29(日) 20:51:31.28ID:3Ka2HmX40742デフォルトの名無しさん (ワッチョイ 9f01-hU1l)
2020/11/29(日) 20:54:18.24ID:YUoXGIHl0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 高市政権「生んだ以上は育てる」 麻生氏 [どどん★]
