C#, C♯, C#相談室 Part94

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 935f-5Uxj)
垢版 |
2019/03/20(水) 18:57:36.47ID:ZZcTomnN0
!extend:checked:vvvvv:1000:512
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part93
http://mevius.5ch.net/test/read.cgi/tech/1492818720/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2021/07/07(水) 20:54:47.64ID:GxuaumQya
>>613
なるほどね。読み返してみると確かにそういう風に読めないこともない。
でもその解釈だと辻褄が合わないように聞える部分もいろいろあるね。
まあ揚げ足取りは本意じゃないのでこれで
2021/07/07(水) 21:14:19.97ID:WowgMcxm0
>>610
group by の動作原理考えればそうでしょう
ソートと集計の複合技でっせ

EFを初心者に進めたくないのがその辺りかな
実行計画取れやと言いたくなって来る
2021/07/07(水) 21:32:17.55ID:PTZA0JCFM
>>622
期待する動作は
> その間Formが固まるのですが、どうすれば固まるのを回避できるでしょうか。
だよ?
2021/07/07(水) 23:15:16.70ID:O4oUzSnJ0
その間ってのがどこからどこまでか
固まるとはどういうことか
が、普通に考えるのとずれてるんだがな
2021/07/08(木) 05:59:22.31ID:bp32MkoMa
>>623
初心者なので詳しく教えてください。
2021/07/08(木) 06:08:48.29ID:4npUp7i4M
お前さんの普通なんて知らんがな
2021/07/08(木) 07:08:26.32ID:ynxscpbq0
今回みたいなケースは再現しようがないから想像するしかないんだよな
齟齬が出るのはしょうがない
631デフォルトの名無しさん (ワッチョイ 355f-xNKK)
垢版 |
2021/07/10(土) 10:35:48.26ID:o1Fr1a0g0
メインウィンドウが開かれるのに時間がかかる場合って自動的にマウスカーソルに砂時計付くよね
これってWindows 10だけの機能なのかな?
スプラッシュはそういうことに気付かない人にはわかりやすいからいいと思うけど
2021/07/11(日) 15:20:44.65ID:ODsLgHFcM
C#について詳しくなりたい。
.net独学だからテクニックが全く身についてこない。
働きながら学べる人たちが羨ましい。
2021/07/11(日) 16:47:39.95ID:UTF+PuFAM
>>632
働いてはどうでしょうか
2021/07/11(日) 16:53:56.36ID:JpOAcHlL0
>>632
Effective C#とMore Effective C#買って読めば
2021/07/12(月) 09:28:12.82ID:ReFnqSuP0
>>632
オープンソースのソフトウェアをただそのまま使うのではなく
自分で使いやすいよう改造して使ってみたらどうかな
2021/07/12(月) 14:04:49.78ID:DOYT8O/O0
ひとが使いためのライブラリ作らない限りテクニックなんかロクに身に付かんでしょ。
テクニックが要らないように作られれてるのが人気があるライブラリなんだから。
2021/07/12(月) 17:05:33.06ID:ihSDWtOf0
async・awaitを使った非同期処理の並列処理数をSemaphoreSlim使って制御しています。

https://qiita.com/tadokoro/items/28b3623a5ec58517d431
を見ると、SemaphoreSlimのパフォーマンスはそこまで良くないらしいんですが、async・awaitを使いつつパフォーマンスを上げる方法はないでしょうか?
並列処理数の上限は4が理想です。※多ければ多いほどいいのはいいです。

