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

■ このスレッドは過去ログ倉庫に格納されています
2020/05/27(水) 20:28:41.27ID:Pggemlyq0
!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
2020/11/13(金) 14:16:13.05ID:WOWtwvuFd
>>563
なんでずれた回答するの?
「作るしかない」
なら良い回答なのに。
新しい人どんどん減っちゃうよ
565デフォルトの名無しさん (ワッチョイ 159b-NSHw)
垢版 |
2020/11/13(金) 14:18:25.76ID:RWm0omqa0
「作るしかない」
の方が最近の新しい人は逃げる傾向にあるからな
2020/11/13(金) 15:13:21.55ID:od/5f45td
作るしか無いってことはほぼ世の中にはそんなものは求められていないってこと
そんなものを要求するのは根本が間違ってるか何でも周りに頼り過ぎか
真に有益なものならむしろ作って公開すりゃ良い実績になる
2020/11/13(金) 15:22:11.67ID:WOWtwvuFd
>>566
なんかそれがもうずれてんだよね。
「作るしかないの?いいのないの?」って聞かれてるんだから
「ないよ。作るしかないよ」って答えればいいのに。
世の中で求められてないとか質問に関係なくない?
有益云々も今ないから作ったら公開してくれって言えば利益にもなんのに。
残念
2020/11/13(金) 15:25:44.29ID:fnhS2xNE0
20年位前のうbyの時代はそれが通ったけど
若い人にそういう文化はもう無い
2020/11/13(金) 15:29:35.13ID:od/5f45td
>>567
質問への回答じゃないのにズレてるとかいうレスがそもそもズレてるって思わないの?
というか悪魔の証明はできないんだから無いよ、なんて軽々しく言えないという前提がわかってる?
ついでに誰にも求められていないものを公開して利益になるロジックを教えて
570デフォルトの名無しさん (ワッチョイ 4bbb-6GPh)
垢版 |
2020/11/13(金) 16:12:04.51ID:/kJTTxU10
>>557
>>558
ありがとう!
記号系はググりづらくて、本当助かったぜ!
2020/11/13(金) 16:31:13.21ID:WOWtwvuFd
>>569
そうなの。質問への回答じゃないの。

悪魔の証明とかかたっ苦しく考えなくていいのに。
知らないなら知らないで、「俺はしらんなぁ、作るしかないんじゃない?」で答えるか黙ってればいいじゃない。知ってる人がいれば答えればいいし。

>ついでに誰にも求められていないものを公開して利益になるロジックを教えて
これは
>真に有益なものならむしろ作って公開すりゃ良い実績になる
ここからね。
ないものができるんだから利益でしょ。使う使わないは人それぞれ。少なくとも質問者には必要なんだから。

なんかすまんね
2020/11/13(金) 16:42:13.42ID:907SkV9V0
>>564
欲しいものの要件をハッキリ言わないからだよ
>>539で多倍長って言いながら、>>543では小数って言ってる
小数求めてるのに>>560ではBigFloat求めてる
Bigは大数の接頭辞
自分で欲しいものを理解してないのに人に探してもらうことは難しいよ
2020/11/13(金) 16:47:50.11ID:907SkV9V0
精度の高い計算をするためのツールがUBASICなわけ
あえてそれを使わずにC#でやるのは本人の自由だけど、
要件をハッキリさせずにいながら出てきた案はダメ出し
そりゃ顰蹙も買うさ
2020/11/13(金) 17:05:08.44ID:od/5f45td
>>571
だから答えようがないから質問を見た感想を述べているだけなんでしょ?
それをなんで、その回答はズレている!なんて突っ込むの?

質問者が求めてるなら
誰にも求められていない
に該当しないじゃんw
質問者は世の中含まれていないの?
575デフォルトの名無しさん (ワンミングク MMa3-Y0tO)
垢版 |
2020/11/13(金) 17:39:01.74ID:j87fJt3YM
>>572
多倍長と小数は相反する概念じゃ無いぞ
BigFloatも普通にJuliaとかである型だし

このスレ理系がいなさすぎだろ

多倍長浮動小数点演算求められてんのに
「そんなものは誰にも必要じゃ無いから存在しない!自分で作れ!」とか

普通にGMPとかあるし普通はそれを奨める
2020/11/13(金) 17:41:05.56ID:WOWtwvuFd
>>574
前半はこっちがはやとちったね。ごめんね。

