ふらっと C#,C♯,C#(初心者用) Part145at TECH
ふらっと C#,C♯,C#(初心者用) Part145 - 暇つぶし2ch233:デフォルトの名無しさん
19/10/23 12:39:33.45 9MFdyPJfa.net
>>229
WebFormsは.NET Coreおよび.NET 5以降ではサポートされない
今から新規に使ってはいけない

234:デフォルトの名無しさん
19/10/23 12:51:59.22 s8yqv2t40.net
>>227
Required属性とnon-nullable型の関係を確認すればいいと思う
URLリンク(docs.microsoft.com)

235:デフォルトの名無しさん
19/10/23 13:28:03.53 m9ZvUGV10.net
>>221
>>223
ありがとう
こんなの全然知らなかったよ

236:デフォルトの名無しさん
19/10/23 13:33:09.12 mg9LIwfN0.net
>>233
あざます

237:デフォルトの名無しさん
19/10/23 21:40:38.12 F0j44unH0.net
System.Collections.ConcurrentにConcurrentListはないようですが、スレッドセーフなListはSyncronizedCollectionを使っておけということなんでしょうか?

238:デフォルトの名無しさん
19/10/23 22:41:24.14 MpJkuZYiM.net
>>237
ConcurrentListが無いのは、Listは外部ロックを使わない並行処理との相性が悪いからだろう
追加と参照のみならいいが、削除や途中への挿入があるとインデックスがほとんど意味を持たなくなってしまう
インデックスが指してる要素が他のスレッドによる変更の影響で突然コロコロ変わったら使い物にならないのは容易に想像できるだろ?
SynchronizedCollectionを使うとかそういう話じゃなくて、Listインターフェイスの設計が本質的に並行処理と相容れないんだよ

239:デフォルトの名無しさん
19/10/24 08:41:52.53 vvI6h2Gc0.net
あるソフト使ってて、これ使いたいなって機能があるんだけど、なんて検索かけたらいいのか分からないので知っている人いたら教えてください。
WindowsフォームアプリでVisualStudio2015で開発しています。

[欲しい機能]
例えばWindow内が横3段に分かれいるとすると
------------△---------------
みたいに境界が表示されててそこをクリックすると部分的に隠したり、表示させたりできる機能

今作ってるアプリが監視系で画面上に常駐するので、出来るだけWindow内の邪魔なボタンとかは隠しておきたいのでこの機能が欲しいです。
知ってる方いたらよろしくお願いします。

240:デフォルトの名無しさん
19/10/24 09:07:13.70 1uX6E7L9M.net
>>238
> 追加と参照のみならいいが、削除や途中への挿入があるとインデックスがほとんど意味を持たなくなってしまう
それマルチスレッドじゃなくても起きるだろ

241:デフォルトの名無しさん
19/10/24 09:13:17.80 EafWDMiv0.net
>>239
折りたたみできるpanel とかそんな感じ?

242:デフォルトの名無しさん
19/10/24 09:20:52.19 /Cd29/CTM.net
>>240
程度問題だよ
マルチスレッドなら尚更問題になるのは明らかだろ
結局、インデックスに依存する一連の操作の単位で外部ロックを取る必要があるから、concurrentである意味がない

243:デフォルトの名無しさん
19/10/24 09:51:08.72 1uX6E7L9M.net
>>242
バカなの?
インデックス使って途中挿入削除されたら問題なるのはマルチスレッドには関係ない
そもそも挿入削除してるのにインデックスで処理するのがおかしいと気づけ

244:デフォルトの名無しさん
19/10/24 10:07:31.16 /Cd29/CTM.net
>>243
シングルスレッドでの同期処理ならプログラマが意図しないタイミングで変更が加えられる可能性は少ないだろう
そもそも途中挿入しないならConcurrentBagでいいよね
自分で答え出てるじゃん

245:デフォルトの名無しさん
19/10/24 10:16:49.04 1uX6E7L9M.net
本質を理解できない馬鹿に説明しても無駄なことがよくわかるなw

246:デフォルトの名無しさん
19/10/24 10:31:37.86 /Cd29/CTM.net
同意するわw

247:デフォルトの名無しさん
19/10/24 10:50:43.90 8vd5prrh0.net
>>239
SplitContainer

248:デフォルトの名無しさん
19/10/24 10:58:17.20 xs21harXa.net
>>239
XPの時代のエクスプローラーのタスクパネルみたいなUIだと思うけど
たぶん標準では存在しない
折り畳みできるコンテナを自分で作れば、それを別のPanelの中に入れ子にして
AnchorとDockをうまく設定すれば似たようなことは一応できると思う。
PanelじゃなくてFlowLayoutPanelを使ってもいいかもしれないが、
たぶんかえって使いづらくなりそう

249:デフォルトの名無しさん
19/10/24 10:58:42.47 ey5VOEQr0.net
>>241
そうそう折りたたみって言葉がしっくりきます。

試しに「折りたたみ panel」あたりで検索したらやりたい事が出来そうなサイトが見つけられました。
SplitContainerとクリックイベントを使ってどうにか出来そうです。
また、境界部分にも三角形△などの目印を付けるやり方が載ってるサイトも見つかりました。

いいヒントになりました、ありがとうございます^^

