[過去ログ] ふらっと C#,C♯,C#(初心者用) Part154 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
33: (ワッチョイ 83ad-UVhd) 2022/02/23(水)14:44 ID:EjF360bu0(2/2) AAS
.NET6への移行(移植)はライブラリの対応待ちだな
34
(1): (ワッチョイ ca24-yy09) 2022/02/26(土)20:05 ID:UUNvHcAJ0(1) AAS
いやWindows標準搭載待ちだろ
.NET6ですら標準化予定なしって聞いてからはC#自体書く気なくなったわ
35
(1): (ワッチョイ ca02-Y5l0) 2022/02/26(土)20:41 ID:e5W/1zqv0(1) AAS
COMコンポーネントが作れなくなってるので移行しづらい
36: (ワッチョイ c3ad-M/90) 2022/02/27(日)10:04 ID:VN1UC9sN0(1) AAS
>>34
まずそれな
37: (ワッチョイ 6f02-8W3/) 2022/02/27(日)10:20 ID:FLYW632f0(1) AAS
>>35
まだ作る事ってある?
使うのは偶に必要になるけど
38: (ワッチョイ cae6-ei6B) 2022/02/27(日)17:20 ID:hLXeworC0(1/2) AAS
WinFormsのTextBoxでKeyPressイベントが発生した時、キャレットの位置が行頭なのかどうかを判定したいのですが、

if(TextBox1.Text[TextBox1.SelectionStart].ToString() == Environment.NewLine)

では判定出来ないようです。
判定する方法を教えてください。
39
(1): (アウアウウー Sa2f-n9nK) 2022/02/27(日)17:33 ID:6fl1teDTa(1/2) AAS
[TextBox1.SelectionStart]だと行頭だから
[TextBox1.SelectionStart-1]になるんじゃない?
40: (ワッチョイ cae6-ei6B) 2022/02/27(日)17:59 ID:hLXeworC0(2/2) AAS
>>39
ダメでした・・・。
41: (アウアウウー Sa2f-n9nK) 2022/02/27(日)18:07 ID:6fl1teDTa(2/2) AAS
一文字しかとってないからNewlineじゃなくて"\n"かな
42: (ワッチョイ 8379-BANU) 2022/02/27(日)19:11 ID:ZUZKwXZL0(1) AAS
DOBONみたいに地道にやったほうがよくね?
外部リンク[html]:dobon.net
43
(2): (ワッチョイ 06e9-jC74) 2022/02/28(月)09:21 ID:+yCudJYj0(1) AAS
下記のOBJListの並びを「I,N,P,P」から「P,P,I,N」のようにPが先頭に来るよう入れ替えしたく。
OBJListの要素をforeachで回してPを見つけたら先頭に移動する等試したのですが、
処理中にOBJListの順番を変えるなと怒られてしまいました。どのようにすれば実現できるでしょうか?
よろしくお願いします。

class OBJ
{
public string Name { get; set; }
public int No { get; set; }
}

private void narabekae()
{
List<OBJ> OBJList = new List<OBJ>();
OBJList.Add(new OBJ { Name = "I", No = 1 });
OBJList.Add(new OBJ { Name = "N", No = 1 });
OBJList.Add(new OBJ { Name = "P", No = 1 });
OBJList.Add(new OBJ { Name = "P", No = 2 });
}
44: (スッップ Sdea-PHKB) 2022/02/28(月)09:39 ID:+7QZaSxQd(1) AAS
OBJListを使いまわさずに新規のListを作る
Enumerable.OrderByとか
45
(1): (アウアウウー Sa2f-n9nK) 2022/02/28(月)13:06 ID:UX0HcLa3a(1) AAS
そういうのはforで後ろから回して、削除、挿入
46
(1): (テテンテンテン MM86-g6h8) 2022/02/28(月)17:42 ID:XSUMuMfaM(1) AAS
>>43
そもそもがなんで順番変えるな!って怒られるかわかる?

分かったら対応もわかるはず
47
(1): (ワッチョイ 06e9-jC74) 2022/02/28(月)19:07 ID:Dbx5MQPW0(1) AAS
>>46
foreach中に順番変えられたらforeachが成り立たないのだろうなとは思いました。
頂いたアドバイスからPを別のリストに移動してドッキングしても
邪道では無さそうなので、そうしようと考えています。
48
(2): (ワッチョイ ca24-yy09) 2022/03/01(火)11:27 ID:Dq7cA1DN0(1/3) AAS
それだけのために一時バッファとしてもう一個リスト作るのはスマートじゃない
Remove&先頭挿入をペアで行う場合は後方の順番は狂わないので原始的にforで回せばいい