SemaphoreSlim semaphoreSlim = new SemaphoreSlim(1,4)
await semaphoreSlim.WaitAsync();
try {
await 自分の非同期メソッド
}
finally {
semaphoreSlim.Release();
}
2021/07/12(月) 18:01:24.85ID:AiE5hxvs0
必要な場所にだけlockを掛ける
lock不要なロジックにする
2021/07/12(月) 18:04:26.22ID:hnMq5MVY0
>>637
await,asyncはlock使えないから基本>>638の通り排他不要にするか、そのコードで頑張るしかないんじゃね
2021/07/12(月) 18:33:51.33ID:4WArcuIG0
>>637
そのベンチマークは同期のオーバーヘッドを気にするくらい
ゴリゴリ共有リソースにアクセスする場合のための比較だから
4並列でawaitするような処理をする場合とは全然違うものじゃない?
2021/07/12(月) 19:18:50.72ID:xUxV3tpC0
async,awaitってlock使えないのか。。
2021/07/12(月) 19:21:57.66ID:ihSDWtOf0
>>638-640
ありがとうございます。
必要な場所にだけ lock 使うようにします。
lock 不要に出来るかも検討してみます。
2021/07/12(月) 20:54:40.73ID:LswkHmLx0
これだけだとロックのパフォーマンス差なのかawaitのオーバーヘッドなのか分からん気がする
2021/07/16(金) 12:04:19.61ID:JqVxPGJSd
#region を使うのは駄目ですか?
開くの面倒だ!ってセンパイに怒られました・・・
2021/07/16(金) 12:24:45.09ID:QqSxNnhma
うちじゃ使わなかったらレビューで指導が入るけど
2021/07/16(金) 12:30:58.12ID:81zoecY+0
コーディング規約に従え
個人的には使わないし他人が使ってても気にしない
メソッド1個ずつにregionあったらちょっとうざいけど、ショートカット一発で全部開けるしどうでもいいかな
2021/07/16(金) 12:53:50.69ID:QqSxNnhma
>>646の言う通り
うちには規約にregionについての記載があるのでその通りにしなかったらレビューの指導対象
こんなことをここに書き込むと言うことは
>>644は規約を読んでないか規約そのものがないかのどちらかだと思うけど
2021/07/17(土) 06:06:49.16ID:Mspzx0w60
規約ちょうだい
2021/07/17(土) 11:35:23.95ID:tiRnOuXY0
regionは規約がないなら使わないのが無難
特に〜のプロパティ、〜のメソッドみたいな囲いかたは最悪で、今後regionを意識してメンテしなきゃいけないのが面倒
折りたたまないと把握出来ないほどぐちゃぐちゃになってますって言ってるようなものだしね
2021/07/17(土) 14:53:32.71ID:Wlqcfoar0
#region (規約)
把握できないほどグチャグチャになるくらいなら囲んだ方がマシ
#endregion
2021/07/17(土) 19:23:55.27ID:1SEym9JY0
画面のクラスとかだとregion的な機能つかいたくなることはあると思うけどなあ。
画面って結局、人間にとって都合のいいように複数のデータを出すものなので、そのデータ毎にregion作ったりするのは変じゃないと思うけど。 Formに依存するコードを、 Form外の別クラスに書いたりしたくないじゃん。
2021/07/18(日) 01:36:46.77ID:jHDjUzT3d
コメントを書かない論者と同じ臭いがする

誰が読んでも自然言語と同じレベルで即座に理解可能かつ
解釈の余地の入らない完璧なコードを書けていて
しかもチームの全員がそのレベルに達しているという
地球上に存在しないチームで働いているかのような思い込みをしている
2021/07/18(日) 02:29:32.38ID:fZXK3W//0
自分しか読まない使い捨てのテストコードならコメントも書かないし、ましてや#regionなんて使わない
2021/07/18(日) 02:41:59.86ID:gMJXIBls0
#regionはあまり使わないが
IDisposableパターンの実装とか定型文的なのはでregionで畳んでおくな
2021/07/18(日) 07:23:51.05ID:Ncq1Qbn/0
俺もそんな感じだな
インターフェースを継承するクラスは定形文が多くなるから囲んで畳んじゃう
2021/07/18(日) 09:20:30.72ID:SEUoEBF50
IDisposeパターンなどはpartialでクラスごと隔離するのがお薦め
2021/07/18(日) 10:15:41.72ID:f26THqN50
子供は肉が好き!
2021/07/18(日) 10:18:34.20ID:duOzNEUP0
partialはお勧めかなぁ?
一見、Disposeが必要なメンバーを持っているのにIDisposableパターンを実装し忘れたクラスに見えてしまいそう。
2021/07/18(日) 11:31:45.33ID:SQx5QkWC0
自動生成してくれるならpartialでもいいけど自分で書くなら俺はやはりひとつのクラスにするな
2021/07/18(日) 19:03:11.29ID:x1tAdumV0
VSでクラスから別に定義されたpartialクラスに飛ぶ方法がよく分からないので、partialは使わない。
2021/07/18(日) 19:38:24.99ID:SQx5QkWC0
まあクラスに飛ぶとか言ってる時点で使わない方が無難だろうね…
2021/07/18(日) 21:11:55.98ID:wT9cmlucd
F12とかCtrl+F12とかできなかったっけ
知らんけど
2021/07/18(日) 22:09:14.51ID:zdDSWDaE0
>>661
言い方が雑なだけでおかしなこと言ってるようには見えないけどなあ
2021/07/18(日) 22:10:16.34ID:ZnA++D2G0
partial は元々自動生成コード用の機能であってクラスを分割する機能ではない
明らかインターフェイスの実装を#region化する方が可読性が高い
2021/07/19(月) 02:47:17.54ID:GZMIZdMt0
>>663
相手を否定せずにはいられない可哀想な人達が一定数いるから、そっとしておいてやりなよ。
2021/07/19(月) 10:43:55.05ID:uTNe/jhZ0
partialでクラスを分割してもファイルは1つのままでも問題ない
目障りなコードを#regionより明確に隔離できるから良いんだけどね