後半はなんか文脈から言葉遊び以上の君が言ってること理解できないから俺の頭がおかしいんだな。
君が正しいよ。


>>572
>要件をハッキリさせずにいながら出てきた案はダメ出し
>そりゃ顰蹙も買うさ
そりゃそうだな。すまんね
2020/11/13(金) 18:28:33.10ID:qE0lneeB0
ワッチョイ dd9b-Y0tO ワッチョイ 459b-Y0tO ワンミングク MMa3-Y0tO 質問の仕方も使う言葉も不正確で調べた回答者にダメ出しの上にワッチョイコロコロ
NGでいいよ
578デフォルトの名無しさん (ラクッペペ MM4b-sA6t)
垢版 |
2020/11/13(金) 18:33:46.11ID:lrdHTx5AM
BigFloatって 10÷3 するとメモリ喰らい尽くしてくれるの?
2020/11/13(金) 18:44:41.25ID:UDp7AbcK0
>>578
扱う桁数を設定しておくんでしょ
juliaだとsetprecisionというのを使うらしい
2020/11/13(金) 18:45:15.53ID:907SkV9V0
>>575
>>543
2020/11/13(金) 18:46:10.29ID:od/5f45td
え?普通にgmp勧めてそれじゃ精度が足りん!ってなったんじゃないの?
中身の詳細までわからんが…
C++に有効桁数100桁の演算とかあるみたいだけど要求はメモリたくさん使うレベルなんだから兆オーダーレベルの桁数なんでしょ?
2020/11/13(金) 18:47:51.67ID:iD09dkB6M
>>575
554で勧めたんだがスルーされたんだよ
2020/11/13(金) 18:59:56.02ID:WXkqFeV00
やろうとしたこと無いから知らんのだけど例えば円周率を何兆も計算するのあると思うけど、そういう演算ってその桁数の小数点演算必要になるの?
普通にdouble程度で十分だと勝手に思ってたけど
2020/11/13(金) 22:02:04.34ID:qUM0ZuKL0
wikipediaに依ると円周率の計算は
π/4 =1- 1/3 + 1/5 - 1/7...らしい
BigIntegerで1を必要な桁数だけ大きくすれば良いような
2020/11/13(金) 22:07:03.28ID:KPuGe7Gc0
>>583
整数演算だけで出来るぞ
というかすべての小数点演算は整数演算の組み合わせで出来る

>>581
GMPのデフォルト精度は64ビットだから20桁くらいしかいけない
precに大きなビット数設定してやれば何万桁でもいける
2020/11/13(金) 22:26:47.07ID:A6rK79tx0
だから言語に分数型が必要だって言っただろアホが
2020/11/13(金) 23:04:03.67ID:V7nqUCXH0
いや、もっとストレートに円周率型が必要
588デフォルトの名無しさん (ワッチョイ 6347-NSHw)
垢版 |
2020/11/14(土) 00:22:57.13ID:XJ24TZhC0
>>584
https://www.youtube.com/watch?v=NaL_Cb42WyY
2020/11/14(土) 05:05:39.51ID:hLsGLi/C0
分数型があったところで無理数は表現できなくね?
アレば便利なことには間違いないが
2020/11/14(土) 09:03:12.56ID:cYQm19/50
>>589
三分の一が表現できるってだけで結構便利なんだな
自分でクラス作ってもいいけど
2020/11/14(土) 15:27:05.74ID:HtCqr6h30
>>537
http://www.dotsakura.com/?mode=blog;id=115
2020/11/15(日) 09:17:33.20ID:TE31pbc70
日本でC#使うのは殆どUnityかWindowsデスクトップアプリだからな
数値計算とかしたいならPython使うしかない
593デフォルトの名無しさん (アウアウクー MM41-2xue)
垢版 |
2020/11/15(日) 09:55:21.46ID:zLhs1absM
業務アプリで1/3することってあるよ
2020/11/15(日) 12:40:40.11ID:wWBHTATOd
C#ってCやVC++と比べるとかなり遅い
ですか?
遅いなら、時間の掛かる処理だけは速い言語で作るべきか悩みます
マーシャリングすれば使えるみたいなので
2020/11/15(日) 12:45:13.00ID:MP+vmq9O0
>>594
処理の内容と書き方による
2020/11/15(日) 12:45:47.16ID:4zqmLj42M
物にもよるが3割減ぐらいに思っておけば
597デフォルトの名無しさん (ブーイモ MM6b-eZDb)
垢版 |
2020/11/15(日) 12:58:30.49ID:TbjZIaKaM
分数型を作るのは面白そうやん。約分や通分の機能を持たせておけば素敵。てかMS考えてくれ。
2020/11/15(日) 13:20:31.23ID:ttHD4odoa
>>594
ファイル読み書きやネットワークアクセスが一切なくて100%CPUパワーを使うだけのプログラムなら差が出るかもしれないけど
そうでなければ処理時間の差などI/Oにかかる時間に比べればごくわずかで塵にも等しい
ので気にするだけ無駄

