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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2020/05/27(水) 20:28:41.27 ID:Pggemlyq0.net]
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part147
mevius.5ch.net/test/read.cgi/tech/1582100741/
■関連スレ
C#, C♯, C#相談室 Part94
mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
ideone.com/
https://dotnetfiddle.net/

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
referencesource.microsoft.com/
・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

634 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 16:31:37.70 ID:EuUrSlgt0.net]
>>625
WPFはWinFormsと同じくWindowsのみ

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

636 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 17:15:11.29 ID:ogxxYnEyH.net]
Formsの方が簡単だから……

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

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

639 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 18:46:22.75 ID:PM1Apx6y0.net]
Visual Studioの皮ってWPFなんでしょ

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

641 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 19:24:53.52 ID:FpFQah7Cd.net]
そういうタイプはunityとかのほうが楽そう

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



643 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 19:34:04.55 ID:cGx3KuHJ0.net]
>>633
全くその通りで結局開発が進んで行くうちに帯に短し襷に長しみたいな中途半端力凄い

>>634
そういうのは絶対Webアプリのが使い勝手いいんだよなぁ
ログインしたらどこでもどのPCでも同じって強過ぎるよね

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

645 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 19:42:43.18 ID:qgtrLMb80.net]
unity 只け?

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

647 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 20:44:36.18 ID:ooCV67uO0.net]
あるよ

648 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 20:56:30.30 ID:Fq1hGO400.net]
FAだとformで十分でウマーです。

649 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 21:02:12.76 ID:Qs8QfDsD0.net]
windowsなのにformsを使わない理由を逆に知りたい

650 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 21:04:02.66 ID:qYg8UIQi0.net]
>>641
高DPI対応が面倒
バインディングが使い物にならない

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

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



653 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 22:39:07.63 ID:qYg8UIQi0.net]
>>644
現状維持
これからはWinUI推しでWinFormsとWPFは放置だろ

654 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 22:40:03.59 ID:GB1Hm8K4a.net]
そうか無くなるわけじゃないよねw
メンテモードか

655 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 22:48:31.36 ID:60XguBAo0.net]
.NET MAUI 楽しみ

656 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 00:03:39.25 ID:MO86P+zt0.net]
maui期待しないほうがいい
ただの名前変更レベルの予感
Microsoftはなぜxamarinが失敗したか総括したのか?
表面上何もかわってないように見える

技術的にはSlimRenderアーキテクチャだかようしらんが

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

658 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 15:10:25.22 ID:870PPpSlr.net]
>>648
だね。

659 名前:デフォルトの名無しさん [2020/11/18(水) 15:39:37.23 ID:P3jn+KK20.net]
Electronは失敗だよな
VSCodeだけだし

660 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 15:46:24.24 ID:UaAov2o20.net]
>>76
C#というのは前身がDelphiという言語なんだ
そのDelphiはVBとの死闘の末敗れてしまった

だからC#(Delphi残党)がVBを憎んでいるのは当然なんだ

ガンダムで例えるとC#はネオジオンでVBは連邦軍なんだよ

661 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 15:54:18.16 ID:IPbBahkD0.net]
>>652


662 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 15:54:52.11 ID:IPbBahkD0.net]
>>651




663 名前:デフォルトの名無しさん [2020/11/18(水) 16:11:46.00 ID:YM9VgCd+0.net]
>>638
わたしは中国人あるよ

664 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 16:58:13.83 ID:gt3SSD7y0.net]
>>651
SlackやDiscordもElectronだよ

665 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 16:59:19.38 ID:oW5F7Byc0.net]
Azure Data Studio

666 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 19:57:00.23 ID:hzlSiPtIM.net]
>>657
ゴミは引っ込んでろ

667 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 20:11:49.12 ID:oW5F7Byc0.net]
>>658
え?

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

669 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 10:08:06.32 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 11:07:34.05 ID:xT43LVbE0.net]
> StringBuilderのパフォーマンス目的で使う割には最終的なToString()で再Allocが発生するという矛盾
そもそもそこは別に矛盾じゃないだろ
「結合のたびにアロケーションが発生する」のを防ぐもんなんだから

671 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 11:21:03.45 ID:RERzCypk0.net]
>>661
ZStringを使いなよ
色々な悩みから解放されるよ

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



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