まあ1クラス1ファイルの規約が有るなら無理だけど
667デフォルトの名無しさん (ワッチョイ 9d5f-NvNM)
垢版 |
2021/07/19(月) 20:59:17.78ID:yGPED6YR0
partial→見るな触るな
region→見てもいい触ってもいい

という使い分けになりそう
2021/07/19(月) 21:29:24.97ID:K3gEK6ANa
そんな教条主義的に考えなくてもいいでしょw

トポロジー的(?)には部分クラスは本の1巻2巻、
#regionディレクティブは章に近い感じがするので必然的に部分クラスの方が
出番は少なくはなるわね。

何のために使うべきか、何のために存在するかってそれじゃ哲学だw
エンジニアリングの発想は「何に使えるか」でしょう
2021/07/19(月) 21:50:47.13ID:6cdKHupi0
#region 定数
#endregion

#region 変数
#endregion

#region プロパティ
#endregion

みたいに整理?
2021/07/19(月) 22:17:06.00ID:YnDE/De/0
クラスの一部をT4で生成させたときに手で書いた分とファイル分けてpartialにするのとかやったことはある
regionはIDisposableとかインタフェース実装した時に囲っておくのはよくやるし、
>>669 みたいな使い方するときもある
2021/07/20(火) 07:33:24.30ID:DOoV4fKqM
定数が増えるなら外部ファイル定義にしろ
変数やプロパティが増えるならクラスを分けろ
と思ってるから滅多に無いが、何らかの理由でやむを得ず肥大化した時は>>669のやり方してるな
2021/07/20(火) 12:11:28.91ID:npAM0kVy0
フォルダ整理と似た話だよね
regionってつまるところデスクトップにアイコン敷き詰めてるやつが画面上で1列空けてわかりやすいでしょって言ってる感じ
フォルダ作るなりツールなりで管理した方がと思うけどそれが本人にはわかりやすいんだろうな
2021/07/20(火) 22:03:15.00ID:7fUojtbc0
というよりデスクトップにファイル並べてるのをフォルダに入れて整理するようなイメージ
2021/07/21(水) 02:31:48.03ID:/t31adkB0
vs2022へ向けてちょっと気合い入れて学習直しすわ
2021/07/21(水) 04:27:22.47ID:S6x5cz780
多数のクラスが、イベントを相互に Invoke・Listen するようになってきて、
無駄な Invoke・Listen が多数あるような気がする場合、整理するいい方法を教えて下さい。
2021/07/21(水) 04:31:23.12ID:Tj+N2/ND0
1から設計し直す
2021/07/21(水) 12:58:49.45ID:yT2R+EQla
>>675
N対N関係を整理したいって聞いたら真っ先に思い浮かべるのはmediator?
2021/08/14(土) 08:00:21.71ID:5V/5IZHy0
Utf8Stringって闇に放り去られたの?
C#でHttpClientとか利用してると都度気になっちゃうんだけど
2021/08/14(土) 11:17:17.07ID:LS51vqD40
そういや8だか9だかで採用って話があったね
10の新機能候補にもないもたいだが…
2021/08/14(土) 13:27:27.47ID:EKL54yvl0
>>675
Microsoft.Toolkit.Mvvm.Messagingでイベントを構築し直したら良いんじゃね?
こいつは .NET Standard 2.0対応だからwinformsでも動くはず
2021/08/14(土) 19:34:45.80ID:q1VZBaGf0
とりあえず(ReadOnly)Span<byte>使っとくかと言ってる間に
もうそれでいいかってなってる感がある
2021/08/15(日) 08:50:23.66ID:TYMDGwka0
HttpClient周りじゃReadOnlySpan<byte>すらも利用できないじゃん
URLとかヘッダに直接utf8放り込みたいのにstringしか受け付けてくれないし

