1 名前:デフォルトの名無しさん [2008/02/27(水) 18:24:40 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 前スレ ふらっとC#,C♯,C#(初心者用) Part24 pc11.2ch.net/test/read.cgi/tech/1202028267/
2 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 18:27:47 ] C#, C♯, C#相談室 Part45 pc11.2ch.net/test/read.cgi/tech/1200911737/ C♯, C#相談室 Part34 pc11.2ch.net/test/read.cgi/tech/1162467959/ 【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】 pc11.2ch.net/test/read.cgi/tech/1162950198/ Windows Live プログラミング pc11.2ch.net/test/read.cgi/tech/1188112572/ 初心者のためのプログラミング言語ガイド Part7 pc11.2ch.net/test/read.cgi/tech/1200807067/
3 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 18:30:26 ] >>950 を踏んだ人は新スレを立てて下さい。 >>950 が無理な場合、話し合って新スレ立てる人を決めて下さい。 誰も建てないので立てますた。
4 名前:前962 mailto:sage [2008/02/27(水) 18:43:58 ] >>前967 ありがとうございます。 どうしても同じスコープにするのは難しそうです、現状は大雑把なキャンセルということで満足しておくことにします
5 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 18:45:13 ] >>1 乙。 >>前スレ998 わざわざ匿名メソッドとか使うまでもなく OwnerForm.Invoke(new Action(OwnerForm.Show));
6 名前:前スレ998 mailto:sage [2008/02/27(水) 18:59:49 ] >>5 たしかにその通りですねw おかげでコードがシンプルになりました。 ありがとうございます。
7 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 19:00:52 ] パネルのどこでダブルクリックをしても同じ動作をしたいのですが、 FlowLayoutPanel.MouseDoubleClickイベントは上に何も乗っていない場所でしか起きないようです。 上に載せたコントロール全てに同じイベントを設定してあげなければいけないのでしょうか? それとも何かワザがあるのでしょうか?
8 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 19:17:32 ] >>7 俺はそのワザというのがちょっと思いつかんけど、 俺だったらPanelの子コントロールコレクションをForeachでループして 一行イベント追加の構文書いて実現するね。 3行でいけるっしょ。
9 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 19:21:06 ] >>8 !=7ですが面白い手ですね、自分は諦めてました
10 名前:7 mailto:sage [2008/02/27(水) 19:35:42 ] >>8 ありがとうございます。踏ん切りが付きました。
11 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 19:54:17 ] 質問です。 例えばデフォルトのForm1クラスのような、継承やインスタンスの生成を1度しかしないクラスがあったとした場合 クラス内メンバ全てにstaticをつけた方が良いのでしょうか? また、通常の設計などがわからず、インターネットで調べつつ色々作ってみています。 エントリポイントである以下の部分には通常手を加えるものなのでしょうか?(Program.cs) static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Properties.Form1()); } } 全てForm1クラス内で済ませているのですがどうにも不自然に感じてきています おかしなことを言っていたらすいません、それではよろしくお願いします
12 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 20:01:17 ] >>11 パフォーマンスの点ではstaticをつければ、パーマネント領域に移ってガベージコレクト対象から外れるのでいいかもね。 汎用性をとるなら、普通にメンバにしておいたほうがいいんじゃないかな。 自分は "クラス名.メソッド()" と書くとコードがシンプルになるらな迷わずstaticを選ぶね。 エントリーポイントは時に変更が必要不可欠になる事がある、そのときのために触らなくて済む限り触らない、綺麗なままにしておく。
13 名前:11 mailto:sage [2008/02/27(水) 20:04:56 ] >>12 ありがとうございます。 主要処理部分をとりあえずstaticにしておくことにしました。 エントリポイントについては把握しました。 自分の場合Form1クラスを中心に他を操作するような感じでいけばいいわけですね
14 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 20:28:00 ] staticにするとコントロールに触れないよ? だからってコントロールもstaticにするとかアホなことするくらいなら迷わずインスタンスメソッドにする
15 名前:11 mailto:sage [2008/02/27(水) 20:31:59 ] コントロールをstaticにすると何か問題があるのでしょうか? まず最初にコントロールをstaticにしてましたorz 一応色々調整してうまく動いています
16 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 20:40:21 ] デストラクタで全コントロールをDispose()すればいいんじゃね、と初心者が行ってみる
17 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 20:48:41 ] >>15 >何か問題 コードの読み手(一ヵ月後の自分だってそうだ)を無意味に惑わすのが問題。 普通の能力の読み手なら「あえて」staticにしているのには何か意味があるはずだ、 と考えると思うんだが、実際には何の意味もない(あったら教えてくれ)ってのは 大問題でしょ。
18 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 20:59:27 ] エスパーするとステータスバーだけpublic staticにするといい
19 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:10:04 ] どう「いい」のかねw
20 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:11:39 ] エスパーするとって書いてあるんだから馬鹿にするんだからどうエスパーしたかわかってるんだろうな、すごいなw
21 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:16:28 ] >>16 コントロールをstaticにしてたらGCの対象から外れるからデストラクタが呼ばれない
22 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:15:23 ] >前スレ992 2秒差で無茶ゆうなよw
23 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:25:41 ] >前スレ992 こ れ は ひ ど い
24 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:10:29 ] >>21 呼ばれるよ、アプリが終了する時までには。 実行中はガベコレの対象にならないというだけで、他にもこのパーマネント領域にはクラスのTypeのオブジェクト等がいる。
25 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:46:00 ] 匿名型で System.Collections.Generic.List は簡単に作れないのでしょうか? var tmp_array = new[] { new { Col1 = 10 , Col2 = "あ" } , new { Col1 = 20 , Col2 = "い" } , new { Col1 = 30 , Col2 = "う" } , }; var list = tmp_array.ToList(); とりあえずこんな具合に作ってみたのですが、どうにも無駄っぽい感じがします。
26 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:47:25 ] エクスプローラの左側みたいなデスクトップがルートのツリービューを作りたいんだけど そういうコントロールって無いの? TreeView使って自分で項目追加するしかないのかなあ。
27 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:01:46 ] >>26 Microsoft.VisualBasic.Compatibility.VB6.DirListBoxとか、使った事無いけどそれっぽいの出るよ。
28 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:09:57 ] >>25 var list = new[] { new { Col1 = 10 , Col2 = "あ" } , new { Col1 = 20 , Col2 = "い" } , new { Col1 = 30 , Col2 = "う" } , }.ToList(); これでいいんじゃない?
29 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:19:37 ] ひさびさにツールボックスの追加項目色々ながめてみたら結構色々よさげなの多いね 言語の壁を越えられるライブラリはすばらしい
30 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:44:49 ] C/C++で言うところのstatic修飾されたローカル変数と同様の動作をするローカル変数を定義することはできないのでしょうか?
31 名前:26 mailto:sage [2008/02/28(木) 00:45:25 ] >>27 うーん、見た目がなんか古臭いし、デスクトップがルートじゃないのも… 自分で作るしかないか。 シェルネームスペース関連のクラスって無いですよね? その辺も整備しないといかんのか…
32 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:46:31 ] >>30 静的メンバ変数じゃあかんのか?
33 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:52:53 ] >>31 Com側も探してみたら、なんか色々あるよ。 もっともComインターフェイス系のクラスは、どれも表示できても使い勝手悪そうだけど……
34 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:53:45 ] >>32 それでも実装できるんですが、一つのメソッドでしか使用しない変数なので他のメソッドにもスコープを広げるのはどうかと思いまして・・・
35 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:57:56 ] >>34 privateしかないですね、C#は、というか.NETはリフレクションという機能があって、 自分自身のコードをプログラムから覗く機能があって、スコープ概念は実質ないというか使えません。 たとえば、あるクラスにどんな変数や関数があるのかプログラム中で一覧を列挙できるんですよ。 この機能はC++では、templateメタプログラミングで代用ですね。
36 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 01:00:42 ] >>35 細かい解説ありがとうございます。privateメンバで実装したいと思います
37 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 01:20:30 ] C++でもtemplateが絡むと static ローカル変数は怖いんだよ Microsoft じゃない方の M の付く会社で作っている、なんとかリャーとかいうコンパイラは 型が違うなら別々のインスタンスにすべき所を纏めて一つだけとって重複バグをやらかしたりその反対やらかしたりと・・・
38 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 09:10:50 ] エビフリャー?
39 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 10:18:30 ] おんどりゃー!
40 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 11:33:31 ] クロージャ使えばそれっぽいことできるよ 実質メソッドごとに内部クラス定義してるのと一緒だけど
41 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 12:19:21 ] こう書くとwhileのループに捕まってしまう事があるのですが何か良い方法はありませんでしょうか? WebBrowser wb = new WebBrowser(); wb.Navigate(uri); while (wb.Url == null) { Thread.Sleep(1000); Application.DoEvents(); }
42 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 12:25:20 ] Navigated イベントとか使えよ
43 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 12:31:58 ] 今はイベントでやっているのですがイベント無しだと無理なのですね。
44 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 12:35:39 ] イベント前提のフレームワークなんだから
45 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 22:33:45 ] int a = 0; a = a++; ってやるとaの値が0のままなんだけど、これはどういう理屈? C++だとインクリメントされた値になるんだが
46 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 22:41:03 ] a = ++a;なら1になるのでは?
47 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 22:44:32 ] 馬鹿は黙っててください
48 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 22:53:38 ] 仕様に逆らって喜んでいる基地外に言われたくない
49 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 22:59:55 ] は?
50 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 23:04:04 ] a = a++; 右辺から評価されていく。 aをインクリメントし、式としてはインクリメントする前の値を返す。 すなわち a = 0;
51 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 23:06:54 ] 今時こんなバカな話がでるとは
52 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 23:31:31 ] C++とC#で挙動が違うって言うのはちょっと面白い。
53 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 23:34:08 ] C++だと未定義で動作は処理系依存じゃなかったっけ?
54 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 00:10:03 ] >>53 代入演算ですらそんな挙動するっけ? 確かに、x = f(a) + g(b) みたいなのは、f と g のどっちが先に呼ばれるか 未定義・処理系依存だったと思うけど。 C++ は思った以上に処理系依存動作多いもんなぁ。
55 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 00:34:33 ] >>45 int a=0; a++; で a=1 になるんですよ、クソガキ
56 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 00:43:03 ] >>55 そりゃなるだろ
57 名前:デフォルトの名無しさん [2008/02/29(金) 02:45:36 ] 物凄い勢いで走るスレッドがあるのですが、 ウェイトは下記のどちらが良いのでしょうか? // 1 System.Threading.Thread.Sleep(1); Application.DoEvent(); // 2 Application.DoEvent(); System.Threading.Thread.Sleep(1);
58 名前:デフォルトの名無しさん [2008/02/29(金) 02:54:39 ] 1しかあるまい
59 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 08:10:41 ] >>57 そのスレッドはUIスレッドなのか? そうじゃないならプライオリティを下げるのが常套。
60 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 08:16:15 ] >>59 くわしく
61 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 08:24:00 ] Application.DoEvent()はいらないでしょ。 これはマルチスレッド使えないVB6のDoEventsからから恐らく来てるわけで、 つまりUIスレッドでビジーループで仕事してもUIが無反応にならないように したい場合に使うわけでしょ。 つまりCドトネトでは普通は使い道はあまりないはずと思うが。
62 名前:デフォルトの名無しさん [2008/02/29(金) 11:32:24 ] Cでいうところの自己参照構造体を実現したいのですが、 どうすればよいでしょうか? <C> typedef struct hoge { long foo; struct hoge* bar; /* 自己参照 */ } hoge; →OK <C#> struct hoge{ public int foo; public hoge bar; /* 自己参照 */ } →エラー。以下メッセージ。 型 'hoge' の構造体メンバ 'hoge.bar'により、 構造体レイアウトで循環参照が発生します
63 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 11:33:56 ] 参照
64 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 11:36:01 ] 構造体じゃなくてクラスを使う
65 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 14:09:49 ] ListViewの背景をいろいろ描写したいと思って OnPaintBackgroundを継承したのですが、 背景は描写されましたがアイテムが描写されません。 背景以外は普通に描画したいのですが。
66 名前:65 mailto:sage [2008/02/29(金) 14:10:33 ] コード。 using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; class ListViewEx : ListView{ public ListViewEx(){ this.OwnerDraw = true; this.SetStyle(ControlStyles.UserPaint, true); } protected override void OnPaintBackground(PaintEventArgs e){ using (LinearGradientBrush lgb = new LinearGradientBrush(this.ClientRectangle, Color.Black, Color.White, LinearGradientMode.Vertical)){ e.Graphics.FillRectangle(lgb, this.ClientRectangle); } }
67 名前:65 mailto:sage [2008/02/29(金) 14:11:04 ] protected override void OnDrawColumnHeader(DrawListViewColumnHeaderEventArgs e){ e.DrawDefault = true; base.OnDrawColumnHeader(e); } protected override void OnDrawItem(DrawListViewItemEventArgs e){ e.DrawDefault = true; base.OnDrawItem(e); } protected override void OnDrawSubItem(DrawListViewSubItemEventArgs e){ e.DrawDefault = true; base.OnDrawSubItem(e); } static void Main(){ Form form = new Form(); ListViewEx list = new ListViewEx(); list.Dock = DockStyle.Fill; list.Items.Add("unko");list.Items.Add("unko");list.Items.Add("unko"); form.Controls.Add(list); form.ShowDialog(); } }
68 名前:デフォルトの名無しさん [2008/02/29(金) 14:17:49 ] スレッド4本上で.NET Remotingを使って10MB/100ファイルくらいを 一気に取得するプログラムを作っているのですが、高負荷になると クライアント側のWindows(2003)が毎回ブルースクリーンになって しまいます。 クライアントのハードウェアが壊れているのかと思い手持ちの3機種で 試してみたのですが、どれも同じ結果でした。 mouclass.sysなど、毎回違うところで止まっているので原因がサッパリ わかりません。
69 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 14:23:36 ] >>65 OwnerDrawのときは OnDrawItemやOnDrawSubItemで自前描画しないと駄目よ base.OnDrawItem等を呼んでもなにもしてくれないよ
70 名前:65 mailto:sage [2008/02/29(金) 14:35:03 ] >>69 そうなんだ。 e.DrawBackground()とかすればいいんですね。 となるとDrawDefaultはどういうときに使うんでしょう。 ネットに転がってるサンプルだとOwnerDraw = trueでも e.DrawDefalt = trueしてそのままになってる。
71 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 14:40:06 ] >>68 よくわかんないけど、ブルースクリーンになるのはディバイスドライバの障害だよ どこかのドライバがバグっている。
72 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 14:41:30 ] このListWiewを使うと、グラフィックソフトにレイヤー機能を持たせるのが簡単になりますか? いまグラフィックソフトを作ってますが、レイヤーごとにGraphicオブジェクトを用意してそこへ描画してるんだけど、 管理が複雑になってしまって。
73 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 15:02:23 ] >>72 フォトショップのレイヤーみたいなもの? もしそれなら、自前で作ったほうが無難な予感がするな。 未来志向ならWPFという手もあるかもしれない、使った事無いけど。(←ぉぃぉぃ)
74 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 15:04:20 ] (←ぉぃぉぃ)って何?
75 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 15:04:53 ] Paint.NETのソースコードをパクれば
76 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 15:05:15 ] 自己突っ込みでつ
77 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 15:15:03 ] pc11.2ch.net/test/read.cgi/tech/1162950198/l50 WPFあんまり流行ってないですね、チュートリアルビデオとかみるとスイスイ完成して気持ち良さそうなんですけど リファクタリングが対応してくれればもうちょっとは使い勝手もましになりそうですが、次のVSに期待ですね。
78 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 15:40:50 ] その辺よりデザイナを色々なんとかしてくれ。XAML養成ギブスとか 言われないぐらいには。 コード書いたら負けかなと思えるぐらいに柔軟なのはわかったから
79 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 15:45:20 ] MS「ないものは自分で作ればいいお」
80 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 15:55:37 ] listview.Items.Add("text").Name = ""; listview.Items[""].Selected = true; これだとエラーになるのですね。
81 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 23:36:22 ] Visual Studio2005の話なのですが、プロパティを作成すると フォームのプロパティに表示されるものとされないものがあります。 表示されるものとされないものの違いがよくわからないので教えてもらえないでしょうか
82 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 23:43:00 ] プロパティーの前に[BrowsableAttribute(false)]と書く 他にもいろいろあります、リンクの先へどうぞ。 www.microsoft.com/japan/msdn/net/general/pdc_vsdescmp.aspx
83 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 02:14:19 ] >>82 悩んでいたのは操作方法ではなく追加方法なのですが、自己解決しました。 恥ずかしいことに継承せずにプロパティを追加するだけでプロパティブラウザに追加できると勘違いしておりました。 リンク先の内容を役立てることができそうです。ありがとうございました。
84 名前:デフォルトの名無しさん [2008/03/01(土) 17:30:13 ] C#3.0になってから var キーワードができましたが、ぱっと見た目で型がわからないので、不便なんですが・・・ コーディング中に簡単に型を知る便利なテクニックとかないですかね? var instance = object.Method() ; ↑ ここにマウスカーソルを置いたら型が分るとかだったら便利なんですけど・・・出ない
85 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 17:31:05 ] >>84 VS 使ってるならそれで型分かるよ。 あと、個人的には右辺値から型が分かりにくいときはあんまり var 使いたくないなぁ。
86 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 17:32:36 ] >>84 varの上
87 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 17:39:45 ] >>86 しまった気付かなかった、そんな所に
88 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:03:19 ] using System.IO; DirectoryInfo info = new DirectoryInfo( @"C:\"); info. ← ここで候補が出てこないのは何故?
89 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:05:08 ] メソッド内じゃないからじゃね?
90 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:16:14 ] >>89 お恥ずかしい・・・
91 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 21:35:46 ] コンソールでベーマガ風のテキストベースのゲーム作ろうと思ったら どういうクラス、API使えばいいの? 80x25の配列を用意して適当に着色して■Ωとか配置してキー入力を受け付けられればいいんだけど。
92 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 21:40:52 ] Console
93 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 21:49:38 ] いい加減静的型言語の悪癖から抜けろよ varで分からなくなるってどんな変数名つけてんだよ
94 名前:デフォルトの名無しさん [2008/03/01(土) 23:07:21 ] クラスのFieldに番号を付けて、その番号のFieldを呼び出すってことがしたいのですが、 属性を作成してその属性に番号を格納してってことをしてみたところで、 属性の内容からFieldを取得する方法が分からず挫折してしまいました。 なんとかしてFieldを取得する方法はありませんか?
95 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:07:39 ] >>93 場所によっては分りにくくなることもあるべぇよ、大半問題ないけどね。 ちなみにC#の var は静的な型だよ。 var i = 0 ; と書いたら object i = 0 ではなくて int i = 0 だから。 >>91 そりゃもう System.Drawing.Graphics を使って直書きしかないね、 普通に印刷したらプロポーショナルに美しく表示されてしまいますからw 詳しい説明いるかい? 必要なら追記しましょう。
96 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:17:28 ] >>94 フィールド列挙してそれぞれの属性調べてく でも属性でやる必要あるの? インデックスを引数にとるメソッド一つ用意すればよくない?
97 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:20:22 ] >>94 ちょっと作ってみた public class MyAttribute : System.Attribute { public int IntData { get;set;} public MyAttribute(int intData) { IntData = intData ; } }; public class SumpleClass { [My(10)] public int Field = 5 ; }; void f(){ var tmp = new SumpleClass() ; var attrs = tmp.GetType().GetField( "Field" ).GetCustomAttributes( false ) ; for (int i = 0; i < attrs.GetLength(0); ++i) { var myattr = attrs[i] as MyAttribute ; if (myattr == null) continue; System.Console.WriteLine("{0}", myattr.IntData); } }
98 名前:デフォルトの名無しさん [2008/03/01(土) 23:25:54 ] >>96 インデックスですか・・・? class C { DateTime d1; int i1; string s1; DateTime d2; } って感じなのですが、 上から順番にd1には0番の値を、i1には1番の値をって代入していきたいんですよ。 objcet[] data = //データ for(int i = 0; i < data.Length; i++) { field[i] = data[i]; } というかんじが理想なんですが・・・ インデックスってのがよくわからないので詳しく教えてもらえませんか?
99 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:30:47 ] >>98 >>97 の GetField を GetFields にして、あとはアトリビュート検索して、所望のものがあったらそのフィールドに代入してくださいな。 フィールド名から代入方法が分らないなら、また書く。
100 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:31:17 ] public void SetValue(int index, object value) { switch (index) { case 0: hoge = (...)value; break; } } みたいな。つかこれくらいならインデクサでいいか。