for (int i = 0, end = obj_list.Count; i < end; ++i) {
var obj = obj_list[i];
if (obj.Name != "P") continue;
obj_list.RemoveAt(i);
obj_list.Insert(0, obj);
}
49: (ワッチョイ ca24-yy09) 2022/03/01(火)11:38 ID:Dq7cA1DN0(2/3) AAS
>>48
そういえばint i = 1からでよかったな
50
(1): (ワッチョイ 8a01-k1AF) 2022/03/01(火)12:59 ID:haFp+aqn0(1) AAS
>>48
RemoveAtもInsertもO(n)だから
そのやり方なら新規にリストを作るほういいんじゃない?
51: (スップ Sd8a-8W3/) 2022/03/01(火)13:00 ID:qybIiuxnd(1/2) AAS
>>45が自分もいいきがするけど何も考えずにやると移動したPのデータの順番がおかしくなりそうにも思えたから
自分はPの移動用のリストを用意してもとのリストを後ろから参照して最後にもとのリストに挿入がいいかなと思った
52: (ラクッペペ MM86-cxam) 2022/03/01(火)13:03 ID:RNWoyucIM(1) AAS
List.Sort が出てこないけどなんか欠点でもあるの?
53: (アウアウウー Sa2f-n9nK) 2022/03/01(火)13:14 ID:FuAp7249a(1/2) AAS
新しくリストを作るって以上に処理が多くなる
54: (ワッチョイ ca24-yy09) 2022/03/01(火)13:31 ID:Dq7cA1DN0(3/3) AAS
>>50
要素数がめちゃくちゃ多い場合はそうだな
RemoveAtで発生する後方要素の前方詰めが今回は完全に不要だから一回分多く無駄な処理が挟まってるからな
.NET5以上ならCollectionsMarshal.AsSpanを利用して
obj_span.Slice(0, i).CopyTo(obj_span.Slice(1, i));
obj_span[0] = obj;
とかに変えればO(n)処理は1回だけで済むからどんなパターンでも新規List作成より早く済むと思うが
55
(1): (アウアウウー Sa2f-n9nK) 2022/03/01(火)13:50 ID:FuAp7249a(2/2) AAS
要素が少ないときは新しくリスト作る方がremove/insertよりも数倍速い
ただ新しくリスト作るのはメモリを倍食うから、要素数が多くなったら(物理メモリよりも多くなったら)どうだか
56: (ワッチョイ ff2f-65e0) 2022/03/01(火)14:23 ID:V9EqT+vw0(1) AAS
つかそもそも、並べ替えたListそのものを保存する必要があるのかとか
初めから必要な順番で保存できないかとか考えたほうが良い気がする
57: (スップ Sd8a-8W3/) 2022/03/01(火)14:28 ID:qybIiuxnd(2/2) AAS
そもそもでいえば並べ替えのAdd時点でPを前に入れたいってわかっていれば
それなりの実装もあるんじゃねと思ったりしているから
質問の内容だけだとやりかたなんて色々あるよね
58
(1): (ワッチョイ ca79-OOjg) 2022/03/01(火)18:06 ID:fDW5QBJr0(1/3) AAS
糞みたいな方法しか出てきてないけど普通に考えると
1) 元のリストからPを抜き出しつつ、Pだけ抜き出したリストを作る
2) Pだけのリストの後ろに元のリストをマージする
あとはList<>で気の利いた方法がないか調べる
59: (ワッチョイ 4f17-ibFl) 2022/03/01(火)18:38 ID:SjVwjYfg0(1) AAS
>>58
ここまでで一番糞なのは案件満たしてないあんたやんけ
それだと「I,N,P,P」から「P,P,I,N,P,P」になってまうでw
60: (ワッチョイ 6b2d-jC74) 2022/03/01(火)18:55 ID:xQ0S3wJN0(1) AAS
>>55
元のリストの中身(OBJクラスのインスタンス)をコピーせずに新しいリストで使いまわせば
メモリー消費の一時的な増加はあまり気にしなくて良い場合が多いんじゃないかな
61
(1): (ワッチョイ ca79-OOjg) 2022/03/01(火)19:17 ID:fDW5QBJr0(2/3) AAS
めんどくせえやっちゃこれでいいだろ
OBJList.Sort((a,b) => (a.Name != b.Name) ? (a.Name != "P") ? (b.Name != "P") ? 0 : 1 : -1 : 0);
62: (オイコラミネオ MMeb-g6h8) 2022/03/01(火)20:17 ID:lFABJG9JM(1/2) AAS
>>61
これは初心者には呪文にしか見えないだろw
1-
あと 940 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.028s