674 名前:デフォルトの名無しさん [2020/11/19(木) 13:58:51.49 ID:5X7qze6C0.net]
NameValueCollectionをコピペすると自動整形がうまくいかなくてかっこの位置がおかしくなるので
各行ごとにDelete→Enter→Endを繰り返して手動で整形しなおしてるのですが、ちゃんと整形してくれる方法ってあるんですか?
↓みたいになったりする。

   NameValueCollection vals = new NameValueCollection
   {
{ "hoge","hage"},
{ "fuge","hage"},
   };

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

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

677 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 15:52:44.75 ID:5X7qze6C0.net]
>>667
1行というのはこういうことですか?
NameValueCollection vals = new NameValueCollection{{ "hoge","hage"},{ "fuge","hage"},};

実際には{ "hoge","hage"},が50行とかあったりするので↑では視認性やエラーチェックが面倒になります。

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

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

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

681 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 16:50:55.24 ID:EbSX4tjh0.net]
>>672
ソース見れば普通にわかるやろ
https://referencesource.microsoft.com/#mscorlib/system/text/stringbuilder.cs,338

string ret = string.FastAllocateString(Length);

682 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 17:07:14.79 ID:9igY/Fs20.net]
りふぁれんすそーすw



683 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 17:26:57.34 ID:k15rqtpOa.net]
.NETのStringが機械語レベルでどう実装されてるか勉強したことはないが、
普通に考えればパスカルストリングとCストリングのあいの子みたいな単純な構造でしょたぶん。

ごにょごにょした後のバイト列を普通にstringと「みなす」だけにするよね。
わざわざ別のメモリ確保してベタコピーする馬鹿な実装をする人がいるだろうか。
その必要性ができてからで遅くないと思うんだけど。

684 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 18:08:19.31 ID:fvT6uEqW0.net]
>>675
C#のstringはBStrというoffset0にlength、offset4からcharの配列、そのoffset4へのポインタがstringとなる
末尾がnull文字じゃなくても問題ないが基本は末尾にnull文字が入ってるためconst wchar_t*としても扱える

そんなことはどうでもよくてマネージド内で上記の内部バイナリを書き換える方法は一切無いからわざわざアンセーフstringラッパーを作ったんだよ
一見書き換えられてるように見えるstring操作は全て新stringとして生成されてるだけだからな
+連結は長さが変わるから想像できるだろうけど、Substringすらも切り取り参照をしている訳ではなく新たにstringを生成してる(それを解決しうるマネージドな手段としてReadOnlySpanというのも一応あるが)

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

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

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

688 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 21:04:23.57 ID:fvT6uEqW0.net]
>>679
それじゃSpanとか実装したMSがバカみたいじゃん

689 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 21:28:29.15 ID:A4wcMVuA0.net]
>>663 が挙げてたZStringの解説記事
個人的にはそこまでパフォーマンス気にするような物作ってないから「へー」って感じで読んだだけだけど

ZString – Unity/.NET CoreにおけるゼロアロケーションのC#文字列生成
ttps://tech.cygames.co.jp/archives/3383/

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

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

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



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

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

695 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 11:57:08.18 ID:6fJp/BaL0.net]
初心者スレらしい馬鹿がいて嬉しい

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

697 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 13:04:44.65 ID:Ny+zGkjNa.net]
まあちょっと前の数値演算の話と同じだよ。

純粋な学問として円周率の桁数を追求することを否定する人はいないけど、
実用上必要ないのにそれを追求するのはただの馬鹿なフェティシズム

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

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

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

701 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 18:32:27.77 ID:+zQLxjm30.net]
勉強ならローカルで動かせばよろし。

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



703 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 20:16:31.79 ID:WQW9Bpg70.net]
>>669
編集してるXXX.csファイルを読み込んで
NameValueCollection vals = new NameValueCollection行の次の
{行からそのあとの};行の間の行に先頭スペースを揃えて挿入して
ファイルを上書き保存するミニアプリを作って実行すればいい
テキストの平文ファイルだから編集は簡単

VSで編集中にそのような外部エディタで編集がされると
編集を反映しますかって即座に聞いてくるからはいすれば位置がそろう

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