その点System.Text.Jsonは直接utf8で行けるからまだマシだけど
それでもせめてC++みたいに「u8"あいうえお"」みたいに簡単にリテラルUtf8書けるようにしてほしいわ
byte[]で良いから
2021/08/21(土) 17:00:29.45ID:gz5mByYnM
C# やってる奴らとかマジで仕事舐めてんだろ
俺なんてくっさいゴミ回収の仕事して、年収たった900万円台やぞ
ゴミの回収は、無かったらお前らだけじゃなく、お前以外の皆全員が困るが、お前らがやってる C# なんて
なくてもお前らやお前の身内以外誰も困らんわボケ
そもそも C# なんてただのお遊びやんけ
頭使ってる? 頭が良い? そんな頭が良いなら、研究者や医者やもっと世の役に立つ仕事に就けよカスが

一部の頭のおかしい意識高い系どもが C# を神格化して
アフターコロナの立派な文化だ! だなんてほざいてるが根本的にやってることは eスポーツと変わらん

そもそも遊びは仕事じゃねーんだわ
ただの遊びでしかないもので客から金を巻き上げて立派な仕事だの崇める
まさに不労所得じゃねーか
そして不労所得者に向けられた言葉
「働かざるもの食うべからず」
これ C# プログラマに対する言葉だよ

お前に俺がやってる仕事やらせてやろうか?
熱い炎天下の中を走りながらくっさい生ゴミの入った袋を何百個とひたすら回収する。パッカー車に手を巻き込まれりゃ腕切断してカタワになるリスクもあるんだぞ?
夏も冬も空調の効いた部屋でキーボード打ってるだけのお前らなら3日も持たねーだろうな

でもな、これが仕事じゃ。仕事舐めんなカス
2021/08/21(土) 17:18:59.23ID:/kPGqYai0
>>683
お前の年収、安っ!w
2021/08/21(土) 21:01:00.40ID:uzh8TD++0
これ何のコピペ?
2021/08/21(土) 22:21:31.26ID:de4fLkvp0
>>685
https://leia.5ch.net/test/read.cgi/poverty/1547956943/855
687sage (ワッチョイ 9fdb-lkNM)
垢版 |
2021/08/21(土) 22:22:26.75ID:+/txNrCq0
>>685
増田で見た.
2021/08/22(日) 00:03:11.52ID:mrqFYxe80
thx
なるほど。w
2021/08/23(月) 18:28:34.35ID:zCBpVreAa
間抜けな仕様なのは重々承知なんだけど
c#で作ったアプリケーションでアイコンダブルクリックして起動したあとに
もう一回アイコンダブルクリックしたときに
新しいプロセス起動させないで
すでに起動してるプロセスのmainwindow以外の
window起動させることできないですかね?
2021/08/23(月) 19:36:22.13ID:cpmwRu6w0
>>689
今俺が作ってるアプリではMutex見て、その上でプロセス間通信してる。
coreだとどうしたもんか、と少し悩んでる。
2021/08/23(月) 19:45:55.02ID:YKmonA5q0
coreもそれでいいんじゃないの?
2021/08/28(土) 11:11:05.40ID:61xWrGaR0
xamarin.formsでタブAからタブBのテキストボックスの値を参照できないので、どうすればいいですか?

