[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 03/18 22:04 / Filesize : 133 KB / Number-of Response : 542
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C#, C♯, C#相談室 Part42



1 名前:デフォルトの名無しさん [2007/08/26(日) 12:42:25 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part41
pc11.2ch.net/test/read.cgi/tech/1184840053/

過去スレは>>2-5あたり。

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のみで比較したいのです

515 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 14:33:23 ]
>>512
EqualsとGetHashCodeをoverrideする。またはHashtableでも使え。
それがいやならC#2.0のList<T>にはFindメソッドとかあるぞ。

516 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 14:35:30 ]
ますます何を言ってるのかわからん
intなら値で比較されるだろ

もしかして
key1, string1_1, string1_2,
key2, string2_1, string2_2,
...
みたいな構造をArrayListで作ろうとしてるの?

HashTable使えよ。。。

517 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 14:42:57 ]
>>512
こういうことがしたいの?

public class Item
{
 public int Key;
 public string Name1;
 public string Name2;
 public string Name3;
}

ArrayList al = new ArrayList();

// 入力

int index = 0;
foreach (Item item in al)
{
  if( item.Key == 3 ) break;
  ++index;
}

if (index == al.Count)
  Console.WriteLine("みつかりませんでした");
else
  Console.WriteLine("{0}番目", index);



518 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 14:44:43 ]
孔子は言った。
考えるだけで学ぶことをしようとしない人間は間違いを犯しやすい。

519 名前:512 [2007/09/09(日) 14:58:56 ]
ちょっとだけ違います。

ArrayList al = new ArrayList(); // 入力

Item addOrReplaeceItem = new Item(); // 追加または、更新しようとする要素(オブジェクト)
addOrReplaceItem.Key = 2;
addOrReplaceItem.Name1 = "new name1";

int index = 0;
foreach (Item item in al)
{
  if( item.Key == addOrReplaceItem.Key ) ;
{
((Item)al[index]).Name1 = addOrReplaceItem.Name1; // あれば、入れ替え
break;
}
  ++index;
}

if (index == al.Count)
{
  Console.WriteLine("みつかりませんでした");
al.Add (addOrReplaceItem); // 無ければ、追加
}
こんな感じです。
宜しくお願いします。

520 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 14:59:19 ]
>>505
あほなこと言ってないで素直にインデックスで回すか、
自前でインデックスカウントしとけ。

同じ値とか複数あったらどうすんだ?
無いとしても効率悪くなるだけ。
そんな器用な最適化ができるわけなかろう。


521 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 15:01:13 ]
いっそDataSet/DataTableを使ったらどうだ。

522 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 15:01:30 ]
ふらっと逝け

523 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 15:22:45 ]
>>519
「メソッドだけで」とか難しいこと考えずに
全部書くか自分でメソッド作ることをおすすめする。

どうせList<T>使えるようになったら組み直しなんだし。
難しいことやるのは慣れてからでいいよ。

524 名前:512 [2007/09/09(日) 16:11:52 ]
ありがとうございます。

525 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 02:22:48 ]
DataGridViewでコントロール+Cを押したときのクリップボードに
値を渡すのを防ぎたいんですがどうすればいいでしょう?


526 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 02:24:53 ]
clipboardcopymode = Disable
でできました。。どうもです。

527 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 03:46:34 ]
SDJEditorを使ってみた

やはり、.NETではこの程度が限界か?



528 名前:デフォルトの名無しさん [2007/09/10(月) 06:36:45 ]
>>503
すみません
この発言読み飛ばしてました。
静的にすればアセンブリ参照で呼べるというのを解釈すると
new をしないようなstaticなメソッドにしてDLLとして作成。
呼び出し元プログラム側で、参照の設定をしてあげるという
のでしょうか?
この静的にするということは、タイプセーフではないという
ことになりますか?今回ASP.NETで作成したいのですが。。