というかCPUパワーを極限まで使い倒すなら、C#でマルチコア並列実行できるよう処理を書いたほうが
C/C++のシングルスレッド処理よりよっぽど早いかもしれない
よほど低性能なマシンで実行するならともかく、今どきの環境なら全部C#で書くほうが無難だと思うけどね
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
2020/11/15(日) 16:21:09.71ID:d0/9SCdg0
>>594
どうしてもC++のライブラリをC#で使いたいとかじゃないかぎり
そのマーシャリングの処理が何気に重い気がするので
関数を何度も呼び出すみたいな使い方するなら
ベンチマーク取ってみるとC#のみの方が速いかも知れないぐらいの差じゃないかな
2020/11/15(日) 16:38:42.28ID:alkL58xG0
>>600
マーシャリングが重いって言うと例えば
extern IntPtr GetProcAddress(IntPtr hModule, [MarshalAs(UnmanagedType.LPStr)] string procName);
とする場合、のprocNameをAnsiに変換するときってヒープ使われるの?
ヒープ使われるんだとしたら自前でstackallocしてbyte*として渡そうと思うけど
2020/11/16(月) 08:44:05.44ID:dMCYT8Lea
>>594
C#とC/C++の処理速度はほとんど変わらないよ

ただ、C#はどうしてもGCの影響を受けるから、数msでも遅れたら困る用途には使えない
まあ、そんな要求は滅多に無いけどね
603デフォルトの名無しさん (ワイーワ2 FF93-NSHw)
垢版 |
2020/11/16(月) 10:53:58.92ID:sF1WJXNTF
GCは何時発動するか判らんのが欠点だけど
C#のGCはタイミングは常に判ってるのかな
2020/11/16(月) 11:05:41.67ID:qYJ3Dm/90
タイミングがわかるわけじゃないけど引き起こす可能性のある手続きはわかっている
コーディングでそれを避けられる余地があるからUnityとかでまだ採用されてるんじゃない?
2020/11/16(月) 11:27:25.87ID:jhzDiMvL0
本当にクリティカルな区間はGCを(出来るだけ)禁止する等ある程度は制御できる
2020/11/16(月) 11:30:54.33ID:Ixi420Wb0
GC禁止する前に、あらかじめ明示的にGCって出来る?
607デフォルトの名無しさん (オッペケ Src1-RsxR)
垢版 |
2020/11/16(月) 12:05:22.31ID:g+EUxdXIr
GC連打しまくればいいよ
2020/11/16(月) 13:22:47.27ID:jhzDiMvL0
GC.Collect()で強制実行出来るけど
世代上昇の問題もあるし使いこなすのは難しい
609デフォルトの名無しさん (ワイーワ2 FF93-NSHw)
垢版 |
2020/11/16(月) 13:24:47.04ID:sF1WJXNTF
生き残りは強毒化するのか
2020/11/16(月) 14:26:09.78ID:vD+2eRn00
強制GC連打派
30秒に一回とかやってる
それでもなんか1秒ぐらい止まるときあるよ
2020/11/16(月) 15:09:58.28ID:dMCYT8Lea
ストップザワールドしないGCを実装してくれたらもうアプリケーションでC/C++を使うことはないかも
2020/11/16(月) 15:48:59.14ID:eppT6X190
むしろVC++に絶対的なGUI決定版が出たら個人開発のデスクトップアプリでC#使う事なくなるだろうな
個人開発程度の規模だとマクロのあるC++の方が返って開発速度早くなることも多いし
613デフォルトの名無しさん (ワッチョイ d55f-g/iO)
垢版 |
2020/11/16(月) 17:13:00.16ID:VrPIfzyD0
GCSettings.LatencyModeで選べるよ
2020/11/16(月) 18:58:34.38ID:ZSbSJvSB0
フォーム上に設置したボタンを表示したいのですが、
フォームだけ非表示もしくは透過0%にする方法を教えてください
フォームのopacityいじるとボタンも非表示になってしまいます
2020/11/16(月) 19:19:54.16ID:Le2Iq+UD0
フォームの背景を単一色で塗り潰してTransparencyKeyで透明にしたい色を指定
2020/11/16(月) 22:13:31.62ID:G4eaPjr50
c#とvsがなかったら一生プログラムやろうなんて思わなかった
2020/11/16(月) 23:04:37.19ID:cHmpQkkDM
C#っていい言語だよね
飾らず、気取らず、それでいて力強い。
2020/11/16(月) 23:25:26.59ID:LWdxEv1Gd
>>595,598,600,602
ありがとうございます!
2020/11/16(月) 23:34:54.33ID:LWdxEv1Gd
>>596
ありがとうございます!
620デフォルトの名無しさん (アウアウエー Sa13-RMlb)
垢版 |
2020/11/17(火) 01:43:59.23ID:lN0UCm9Ya
ファイルの日付時刻を比較したいんですがどうしたら良いですか?
2020/11/17(火) 01:44:52.21ID:qgtrLMb80
datetime型を比較すれば?
2020/11/17(火) 10:32:21.22ID:sO+4iEeI0
>>620
datediffや
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();
}
624デフォルトの名無しさん (ワッチョイ cd9b-Y0tO)
垢版 |
2020/11/17(火) 15:43:12.61ID:WBCoLdBR0
WPFで作る利点ってのはクロスプラットフォームに出来るってこと?
Formしか作ったことないんやけど
2020/11/17(火) 16:31:37.70ID:EuUrSlgt0
>>624
WPFはWinFormsと同じくWindowsのみ
626デフォルトの名無しさん (ワッチョイ d55f-g/iO)
垢版 |
2020/11/17(火) 16:58:38.50ID:RncVdZGd0
利点というか世界的に見たらWPFのほうが主流だから
むしろ今なぜFormなのかという感じだな
2020/11/17(火) 17:15:11.29ID:ogxxYnEyH
Formsの方が簡単だから……
2020/11/17(火) 18:04:37.48ID:YcEiD0LrM
グラフィック関係が壊滅的なので
skiaとかで支援しないと使い物にならないWPF
を勧めるとはお主も悪よのう
2020/11/17(火) 18:39:12.50ID:Hw9PIOp10
WPFなんて死産みたいなもんじゃね・・・
出て結構経つけどWPFの仕事とかの話全然聞かないわ
2020/11/17(火) 18:46:22.75ID:PM1Apx6y0
Visual Studioの皮ってWPFなんでしょ
2020/11/17(火) 19:20:07.15ID:cGx3KuHJ0
>>629
仕事はいくつかあった
建物の入り口にあるディスプレイに飾っとくようなアプリ
3D空間にオブジェクトを配置するアプリ
2020/11/17(火) 19:24:53.52ID:FpFQah7Cd
そういうタイプはunityとかのほうが楽そう
2020/11/17(火) 19:26:16.29ID:iD8vjuLm0
うちは数年前から新製品で使い始めたよ。
特定業界向け会計ソフトだから一般の目に触れる事は殆どないと思うけど。
2020/11/17(火) 19:34:04.55ID:cGx3KuHJ0
>>632
全くその通りで結局開発が進んで行くうちに帯に短し襷に長しみたいな中途半端力凄い