タブA.csから
タブB.txtName
を参照するとエラーが出る。
2021/08/28(土) 11:44:46.36ID:H94428G10
>>692
どっか別のインスタンスにもっといたら?
入力された時点で親に入れたり。
2021/09/01(水) 08:39:47.70ID:4fugcblF0
ArrayPoolの内部がよくわからないんだけど、GCに負担かからないっていうのは逆に言えば内部バッファは常駐されるってこと?
2021/09/01(水) 13:32:31.59ID:iOouKnxp0
>>694
そうだね

https://github.com/dotnet/runtime/tree/main/src/libraries/System.Private.CoreLib/src/System/Buffers
2021/09/01(水) 14:24:19.78ID:F1x0ap2P0
audioSource.PlayOneShot(Announcement);
で1分ぐらいの説明音声を流しているのですが、
音声が流れている間、入力を受け付けない良い方法って無いでしょうか?
697デフォルトの名無しさん (ワッチョイ c936-U7Lh)
垢版 |
2021/09/01(水) 15:52:06.13ID:Bk82infv0
.NET5でないと動かないライブラリがあるので.NET5をインストールしたいのですが、
↓を参考にしてインストールしても対象のフレームワークには今まで使っていた4.7.2のバージョンまでしか表示されません。
どうやったら5が使えるようになるのでしょうか?
教えてください。


.NET5とVisual Studio2019のダウンロード、インストール | イメージングソリューション
https://imagingsolution.net/program/visualstudio2019v167p1/
2021/09/01(水) 16:25:20.94ID:nZXKGJdT0
>>697
.NET Framework と .NET5 は全くの別物だよ。

参照
ttps://docs.microsoft.com/ja-jp/dotnet/core/porting/
2021/09/01(水) 16:25:42.68ID:xCOolefd0
>>697
VS Installerで、[変更]→[個別のコンポーネント]で、[.NET5.0ランタイム]にチェック入ってる?
2021/09/01(水) 16:46:58.34ID:Bk82infv0
>>698
初心者ですいません。

>>699
確認しましたが入ってます。
2021/09/01(水) 17:01:44.97ID:xCOolefd0
>>700
もしかして、.NET Framework4.xで作ってある既存のプロジェクトを対象のフレームワークの切り替えだけで.NET5にしようとしてるの?
それは無理だから、>>698が挙げているページにあるように移植作業が必要だよ
2021/09/01(水) 18:54:29.18ID:Bk82infv0
>>701
そうなんですね、勉強になりました、ありがとうございます。
2021/09/02(木) 06:21:25.28ID:CGg78V2s0
それほど複雑じゃ無い(いかにも企業ユースなフレームワーク使ってるとかで無い限り)プロジェクトなら.net frameworkのソースそのままで.net5としてコンパイル出来る。

ついでにいうとこういった複雑でないものは、.net frameworkのまま、.net5から参照可能。
2021/09/02(木) 06:29:18.68ID:CGg78V2s0
一方、net frameworkから.net5を参照するのは無理。
この場合既存部を.net frameworkのままで通したい場合は、
.net5の方は薄くCOMインターフェースでうっスーいラップ挟むのがいいかな。
2021/09/02(木) 14:23:42.13ID:ffn82dhU0
なんでそうぶち上げては切り捨てるを繰り返すのかねMSは
2021/09/02(木) 14:34:39.39ID:uXRFOUT10
延々と同じものを使われたら商売にならないから
707デフォルトの名無しさん (エムゾネ FF22-4thN)
垢版 |
2021/09/02(木) 16:20:15.54ID:4vWPiFe2F
ぐぐーるもたいがいやで
2021/09/02(木) 18:31:28.55ID:FL5AB1qC0
アップルも切り捨て大好きだぞ
709デフォルトの名無しさん (ラクッペペ MM66-sNgg)
垢版 |
2021/09/02(木) 18:43:20.96ID:95p8ZRX9M
WINUIも.NET5も遅いし機能少ないくせに
2021/09/03(金) 00:29:45.00ID:AHipKBXs0
初心者用書いたのですが返答こなさそうなのでこちらに書きます(マルチすいません)

