- 1 名前:デフォルトの名無しさん [2008/02/27(水) 18:24:40 ]
- このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 前スレ ふらっとC#,C♯,C#(初心者用) Part24 pc11.2ch.net/test/read.cgi/tech/1202028267/
- 596 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 12:20:45 ]
- LINQのメソッド構文というかただの拡張メソッドだよな
拡張メソッドがLINQの本体 ごくまれにクエリ式を使った方がシンプルに書けることがあるけど 普通は拡張メソッドを使った方が早いし見やすいし楽だ
- 597 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 12:29:12 ]
- 拡張メソッドで書いてもクエリ式で書いてもLINQだよ
クエリを書けるようにする技術を総称してそう呼ぶだけで 別にC#にLINQっていう機能が付いてるわけじゃない
- 598 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 12:32:17 ]
- >>589
本当かよそれw
- 599 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 12:50:44 ]
- それが本当ならCでexit前のfree論争なんて起きるわけがない。
それどころか、WindowsもUnixもファイルハンドルとかの OSに属するプロセス単位の資源はみんなプロセス終了時に片付けるぞ。
- 600 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 15:03:32 ]
- e-words.jp/w/E383A1E383A2E383AAE383AAE383BCE382AF.html
システムを再起動する=プロセスを終了させても解放されない(?)
- 601 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 15:06:11 ]
- 「OSに属するプロセス単位の資源」でないものが時々問題になるわけだ。
OSの資源管理がタコだったりバグってたりするとその限りじゃなくなるわけだが。
- 602 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 15:42:13 ]
- なるほど
- 603 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 15:47:59 ]
- >>589
それは OS による。 >>596 LINQ = 標準クエリ演算子(こういう(拡張)メソッドを用意しときなさいっていう規約) + クエリ式構文(C# / VB の言語拡張)
- 604 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 16:46:58 ]
- >>600
OSがメモリリークしてたらその通り。
- 605 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 16:59:37 ]
- アプリ終了時にメモリが解放されない場合はOSのバグであってプログラマに責任無しってことですか?
- 606 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 17:23:06 ]
- マネージドな世界に限ればyes
- 607 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 18:25:13 ]
- 本当かよそれw
だとしたら「プロセス」ってそもそも何よw
- 608 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 20:10:05 ]
- Windowsはプロセスが終了したら勝手に解放してくれてる。
COMとかの細かいことはよく知らない。
- 609 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 20:27:27 ]
- アプリが終了しても、関連するプロセスが全て終了しているとは限らないのだ。
COMで起動したexcel.exeを終了してなくて、いつの間にか数十ものプロセスがメモリを占有してる、 という事例に出くわしたことがある。
- 610 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 20:30:32 ]
- アウトプロセスサーバなんて糞喰らえ
- 611 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 21:29:27 ]
- C# の場合でも一部イベントはちゃんとデタッチするように書いてあるね。たとえばこれとか。
msdn2.microsoft.com/ja-jp/library/microsoft.win32.systemevents.userpreferencechanged(VS.80).aspx
- 612 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 21:33:05 ]
- それは別の話だよ
staticイベントにイベントハンドラを追加したまま放置すると 呼び出しターゲットのオブジェクトがGCの対象外になってメモリリークする
- 613 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 22:48:54 ]
- 9xはシステムリソース残り何%って、心配したなあ。
プログラムを起動すると減り、終了すると戻るが プログラムによっては元の値まで戻らないと当時聞いていた。 これがリークしたからなんだろうなと今だから思える。
- 614 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 23:24:46 ]
- String.Splitのオーバーロードを見てみると引数はChar[]かString[]でなければならない
みたいなんだけど、実際は string str = "Hoge\tFuga\tFugo"; string[] val1 = str.Split('\t'); string[] val2 = str.Split(new char[]{ '\t' }); どちらも問題なくコンパイル及び実行が通ってしまうのだけどなんで? また、どっちでも良いとなればみんなはどっちの書き方してる? new char[]{ '\t' }を渡してやった方が良さそうかなとは思うんだけど、 str.Split('\t');と書く方がスマートにも見えてしまう。 まあどうでもいいことだと言われたらそれまでなんだが、どうも気になってしまう。
- 615 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 23:27:05 ]
- params
- 616 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 01:13:23 ]
- params char[]だと可変個の引数が許される
str.Split('a','b','c',...)でもいいし 配列を入れてもいい
- 617 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 02:45:15 ]
- staticメソッドとそうでないメソッドはどう使い分けるものなのでしょうか?
public class Hoge{ public int AddOne(int val) { return val + 1; } } のような引数の値を処理して返すだけのメソッドの場合は staticにするのが普通なのでしょうか?
- 618 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 03:01:36 ]
- >>616
なるほど。今までparamsの意味が分からなかったけどそういうことだったのね。 勉強になりました。サンクス。
- 619 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 03:10:33 ]
- monthCalendarで方向キーで日付を移動しても選択したことにならないので
強制的にDateChangedイベントで monthCalendar1_DateSelected(monthCalendar1, new DateRangeEventArgs(monthCalendar1.SelectionStart, monthCalendar1.SelectionEnd)); のようにDateSelectedを呼び出しました。 期待通りに、方向キーでの移動でもDateSelectedを呼び出せましたが、 方向キーで移動後にマウスで他の日付をクリックすると範囲選択になってしまいます。 期待する動作はドラッグ以外で範囲選択してほしくないのですが、上記の方法自体が間違っている(常套ではない)のでしょうか? 個人的には強制的にイベントを呼び出すのは良くないと思うのですが他に方法が思いつきません。
- 620 名前:619 mailto:sage [2008/03/12(水) 03:27:22 ]
- 問題提起箇所が複雑になってましたので整理させていただきます。
まず、方向キー入力後にマウスで日付をクリックすると範囲指定になるのはもともと仕様のようなので今回は質問から外します。 monthCalendar1_DateSelected(monthCalendar1, new DateRangeEventArgs(monthCalendar1.SelectionStart, monthCalendar1.SelectionEnd)); という強制的にイベントを呼び出す方法は正しいのでしょうか?という質問に絞らせてください。 過去ログを読んでみると>>363のような書き込みがあるのですが、 PerformClickのようなイベントをシミュレートするようなメソッドがどのイベントにも確実にあるのでしょうか?
- 621 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 08:26:16 ]
- 619に書いてあるような「壮大な勘違い」をするのはOOPとイベンドドリブンの意味が
全然わかってないから。 遠回りでもまずOOPを理解することを考えた方がいいんじゃないの? 「イベントを呼び出す」、なんて普通に書いてるけど、 揚げ足取りじゃなくて意味不明だよ。 まあ初心者にはありがちな「勘違い」の類ではあるけど。
- 622 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 09:33:11 ]
- Guidやstringの場合は、まだ設定されていないという状態を
初期化のときに、Guid.Emptyなどを設定することによって 扱っているんですが、DateTimeのときはどうしたら良いのでしょうか? DateTime.Emptyは無いですし‥‥ DateTime.MinValueを使っても良いもんでしょうか?
- 623 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 10:03:33 ]
- DateTime?
- 624 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 10:16:22 ]
- >>617
基本的にはそんな感じ。 double X = 3.14159265; string str = X.ToString("F3"); //インスタンスメソッド double newX = double.Parse(str); //staticメソッド クラスのインスタンスにより異なる動作をさせたければインスタンスメソッドにする。 double.Parseメソッドがインスタンスメソッドだったらちょっと変でしょ?
- 625 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 10:22:09 ]
- >>622
623も書いているけどnull許容型。
- 626 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 10:24:09 ]
- >>619
OOPっていうかイベントはそんなに単純じゃないよ 君がやってるのはイベントハンドラ用のメソッドを呼び出してるだけ 別に問題ないけどイベントハンドラに直接処理を書かずに他のメソッドを作って それをそれぞれのイベントハンドラから呼び出すようにした方が綺麗
- 627 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 10:56:22 ]
- >>623
>>625 DateTimeってstructで値型だから、nullにはならないのではないでしょうか?
- 628 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 10:57:04 ]
- null にならないから Nullable でラップするんだお
- 629 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 10:58:21 ]
- int?とか書くとintまたはnullな型が出来る
DateTime?でnullになるDateTimeが出来る 値型じゃなくてclassだけど
- 630 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:01:13 ]
- nullableは値が与えられているかどうかのフラグと値をもった値型だよ
==nullで比較できるのは構文糖衣
- 631 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:01:19 ]
- >>627
msdn2.microsoft.com/ja-jp/library/1t3y8s4s(VS.80).aspx >>629 Nullable<T>は構造体だから値型だぞ。
- 632 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:07:58 ]
- VS2005で
uchukamen.com/Programming1/Menu/image2.gif このようなメニューを作りたく思い、MenuStripを作り RenderModeをSystemにしてみましたが出来ません。 VS2005では無理なのでしょうか? よろしくお願いします。
- 633 名前:627 mailto:sage [2008/03/12(水) 11:09:15 ]
- 皆さんどうも有り難うございます。
nullableって、関数の引数でnullを許容するための構文だと思っていて、 何にでも使えるとは知りませんでした‥‥。びっくり。 どうも有り難うございました。
- 634 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:11:45 ]
- >>632
何が出来ないんだよ。
- 635 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:22:52 ]
- >>634
レス有り難うございます。 ttp://sakuratan.ddo.jp/uploader/source/date73737.png こうなります。 uchukamen.com/Programming1/Menu/image2.gifより文字が大きいのでなんとかしたいです。
- 636 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:40:18 ]
- ツールボックスを右クリック→アイテムの選択→MainMenu
お勧めしない
- 637 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:41:29 ]
- >>635
そのサンプルはMenuStripじゃなくてMainMenuなんじゃね? 知らんけど。 MenuStripならToolStripSystemRenderer継承したクラス作って 好きなように描画するようにしたらいい
- 638 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:42:04 ]
- VisualStyleを切ればいいよ
- 639 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:56:15 ]
- >>636
ありがとうございました。 希望の動作を実現することが出来ました。 ところで、どうしてお勧めできないのですか? >>638 menuStripにVisualStyleというプロパティはありませんでした。
- 640 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:58:49 ]
- MenuStripに取って代わられたから
Obsolete来ても知らないよ
- 641 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 14:04:30 ]
- 拡張メソッドについての質問なんですが、
class Test { static int GetDigit(this int num) { return (int)Math.Log(num, 10) + 1; } } という拡張メソッドがあったとき、C#3.0からはインスタンスメソッドとして使えますが、ライブラリにしてC#2.0から使うときは インスタンスメソッドとして使えるのでしょうか?それとも、Testクラスのstaticメソッドとして使うことになるのでしょうか?
- 642 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 14:05:11 ]
- 当然後者
- 643 名前:デフォルトの名無しさん [2008/03/12(水) 15:23:22 ]
- あるフォルダにあるファイルの一覧を取得した後に、
そのリストからワイルドカードで検索するにはどうしたら良いのでしょうか。 string[] fileListText = Directory.GetFiles(@"C:\Hoge\", "*.txt"); と同じことを、 string[] fileListAll = Directory.GetFiles(@"C:\Hoge\", "*"); とした後に、fileListAll の中から "*.txt" のファイル名のみ抽出して fileListTex を作成したいのです。
- 644 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 15:59:40 ]
- fileListText = fileListAll.Where(s => Path.GetExtension(s.ToLower()) == ".txt").ToArray();
- 645 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 16:08:17 ]
- string[] fileListText = Array.FindAll(fileListAll, item => System.IO.Path.GetExtension(item).ToLower() == ".txt");
でも良い
- 646 名前:619 mailto:sage [2008/03/12(水) 16:37:49 ]
- >>621
はい、多分そうじゃないかと思ったのでヒントを頂きたく質問しました。 >>626 なるほど。 それだとごく簡単に共通の事が出来ますね。 PerformClickのようなものがあるので他のイベントにも同じような呼び出しでいいのかと思いました。 とすると共通の処理がないときでもイベントハンドラに直接処理を書くのは良くないのですか? それとも共通の処理が必要になった時にメソッドを分ければいいのでしょうか??
- 647 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 17:10:58 ]
- >>646
>とすると共通の処理がないときでもイベントハンドラに直接処理を書くのは良くないのですか? いいえ。直接処理を書いて問題ないです。 >それとも共通の処理が必要になった時にメソッドを分ければいいのでしょうか?? メソッドを外に書いてそれを呼び出す方がスマートになる場合もあるし、 わざわざそんなことせんでも良い場合もある。そんなに気にしなくていいよ。 俺なんかはbutton1_Click(null, null)なんかで呼び出したりするのは別に汚いともなんとも思わんし。 if(result==false)と書くか、if(!result)と書くかみたいなもんで、ただの趣味の問題。 気にするだけ無駄だと思う。
- 648 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 17:16:30 ]
- さすがにbutton2のイベントハンドラからbutton1_Clickを呼び出すのはちょっと…
- 649 名前:647 mailto:sage [2008/03/12(水) 17:45:59 ]
- >>648
それも趣味の問題だと俺は思うぞ。 例えば、 void button2_Click(object sender, EventArgs e) { button1_Click(null, null); } void button1_Click(object sender, EventArgs e) { /*処理*/ } こういうように書くより、 void button2_Click(object sender, EventArgs e) { SampleMethod(); } void button1_Click(object sender, EventArgs e) { SampleMethod(); } void SampleMethod() { /*処理*/ } こう書くべきってことを言いたいんだと思うが、 後者の書き方でもまだ汚いと思うやつ(例えば俺)もいるってことだ。 次に俺の書き方を示す。
- 650 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 17:52:30 ]
- 俺だったらこう書く。
public Form1() { InitializeComponent(); //イベント button1.Click += new EventHandler(Button1or2_Click); button2.Click += new EventHandler(Button1or2_Click); } void Button1or2_Click(object sender, EventArgs e) { //処理 } つまり、処理を行うメソッドを外部に記述しても、それを呼び出すためだけのメソッドを記述している時点で 無駄があると感じる人間もいるんだわ。 処理を行うメソッドを直接イベントに紐付けて、デリゲートがメソッドを直接呼び出す方がスマートに感じるということ。 当然反論もあるかもしれん。イベント引数を扱いたいときなどはこの方法ではまずい場合もあり得る。 要するに俺が言いたいことは、最初から言っているとおり趣味の問題だってこと。 自分が綺麗で可読性があると思えるいうコードを書けばいいじゃんって言うだけの話。 コードはこう書くべきなんて他人がどうこう言うもんじゃない。
- 651 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:18:39 ]
- >>647-650
ありがとうございます! ということは>>620のような書き方でも問題ないということですか?? イベントの引数が違う時は>>650のようには出来ないので>>649のようになると思うのですが、 >>620でも趣味の範囲という解釈でいいんでしょうか。
- 652 名前:647 mailto:sage [2008/03/12(水) 18:25:17 ]
- >>651
俺はそんなんでいいと思うけどね。
- 653 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:25:49 ]
- >>652
ありがとうございました。
- 654 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:35:42 ]
- >>642
ありがとうございます。
- 655 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:40:02 ]
- >>651
ちなみに、強制的にイベントを発生させるということを厳密に行いたいのであれば、 monthCalendarを継承したカスタムクラスで、イベントデリゲートを呼び出してくれるようなメソッドを公開する。 public PerformDataSelected(object sender, DateRangeEventArgs e){ if(this.DataSelected != null) this.DataSelected(sender, e); } ほんで外からそのメソッドを呼び出せばいい...と思う。 もしかしたら俺が何か勘違いしてるかもしれん。 興味あったら試してみて。
- 656 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:40:52 ]
- >>655
OnDataSelectedを呼ぶべき
- 657 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:40:59 ]
- 最初は動けば良いのではないかと、そういうものは楽しさの中から築きあげて行けば良いし。
- 658 名前:655 mailto:sage [2008/03/12(水) 18:41:32 ]
- さっそくミス発見。
public void PerformDataSelected(object sender, DateRangeEventArgs e){ if(this.DataSelected != null) this.DataSelected(sender, e); } voidが抜けてたわ
- 659 名前:655 mailto:sage [2008/03/12(水) 18:42:43 ]
- >>656
ほうほう。 実はmouthCalendarというものを使ったことがないもんでなw 勉強になりますw >>651 だそうです。
- 660 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:47:04 ]
- MonthCalendarとか関係なくイベントはクラス外から直接呼べない
だから派生クラスから呼び出す手段としてOn**メソッドを用意する
- 661 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:50:17 ]
- >>650
趣味の問題、か。 議論の余地なく間違ってると思うよ。 こういう人は「抽象化」の意味と意義がわかってないんじゃないの。
- 662 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 19:00:45 ]
- 「状況に応じて適切に判断」かな
好みじゃなくて使い分けるもの
- 663 名前:655 mailto:sage [2008/03/12(水) 19:08:09 ]
- >>660
あらま、やはり勘違いしてたみたいね。 派生クラスからでもイベントは呼べないのか。 失礼しました。 >>655はスルーして下され。
- 664 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 19:15:39 ]
- そもそもイベントって「呼ぶ」ものじゃないでしょw
英語だとInvokeとかRaiseだから「起こす」とでも言うのが正解じゃないの?
- 665 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 19:19:08 ]
- >>621 = >>661 だと思うけど反論あるなら具体例を示すべきだと思うよ
- 666 名前:643 mailto:sage [2008/03/12(水) 19:34:45 ]
- >>644 >>645
そのままでは "=>" が上手く行かなかったのですが、 string[] fileListText = Array.FindAll( fileListAll, delegate (string item) { return ( System.IO.Path.GetExtension(item).ToLower() == ".txt" ); } ); でいけました。 ありがとうございました。
- 667 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 19:43:21 ]
- 匿名メソッドほんとに冗長だな
設計時から経過措置として認識されてて,後で捨てても影響が出ないように 明示的すぎる書き方になってるのかな
- 668 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 19:46:02 ]
- >>665
ええっと、反論ってのは具体例を挙げて行うものなんでしょうか? それとも理由を添えろって言いたいの? まあいいやまず>>661で言いたかったことをはっきりしておくと、要するに >>649の前者のコードは議論の余地なく×で、これは趣味の問題なんかではないということ。 後者のコードは普通は△だが、確かにこのように書いた方がわかりやすい場合も 稀にあるかもしれないことは認める。 通常は>>650の書き方を選択すべき。 >>649の前者がダメなのは、 (1) button1_Click()が羊頭狗肉になってる。 (2) だからbutton2_Click()の処理内容が把握しづらい。
- 669 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 20:21:11 ]
- >>668
シグネチャが違うイベントの場合を示せよ。
- 670 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 20:28:45 ]
- だから,好みの問題じゃないってことだろ
判断基準は人それぞれとしても,場合によって適切に使い分けるもの
- 671 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 20:33:14 ]
- なんだよ示せよって偉そうにw
なんでこういう日本語も満足に使えないたわけってのは例外なく口調が偉そうなのかね。 シグネチャが違うってどういうこと? >>668に「通常は」と書いたつもりだけど。 EventHandler<T>と違うシグネチャのイベントを扱うのって通常かな。
- 672 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 22:02:39 ]
- >>655>>663
OnDateSelected使えって指摘は既出の通りで、 引数として渡すイベントソース・データを外部から取るのはだめ ソースはthis固定、データはコンストラクタの引数だけ外部から取って自前で生成 その例だとこんな感じ public PerformDateSelected(DateTime start, DateTime end) { OnDateSelected(this, new DateRangeEventArgs(start,end)); }
- 673 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 22:50:08 ]
- >>670
>判断基準は人それぞれとしても,場合によって適切に使い分けるもの それこそが、まさしく好みとか趣味という言葉の指し示すものである。
- 674 名前:655 mailto:sage [2008/03/12(水) 23:08:50 ]
- >>672
なるほど、勉強になった。Thx
- 675 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:15:51 ]
- >>671
普通にあるでしょ。 例えばbutton1が押された時と、textbox1上でエンターキーが押された時に同じ処理をしたい時とか。 この場合は private void button1_Click(object sender, EventArgs e) {foo();} private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) {foo;} } のように>>649の後者の書き方になるんじゃない?
- 676 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:17:25 ]
- あほ
- 677 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:30:09 ]
- ばか
- 678 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:38:10 ]
- 分布図
- 679 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 11:59:03 ]
- delegate int Hoge();
Hoge hoge; hoge += foo1; hoge += foo2; hoge(); とするとfoo1, foo2と呼ばれfoo2の返り値だけが返りますが hogeに登録されているものを個々に呼び出し それらの返り値を得たいのですが、どうやるのでしょうか?
- 680 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 12:03:34 ]
- >>679
GetInvocationListでDelegate[]を取得するとか。
- 681 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 12:09:24 ]
- >>679
素直にrefまたはoutで渡せばいいじゃん。
- 682 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 12:28:19 ]
- >>680
thx Delegateクラスのメンバ一覧見てたのに全然気が付かなかった・・・
- 683 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 16:31:24 ]
- 属性の書き方なんですが、下記の2つに違いはあるのでしょうか?
[Description("ほげほげ"), DefaultValue(false)] public bool HogeHoge {〜} [Description("ほげほげ")] [DefaultValue(false)] public bool HogeHoge {〜}
- 684 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 16:42:07 ]
- ない
- 685 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 01:14:17 ]
- Hoge hoge = new Hoge(); // 1
hoge = new Hoge(); // 2 hoge = new Hoge(); // 3 hoge = new Hoge(); // 4 hoge = new Hoge(); // 5 とやったときに1~4までのインスタンス解放を気にする必要が無いってのが ガーベジコレクト機能を持つ言語の利点という理解でよろしいでしょうか?
- 686 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 01:18:05 ]
- YES
- 687 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 01:48:14 ]
- >>671
早く答えろよ
- 688 名前:685 mailto:sage [2008/03/14(金) 01:53:09 ]
- >>686
ありがとうございました。
- 689 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 02:19:53 ]
- なんからのネイティブリソースを確保してたらアウトだけどね
- 690 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 04:06:28 ]
- private void Performed(object sender, EventArgs e)
{ 処理; } でいいじゃない。 やらないけど。
- 691 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 08:30:07 ]
- あほ
- 692 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 08:32:10 ]
- なんであほなのか詳しく
- 693 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 08:54:51 ]
- テキストを画像に変換したいのですが、
どのように処理したらいいでしょうか? また、変換後の画像の大きさ(高さ・幅)は取得できるでしょうか? 低レベルですみませんがよろしくお願い致します。
- 694 名前:デフォルトの名無しさん [2008/03/14(金) 09:06:28 ]
- >>693
> テキストを画像に変換したいのですが、 意味がわからん
- 695 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 09:12:38 ]
- GDI+
- 696 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 09:17:15 ]
- >>694
例えば「abcde」と入力したら、 abcdeと書かれた画像を生成することです
|

|