1 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 20:50:08.06 ID:IGV3Viy6.net] 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part116 [転載禁止](c)2ch.net peace.2ch.net/test/read.cgi/tech/1436344868/ ■関連スレ C#, C♯, C#相談室 Part89 [転載禁止](c)2ch.net peace.2ch.net/test/read.cgi/tech/1443271409/ ■コードを貼る場合は↓を使いましょう。 ideone.com/
29 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 20:14:08.67 ID:FsLwYc7A.net] c#やる人はDBプログラミングも完璧に出来るの? おいらには難しい。何から始めたらいいのか。
30 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 20:25:58.00 ID:4ZFUkYGv.net] SQL
31 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 20:42:43.95 ID:FsLwYc7A.net] sqlはある程度は出来るよ
32 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 20:47:58.51 ID:4ZFUkYGv.net] じゃあ次に進もう
33 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 20:53:49.03 ID:FsLwYc7A.net] 次は何がいいのかしら?
34 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:16:12.67 ID:4ZFUkYGv.net] ネットワークか3Dかな
35 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:22:40.77 ID:FsLwYc7A.net] >>32 両方出来るわよ。openglはよく使ったわ。
36 名前:デフォルトの名無しさん [2015/10/04(日) 21:26:32.67 ID:Vt6Jil15.net] C:\Hoge\args\ と言う文字列から args を取り出すにはどうすればいいでしょうか? GetDirectoryNameだとC:\Hogeになります
37 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:28:25.31 ID:4ZFUkYGv.net] >>33 なんだよ。初心者じゃないじゃん。神レベルじゃん。
38 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:33:14.06 ID:0WB+oea1.net] >>34 var path = @"C:\Hoge\args\"; var fileName = System.IO.Path.GetFileName( path.TrimEnd( '\\' ) )
39 名前:デフォルトの名無しさん [2015/10/04(日) 21:36:42.41 ID:Vt6Jil15.net] >>36 ファイル名じゃなくてフォルダ名を取得したいです
40 名前:デフォルトの名無しさん [2015/10/04(日) 21:40:47.99 ID:GuH6DZcU.net] >>34 マイナーなAPIだけど new DirectoryInfo(path).Name
41 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:43:53.33 ID:4ZFUkYGv.net] >>37 再起
42 名前:デフォルトの名無しさん [2015/10/04(日) 21:48:10.61 ID:zHOzyLwf.net] >>34 レスに文句ばっか言ってんじゃねーよ乞食
43 名前:デフォルトの名無しさん [2015/10/04(日) 22:14:59.10 ID:Vt6Jil15.net] ありがとうございます。出来ました >>40 すみません
44 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 04:15:46.37 ID:eQ2/zVIr.net] >>19 ideone.com/cwKTg3 普通にできるじゃん 明示的実装してんの? https://msdn.microsoft.com/ja-jp/library/aa664595%28v=vs.71%29.aspx?f=255&MSPPError=-2147217396
45 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 09:14:38.11 ID:NpHnTe7L.net] >>42 彼はideone.com/bEzsTd を狙っているんでは? 出来なくても全く問題ないと思えるが、C#を欠陥言語だと揶揄したいのかな
46 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 10:35:28.87 ID:LmMVGWnX.net] このへそ曲がりな解釈をしたがる根性はなんとかならないのだろうか? 強烈なコンプレックスを持ってるんだろうなあ…
47 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 15:46:26.20 ID:eQ2/zVIr.net] >>43 うーん、池沼としか言いようがないな
48 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 18:17:41.66 ID:PVqgELRl.net] ListBoxのDrawItemイベントとかで DrawItemEventArgs.Indexに-1が渡されてくることがありますが これってなぜ? 意味ないと思うんだけど。 だって描画しろというイベントでしょ? いつも-1を除外するコードを書く度に思うんだけど! と、ここまで書いて 背景を描けということなのかなと思い当たったけど合ってる?
49 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 19:45:13.85 ID:W0LY67FT.net] wpfを最近始めたけど、難しいね。 バインディングも融通が効くというか、わけわかんないというか、わけわかんないほう。 みんながerectronに飛びつくのもわかる気がするよ。
50 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 20:49:50.82 ID:EY/b50y6.net] 今時HTMLは最低でも使えないと開発者として話にならないからね どのみちHTMLは覚えなきゃならないし、HTMLで同じことは実現できるんだからわざわざWPFを使う理由がない
51 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 21:05:08.85 ID:G+Q38Itw.net] 井の中の蛙っすなあ
52 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 21:14:49.94 ID:PVqgELRl.net] javascript地獄に落ちるよ
53 名前:デフォルトの名無しさん [2015/10/06(火) 16:36:11.30 ID:H4LWLTNp.net] SVNでコミットしようと思ったら間違ってアップデート押してしまった… 確認画面も出ないのかよ
54 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 16:53:27.84 ID:y3L8AxGi.net] そりゃ簡単に戻せるからな
55 名前:デフォルトの名無しさん [2015/10/06(火) 17:01:54.18 ID:H4LWLTNp.net] どうやって戻したらいいんだ?
56 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 17:11:09.43 ID:rJsBL5Cg.net] TortoiseSVN使ってるなら Update to revisionするとか Show logからUpdate item to revisionするとか
57 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 17:25:06.67 ID:UaXFQD8w.net] 何の話? な ん の は な し ?
58 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 18:51:35.50 ID:b7EIiqyO.net] >>51 どっちにしろアップデート要るからな
59 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 19:33:53.24 ID:fQuxJtVK.net] >>51 ほ、ほら、SVNが適切にマージしてくれてるでしょ(震え声
60 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 21:04:13.40 ID:eiV44Wn/.net] SVNはアプデ時に競合が合ったときの挙動がクソ過ぎる
61 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 23:55:21.99 ID:EryYYvev.net] クラスA内のメソッド内でクラスBのメソッド使用 クラスBのメソッド内でクラスAのメソッド使用 のような関係があるとき 依存性を減らすためにコンストラクタで相手のオブジェクトを受け取り、フィールドにセット するような作りにしたいんですが、お互いにインスタンス作るには、もう片方が必要なため、作れません こういうときはどういう作りにすべきですか? テストコードを書くため、メソッド内で相手クラスをnewするのは無しでお願いします
62 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 23:59:03.30 ID:8uRulS56.net] 相互参照しない作りにすべき
63 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 00:11:55.48 ID:T1RoiOzF.net] Abstract Factoryを使えばいい interface IHage { void DoHage(); } interface IHoge { void DoHoge(); } class Hage: IHage { private IHoge hoge; public Hage(Func<IHage, IHoge> hogeFactory) { this.hoge = hogeFactory(this); } } class Hoge: IHoge { private IHage hage; public Hoge(IHage hage) { this.hage = hage; } } これで new Hage(hoge => new Hage(hoge)) としてインスタンス作ればいい factoryを変えればテスト時にHageにダミーのIHoge実装を食わせることもできる
64 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 00:20:04.54 ID:3pa+NQnn.net] なるほど、デザパタ使っていけるんですね ありがとうござました
65 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 00:24:26.54 ID:T1RoiOzF.net] >>61 訂正 new Hage(hage => new Hoge(hage))
66 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 12:27:46.25 ID:dQPZGG2o.net] 循環参照とか絵に描いたようなダメ設計だな
67 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 12:34:11.37 ID:40NgKpJy.net] ボタンにイベントハンドラ登録したたけで循環参照になるのに何を言ってるんだ ダメなのは循環参照ではなく2つのクラスが相互に密結合する設計
68 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 12:51:31.86 ID:dQPZGG2o.net] >>65 VBスレでもそんなヨタを飛ばしてるバカがいたけど、.NETのイベントも オブザーバパターンも実行時に参照を握るだけであってコード自体が循環参照してるわけじゃない
69 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 12:51:40.38 ID:wgVSxFSa.net] クラスA内のイベントでクラスBのメソッドMethodBを呼び出す。 MethodB内では、クラスAのセッターを呼ぶ みたいな処理は、どういう設計がいいんだろ? >>61 みたいにするのはよくない?
70 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 12:57:52.42 ID:dQPZGG2o.net] >>67 そんなことをしたくなる(しなきゃならない)時点でもう詰んでる。 クラスの切り分け方が根本的に不適切だからそうなる。
71 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 13:13:24.70 ID:UidqiOp4.net] だよな。どうしたらそんな糞設計ができるのか。
72 名前:65 mailto:sage [2015/10/07(水) 16:22:14.39 ID:lr4jJmHi.net] >>66 そういうことを言ってるんだが >>61 は疎結合になってるからOK
73 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 16:36:06.20 ID:dQPZGG2o.net] >>70 AがBに依存していないと偽装するという目的のためだけにインターフェイスIBを作ってBにかぶせても AがBに依存している実態は何も変わらない。 そんなのただの欺瞞だ。 自分の欺瞞に自分で気づいてないなら自己欺瞞だな。
74 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 16:49:51.50 ID:9sdQQKJG.net] はいはい 働けクソニート
75 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 18:25:15.82 ID:wgVSxFSa.net] 二つのクラスで相互参照があったら 間でやり取りするようなクラス追加したほうがいいってこと?
76 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 19:23:58.21 ID:F4sBdgXs.net] そんな時、wpfの基本技術であるINotifyPropertyChangedを、普通のクラスから利用したりすると便利 上位のクラスはProperyChangedイベントを監視するだけでいいし、下のクラスはPrism使うだけ
77 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 19:55:05.52 ID:HxdUxcN3.net] >>71 テスト時にダミーに差し替えるためだけの形式的なインターフェイスは普通に使われてるパターンだよ 嘘だと思うならVSのコードを逆コンパイルしてみたらいい
78 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 21:41:26.09 ID:sdI3RqNo.net] 下のようなデータがあり、BIDをgroupByして 2015年1月のnumの合計を出したいのですが、 どのように書けば可能でしょうか? public class TDATA { public string BID { get; set; } public DateTime day { get; set; } public int num { get; set; } } static void Main(string[] args) { var hoge = new List<TDATA>(); hoge.Add(new TDATA() { BID = "A001", day = Convert.ToDateTime("2015/1/1"), num = 1 }); hoge.Add(new TDATA() { BID = "A002", day = Convert.ToDateTime("2015/1/20"), num = 2 }); hoge.Add(new TDATA() { BID = "A001", day = Convert.ToDateTime("2015/2/11"), num = 1 }); } LINQを調べてみたのですが、条件が複数あると、 なかなか理解できず、よろしくお願いします。
79 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 21:58:51.87 ID:T1RoiOzF.net] var groups = from x in hoge where x.day.Year == 2015 && x.Month == 1 group x by x.BID into g; foreach (var g in groups) { Console.WriteLine(“BID={0}, Sum={1}”, g.Key, g.Sum(x => x.num)); }
80 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 21:59:22.05 ID:T1RoiOzF.net] >>77 訂正 into g は不要
81 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 21:59:54.31 ID:7k7eABWe.net] var sum = hoge.Where( tdata => tdata.Year == 2015 && tdata.Month == 1 ).Sum( tdata => tdata.num );
82 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 22:01:55.66 ID:7k7eABWe.net] 修正 var sum = hoge.Where( tdata => tdata.day.Year == 2015 && tdata.day.Month == 1 ).Sum( tdata => tdata.num );
83 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 22:06:02.97 ID:T1RoiOzF.net] >>79-80 それだとBIDでグループ化されてないよ メソッド形式でSumまで一行で書くならこう var sums = hoge.Where(tdata => 略) .GroupBy(tdata => tdata.BID) .Select(g => new { BID = g.Key, Sum = g.Sum(tdata => tdata.num) });
84 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 22:45:02.75 ID:NHKi3h4o.net] すいませんC#というか設計についてなのですが モデルというのはどのように考えればよろしいでしょうか クローラーを作ろうとしていて、新着一覧のページを定期的にチェックしていて 新着一覧のページには投稿者のIDの一覧があります。 投稿者のIDから投稿者の詳細は別のページで参照する必要があるので、投稿者のIDをキーにしてローカルに保存しようと思うのですが この時投稿者のモデルはIDだけで作るべきなのでしょうか、それともIDとその他名前等の情報を混ぜて作るべきでしょうか。 IDだけで作ると、投稿者という同じデータなのにIDだけのモデルと、名前等全ての情報があるフルデータのモデルの二種類が出来てしまいます。 名前等全ての情報でモデルを作ると、IDしか分からない段階では名前等のプロパティが空 (null?)になってしまいます。 後者の方が個人的にはいいかなと思うのですが、モデルという物に対して、このモデルはIDしか入っていない あっちのモデルは名前とか全部入っている。だから処理を分ける必要が・・・ というのは許されるのでしょうか
85 名前:76 mailto:sage [2015/10/07(水) 22:53:54.57 ID:sdI3RqNo.net] 色々とお答え頂きありがとうございます。 やはり、LINQを使えば短いコードで 実現出来るのですね。 LINQの理解が低いので、 参考にさせて頂きます。
86 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:09:28.07 ID:1Tzy0x1l.net] >>82 わざわざ分ける必要は無いと思う。 とりあえず、IDから名前等々、全部定義したクラスを定義しておけばいい。 データ(オブジェクト)の状態をチェックするプロパティを持たせておいて、取得済みかどうか判定できるようにしておけばいいし、 取得できてない名前とかは、適当に空文字なり返すようにしておけばいい。
87 名前:デフォルトの名無しさん [2015/10/07(水) 23:09:28.12 ID:K9vCPUNu.net] linqを使うと思考が衰えるから自力で組んだ方がいいぞ。 linq使いはツール使うことばっか覚えて地頭がクソなやつばっかだからな。
88 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:19:26.43 ID:zlFawCtp.net] などと中卒が申してます
89 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:41:59.93 ID:T1RoiOzF.net] >>82 そもそも、IDしかわからない中途半端な投稿者オブジェクトを 新着一覧クラスの外に晒す必要があるのかよく考えたほうがいいよ。 新着一覧クラスが投稿者ID文字列のコレクションを公開するのが嫌なら 新着一覧クラス自身に投稿者詳細をダウンロードしてくるメソッドを持たせたっていい。 もちろん賛否両論あるだろうけど、オブジェクト指向に拘るのであれば オブジェクトから情報を取り出すのはなるべく避けて、オブジェクトに命令していくようにするのが基本。
90 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:54:33.19 ID:ac/t6J3k.net] >>82 許されるというか基本中の基本 すべてを1つのモデルに詰め込もうとするともれなく巨大な神クラスが出来上がるぞ 文脈に合った適度な粒度のモデルを必要な数だけ作るんだよ まずはとりあえず取得と更新を分離しろ
91 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 00:27:57.95 ID:edkXggJo.net] >>82 var page=await NicoUtil.DownloadPageAsync(url); page.UserIds.Add(userId); var user=GetProfile(page.UserIds[0]); user.Id=3945887; user.IsNicoNamaNushi=false; user.Description=""; UserDB.Add(user);
92 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 00:51:12.57 ID:7dJhmaB1.net] >>82 IDだけだったらそれはIDでしかないじゃんw 煽り抜きで愚問だね。
93 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 02:10:27.33 ID:n5xoJkAg.net] よくわからないんだけど、Nameが空なのが嫌なら投稿者クラスを作るときに情報を取得すればいいんじゃないの?
94 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 21:32:59.63 ID:9yien46K.net] C#でinnerHTMLのような各種の<タグ>を含んだHTMLの文字列から タグを除去してテキスト
95 名前:セけを取り出す簡単な方法ありますか? [] [ここ壊れてます]
96 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 22:05:59.40 ID:O6ws46yp.net] 正規表現でやりなよ
97 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 22:22:34.18 ID:9yien46K.net] >>93 例えば <label>文字の中に<タグもどき>が有る場合が難しそう</label> なので、正規表現以外で良い方法有りませんか?
98 名前:デフォルトの名無しさん [2015/10/08(木) 22:51:05.62 ID:vx3KIWo3.net] xmlのライブラリ使えるんじゃないの
99 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 23:35:33.54 ID:Xn3MaZ8G.net] HtmlAgilityPack使え
100 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 00:15:53.61 ID:oggkbSfr.net] >>96 難しいですか?
101 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 05:03:09.47 ID:DnhlxVQi.net] >>97 ぐぐれよ www.atmarkit.co.jp/ait/articles/1501/27/news140.html
102 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 10:27:53.18 ID:oggkbSfr.net] 難しそうなので諦めました
103 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 11:13:26.38 ID:oOXSiJnl.net] なんだ釣りかよ こんなところで釣りをするな 死ね
104 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 13:55:22.44 ID:PcQrHOFV.net] ドラッグしながら四角形を描画したいのですが Rectangleだと始点より右下にしかドラッグ出来ません 全方向にドラッグ出来るようにしたいのですがどうすればいいのでしょうか? ちなみに今のコードは g.DrawRectangle(Pens.Black, startPt.X, startPt.Y, endPt.X - startPt.X, endPt.Y - startPt.Y); で startPtはMouseDown時 endPtはMouseMove時のマウスポインタの座標です
105 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 14:02:04.52 ID:xPCYj4vK.net] (x,y,w,h)=(min(sx,ex),min(sy,ey),max(sx,ex)-min(sx,ex),max(sy,ey)-min(sy,ey))
106 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 14:26:32.90 ID:S6gJKsnz.net] ifたくさん書けばいい
107 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 14:43:16.81 ID:PcQrHOFV.net] >>102 出来ましたスパルタ先生! まだ初心者なのでminとmaxが何か分からなかったんですがMathクラスだったんですね ありがとうございました!
108 名前:デフォルトの名無しさん [2015/10/11(日) 17:20:59.98 ID:ZCWGzTkV.net] xamlでDataContextを入れ替えた時に、そのDataContextのプロパティとバインドされているコントロールの表示が更新される条件はなんでしょうか 依存関係プロパティにすれば変わるのはわかっているのですが、煩雑なのでできれば避けたいと思っています 通常のCLRオブジェクトでは変わらず INotifyPropertyChangedだと、オブジェクトそのものを入れ替えてしまうと変更を通知するタイミングがなくてうまくいかないような気がします うまい方法はないでしょうか
109 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 18:39:25.15 ID:o6WYp8Zd.net] まず実際に試してみれば?
110 名前:デフォルトの名無しさん [2015/10/11(日) 19:03:36.29 ID:ZCWGzTkV.net] INotifyPropertyChangedを実装したオブジェクトをただDataContextに入れてみましたが出来ませんでした プロパティの値が変わってないのでどう通知すればいいのかもわからないのですけれども
111 名前:デフォルトの名無しさん [2015/10/11(日) 19:52:52.41 ID:ZCWGzTkV.net] すみません勘違いしていました ただのCLRオブジェクトを入れればきちんと反映されました 自作クラスをDependencyPropertyにしてUserControlとバインドさせて その自作クラスで普通のCLRオブジェクトのプロパティをUserControlの中にあるコントロールとバインドさせたら 入れ替えても反映しなかったということのようです
112 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 19:55:53.79 ID:KbfkRHMw.net] List<T> array; が有った時に、 array.Find(x => ... array.Where(x => ... などをやる場合に、探索を開始するindexを指定するようなことは出来ませんか? 100番目以降の要素から探索するなど。
113 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 19:58:48.31 ID:EnuaFgoc.net] >>109 Skip(99)
114 名前:デフォルトの名無しさん [2015/10/11(日) 20:02:59.11 ID:ZCWGzTkV.net] ideone.com/wQHi11 説明できた気がしないので一応テストコードの一部を貼っておきます DependencyPropertyをやめてただのCLRオブジェクト
115 名前:ノすると反映されるようになります [] [ここ壊れてます]
116 名前:デフォルトの名無しさん [2015/10/11(日) 20:08:39.48 ID:ZCWGzTkV.net] ああわかりました PropertyMetadataの初期値はstaticなので使いまわされるんですね お騒がせしました
117 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 20:40:49.95 ID:ijISB/Tc.net] 初心者すぎてぶちころされそうな質問してもいいですか?
118 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 21:24:46.54 ID:lDigt0qz.net] かもん
119 名前:デフォルトの名無しさん [2015/10/11(日) 21:29:23.08 ID:ijISB/Tc.net] // xmlファイルを取得 XElement document = XElement.Load("sample.xml"); // ゲーム中のユニット情報をXMLの各要素へ書き込み var query = (from p in document.Elements("Status") select ★ query.Attribute("UnitID").Value = gameManager.unitStateList[i].unitID.ToString();
120 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 21:32:27.27 ID:ijISB/Tc.net] XElement document = XElement.Load("sample.xml"); var query = (from p in document.Elements("Status") select ★ query★ すみません途中書き込みしてしまいました しかもsageませんでしたすみません LinkToXMLでXML操作を書きたいです 「Status要素内」の「ID」の値を「更新」したい、というのがやりたい事ですが ★の部分はどう書けばいいでしょうか?
121 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 21:35:12.30 ID:ijISB/Tc.net] 連投すみません、間違えました やりたい事はStatus要素内にある「全ての」要素について任意の値で更新を行いたい というものです 多分、一つしか要素がなく、それを更新するのであればFirst()で取って Attribute(要素名).Valueで更新できると思うのですが、全ての要素の場合はどう書けばいいのかが分かりません
122 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 21:57:00.89 ID:lDigt0qz.net] foreach( var status in document.Elements("Status") ) { status.ID = ... status.Hoge = ... }
123 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 22:30:24.51 ID:o6WYp8Zd.net] 全く些末なことだがElementsじゃなくてDescendantsじゃないかな
124 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 23:23:06.77 ID:ijISB/Tc.net] >>118 ありがとうございます。 参考にしてやりたい事自体はできました。 XElement document = XElement.Load("sample.xml"); IEnumerable<XElement> de = from el in document.Descendants("Status") select el; foreach (XElement xmlDocument in de) { xmlDocument.Element("id").Value = sStar.id.ToString(); xmlDocument.Element("name").Value = sStar.name.ToString(); xmlDocument.Element("class").Value = sStar.class.ToString(); xmlDocument.Element("setting").Value = sStar.seting.ToString(); } document.Save("sample.xml"); ただ正直、全然理解できていませんが(何でforeach内のこの処理がdocumentに反映するの?とか)
125 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 23:37:17.15 ID:o6WYp8Zd.net] 突き詰めれば class Hoge { public string Value { get; set; } } foreach (Hoge hoge in list) { hoge.Value = ...; } なんだからlistに含まれる各hogeのValue値が更新されるのは当然 XElement型のxmlDocumentとかやめてくれよ…
126 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 23:41:50.91 ID:ijISB/Tc.net] >>121 あーなるほど、意味が分かりました >XElement型のxmlDocumentとかやめてくれよ… ちなみにこれはなぜでしょうか?
127 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 23:52:55.34 ID:o6WYp8Zd.net] XMLの文脈ではdocumentは要素=elementとは違う意味を持ってる XDocumentやXmlDocument型が存在する
128 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 23:59:38.42 ID:ijISB/Tc.net] >>123 なるほど、言われてみれば確かに 何度もありがとうございました
129 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 07:16:36.14 ID:oCa7NkmO.net] >>110 ありがとうございました。 array.Skip(99) .Find(x => ... とやると、100番目以降の要素の部分配列が作成されるのは分かったのですが、 その分、処理が遅くなるなどの心配は有りませんか?