>>509
IronPaython
は動的言語ということで私も考えたのですが
具体的にどうすればよいのかが浮かびませんでした。
それにC#から呼び出したいのでオーバヘッドが発生する気がします。


529 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 08:55:33 ]
組み込みスクリプト感覚で使うつもり?
それ危なくない?

530 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 12:46:34 ]
> 静的にするということは、タイプセーフではないということになりますか?
なんで?

> C#から呼び出したいのでオーバヘッドが発生する気がします。
eval とか言ってるのにオーバーヘッドw

まあ全体に ASP.NET でやるには怖すぎる処理だわな

531 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 13:01:49 ]
限定された構文でよかったら自分でインタープリタを作る手もあるし、
その手のライブラリもあるだろう。
evalと同等とかC#の関数で出来ることを全部やりたいなら、
CodeDOMやらそれなりに危険なことをしないと無理。

話はそれるがC#3.0のExpression<Func<>>の仕組みをつかって、
eval的なことが出来そうな気がする。
いまのところDLinq用だが、どう見てもLispのクォートを狙ってるとしか思えない。

532 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 18:43:40 ]
>>531
本題とはずれるけど、C# 3.0 のラムダ式の話、
C# 3.0 は F# からいろいろ輸入したって話らしいから、
F# の(大元をたどればもちろん LISP の) quote 由来だろうね。

LISP だと、データとプログラムを区別しないってのを、
.NET Framework だと、ラムダ式を
デリゲートに代入したときはプログラムとして、
Expression 型に代入したときはデータとして扱う
というコンセプトみたい。

533 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 18:49:29 ]
>>532
DLRも見てみると面白いよ。
ASTからILへの汎用変換エンジンになりつある。
CodeDOMは死相が出ちゃったけど
DLRはRubyとPythonという目標がある以上、
ある程度のところまで作り込むんじゃないかな。

ちなみにExpression Treeの裏話。
ttp://d.hatena.ne.jp/siokoshou/20070709

ま た D o n B o x か !



534 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 23:55:38 ]
すんません。
HTML中で16進形式(5桁:ex."&#x20B9F;")で指定されたサロゲートペア文字を
正しく変換する楽な方法ってないですか?

HttpUtility.HtmlDecodeだと、下位4桁までしか認識しないようで、困っております。

string s = HttpUtility.HtmlDecode("&#x20B9F;");
foreach (char c in s)
  Console.WriteLine(string.Format("{0:X4}",(int)c));

--出力(こんな値が入ってて欲しい)--
D842
DF9F
--出力(でもこうなっちゃってる orz)--
0B9F

535 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 00:07:19 ]
正規表現使えば

536 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 00:19:54 ]
ども。"&amp;"とかも"&"として取得したいんで、
できればメソッド一発でできたらなぁ、と思ったんですが、
やっぱそこだけ別に処理するしかないスかね。

537 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 00:29:04 ]
数値文字参照だけ置換してあとはHttpUtilityに任せる
というのをひとつのメソッドにすればメソッド一発だよ



538 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 00:54:18 ]
気になったのでざっと調べた感じ、HTML4.01の扱える文字集合はISO/IEC 10646-1らしい。
いわゆるUCS-4なんだが、-1はBMPしか扱わないそうな。-2がそれ以外の文字。

539 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 01:32:11 ]
BitmapオブジェクトがDispose()されたことをBitmapオブジェクトの外部から知ることはできるでしょうか。
ローカルメモリオブジェクト内のDIBをもとに作成したBitmapオブジェクトが破棄されるまではローカルメモリオブジェクトを解放せずにおき、Bitmapオブジェクトが破棄された段階でローカルメモリオブジェクトを解放するようにしたいのです。
DIBをマネージメモリにコピーしてからImage.FromStream()でImageオブジェクトを生成し、すぐさまローカルメモリオブジェクトを解放する、という方法なら安全確実なのですが、いかんせん遅いのです。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<133KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef