1 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/26(木) 21:32:32.95 ID:RzRn9VkL0] ふらっとVisual C#,C♯,C#(初心者用) このスレッドは 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 関連スレ ふらっとC#,C♯,C#(初心者用) Part91 toro.2ch.net/test/read.cgi/tech/1335089085/ C#, C♯, C#相談室 Part71 toro.2ch.net/test/read.cgi/tech/1332575004/ こんな感じでソフトウェア板に立てたらどうかな
256 名前:名無しさん@お腹いっぱい。 [2012/05/27(日) 10:08:42.69 ID:clOyRCuk0] その前に最初の計算式二つは結果が等価じゃねーだろw
257 名前:名無しさん@お腹いっぱい。 [2012/05/27(日) 10:45:25.60 ID:clOyRCuk0] ちょこっとコード書いてて気になったんだが最後のパターンがなんか納得いかない結果になる ideone.com/t4Tro
258 名前:名無しさん@お腹いっぱい。 [2012/05/27(日) 10:48:20.87 ID:clOyRCuk0] あ、すまんこれで納得いく結果になった ideone.com/FW5ED
259 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/27(日) 11:12:54.46 ID:clOyRCuk0] シフト演算使ったほうが早いね ideone.com/o1mSO
260 名前:250 mailto:sage [2012/05/27(日) 14:31:19.39 ID:j8A7jdt/0] みなさんレスありがとうございます ケースバイケースなんですね /や%を2回程度余分に使うより、if&++;の方が早いとのだと思っておきます 盲目的にifはできる限り減らした方がいいと思い込んでました・・・ シフト演算を使うという発想はありませんでした というより、普段使ってないので、コードの意味がわかってないので、コードを参考に勉強してきます
261 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/27(日) 16:43:36.10 ID:GiQAzp3Q0] switch(r % 4) にすると?
262 名前:名無しさん@お腹いっぱい。 [2012/05/29(火) 14:07:21.53 ID:/PVv+z9w0] WPFアプリとKinectアプリ間で文字列の送受信を行いたいのですがどうすればよいのでしょうか? Process.Start("Kinectアプリ名.exe");でKinectアプリをWPFアプリ側から起動した後、文字列の通信を行いたいと思っています。 IPCを用いたプロセス間通信を行えばよいのでしょうか? 知っている方がおられましたらご教授をお願いいたします。
263 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/29(火) 16:37:54.74 ID:2RvCxbWa0] このスレで質問することではないかもしれないのですが どこで聞いていいのかわからないので質問します>< DirectShow.Netでフィルターの設定をしたいのですがどのように して設定してあげればよいのかわかりませんorz 解説サイトも動画・静止画のキャプチャの仕方位までしか掲載 されていません。ざっくり、このメソッドを使えば程度でかまいませんので よろしくお願いします。
264 名前:名無しさん@お腹いっぱい。 [2012/05/30(水) 05:04:06.91 ID:AggJDhf10] >>262 そんなマニアックな状況、やってみなきゃわからんのだから IPCでまずはやってみなよ。
265 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/30(水) 21:18:00.04 ID:M2GA61XI0] c#でトランプの数当てゲームを作りたいのですが、ホームアプリケーションでいいなでしょうか?
266 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/30(水) 21:52:42.67 ID:QkV5fjWR0] いいな いいな にんげんて いいな
267 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/30(水) 21:55:54.36 ID:to+QgKiM0] 初心者ならコンソールアプリケーションでゲームの中身だけ作ってGUI(Form)つけるのおすすめ
268 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/30(水) 22:15:53.58 ID:5ZOuXXtf0] Formでいいんじゃね ゲーム作りたいならUnityとかゲームエンジンとか使った方がいいと思うが、自力で数当てゲームくらい作れた方がいいかもね
269 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/30(水) 22:49:56.75 ID:zW0msQ/R0] >>265 これを見れば作れる www.nicovideo.jp/watch/sm13022762
270 名前:名無しさん@お腹いっぱい。 [2012/05/31(木) 02:21:11.40 ID:rXSZyiw00] >>264 レスどうもありがとうございます、とりあえずもう少し試行錯誤してみますね!
271 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/31(木) 09:25:01.60 ID:WULY2UZX0] てst
272 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/31(木) 15:01:27.70 ID:VYK3XZ290] なんで難しい質問ばっかなのこっちは
273 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/31(木) 15:17:39.08 ID:jGAKMQam0] 本スレだからな
274 名前:名無しさん@お腹いっぱい。 [2012/05/31(木) 15:52:12.18 ID:unpCDp6t0] 難しいというか、シチュエーションが限定的な質問が来るね。 まああっちで聞いても、本筋と関係ないところで喧嘩おっぱじまるからだろう。
275 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/01(金) 00:01:35.63 ID:p1bYUXat0] IDは偉大、変な自演がないだけでも捗るな
276 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/01(金) 18:51:36.27 ID:tSECQl9H0] シチュエーションが限定的なのはしょうがないんじゃないかな 普遍的な問題は大抵ググればなんとかなるだろうし >>216 の質問をしたのは俺だけど ググっても同じ問題にはまっている人が見つからないのは本当に困る・・・
277 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/02(土) 08:13:25.59 ID:8F3osLeN0] てst
278 名前:名無しさん@お腹いっぱい。 [2012/06/03(日) 23:02:26.26 ID:9cE78MGH0] C#でDirectxを使おうとしたら、遅延通知が出たのですがどうすればいいですか?
279 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/04(月) 01:15:23.77 ID:dVdSCbBH0] 遅延通知って何?
280 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/04(月) 06:00:16.63 ID:MKF8PCbd0] この言語のリファレンスマニュアルって糞見づらいMSDNしかないの?
281 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/04(月) 08:46:10.03 ID:SO+LzFoe0] さらに見づらい上に古いPDFであればありますよ あなたがC#のリファレンスと.NETのリファレンスを混同していないことが前提ですが…
282 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/04(月) 11:06:38.28 ID:tdHet/L00] てst
283 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/04(月) 15:07:32.53 ID:eBbL6cVl0] MSDNから必要な情報を見つけ出して、珍妙な自動翻訳に動じず英語版見に行くようになったら一人前。
284 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/04(月) 20:30:54.41 ID:amclDH490] .netの翻訳は人間がやってるらしいぞ
285 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/05(火) 23:42:14.54 ID:0HX/yiCx0] デリゲートがよく分からないのでJavaScriptで例えて説明してください
286 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/06(水) 00:07:44.80 ID:E/iZIMwt0] 関数オブジェクトのようなもの
287 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/06(水) 02:20:14.29 ID:8bMay9C00] >>285 jaba.johnson.co.jp/
288 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/06(水) 02:26:05.25 ID:E/iZIMwt0] >>287 それはJavaだ。 JavaScriptと一緒にすんなw
289 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/06(水) 06:44:05.39 ID:Wke9K+FZ0] >>287 ×Java ○Jaba JavaScriptは使ってるようだが
290 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/06(水) 11:43:22.64 ID:T2vSLGVJ0] てst
291 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/08(金) 00:17:06.02 ID:SjP/JzaM0] てnd
292 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/08(金) 21:26:45.75 ID:H4JMKmsI0] カスタムコントロールの中のComboBox(Bとする)の.Itemsに他のクラスからアクセスしたいと思っています 当該Itemsに別データの配列を突っ込みたいので、カスタムコントロールのプロパティにしようかと思ったら、setの記載で読み取り専用だからできねーよカスと怒られます なにかよい方法はないでしょうか? public ComboBox.ObjectCollection B_.Items { set { B..Items = value; } get { return B..Items; } }
293 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/08(金) 21:33:08.47 ID:KTgDzfcK0] >>292 ComboBox.DataSourceプロパティ
294 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/08(金) 22:43:38.32 ID:H4JMKmsI0] 下記で期待する動きになりました ありがとうございました getもDataSourceにせんでいいのかな?と迷いましたが、デザイナー上の入力を考えるとこっちの方がベターぽいのでこれで行きます public object B_.Items { set { B.DataSource = value; } get { return B.Items; } }
295 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/08(金) 23:36:24.17 ID:1FPwfIgl0] てst
296 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/09(土) 22:24:13.82 ID:/l9t5PUy0] Visual Studio Express 2012 for Windows Desktop blogs.msdn.com/b/visualstudio/archive/2012/06/08/visual-studio-express-2012-for-windows-desktop.aspx
297 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/09(土) 22:39:56.78 ID:km1yHHW40] そりゃまあ、普通に考えたら出ないとおかしいよね
298 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/09(土) 22:41:49.99 ID:/l9t5PUy0] だってVC++あるしなあ
299 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/09(土) 23:50:34.37 ID:8fI3WDv10] Formは入ってるの?
300 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 13:44:32.26 ID:JcRdqHi90] C#どころかプログラミング始めたての初心者で申し訳ないのですが質問させてください。 if (A != B) { return; } do(); と if (A == B) { do(); } では同じ処理になると思うのですが、どちらを用いるのが一般的なんでしょうか
301 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 13:56:41.08 ID:+ns6eJGu0] 前者はガード句と呼ばれる書き方で、主にifのネストが深くなった時に使う ifが1段しかないのなら後者
302 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 13:58:07.44 ID:t7lhSWC+0] しっくり来る方でいいでしょ
303 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 14:04:31.24 ID:+ns6eJGu0] しっくりこないんですぅ
304 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 14:36:26.02 ID:JcRdqHi90] >>301 >>302 レスありがとうございました。参考にさせてもらいます
305 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 14:41:36.15 ID:JcRdqHi90] 重ねて質問すみません txtBox1.Clear(); txtBox2.Clear(); txtBox3.Clear(); これを繰り返し構造でスマートに書きたいのですが、変数等を用いれば可能でしょうか
306 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 14:43:50.00 ID:t7lhSWC+0] var array = new[]{ tb1, tb2, tb3 }; foreach(var tb in array){ tb.Clear(); } とかかな
307 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 14:45:11.20 ID:+ns6eJGu0] FormコンストラクタのInitializeComponent()の後ろで配列にでも入れておけ foreachで繰り返せる
308 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 14:59:08.22 ID:JcRdqHi90] なるほど!同じ型の配列に入れておけば良かったんですね ありがとうございます
309 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 21:05:08.87 ID:RMEDkwv20] 製品版のVisualStudioってメンバー変数のプリフィックスに_とかつけられます?
310 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 21:45:47.86 ID:+ns6eJGu0] むしろなぜ付けられないと思うの?
311 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 22:10:12.18 ID:RMEDkwv20] Expressでできないからですね Formのコントロール変数に自動で_をつけてくれたら便利だと思いまして
312 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 22:15:58.50 ID:+ns6eJGu0] 全然意味合いが違うじゃねえか 質問を略すな Pro版でもできません
313 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 22:19:28.22 ID:MHePrPj+0] 自動でってところがミソか
314 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 23:40:57.57 ID:RMEDkwv20] ありがとうございます。やっぱり無理でしたか・・・
315 名前:名無しさん@お腹いっぱい。 [2012/06/14(木) 07:03:26.20 ID:98NsRCek0] Formを継承したクラスがいくつかIDisposableなオブジェクトを持っていて、それらをDisposeしなければいけない場合 どこに書いたらいいんでしょうか。 Form1.Designer.csの方にFormのオーバーライドされたDisposeメソッドがありますが、 そこに追加しちゃってもいいのでしょうか。(デザイナの方に影響与えたりしません?) それともDisposedイベントでやるべきなんでしょうか。
316 名前:名無しさん@お腹いっぱい。 [2012/06/14(木) 07:36:22.23 ID:A0uxVl2o0] 1. そもそもインスタンススコープで扱うべきか考える 実はメソッド単位で扱えるものなんじゃないの?という回帰。 2. コンポーネント化することもちと考える。 Formと同じ寿命のDisposableなオブジェクトがあるってことは、 Formにロジックを詰め込みすぎてないか? ロジックを然るべきレイヤに分けて、コンポーネント化しちゃえばいんじゃね?という発想。 3. Disposeしたいというのなら .Designer.csのオーバーライドされたDisposeメソッドに書いちゃって大丈夫。
317 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 08:37:45.34 ID:SlYrQktU0] 前から思ってたけどcomponentsフィールドっていつ使われるんだろ あれに追加されたらFormが破棄されるとき一緒にDisposeしてくれるよね
318 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 09:19:19.33 ID:98NsRCek0] >>316 ども 3でいかさせて頂きます たとえばフォントオブジェクトをフォーム上のボタン等に個別に適用した場合 明示的にDisposeさせるよい方法がないので困っていました フォーム閉じて参照が切れればいつかGCされるさ、とか アプリケーションが終了した時点で解放されるからいいやん、とか それだけでなんともならないシナリオもあるのに、と……
319 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 10:01:27.49 ID:oUOmZZHy0] 初心者なのでこちらで質問させてもらいます。 Aというクラスを継承してBというクラスを作成したのですが、Aの中の一部のフィールドやメソッドを継承したくない場合、Bの中でどうのような記述をすれば簡単に実現できるでしょうか? 目的は単にBのインテリセンスにそのメソッドなりを表示させたくないだけなのですが。 よろしくお願いします。
320 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 10:07:06.46 ID:SlYrQktU0] >>319 Aの該当メンバーをprivate指定する Bのほうから継承しないという指定はできない C++ならできるけど煩雑すぎてC#には採用されなかった
321 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 10:10:46.97 ID:WOJH/6WO0] private new ベースクラスのメソッド名(引数も合わせる ...){} これで一応できるけどキャストしたらベースクラスのは呼び出せるわね
322 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 10:48:44.80 ID:SlYrQktU0] newの使い道がよくわからないんだけど、virtual指定されてないメソッドをオーラーライドしたいときでいいの?
323 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 11:08:28.11 ID:WOJH/6WO0] オーバーライドするとベースクラスにキャストした時もオーバーライドしたメソッドが呼び出せる つまりベースクラスのメソッドを上書きできる newの場合はベースクラスにキャストするとベースクラスのメソッドが呼び出される 上書きしたわけじゃなくて同じ名前のメソッドが定義されたので 前のが呼びだせなくなったという感じ
324 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 12:25:35.45 ID:+pekMVIj0] abstract オーバーライドしろ virtual オーバーライドしてもいいよ 未指定 できなくは無いがnew付けろよ。
325 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 13:20:39.57 ID:SlYrQktU0] >>323 ,324 ありがとう。つまりポリモーフィズムとはまったく関係ない機能なのか どんな用途で使うんだろ・・・
326 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/20(水) 23:24:01.56 ID:W/4WFKKT0] >>325 一番は、後から基底クラスに派生クラスのメンバと被るメンバが追加されたときに 意図せずオーバーライドしてしまうのを防ぐため その意味では別にnewは無くてoverrideだけでいいんだが、overrideの付け忘れなのか わざとやってるのか区別するためなんだろう
327 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 12:27:26.65 ID:K9S0VvT90] visual c#で、ボタンを押すとテキストボックスに入力した英文(長文)をもう一つのテキストボックスに文を並べ替えた状態で出力するアプリを作ろうとしています。 文を並べかえるというのは、単語の並べ替えではなく、複数の文の1文1文を1つと見て、それらの文を並べ替えるという意味です。 考えているアルゴリズムとしては、入力文を初めから一文字ずつ読み取っていき、ピリオドが出た瞬間に初めからその部分の文字列を 文字列1 に代入。 続いてその次の位置からまた一文字ずつ読み取っていき、ピリオドが出た瞬間に、その部分を 文字列2 に代入・・・と繰り返し、最終的にn個の文字列をランダムに並べ替えたものを出力する、というふうに考えています。 C#で作る場合このような流れで作るのがよろしいでしょうか?その場合どのような文字列操作関数を使用していけばいいのでしょうか。 また、他により効率的な方法があればご教示お願いします。
328 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 12:36:01.13 ID:tG9UJEis0] ピリオドでスプリットすれば一発
329 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 12:45:20.29 ID:K9S0VvT90] >>328 なるほど、splitメソッドというのを使えばいいのですね。 この場合、Mr.などの単語が1つだけの文が生成されないようにするには 具体的にどう条件を追加すればよろしいでしょうか? (Mr. Tanaka is Japanese. を1つとしたい場合等)
330 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 12:50:03.71 ID:tG9UJEis0] Mr.の場合はjoinすればいい
331 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 13:30:59.90 ID:XTsjM3La0] var sentences = text.Split("."); var list = new List<StringBuilder>(); list.Add(new StringBuilder()); foreach(var sentence in sentences) { list.Last().Append(sentence + "."); if(IsOneWord(sentence) == false){ list.Add(new StringBuilder()); } } return Sort(list); こんなかんじ?
332 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 13:39:41.01 ID:K9S0VvT90] >>330-331 ありがとうございました 参考にして作ってみます!
333 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 13:46:05.56 ID:mk4m3Qvr0] WPFでListboxを2つ配置して、ItemsSourceを同一のコレクションに設定した時の挙動についてなんですが コードでこのようにしたとき public partial class MainWindow : Window { ObservableCollection<Object> obj = new ObservableCollection<Object>(); public MainWindow() { InitializeComponent(); for (int i = 0; i < 50; i++) { obj.Add(CreateRectangle()); obj.Add(i.ToString()+"s String"); } listBox1.ItemsSource = obj; listBox2.ItemsSource = obj; } Rectangle CreateRectangle() { Rectangle r = new Rectangle(); r.Width = 20;r.Height = 20;r.Stroke = Brushes.Black; return r; } } 片方のListboxに表示されているRectangleはもう片方のListboxの表示からは取り除かれてしまいます stringについては両方同時に表示されますし、片方のDisplaymenberPathをNameなりHeightなりに設定した場合も同時に表示されます このWPFの図形の表示の仕組みについて解説お願いします
334 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 13:53:56.22 ID:/1f0rY470] UIElementがデータソースになった場合、 それは直接ItemsControlの子孫要素になる UIElementは一つの親にしか属せない 普通はRectangleはDataTemplateにして ItemsSourceにバインドするのはその構成要素だけ持つクラスにする
335 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 19:56:05.31 ID:C/I3uX5s0] XmlSerializerを使ってデータを一時的に保存したいと思っています. 今作っているクラスはUserとEventListとEventの三つになり,こんな感じに他にデータも含みます. User -string name -EventList --Event ---int x,yなど 保存したいのはUserクラスで,List<Event>を含んでいたので, handcraft.blogsite.org/ComponentGeek/ShowArticle/60.aspx を参考に,IXmlSerializableを実装してリストを保存するだけのクラスEventListを作りました. そしてEventやEventList単体のシリアライズ化には成功しました. ですがUserクラスのシリアライズが上手く行きません… Userクラスはこうなっています public class User { public EventList event_list; public string name; public User() { } }
336 名前:335 mailto:sage [2012/06/21(木) 19:57:19.59 ID:C/I3uX5s0] シリアライズのコードはこうなっています. XmlSerializer serializer = new XmlSerializer(typeof(User)); using (FileStream fs = new FileStream(@"C:\test.xml", FileMode.Create)) { serializer.Serialize(fs, user);} 実行すると $exception {"There was an error reflecting type 'mtest.User'."} System.Exception {System.InvalidOperationException} というエラーがXmlSerializer作成時に出ます. event_listをコメントアウトすると上手く行くのですが,クラスの中に自作クラスを持つ場合は別の処理方法があるのでしょうか? よろしければ解決方法などを教えて頂けると幸いです.
337 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 22:40:14.42 ID:XTsjM3La0] >>336 別に普通にやればいいだけなはずだけどなあ Listも変なことしなくてもそのままSerialize出来ると思うけど publicなゲッターセッターと引数なしのコンストラクタを持っていること コレクションの場合はAdd(T item)を持っていること といった感じだったと思う
338 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/22(金) 00:18:49.52 ID:D9lptrmf0] 駄目なのはList<T>[]であってList<T>じゃないよ?
339 名前:335 mailto:sage [2012/06/22(金) 22:10:59.58 ID:bY8JRY9Z0] >>337 >>338 おうふ…勘違いしてました,Listのシリアライズは問題無いのですね. いまやったところ単体で普通にできました. またUserごとシリアライズしようとしたときのエラーですが,そちらも解決しました. 行数が多すぎて怒られた&そんなに関係ないだろうと思って消していたのですが実際はXmlAttributeをつけていて Userクラスはこうなっています public class User { [XmlAttribute("user_event_list")] public List<Event> event_list; [XmlAttribute("name")] public string name; public User() { } } これでエラーが出たのでEventListクラスを作ったのですが,どうやら問題はXmlAttributeにあったらしく, event_listの直前のものを消したら問題無く動きました. 皆さんどうもありがとうございます,とても助かりました.
340 名前:333 mailto:sage [2012/06/22(金) 22:51:30.84 ID:VRm8BDOa0] >>334 解説ありがとうございます 表示されない理由はばっちり腑に落ちました > 普通はRectangleはDataTemplateにして > ItemsSourceにバインドするのはその構成要素だけ持つクラスにする よければ、ここについてもう少し教えてください いま、Rectangle型のmyShape をメンバにもつクラス c1 を設定し、これのコレクションをListboxのソースとしたとき <DataTemplate x:Key="myTemplate"> <StackPanel> <Rectangle Height="{Binding Path=myShape.Height}" Width="{Binding Path=myShape.Width}" Stroke="{Binding Path=myShape.Stroke}"/> </StackPanel> </DataTemplate> とし、Listboxのテンプレートとして適用すれば、全ての項で長方形は同時に表示することができました ここでmyShapeの型をRectangleと限定せず、flameworkElementなどにして、 c1のインスタンスにはEllipceやその他のShapeを自由に入れられるようにし、それらを表示することは可能でしょうか
341 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/23(土) 16:57:23.81 ID:4W1+go0K0] int型配列a(要素数100)から等確率でランダムに10個の要素を選んで選んだ順に 配列b(要素数10)に代入するというプログラムを作りたいのですが、 自分が考えたのはひたすら100個のなかから1個ずつランダムで選んでいき、 前選んだ要素とかぶった場合はやり直し(棄却) という感じで作ったのですが、 選んでいくにつれて棄却する回数が多くなってしまい、時間がかかってしまいます。 この場合どのようなアルゴリズムで作るのが効率がいいのでしょうか?
342 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/23(土) 16:59:23.81 ID:VvicIvbe0] 配列からランダムに一個選ぶ 選んだのを末尾のと交換する 個数を一個減らしてランダムに選ぶ・・・
343 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/23(土) 16:59:57.81 ID:F1v3/Dpc0] 配列じゃなくて動的配列(List)を使えば、使用した要素を捨てられる どうしても配列でやりたいなら被ったら上か下を選ぶって処理を入れる
344 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/23(土) 17:37:18.45 ID:8zHjbdI20] いわゆる重複しない乱数と同じ考え方だからググれば腐るほどでてくる
345 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/24(日) 15:54:12.67 ID:5cM7Ezza0] 配列内の要素をシャッフルして先頭から10要素取り出せば?
346 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/25(月) 01:06:49.19 ID:2vZfjApk0] >>345 それだとM個からN個を取り出すときO(M)になるから非効率
347 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/25(月) 01:49:47.37 ID:QcDMISKM0] >>346 そうか。 要素数100程度みたいだからそんなんでいいかな、と勝手に思ったんだ。 そこまで考えてなかったよ。
348 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/26(火) 09:46:52.99 ID:/TbFwKc10] >>340 データソース側にUIElementは使うもんじゃないってば DataTemplateのTargetTypeでデータソースの型によって適用するDataTemplate切り替えたりする <ListBox ItemsSource="{Binding ...}"> <ListBox.Resources> <DataTemplate DataType="{x:Type my:RectanglePattern}"> <Rectangle Width="{Binding ...}" Height="{Binding ...}" Stroke="{Binding ...}"/> </DataTemplate> <DataTemplate DataType="{x:Type my:EllipsePattern}"> <Ellipse Width="{Binding ...}" Height="{Binding ...}" Stroke="{Binding ...}"/> </DataTemplate> </ListBox.Resources> </ListBox> あるいはデータソースをGeometry(を持ったクラス)にしちゃって DataTemplateはImage/DrawingImage/GeometryDrawingでやるとか
349 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/26(火) 16:08:21.13 ID:yCJdNuh10] XAMLグロいなー 誰が考えたんだコレ
350 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/26(火) 18:21:10.14 ID:q2NBJkUf0] XML自体人が読み書きすることは重視してないからねー 構造的であることは人間にも利点があるが 人間にとってはせいぜい段組がしてあれば十分だ こんなガチガチな仕様にしたのはコンピューターに合わせたからで そのフォーマットの拡張系なんだから、よりコンピューターしか理解できないようになっていくのは当然だな 俺の好きなフレームワークにも …and one more thing: Making humans edit XML is sadistic! と書いてある
351 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/26(火) 19:17:05.04 ID:00qqaFC30] デリゲートって、クロージャみたいに親のメソッドで扱われる変数を保持できるけど、 public void Hoge(object obj) { var act = new Action<obj>((o) => Fuga(o)); this.actionList.Add(act); } これみたいに、Actionをフィールドのリストに入れてずっと保持する場合だと、 objの参照元はずっとGCされないまま(メモリリーク)になるの? これなら実行タイミングを好きにずらせるから便利だなーと思ったけど、 objの参照をずっと掴んでるなら微妙だな。
352 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/26(火) 19:21:22.63 ID:q2NBJkUf0] そう 便利だけどよく分からずに手を出すのはお薦めできない
353 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/26(火) 19:21:49.11 ID:/TbFwKc10] そりゃListに保持するってことはいつか使うって宣言も同然なんだから いつの間にか黙って消えてたら困るだろ それをリークというのはおかしい
354 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/26(火) 19:27:48.27 ID:yCJdNuh10] ラムダの中でobj使ってないから参照もされないでしょう Action<obj>っていうのもコンパイルエラーじゃないの
355 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/27(水) 01:25:25.97 ID:CEBjiC+M0] objを使いたい場合 var act = new Action(() => Fuga(obj)); 引数をとりたい場合 var act = new Action<object>(o => Fuga(o)); 引数をとりながらも無視してobjを使いたい場合 var act = new Action<object>(o => Fuga(obj));
356 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/27(水) 14:23:59.88 ID:ea0YHqGT0] パワポの左側のスライド一覧や、デスクトップ上でのアイコンの並び替えみたいに、 画像オブジェクトをD&Dによって移動・挿入可能なUIを作りたいと思っています。 ListViewに画像を表示させればかなり近いことが出来るのですが、 動画編集ソフトのタイムラインのように横方向に並べたいと思っています。 わりとよくあるUIだと思うのですが、既にコンポーネントとして利用できるようなものはありませんでしょうか?