>>633
そういうのは絶対Webアプリのが使い勝手いいんだよなぁ
ログインしたらどこでもどのPCでも同じって強過ぎるよね
2020/11/17(火) 19:37:52.56ID:cGx3KuHJ0
あと何気に困ったのが音
後ろで音楽かけてボタンとか押したら音鳴らしてってのが
わりかしできんかったっていうかなんかあやしいライブラリ使う羽目になったっていうか
まあ、色々動く画面作りたいときはいっそunity考えた方がいいと思う
2020/11/17(火) 19:42:43.18ID:qgtrLMb80
unity 只け?
2020/11/17(火) 20:40:45.04ID:Tiv5/dm/0
いまだに新規開発案件でforms使うところあるの?
2020/11/17(火) 20:44:36.18ID:ooCV67uO0
あるよ
2020/11/17(火) 20:56:30.30ID:Fq1hGO400
FAだとformで十分でウマーです。
2020/11/17(火) 21:02:12.76ID:Qs8QfDsD0
windowsなのにformsを使わない理由を逆に知りたい
2020/11/17(火) 21:04:02.66ID:qYg8UIQi0
>>640
高DPI対応が面倒
バインディングが使い物にならない
2020/11/17(火) 22:28:01.75ID:Rs8mNRLj0
そして来年からはWinUIというWPF紛いのものが登場する、と
Win10ぽいルックスとx:Bindでコンパイル時にバインドエラー発見ってのはかなり大きい
そのうちAOTコンパイルもサポートされるそうだ
2020/11/17(火) 22:33:32.13ID:GB1Hm8K4a
WPFは(既に実質的にはそうだったけど)いよいよディスコンになるの?
2020/11/17(火) 22:39:07.63ID:qYg8UIQi0
>>643
現状維持
これからはWinUI推しでWinFormsとWPFは放置だろ
2020/11/17(火) 22:40:03.59ID:GB1Hm8K4a
そうか無くなるわけじゃないよねw
メンテモードか
2020/11/17(火) 22:48:31.36ID:60XguBAo0
.NET MAUI 楽しみ
2020/11/18(水) 00:03:39.25ID:MO86P+zt0
maui期待しないほうがいい
ただの名前変更レベルの予感
Microsoftはなぜxamarinが失敗したか総括したのか?
表面上何もかわってないように見える