705 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 02:05:01.90 ID:eyJ/0uPg0.net]
>>694
@マジレスするとメモリリークはしない。こんなのはGC.Collectしてメモリ使用量を見比べるだけで分かる
Aでも>>661の使い方ではインターンプールで潜在的なバグを抱えるからやめた方が良い
Bやりたいこと汲み取るなら先人が同じ悩みから到達したソースを使うべき
CZStringいいよ

余計な遠回りをしないようにこの結論から言ってくれてるんだよ
>>663は優しい奴だよ、まったく

706 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 02:09:21.16 ID:r7dn6Jzr0.net]
>>696
何のためにやってるの?自己満オナニー?

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

708 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 08:48:28.54 ID:VTf/cbNB0.net]
>>697
マジレスすると今のところはヘッダオンリーならぬ単ソースオンリーで済ませたいのであんまり外部ライブラリには乗り気じゃないというのもあるが
とは言えZStringを拝見したところu8stringをC#で実装出来てる凄いライブラリであるようなのでtext系ファイルやらwebやらdbのクエリやらで利用したい構想立ちまくったのでありがたくスターポチって記憶させていただく

確かにただのバッファとして作ったものの実態はstringに違いないので何かの拍子にstring.Internしてしまうと結構不味いことになるね
とりあえずGCに影響ないと教えてくれて大分スッキリしたのでありがとう

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

710 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 09:27:31.41 ID:7FLAKb9y0.net]
一番じゃないと駄目なんですか?

711 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 13:34:50.51 ID:vJ51qgrt0.net]
superPIじゃ駄目なんですか?

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



713 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 16:25:59.35 ID:Msb6oswN0.net]
c# プログラマは goto でコロナを拡散してるから、ウィルス作成罪とかで刑務所にぶちこむべき。

もちろん、実質的に goto と同じ if文 、swich case とか使ってるc# プログラマも有罪。

swift や Pythonプログラマは goto 使ってないから無罪。

714 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:07:38.54 ID:goyIH8CW0.net]
面白いと思って書いたの?

715 名前:デフォルトの名無しさん [2020/11/28(土) 17:18:49.30 ID:qYAW4hVUM.net]
705は死刑

716 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:53:33.87 ID:yGy7muY00.net]
>>705
Go To Hell

717 名前:デフォルトの名無しさん [2020/11/28(土) 17:57:32.34 ID:qYAW4hVUM.net]
>>708
このハゲェ!

718 名前:デフォルトの名無しさん [2020/11/28(土) 18:38:36.41 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 18:43:14.08 ID:YkgqIE2E0.net]
それのどこが分からないのか分からん
あとListはいらなくない?

720 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 18:54:47.55 ID:v3rIW/CF0.net]
>>705
よくわかりません。

C#はgotoを使わずとも実質gotoできるが、
swiftやPythonが実質gotoもできない根拠を示して下さい。

721 名前:デフォルトの名無しさん mailto:< []
[ここ壊れてます]

722 名前:>2020/11/28(土) 19:14:35.24 ID:pMGwV9fR0.net mailto: >>711
説明が下手ですいません。
セクション名の一覧が下記のような考え方で取得できないかと考えていました。
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++;
}
}
[]
[ここ壊れてます]



723 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 19:41:10.86 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 20:02:20.04 ID:M3lV8yHm0.net]
Sectionの配列を得たいなら>>714にLinqのini.Keys.ToArray()

725 名前:デフォルトの名無しさん [2020/11/28(土) 20:33:03.95 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 21:13:18.17 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 21:20:41.11 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 21:27:31.90 ID:M3lV8yHm0.net]
そういえばiniは無かった場合の規定値を第3引数に入れておけばいいだけか
それならTryメソッドいらんね

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

730 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 00:02:00.65 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 00:10:23.95 ID:eEpZgXkU0.net]
だから質問者が欲しいのはvalueじゃなくてsection一覧だっての

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



733 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 08:16:40.50 ID:+pk7xniq0.net]
>>723
TableLayoutPanel とか FlowLayoutPanel はどう?

734 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 08:16:40.50 ID:+pk7xniq0.net]
>>723
TableLayoutPanel とか FlowLayoutPanel はどう?






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

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

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