GoogleChromeにあるイメージファイルをデスクトップにドラッグすると大抵の場合イメージファイルを保存できますが
これをPictureBoxに直接ドラッグしてイメージを表示させたいです
※URLを取得してからのダウンロードだとjavascriptなどで読めないイメージが多いので他の方法を探しています

これはクリップボードを経由してるんでしょうか?もし経由しているとしたらクリップボードのフォーマットは何を使ってるんでしょうか。
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.dataformats?view=net-5.0
それ以外ならどういう仕組みなんでしょうか、何か手掛かりになるものがあれば助かります。

もし無理なら特定フォルダ作り定期的に監視して増えたファイルをロードしようと思いますが
できればコントロールにドラッグしたいです、よろしくおねがいします。
711デフォルトの名無しさん (ワッチョイ 6754-Sfec)
垢版 |
2021/09/03(金) 02:23:45.36ID:r8mmW0/q0
https://github.com/davidegironi/advanceddatagridview/releases/tag/1.2.x.3
上記の、AdvancedDataGridViewを使っています。

フィルタリングする為に、
@カラムヘッダークリック
ATreeView表示される選択肢の内、表示しない項目のチェックを外す。
までは動くのですが、選択内容を変更するために、再度カラムヘッダーをクリックすると、Aで非表示化した項目が消えるので、
一度フィルタークリアするしかなくなります。

int型・string型データのカラムだけで発生します。
公式サンプルも同じ状態なのですが、何が原因でしょうか?
2021/09/03(金) 09:05:37.92ID:PQRWg2pe0
>>710
https://stackoverflow.com/questions/8442085/receiving-an-image-dragged-from-web-page-to-wpf-window
WPFっつってるけどやってることはWinFormでも全く変わらんね
2021/09/06(月) 08:50:27.01ID:h/8uTFD00
ref structの強制using欲しいと思うのは俺だけ?
C++みたいな暗黙でデストラクタ呼ばれる方式じゃなくてちゃんとusing書かないとコンパイルエラーになる感じのが欲しい
2021/09/06(月) 10:49:07.22ID:hEa6z0ew0
>>712
先に質問してたふらっとの方で既に解決しているがそれじゃダメだ
2021/09/06(月) 16:05:09.28ID:eiNUFGv40
マルチで質問しっ放しか
2021/09/07(火) 00:12:57.46ID:jZhA4bAr0
>>713
コード分析しろ
2021/09/07(火) 04:08:51.28ID:q85I47vR0
自分でanalyzer書けば警告でもエラーでもだせるよ
そこまでやってる人がどれほどいるかは知らんが
2021/09/07(火) 08:29:58.90ID:e368Ab820
環境依存だと他人に使わせるのはちょっと身が引けるな
disposable ref structとでも書いたら絶対Dispose実装しないといけないし絶対using宣言しないといけないってなれば多少アンセーフな機能も公開しやすいんだけど需要は無さそうだな
2021/09/07(火) 12:19:24.33ID:I20R26Ho0
>>718
気が引ける、な。
2021/09/09(木) 17:34:11.61ID:qrAI1q0R0
50,000レコード、テキスト換算30MBある(想定最大値)JSONデータを取り回すのに向いている、ローカル用のDBエンジン(SQLiteのような)って何かありますか?
出来れば、Xamarin.Forms(Android)でも動くものを探しているのですが、他の方がどうやっているのか知りたいです
2021/09/09(木) 22:13:50.14ID:AWFfXCnC0
Redis がベストやな
2021/09/10(金) 00:51:31.54ID:Hha8Yi5K0
>>720
LiteDB。ずっと使ってる。
Linqで引けるから凄く便利。
2021/09/10(金) 09:13:28.67ID:GizC5utx0
>>722
LiteDB、良さそうですね。ちょっと試してみます。

>>721
俺の知らない別の使い方とか同じ名前の別のRedisがあるのかと思って1時間ググって見たけど、わからんかった。
Redisで、SQLite的な組み込みの使い方があるの? 比較したいので具体的なところ教えて欲しい……
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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