1 名前:デフォルトの名無しさん [2008/02/27(水) 18:24:40 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 前スレ ふらっとC#,C♯,C#(初心者用) Part24 pc11.2ch.net/test/read.cgi/tech/1202028267/
802 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 22:23:41 ] ググってみたけど、Flagsでいいんじゃね? www.melma.com/backnumber_120830_2325135/ ↑C/C++の世界では、これは「ビットフィールド」とは言わんと思うけど。C#の世界では知らんけど。
803 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 22:25:49 ] >>802 の続き よく見たら、自動で割り当てるわけじゃなくて、自分で書かないといけないのか。
804 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 22:25:53 ] そのページは大嘘過ぎるな
805 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 22:27:16 ] [Flags]を付けないと、3とか5の値をとれない。
806 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 22:28:21 ] ハァ?
807 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 22:32:49 ] [Flags] public enum ABC { Z = 0, A = 1, B = 2, C = 4} [Flags]を付けないと ABC ab = A|B; でエラーになる。
808 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 23:00:19 ] ならないよ エラーになるような違いが出るんだったら属性じゃなくて言語に直接組み込まれてるだろ
809 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 23:09:29 ] (ABC.A | ABC.B).ToString()で違いが出るね やっぱりコンパイラの動作とは直接関係なくてMSとのお約束なんじゃね
810 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 23:17:53 ] そもそもそのためのFlagsAttributeなんじゃないんでしょうかw
811 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 23:35:39 ] どこが面白いのかわからない
812 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 23:40:54 ] まあさすがに自動でビットフィールドにしてくれるんだったら 属性じゃなくて flags enum ABC { … } みたいにするわな
813 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 04:02:24 ] Form1を閉じても、スレッド2が動いたままなので、 Form1を閉じたら、スレッド2を終了したいのですが、どのようにすれば良いのでしょうか?
814 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 04:32:05 ] Form1を閉じる動作のときスレッド2を終わらせる
815 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 04:54:36 ] >>814 それの書き方が分からないよ><
816 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 05:27:37 ] >>815 Form のイベント全て試す
817 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 14:19:34 ] スレッド2はループ中なんか?
818 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 14:35:03 ] form1.Closed += (obj,e) => thread.Abort(); こんなんじゃないか?
819 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 16:09:07 ] いちいちそんなんでラムダ式使うなカス
820 名前:デフォルトの名無しさん [2008/03/17(月) 16:16:57 ] smallint型のデータをSqlDataReaderを使って取得し、 int型変数へ入れるにはどうすればよいですか? List<int>へループで入れたいが 一部smallint型が ある場合に上手く出来なくて困ってます。
821 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 16:52:46 ] >>819 むしろそんなんだからラムダ式使うんじゃないかと。
822 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 17:59:52 ] >>817 そうです。break;の条件を、Form1が閉じたときとやりたいのですが、うまく行きません。 static int close1 = 0; public void Form1_Closed(object sender, System.EventArgs e) { close1 = 1; } while (close1 == 0) { //////////////時計 long tick = DateTime.Now.Ticks; DateTime d = new DateTime(tick); Console.WriteLine(d.ToString()); label8.Text = (d.ToString()); Thread.Sleep(1000); }
823 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 18:33:40 ] >>822 >label8.Text = (d.ToString()); GUIスレッド以外からフォームにアクセスしちゃダメ。 close1をvolatileにするか読み書き時にlockする。 BackgroundWorkerの使用をすすめる。
824 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 18:47:22 ] そもそもTimerじゃいかんのかと思ってしまうサンプルだ
825 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:11:01 ] >>821 ぶわぁか、こんなんでC#3.0にしてどうする。 せめて匿名メソッドだうんこ。
826 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:12:46 ] >>825 匿名メソッドは面倒だよ。 なげーもん。ラムダ式使ったら2.0には戻れんね。
827 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:14:33 ] C#やめてRuby(笑)でもやってろモルモン。
828 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:17:24 ] 言語の進化についていけない落伍者か Cでもやってりゃいいのに
829 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:26:29 ] C++から来てるとλ式とかは読みにくいな
830 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:40:15 ] 僕はくもん式上がりなのでλ式は余裕です。
831 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:43:04 ] C++もそっちの方向でしょ
832 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:44:34 ] C++にラムダ式が加えられても落伍者達はわからんわからんとぼやくんだろうな
833 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:59:52 ] すみませんλって言いたいだけみたいなのですぐに回収します λ......
834 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:01:55 ] λ式は書けても高階関数は書けないんでしょ?
835 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:05:56 ] 書けるに決まってるだろ
836 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:08:03 ] Enumerableクラスなんか高階関数のお花畑
837 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:28:33 ] >>829 俺、C#よりC++をよく使うが、ラムダ式が羨ましくて仕方ないんだが。
838 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:37:26 ] ここ1年ずっとC#使ってきたらC++書くのがきつくなった・・・
839 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:39:29 ] すみません、質問いいですか? FileSystemWatcherってありますよね? あれ凄くイヴェントを取り逃がすような気がするんですけど皆さんどうですか? 使い方がおかしいんでしょうけど、どうおかしいのかすら判りません。 例えばDeletedイベントハンドラってPathで指定したディレクトリ内の Filter指定したファイルが消されると発生するんですよね?
840 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:41:06 ] っていうか、ラムダ式って所詮、匿名デリゲートの焼き直しなのに何をそんなに目くじらたてるんだろう。 おまけで式木に変換される機能がついたけど、普通に使う分には匿名デリゲートにしかならない。 今思えば匿名デリゲートの記法を delegate(...){...} にしたのが失敗で、 先にラムダ式を導入していたらこの記法は絶対導入しなかったって中の人も言ってるくらいなのに。
841 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:41:50 ] イヴェント
842 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:45:54 ] 1.匿名メソッドを理解、使えるようになる 2.ラムダ式の便利さに気づく 3.ラムダ式は式木でも書けることに気づく 4.もっと複雑な式木を書きたくなる 5.某カッコだらけの言語の存在を知る 6.某カッコだらけの言語の奥深さを知る 7.某カッコだらけの言語で悟りを開く
843 名前:デフォルトの名無しさん [2008/03/17(月) 20:50:17 ] C#である変数を宣言するときに、アドレスを指定するにはどうすれば いいですか? また、アドレスから値を得るにはどうすればいいですか?
844 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:55:07 ] アドレスを指定するって何だよ 変数のエイリアスはつくれねえぞ
845 名前:デフォルトの名無しさん [2008/03/17(月) 20:58:40 ] すいません。。。 質問しなおします。 ある変数Aのアドレスが分かっているとしたとき、アドレスから変数A の値を取得するにはどうすればいいでしょうか?
846 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:59:40 ] >>840 >>825 >>839 InternalBufferSizeを増やす。
847 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 21:25:22 ] >>845 アドレスってどういう意味で言ってんの? *(int*)address まさかこういうことじゃないよね
848 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 21:27:32 ] >>845 unsafeでぐぐれ
849 名前:845 [2008/03/17(月) 21:39:03 ] >847-848 アドバイスありがとうございます。 変数につけられたメモリ上での番号のことを言っています。 簡単なコードを示していただけませんか? 例えば、メモリアドレス1000の値を取得したり、代入する場合など。。。 お願いします。
850 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 21:39:20 ] >839 explorerでけすと、ごみ箱へのMoveだから見逃す、というオチじゃないの?
851 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 21:39:39 ] unsafeつけるとCと変わらない書き方ができる
852 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 21:46:21 ] >>849 int a = 123; int addr = (int)&a; int aValue = *(int*)addr; こういうこと? 超危険なだけで何の意味もないからせめて普通にポインタ使えよ
853 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 21:57:22 ] 1つ値を読み取りたいだけなら、Mashal.Read*メソッドがお手軽かもしれない。
854 名前:845 [2008/03/17(月) 22:02:57 ] >>852 アドバイスありがとうございます。 示していただいたコードで、変数のアドレスを取得することができました。 しかし、アドレス1000に対しての代入?についてはまだ疑問が残ります。。。 849の繰り返しになりますが、例えばメモリアドレス1000に格納されている データを取得するにはどうすればいいでしょうか? また、メモリアドレス1000に値を格納するにはどうすればいいでしょうか?
855 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 22:10:11 ] 釣りだろjk そんなことをする必要はないし する必要があるならC#を使うはずがない
856 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 22:11:06 ] >>854 実際にこんなことやろうとしても、 割り当てられていないメモリを読み書きしようとしたとして、 OSに止められるだけだからな。 int* p = (int*)10000; int x = *p; *p = 666; int x = Marshal.ReadInt32((IntPtr)10000); Marshal.WriteInt32((IntPtr)10000, 666);
857 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 22:13:37 ] どうせ構造体のポインタが欲しいだけとエスパー
858 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 22:16:57 ] >>852 見て>>856 が思いつかないならポインタなんか触るべきじゃない
859 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 22:18:32 ] つかC#でポインタ使うとこってどこ?
860 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 22:25:08 ] Interopとか画像処理とか構造体の配列触るときによっぽどパフォーマンスが大事なときとか
861 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 23:56:57 ] >>854 勘違いしてない? ここはC♯(シーシャープ)という言語のスレだぞ。 もしかして学校の宿題なら、それは、CとかC++という言語じゃなかったか?
862 名前:822 mailto:sage [2008/03/18(火) 00:38:27 ] >>818 ,823-824 レスサンクス 明日試してみる。
863 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 02:36:23 ] 多次元配列は使いそうだけど、ジャグ配列って使わないよな? 覚えるのめんどくさいんだが・・・
864 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 02:40:27 ] >>863 Cから来たら無意識にジャグの方を使う。
865 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 02:42:29 ] >>864 ・・・まじかよ、じゃあ素直に勉強するわ d
866 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 02:46:24 ] いや勉強するもなにも 宣言と要素アクセスのやり方だけ知ってりゃいいんじゃん ジャグのほうは単なる配列を要素とする配列ってだけの話だし 無意識に使われるジャグ配列って「ジャグ」じゃなくね?
867 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 03:09:39 ] List<int[]> lst = new List<int[]>(); //動的に配列を追加していくループ for(...){ lst.Add(....); } int[][] jag = lst.ToArray(); 格納される配列の要素数が動的に変化するような場合とかもあるし、 ジャグのが柔軟。
868 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 03:56:09 ] 普通ジャグにしね? ジャグじゃないとN次元配列が書けんし
869 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 04:30:05 ] そんなことはない。
870 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 06:30:03 ] ジャグ配列ってすごく使いにくいぞ
871 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 07:46:45 ] パフォーマンスはジャグの方が全然良いけどな。
872 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 09:16:17 ] 使いにくさで言うと断然多次元配列だと思うけど Sortメソッドも使えない
873 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 09:24:21 ] 多次元配列よりジャグの方が直感的なんだよな。気がついたらジャグで作ってることが多い気がする。 初期化するときも使用するときも、機械的にいつも似たようなfor文で処理できるし。 >>871 すごく初耳。
874 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 09:50:02 ] >>873 rectangular の方は a[i, j] → *(a + i *WIDTH + j) jagged の方は a[i][j] → *(*(a + i) + j) 相当で、一見 rectangular の方が早そう(間接参照よりは掛け算の方が軽い)だけど、 1次元配列の参照は IL が専用命令持ってるけど、 多次元配列参照命令がない関係で jagged の方が早いって聞く。 jagged 配列の方が柔軟だけど、new しまくらないといけないのが面倒なときもあるのよね。
875 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 11:40:01 ] ジャグ配列の方が速いのは一番右の添え字が連続したアクセスの場合だけだったような
876 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 15:44:04 ] メインフォームにおいて、文字キー T とか Y のkeyPressイベントを起こすにはどうしたらいいんですか? private void MainForm_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { } の中に記述してもイベントそれ自体が発生しないんですが・・・
877 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 16:07:50 ] フォーカスがないだけだろ
878 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 16:08:47 ] >>876 そのイベントハンドラはちゃんとイベントにバインドしてあるのか
879 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 16:23:40 ] KeyPreview
880 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 16:56:20 ] get,setの利点が不明(C#2.0) public string Hoge{ get{ return this.hoge; }} こう書くと public string getHoge{ return this.hoge; } と書くのに比べて何が幸せなんだぜ?
881 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 17:12:21 ] Console.WriteLine(Hoge); Console.WriteLine(getHoge()); あと,リフレクションとの相性
882 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 17:14:58 ] しりあらいず
883 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 17:22:10 ] リフレクションというかコンポーネントモデルやな。PropertyDescriptor。 …ヘジは1.0からこの辺のものを第一言語要素にする点こそ重要って 言ってた気がするがスルーされっぷりが可哀想というか
884 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 17:26:51 ] getHogeがメソッドでないから、きっと記述方法のことを言ってるんだとエスパー 括弧なしのgetHogeでHogeプロパティ作れと プロパティとアスセサ(メソッド)の違いについてならそういう風に書くだろうし
885 名前:デフォルトの名無しさん [2008/03/18(火) 17:35:12 ] iPod touchみたいな慣性付きスムーズスクロールはどうやるのでしょうか? そもそも普通のスムーズスクロールはどうやるのでしょうか
886 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 17:40:07 ] 以下のプログラムから出力される数字を、 wavファイルにするにはどうすればいいでしょうか。 #include <iostream> #include <math.h> using namespace std; const int rate=44100; int p(double q, int f, int t) { const double pi=3.1415; double x; x=sin(2*pi*f/rate*q); cout << int(x*127+128+0.4999); cout << "\n"; if (f<t) p(q,f+1,t); return 0; } int main(void) { p(440.0 , 0, rate); return 0; }
887 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 17:44:02 ] ごめ。 c++スレかと思った・・忘れてください
888 名前:デフォルトの名無しさん [2008/03/18(火) 19:03:44 ] PictureBoxを使って、 Font font = new Font(fontName, size); g.DrawString(code, font, Brushes.White, 0, 0); で、1文字描画します。 この時描画した文字の幅を求める手段を教えてください。
889 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 19:07:52 ] MeasureString
890 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 21:09:56 ] WebColorConverterのインスタンスを取得するにはどうするのが正しいの? MSDNにはTypeConverterのインスタンスは直接作らずにTypeDescriptorを使えと書いてあるけど TypeDesctiptor.GetConverter(typeof(Color))だとColorConverterが返ってきてしまう
891 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 22:07:38 ] 今でも>>886 のことが忘れられない…
892 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 22:24:13 ] 宇宙仮面のC#プログラミングってサイトの、ED が点滅するボタンのページ >次に、ツールバーのカスタマイズにより、コンパイルしたアセンブリーをツールバーに登録します。 ってどういうこと? ツールバーのユーザー設定? コンパイルしたアセンブリーって項目があるってこと?
893 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 22:33:46 ] 事故解決しましたごめんなさい
894 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:02:56 ] class A<T> { ・・・ } とあるとき、Tの型をAのクラスの外から調べて使っていく便利な方法があったら教えてください。 リフレクションを使えばなんでもできますが、できれば使用したくないです。 C++ では class A<T> { typedef T ElementType ; } とできたので話は簡単だったんですが・・・ #VBのLinq to XMLが便利すぎ〜〜〜〜ぐはぁぁぁぁ #ヘジたぁぁぁん
895 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:05:32 ] dateTimePickerをパースして1日追加して表示しようとしているのですがなりません 何か勘違いしているのでしょうか? DateTime dt = DateTime.Parse(dateTimePicker.Text); dt.AddDays(1); lvi.SubItems.Add(dt.ToShortDateString());
896 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:11:38 ] >>894 なにがしたいのかわからんけど class A<T> { public Type ElementType = typeof(T); } こんなんじゃだめなの?
897 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:11:49 ] >>895 勘違いでーす DateTime dt = DateTime.Parse(dateTimePicker.Text); dt=dt.AddDays(1); lvi.SubItems.Add(dt.ToShortDateString());
898 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:13:29 ] >>896 それだと、 A.ElementType inst = new A.ElementType(); とかできなくて不便なんですよ。
899 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:19:26 ] >>898 じゃあ void Method<T>(A<T> a) where T : new(){ T item = new T(); } こうじゃねえの
900 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:24:16 ] >>898 A<T>にこんなメソッド追加すれば public T CreateElement() { return new T(); }
901 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:27:08 ] >>899 それもちょっとなんですよね、全部のメソッドについてやらないといけなくて、場当たり感が・・・ C#に移ってみたもののC++とは勝手が違って難しいです、逆にC#では意外とあっさりできる物なども多いのですが。
902 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:28:39 ] >>897 ありがとうございます。 盲目でした・・・。