250:デフォルトの名無しさん
19/10/24 10:59:35.93 mB9UhJoj0.net
>>247
>>248
ありがとうございます!

251:デフォルトの名無しさん
19/10/24 11:57:49.13 ABhN6CSmF.net
>>239
Collapse
Accordion

252:デフォルトの名無しさん
19/10/24 21:14:55.46 00cf/jHw0.net
頭に0個の参照って表示されてる関数が無数にあるんですが、これ要するに全く使われてないってことですよね
全部消してしまいたい……と思ったのですが実行する中でその関数が呼び出されるような可能性ってあったりするんでしょうか

253:デフォルトの名無しさん
19/10/24 21:35:06.52 VqWeglU2r.net
リフレクションとかで呼べば参照カウントされないんじゃない

254:デフォルトの名無しさん
19/10/24 21:45:06.56 B+sGouls0.net
なんかのライブラリとかで、publicで公開してるやつとかか?

255:デフォルトの名無しさん
19/10/24 22:06:02.66 Eph2jaDU0.net
複数のパネルをドラッグドロップできるようにしたんだけど
マウスが別のパネルに重なったときにパネルがいれかわってしまうんだけど
これを防ぐにはどうしたらいい?

256:デフォルトの名無しさん
19/10/24 22:14:48.43 yaJ1dO+n0.net
>>255
「パネル」をドラッグドロップしている?
一番上または必要なパネル以外のドラッグドロップを受け付けないようにしたら

257:デフォルトの名無しさん
19/10/24 22:17:00.79 WLXJ5XGy0.net
>>255
マウスダウンで「掴む」じゃん
マウスドラッグで「移動」するじゃん
マウスアップで「置く」じゃん
ドラッグ中の処理は移動なのにどうしてマウスダウンで掴んだやつ
以外が動いちゃうん?

258:デフォルトの名無しさん
19/10/24 23:01:06.74 yaJ1dO+n0.net
マウスがパネルに触れた時点でフォーカス変わったりしているとかだろ
最低限の動きするミニマムコード使って検証する方がここで聞くより解決しやすいと思うがね
そこでわからなかったらそのミニマムコード出してまた質問したらここの人も答えやすい

259:デフォルトの名無しさん
19/10/24 23:02:09.24 00cf/jHw0.net
>>253
あーなるほどでもそんな上等な書き方出来る人が作ったわけじゃないからなさそうですね
>>254
他の似たようなソフト作る時に使ったソースコードそのまま組み込んだっぽいですね見た感じ

260:元99
19/10/25 14:57:42.75 V0o5IG+qM.net
>>252
まあ普通はコメントにするよね

261:デフォルトの名無しさん
19/10/25 22:28:16.88 7rgagi6Z0.net
List<(string, int)> list;があった場合、listの中からlist.item2が最大の要素(string, int)を得るにはどうすればいいのですか?
var l = list.Max(x=>x.Item2);みたいにしたいのですが、int型が帰ってきてしまいます

262:デフォルトの名無しさん
19/10/25 23:07:56.88 GWerdevt0.net
OrderByDescending.FirstOrDefault

263:デフォルトの名無しさん
19/10/25 23:14:44.18 5pdqBhsBa.net
>>262だと計算量のオーダーが増える
先に Max で最大のItem2 (maxItem2)を求めておいて list.First(x => x.Item2 == maxItem2) のほうがマシ

264:デフォルトの名無しさん
19/10/25 23:23:22.26 6061P7ry0.net
何度も呼ぶときウゼーから関数にしろよ

265:デフォルトの名無しさん
19/10/25 23:42:07.16 5pdqBhsBa.net
経験上、こういう汎用的すぎるユーティリティ関数を自作して多用するのはお勧めしない
個人開発ならいいけど、多人数での開発になると新しいメンバーとの間で記述方法に差異を有む原因になり、結果的に負債化していくんだよ
ダサくてもこういうのは毎回ベタに書いたほうがいい

266:デフォルトの名無しさん
19/10/25 23:48:20.10 FLPxIKHC0.net
最大値持ってるタプルが複数あったら?

267:デフォルトの名無しさん
19/10/25 23:50:57.19 j4bjfcPpd.net
>>266
逆にどうして欲しいの?

268:デフォルトの名無しさん
19/10/26 00:25:28.36 ZMkO6rZZ0.net
>>267
知らんがな

269:デフォルトの名無しさん
19/10/26 00:58:09.61 rff7tW+R0.net
>>262-265
どの方法も一見正攻法ではないように見えるため、人に教えてもらわないことには勇気を出して書けませんでした
ありがとうございます

270:デフォルトの名無しさん
19/10/26 12:56:29.17 D4rlG2Pr0.net
>>265
計算量のオーダー気にしてんだろ?
他の奴が違う書き方して増えたら大変じゃん
あ、どうでもよかった?

271:デフォルトの名無しさん
19/10/26 13:18:11.26 sfokePbj0.net
素直に
int max = list.Max(tuple => tuple.Item2);
var maxValueItems = list.Where(tuple => tuple.Item2 == max);
でいいじゃん
int に重複がない前提なら Dictionary 化した方が捗る

272:デフォルトの名無しさん
19/10/26 14:40:36.29 +20I9h0L0.net
なんかいいロガー知らない?
3つのテキストに警告・注意・情報がそれぞれ安全に吐けるロガー


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch