- 1 名前:デフォルトの名無しさん [2007/08/26(日) 12:42:25 ]
- (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
前スレ C#, C♯, C#相談室 Part41 pc11.2ch.net/test/read.cgi/tech/1184840053/ 過去スレは>>2-5あたり。
- 414 名前:デフォルトの名無しさん [2007/09/06(木) 21:59:52 ]
- やまだはぷろぐらむの天才だ。
きょうもすごいぷろぐらむをつくる。 int i = new int() あれ、なにかへんだぞ。 intはたしか・・・ Int16 やまだくんはまだ満足しない。 iというなまえはかぶるかもしれないからあんぜんじゃない! Int16 _USER_OBJECT_YAMADA_WRITE_200709062156_FOR_COUNTER 完璧なソースコードの誕生だ!
- 415 名前:デフォルトの名無しさん [2007/09/06(木) 22:02:31 ]
- >>413
そのクラスの人間なんて見たときねーよ
- 416 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:02:47 ]
- すみません。どれが自作自演でしょうか?
- 417 名前:デフォルトの名無しさん [2007/09/06(木) 22:03:48 ]
- やまだだけどなんでもそうだんにのるよ!!
- 418 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:05:47 ]
- >>414
jが必要になったらどうする。
- 419 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:06:12 ]
- やまだくんはネームスペースをだな
- 420 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:06:28 ]
- 田中は山田のイヂワルな上司だ。
今日も嫌がらせを部下達にして楽しむ。 「iというなまえはかぶるかもしれないからあんぜんじゃない! 「Int16 _USER_OBJECT_YAMADA_WRITE_200709062156_FOR_COUNTER 「完璧なソースコードの誕生だ! あれ、山田が何か楽しそうだぞ。 イヂワルしてやれ! 「山田君、このメソッドの名前は[_USER_OBJECT_YAMADA_WRITE_200709062156_FOR_COUNTER]にしてくれ 会議で決まったのだ!
- 421 名前:デフォルトの名無しさん [2007/09/06(木) 22:06:31 ]
- >416
じえんはないけどえいえんはあるよ!
- 422 名前:デフォルトの名無しさん [2007/09/06(木) 22:12:35 ]
- たなかさんめそっどめいのせんすないからきらいだ!
そうだ。こういうときは・・・おーばーろーどがあるじゃないか! やまだはそっとたなかのめそっど名のぷれふぃっくすに OVERROAD_ をつけたした。 これでなまえがかぶることはない。
- 423 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:15:09 ]
- スレが壊れだした
- 424 名前:デフォルトの名無しさん [2007/09/06(木) 22:15:21 ]
- >418
よくじつにまわすか、ぷれふぃっくすにSTATIC_とかつければかいけつだよ(^^)
- 425 名前:デフォルトの名無しさん [2007/09/06(木) 22:17:18 ]
- >423
すまない。ガチでこんなコードの修正依頼にイラついて書いてしまった。 後悔はしていない
- 426 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:19:11 ]
- マでやれ
- 427 名前:デフォルトの名無しさん [2007/09/06(木) 22:22:43 ]
- for(LOOPCOUNTER_[LOOPCOUNTER_1,LOOPCOUNTER_2]=58;END==TRUE;LOOPCOUNTER_1**)
{ } やまだすごくね?
- 428 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:23:33 ]
- 名前空間の無い言語はきついな
- 429 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:24:51 ]
- END==TRUEってなんぞ
- 430 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:25:40 ]
- >>428
どちらかというとセンスのないプロ…
- 431 名前:デフォルトの名無しさん [2007/09/06(木) 22:33:45 ]
- ちなみに言語はC#だぜW
- 432 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:35:04 ]
- ENDがTRUEの間ループをまわすの?
普通に発狂するわ
- 433 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:39:10 ]
- もっとやまだのコードがみたい
- 434 名前:デフォルトの名無しさん [2007/09/06(木) 22:39:56 ]
- ディフォルトTRUE
スイッチFALSEとコメントある。 わからない事もない
- 435 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:44:32 ]
- ディフォルトって何?
- 436 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:45:54 ]
- マでやれ
- 437 名前:デフォルトの名無しさん [2007/09/06(木) 22:48:14 ]
- やまだソース今度ZIPであげるわ
- 438 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:48:38 ]
- なんで大文字なんだろ
- 439 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:49:42 ]
- 小文字だと予約語などにぶち当たるからだろ。
それかOLD BASICの名残。
- 440 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 23:08:58 ]
- まだLOOP==TRUEの方が理解できる
- 441 名前:デフォルトの名無しさん [2007/09/06(木) 23:56:29 ]
- ブレークポイント設定してもデバッグができなくなる現象が突然でました。
どの辺確認すればいいのでしょう?構成はDebugでやってますが
- 442 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 00:01:03 ]
- ブレークポイントまでいってない説
- 443 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 00:08:40 ]
- リビルドすれば治る説
- 444 名前:デフォルトの名無しさん [2007/09/07(金) 00:10:56 ]
- ブレークポイントはForm_Load内なので、到達してるんです。
性格にはブレークポイントに到達して、デバッグモードになるのに凄い時間がかかって デバッグモード後はF10で1ステップ進ませると、デバッグモード解除されてしまいます
- 445 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 00:21:14 ]
- Form_Loadのブレークポイントの後に続く文があるのに
デバッグモード解除されるんだったら、 多分VSがぶっ壊れてるんだと思うよ 再インスコじゃね
- 446 名前:デフォルトの名無しさん [2007/09/07(金) 00:31:52 ]
- 不思議なことに、あるプロジェクトでしか現象出ないんだけど、
とりあえず朝一で再インストールしてみます
- 447 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 00:37:35 ]
- >444
デバッグのオプションのネイティブのチェックを外して.NETのみをデバッグするようにしたらどうなる?
- 448 名前:デフォルトの名無しさん [2007/09/07(金) 00:40:18 ]
- >>447
すんません。ソースが会社なんで、明日やってみます。thx
- 449 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 01:27:48 ]
- 「〜〜〜は開始されませんでした」みたいなエラーメッセージがでて
デバッグ開始が異常に遅くなるときあるよね。
- 450 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 13:13:13 ]
- >>378
kwsk
- 451 名前:デフォルトの名無しさん [2007/09/07(金) 15:01:14 ]
- ソリューションのクリーンとか試してみた?
- 452 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 16:39:10 ]
- 怪しいアプリに邪魔されてた事とかあるな
- 453 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 19:05:00 ]
- 質問です。
TextBoxコントロールの枠線の色は変更できますか? できそうにない感じなのですが、そうすると自分で線を描くしかないかと 思うのですが、 Graphics g = this.CreateGraphics(); と取得してコレに対してDrawLineをしてみているのですが、 線が表示されません。 アプローチが間違っているのか、足りないおまじないがあるのか…。 どなたかお知恵をお貸しいただければ幸いです。
- 454 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 19:49:42 ]
- >453
まずその描画はOnPaintでやるべき。 なんとなく、Panelとかの上にTextBoxを載っけてPanelとかに枠線描いた方が楽じゃない?
- 455 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 19:59:40 ]
- >>453
いわゆるオーナードローっぽいことがやりたいのならControlPaintを使うようだから 詳細はMSDNを見るといい が、>>454に同意だな
- 456 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 20:19:15 ]
- >>454
> まずその描画はOnPaintでやるべき。 TextBoxBase 以下は OnPaint が無視されたような気がする。
- 457 名前:デフォルトの名無しさん [2007/09/07(金) 20:52:07 ]
- >450
2003までのCPPはマネージとアンマネージはクラス分けされ、同一コード内にはかけても、そこからメモリへの受け渡しが辛かった。 2005はマネージとアンマネージを並べてかける。 つまり int A=42 printf(A.Tostring()); みたいな事ができる。
- 458 名前:デフォルトの名無しさん [2007/09/07(金) 20:56:41 ]
- 何かしょぼいが解る人にはマジで!と叫ぶようなコード。
- 459 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 21:15:38 ]
- >>453
やってみると意外と面倒だね。 枠の幅が1でよければ、BorderStyle =BorderStyle.FixedSingleにしておいて WM_PAINT捕まえてそこで枠を描画すればできる。
- 460 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 21:44:08 ]
- public string フィールドしかないクラスから、全フィールドを連結した
文字列をこさえたい。リフレクション使えばできるかと思ったら、 Type.GetFileds() はフィールドの宣言順を保証しないと言う。 どうすればできる? あきらめるしかない?
- 461 名前:デフォルトの名無しさん [2007/09/07(金) 21:44:35 ]
- >453
ピクチャボックスに色を塗る。 テキストをフラット枠線無しにしてピクチャの上に載せる これが一番時間がかからない。 グラフィックで書くのも良いけど、速度は体感できない程度しか変わらない
- 462 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 21:47:44 ]
- >>460
そもそもCILにコンパイルされた時点で宣言順なんて保証されないと思うが。 まああきらめた方がいいと思うよ(仮にできたとしても)。
- 463 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 21:50:44 ]
- >>461
ぴったり1ピクセル分ずらすのって、むずかしくない?
- 464 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 21:55:20 ]
- >>460
Order属性とか自分で定義して全部のフィールドに[Order(2)]みたいに付けといて その順番で連結すれば? それなら余計なメンバを増やしたり動作をいじったりせずにリフレクションだけでできるよ
- 465 名前:デフォルトの名無しさん [2007/09/07(金) 21:58:07 ]
- >463
サイズプロパティに打つんだよ。 マウスだとちょっとズレるかもだから
- 466 名前:デフォルトの名無しさん [2007/09/07(金) 22:01:35 ]
- >460
ヒント IList delegate
- 467 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 22:07:41 ]
- >>466
そんなめんどくさいことするくらいなら初めから連結メソッドを定義するだろw
- 468 名前:460 mailto:sage [2007/09/07(金) 22:10:44 ]
- >>464
カスタム属性か。まあ今も Excel から自動生成してるクラスなんで、 それならできそうです。 >>466 plz one more.
- 469 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 22:12:06 ]
- >462
確かに宣言順は保証されないんだが、 宣言順に初期化されるという保証があるので事実上宣言順に並んしまうという状態。 それを利用してリフレクションを使って順番通りに文字列をなんかするなんてソースが会社に大量にあって動いている困った状態。 どうにかして宣言順に並んでいないケースって意図的に作れないかな? 順番は保証されてないから動かない可能性があるって言っても動いてるからって理由で修正を拒まれて困ってる。
- 470 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 22:14:45 ]
- >468
自動生成クラスなら文字列連結メソッドも自動生成した方がいい。 自動生成クラスが何かのケースで実際に動かして動かないことが発覚するリフレクションより コンパイル時に動かないコードになってることが分かる方がいいよ。
- 471 名前:460 mailto:sage [2007/09/07(金) 22:56:31 ]
- >>470
んんん。良くわからんのだが、リフレクションは信用ならないということ? 連結メソッドにしろリフレクションしろ、コンパイルを通した上で、テスト ケースもこなすと思うのだが。
- 472 名前:453 mailto:sage [2007/09/07(金) 23:33:24 ]
- >>454
やっぱり重ねるのが楽でしょうか…。 ありがとうございました^^ >>455 了解しました、MSDN見てみます。 ありがとうございました^^ >>456 な!? マジですか!? 処理追ってみます。 >>459 おお、その方法よさそうですね、試してみます^^ ありがとうございました^^ >>461 やはり載せる案多数ですね…。 ありがとうございます^^ とりあえず今日は退勤してまいりましたので、明日にでもいろいろやってみようかと思います。 みなさんありがとうございました^^
- 473 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 23:36:50 ]
- リフレクションは保障されてない
メソッドは保障されてるってことだろ? わざわざリフレクション使う内容かどうかわからないし。
- 474 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 23:47:59 ]
- でもこの場合属性を連番で付けるだけなら失敗のしようがないだろ
- 475 名前:デフォルトの名無しさん [2007/09/08(土) 00:00:35 ]
- このスレ見てるとC#おもしろそうですね。
アセンブリしかできませんが、挑戦してみようかな
- 476 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 00:03:32 ]
- 君見る目があるね
- 477 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 00:05:03 ]
- >>475
今の流れはどちらかと言うと不毛な話ばっかりだと思ったが。 どこらへんが面白かったか教えてちょ! 正直c#は面白い。
- 478 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 00:08:33 ]
- F#はもっと面白いよ(´・ω・`)
- 479 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 00:42:40 ]
- >471
ある日、誰かがメンテをしてそのクラスを手でちょっとだけ修正を入れて 何気なくフィールドを追加しただけなのに挙動が変わったなんてことが起きるかもしれない。 せっかくの連番の属性も意味もわからないままコピペされて番号が重複したりするかもしれない。 そういうときに限ってテストケースの存在も無視される。 普通のメソッドになってれば少なくともそのメソッドの挙動は直接メソッド自体を書き換えられないと変わらないだろ。 マクロで普通のコードを生成できるのに、 リフレクションで処理しやすいようなクラスを用意するってのは本末転倒だろ。 C#のリフレクションはJavaなんかより割と速いけど普通にメソッドを叩くよりかは明らかに遅くなるだろうし。
- 480 名前:デフォルトの名無しさん [2007/09/08(土) 01:09:54 ]
- DataGridVewに行を追加したいのですがどうすればいいのでしょうか?
- 481 名前:デフォルトの名無しさん [2007/09/08(土) 01:46:22 ]
- asciiファイルからshift-jisで読み込んで、dataGridViewに表示させてるんですが、
この表示された値(2バイト文字)をコピーしてエクセルに貼り付けると文字化けしています。 (テキストファイルなどへのコピーは平気) エクセルへのコピーも問題なく行うにはどうればいいのでしょう?
- 482 名前:480 [2007/09/08(土) 02:55:09 ]
- 自己解決しました
- 483 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 03:42:07 ]
- そのくらい自己解決してもらわないと困る
- 484 名前:460 mailto:sage [2007/09/08(土) 08:26:15 ]
- >>479
自動生成クラスを手でいじったり NUnit かけずに済ます文化がこちらには ないんだが、言わんとしてることはわかった。ありがとう。
- 485 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 10:06:40 ]
- dictionaryのキーとして専用の構造体を使うとき、
等値比較演算子を自分で実装しないといけないの? 試してみたら自動でやってくれてるみたいだけど
- 486 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 10:59:15 ]
- リフレクション使うのでかなり遅いけど、それでもいいのなら
- 487 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 13:14:24 ]
- 構造体なら値比較?
- 488 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 13:37:18 ]
- >>487
デフォルトだとValueType.Equalsが使われる。 ValueType.Equalsだが、プリミティブ型のみから構成される構造体なら ビット比較を使うっぽい。 参照型を含んでいたりするとリフレクションでメンバごとに再帰比較してる模様。 これが遅いと言われている。 pc11.2ch.net/test/read.cgi/tech/1173763436/161-185
- 489 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 13:41:43 ]
- >>488
>参照型を含んでいたりするとリフレクションでメンバごとに再帰比較してる模様。 いまのCLRならその部分をLCGで実行時生成して キャッシュしておくこともできそうだな。 キャッシュの寿命管理が面倒そうだけど、 直近の16エントリぐらい保持しておけばそこそこヒットしそうだ。
- 490 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 14:01:32 ]
- 素直に IEqualityComparer 実装しようよ
- 491 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 14:09:10 ]
- 自作の構造体なら、わざわざDictionaryなんかに頼らなくても
自分とペアになるオブジェクトをプロパティで持たせた方が簡単で早いじゃん。 ・・・・・・と俺は思っちゃうんだが、これってやっぱり単細胞過ぎる発想かな。
- 492 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 14:10:11 ]
- >>491
肝心のハッシュテーブルはどうするんだw
- 493 名前:492 mailto:sage [2007/09/08(土) 14:12:39 ]
- ああ、ごめん無視して
俺のほうが単細胞だったようだorz
- 494 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 18:57:52 ]
- >>488
ValueType.Equalsを使うならボクシングが発生するよね それならプリミティブ型のみでもやっぱり自分で比較した方が速いのかな
- 495 名前:デフォルトの名無しさん [2007/09/08(土) 23:48:32 ]
- comboboxにあるクラスのインスタンスを設定したいのですがどうすればいい?
- 496 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 23:51:32 ]
- ComboBox.Tag を使いなはれ
- 497 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 23:51:33 ]
- ValueTypeにそのクラスを設定すればいいだけじゃん
その程度のこともしらない人がつくったアプリなんて使いたくも無いw
- 498 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 01:41:29 ]
- >>494
JITでボクシングの部分はたいてい取り除かれているらしい。 さらにインラインかもありえるらしい。 ただJITの結果は調べられないからほんとかどうかは知らない。
- 499 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 01:59:44 ]
- >>498
>ただJITの結果は調べられないからほんとかどうかは知らない。 ボクシングが起きてるかどうかはCLR Profilerで分かるんじゃない? GCヒープにその値型が確保されてればどっかでボクシングは起きてるてことで。
- 500 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 02:10:22 ]
- デバッガでアタッチしたら見えるんじゃねーの。
ってか取り除かれるのはかなり限定された状況だけじゃない?
- 501 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 05:03:43 ]
- >>469
問題が起きたら直すでおk 世の中そんなもんだ。
- 502 名前:デフォルトの名無しさん [2007/09/09(日) 11:42:40 ]
- 文字列に記述したプログラムを解析して結果を返したいけどいい方法はない?
jscript.netのevalはNGです。 自分で書いた独自のメソッドを呼べないので。。 public string myMethod(string s) { return "hoge"; } 文字列に if(myMethod("hoge")=="hoge") "あ","い") としておき 結果の "あ" を返す方法 文字列中にmyMethodがいつ来るかはわからないです。
- 503 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 12:23:16 ]
- まあやっぱりJScript.NETのevalだな
myMethodは静的にすれば元アセンブリ参照で呼べるだろ
- 504 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 12:36:05 ]
- >>502
IronPython
- 505 名前:デフォルトの名無しさん [2007/09/09(日) 12:37:51 ]
- 教えてください。
ArrayList で foreach を使う事について ループ内部でIndexof を使用してIndexを求める場合、 foreach を使用せずに最初からインデックスを指定して回すやり方が普通なのかどうか 常識的に考えると後者が普通だと思うのですが foreach を使用したほうが、コードが若干短くなるし、 コード上では多少効率が割るそうですが、オプティマイズされたCLRが吐かれるような気もしますし
- 506 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 12:45:06 ]
- ArrayListの中身を変更したいんならindexで回す
参照オンリーならforeachでいいんじゃないのか Array<T>やList<T>ならForEachメソッドなんてのもある
- 507 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 13:05:00 ]
- >>506
ありがとうございます ところで、2003 にはList<T>は無いみたいです...
- 508 名前:デフォルトの名無しさん [2007/09/09(日) 13:08:21 ]
- ペイント系のアプリを書こうと思ってとりあえずPaint.NETを
使ってみたが、とてもじゃないが金を取れるソフトではありませんね やはり、商用だとC/C++がいいのですかね
- 509 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 13:18:51 ]
- そりゃ金とってないソフトだ品
- 510 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 13:35:56 ]
- >>508
おまいさんは金を取ることの意味を勘違いしてるな。 The Old New Thingsでも立ち読みしてこい。 ttp://www.amazon.co.jp/dp/4756150004
- 511 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 13:57:37 ]
- >>508
みたソフトが悪い あれはMITのヲタク学生が書いた駄作だよ
- 512 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 14:05:24 ]
- またまたArrayListについて教えてください
ArrayListにオブジェクトをセットして セットするオブジェクト: int Key, string Name1, string Name2, ... そのArrayListに対して、例えば、Key = 3 は何番目なのかを メソッドだけで、処理できますか? Contain と IndesOf と、比較用のメソッドをオーバーライド?すればできそうな気もしていますが 良くわかりません
- 513 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 14:26:55 ]
- なにを言っているんのかよく分からんが
IndexOfでとれるだろ。。unboxingされて値が同じなやつが返るだろうけど
- 514 名前:512 mailto:sage [2007/09/09(日) 14:29:21 ]
- >>513
比較の際に、同一オブジェクトではなく、プロパティのKeyのみで比較したいのです
|

|