技術的にはSlimRenderアーキテクチャだかようしらんが
648デフォルトの名無しさん (オッペケ Srdf-sWCu)
垢版 |
2020/11/18(水) 15:05:11.31ID:7Ekft4aVr
VScodeで成功してるんだがElectronでいいじゃん
Electron.Netを正式サポートしろよ
2020/11/18(水) 15:10:25.22ID:870PPpSlr
>>647
だね。
650デフォルトの名無しさん (ワッチョイ cf5f-MoyO)
垢版 |
2020/11/18(水) 15:39:37.23ID:P3jn+KK20
Electronは失敗だよな
VSCodeだけだし
2020/11/18(水) 15:46:24.24ID:UaAov2o20
>>76
C#というのは前身がDelphiという言語なんだ
そのDelphiはVBとの死闘の末敗れてしまった

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

ガンダムで例えるとC#はネオジオンでVBは連邦軍なんだよ
2020/11/18(水) 15:54:18.16ID:IPbBahkD0
>>651
2020/11/18(水) 15:54:52.11ID:IPbBahkD0
>>650
654デフォルトの名無しさん (ワッチョイ eff1-ZOa4)
垢版 |
2020/11/18(水) 16:11:46.00ID:YM9VgCd+0
>>637
わたしは中国人あるよ
2020/11/18(水) 16:58:13.83ID:gt3SSD7y0
>>650
SlackやDiscordもElectronだよ
2020/11/18(水) 16:59:19.38ID:oW5F7Byc0
Azure Data Studio
2020/11/18(水) 19:57:00.23ID:hzlSiPtIM
>>656
ゴミは引っ込んでろ
2020/11/18(水) 20:11:49.12ID:oW5F7Byc0
>>657
え?
2020/11/18(水) 21:07:17.11ID:RhWccaic0
こいつら質問スレでテンプレ無視して雑談しなきゃならない使命でもあるのか?
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文字分しか解放されずに残りがリークするって事にはならないんだろうか?
2020/11/19(木) 11:07:34.05ID:xT43LVbE0
> StringBuilderのパフォーマンス目的で使う割には最終的なToString()で再Allocが発生するという矛盾
そもそもそこは別に矛盾じゃないだろ
「結合のたびにアロケーションが発生する」のを防ぐもんなんだから
2020/11/19(木) 11:21:03.45ID:RERzCypk0
>>660
ZStringを使いなよ
色々な悩みから解放されるよ
2020/11/19(木) 11:31:10.28ID:fvT6uEqW0
>>662
良く知らないけどそれもその都度string生成してるんじゃないの?
スレッドアンセーフで良いから生成は初回かキャパ更新程度に留めて使いまわしたいんだよね
そのキャパ更新の際に捨てるときにstring.Lengthを弄ってるとメモリリークの原因になるのではないかと
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況