1 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 02:19:33 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 前スレ ふらっとC#,C♯,C#(初心者用) Part38 pc11.2ch.net/test/read.cgi/tech/1235864730/
558 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 20:19:28 ] アドレス参照って誤解を言い方を止めろ 参照渡しと値渡しだ 参照型は指定しない限り常に参照のコピーを取るだけ 値型は常に値そのもののコピー
559 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 21:23:16 ] >>558 参照渡しと値渡しと 参照型と値型は別物ぞよ
560 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 21:33:54 ] >>559 そうですね^^;
561 名前:554 mailto:sage [2009/03/30(月) 22:48:41 ] >>555-556 ありがとうございます。 独自の例外を作って、tryは今まで通りusing全体を囲うのが一番シンプルになりそうですね。 独自の例外なら問題なくcatchで切り分けられるし。
562 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 05:00:24 ] すみません、質問いいですか? 例えばラベルをある数だけ生成したい場合コントロールの名前はどうつけたら いいのでしょうか? デザイナで置くとlabel1とか自動で付きますよね forループで廻すとなるとどうするのでしょうか・・・
563 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 07:28:59 ] 意味不なんだがエスパーすると。 forループの中でコントロールを自分で作る。
564 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 07:55:10 ] こういうことをやりたいのか? for (int i = 0; i < 100; i++) new Label() { Name = "label" + i.ToString() }
565 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 08:04:16 ] まさにそれです 自己解決しました
566 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 14:40:25 ] まさにそれですって …自己解決ちゃうやん
567 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 15:22:21 ] ワロタ
568 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 18:50:25 ] ttp://msdn.microsoft.com/ja-jp/library/ms747027.aspx ここの「コードを使用してイメージをレンダリングする方法」(一番下のソース)を実践したいのですが、 WPFアプリケーションプロジェクトに貼り付けただけではウィンドウに表示されません。 (貼り付ける場所がおかしいのだと思いますが…。) どういう風に書けばいいのか教えてください。 VSC#2008Expressを使ってます。
569 名前:デフォルトの名無しさん [2009/03/31(火) 23:52:30 ] .NET 2002(C#) で FTPクライアント処理を実装したいのですが、 おすすめのライブラリはありますか?
570 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 00:01:53 ] 質問です。 埋め込んだリソースファイル(WAVE)を指定した場所に直接コピーしたいのですが どのように記述したらできるのでしょうか?
571 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 00:08:08 ] ストリームを直接ファイルストリームに出力すればいいんでね?
572 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 01:22:06 ] >>569 市販の?
573 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 01:24:51 ] >>569 basp21はどうよ?
574 名前:デフォルトの名無しさん [2009/04/01(水) 01:40:38 ] すいません。質問です。 フォームにデザイナで追加したコントロールには、何か、インデックスのようなものが割り振られてたりはしないのでしょうか? 自分はボタンをデザイナで一個一個大量に配置してしまったのですが、 それをプログラムコードから利用するときにめんどくさくて大変です。 最初から配列でとっておけばよかったと今では後悔していますが、 今からでも添え字があれば、それを元にエレガント且つ簡潔にコードからの利用が可能になるはずです。 誰かうまいやり方など知ってる方がいらっしゃいましたらお教えくださいませ。
575 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 01:53:07 ] 作り直せば?
576 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 01:54:17 ] 自分で配列に入れるコードを書けばいいじゃん。
577 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 01:56:21 ] >>574 >フォームにデザイナで追加したコントロールには、何か、インデックスの >ようなものが割り振られてたりはしないのでしょうか? ない プログラム内で配列でコントロールを生成して使ったことがある。
578 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 02:04:02 ] Control.Controls
579 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 02:09:20 ] なんと、そんなのが有ったのか・・・>>577 のないは訂正だ。
580 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 02:47:59 ] 類似質問ですが グループボックス内にテキストボックスやプログレスバーなどが沢山あり それを実行時にグループボックスごと追加する場合 ユーザー定義コントロールを作ってnewするのがいい方法なのでしょうか? 又、その場合ユーザー定義コントロールの作り方が良くわかるサイトなどご存知ないでしょうか? 宜しくお願い致します。
581 名前:デフォルトの名無しさん [2009/04/01(水) 03:10:49 ] 574っす。 >>575-579 ありがとやんした!!
582 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 03:43:54 ] >>569 uwa.potetihouse.com/library/tkfpdll.html とか
583 名前:568 mailto:sage [2009/04/01(水) 03:53:22 ] 別のスレで聞いてきます。どうも〜
584 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 06:23:48 ] 質問です。 今使用しているアンマネージDLLに int WINAPI hoge(float *p, int size); のような関数があります。 float *pは呼出元で確保した配列のポインタなのですが、16バイトアライメントされている必要があります。 C#でアライメントを考慮した配列を確保する方法などあるのでしょうか?
585 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 07:28:15 ] [StructLayout(LayoutKind.Sequential, Pack=16)] struct Test { データ }
586 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 09:21:18 ] yield の使い道って何かあるのでしょうか? なんとなく気になって@ITとか見てみたんですがなんかわかりづらい・・・・ わかりやすい解釈のページとか教えていただけると助かります。
587 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 09:30:26 ] 列挙処理書くならかなり便利なんだけど。
588 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 09:36:26 ] >>587 そのような記述を多く見るのですが・・・orz いかんせん読解力が無いようで・・
589 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 09:40:11 ] >>588 今は大抵 LINQ の標準ライブラリであらかた機能がそろうけども、 特定の条件だけ満たす要素を取り出したり、 特定のプロパティの値を取り出すような関数書いてみ。 それも、いったん new List() するんじゃなくて、遅延評価で。
590 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:00:47 ] >>588 すべてを終えるには時間のかかる処理をしながら、条件を満たした項目から表示していくプログラムを作れば理解できるよ 記憶領域を使わないですむし、演算の終わった項目から並列処理にかけたりできるしね
591 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:02:48 ] yieldは別に速くはならないだろ
592 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:06:41 ] >>589-590 ありがとうございます。 そういう条件でちょっとサンプルでもつくってやってみます。
593 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 12:20:42 ] >>586 こんなのはどう? msdn.microsoft.com/ja-jp/events/dd283187.aspx
594 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 12:45:17 ] 最近更新してないと思ったらやはり板移転検出してた・・・
595 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 13:12:07 ] >>593 情報ありがとうございます。 こういう使い方が出来ると言うことなんですね。 確かに >>599 が言うように >特定の条件を満たす要素を・・・ というのはその通りかと 処理がそれを呼び出す側ですっきりしそうです。 使い道が少しですがわかった気がします。 タイミングさえあれば今度どこかで実装してみようと思います。
596 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 13:26:44 ] 質問ですが、 aspxでファイルにResponse.Redirect(ファイルURL)でダウンロードさせてるんですが、 複数ユーザの同時アクセス数を制限するにはどうしたらいいのですか? 例えば上限を10にしておいて同時アクセス数が11になったらエラーページに飛ばすみたいな。 static Queue _queue = new Queue(); static object _lock = new object(); page_Load() { lock(_lock) { if(_queue.Count > 10) Response.Redirect(ErrorPage); _queue.Enque(new object()); } try { Response.Redirect(DownloadURL); } finally { lock(_lock) { _queue.Deque(); } } } こんなんしか思いつかないんですが・・・ 定石みたいなのあるのでしょうか。
597 名前:596 mailto:sage [2009/04/01(水) 13:32:33 ] >>596 に追加で ダウンロード時間を30秒と決め付けて finally句でDeque前に Thread.Sleep(30 * 1000);
598 名前:596 mailto:sage [2009/04/01(水) 14:44:42 ] Sleepじゃ駄目だ〜(T_T) あと DequeueのlockとEnqueueのlockでデットロック起こしてる〜(T_T) ってワケで作り直し。 private volatile static Queue _queue = new Queue(); protected void Page_Load(object sender, EventArgs e) { if (_queue.Count >= 10) { Response.Write("混雑してます 同時アクセス数" + _queue.Count); Response.End(); } _queue.Enqueue(new System.Threading.Timer(new TimerCallback(tmr_Tick), null, 10 * 1000, System.Threading.Timeout.Infinite)); try { Response.Write("同時アクセス数" + _queue.Count); Response.End(); } finally { System.Diagnostics.Debug.WriteLine("finally"); } } private static void tmr_Tick(object state) { _queue.Dequeue(); System.Diagnostics.Debug.WriteLine("Deque Count" + _queue.Count); }
599 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 14:50:04 ] それでできる? 俺なら、外部(データベースとか)に、接続数を保持しとくな。
600 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 15:21:19 ] 共有リソースへのアクセス数を制限するならセマフォ使えばいいしょ
601 名前:596 mailto:sage [2009/04/01(水) 17:28:08 ] >>600 セマフォ使ってみました。 5スレッドまで。1秒待っても駄目だったら混雑中。 private volatile static Semaphore _pool = new Semaphore(0, 5); static Default() {_pool.Release(5); } protected void Page_Load(object sender, EventArgs e) { if (!_pool.WaitOne(1000)) { Response.Write("混雑しています。"); Response.End(); } try { Response.Redirect(URL); } finally { Thread t = new Thread(() => { Thread.Sleep(10 * 1000); int cnt = _pool.Release(); System.Diagnostics.Debug.WriteLine("cnt " + cnt);}); t.Start(); System.Diagnostics.Debug.WriteLine("finally"); } } }
602 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 20:35:20 ] 初心者なので、用語の使い方を間違っていたらすみません。 良く経験の長い方のレスなどを見ていると フレームワークを拡張するというような記述がありますが 具体的にはどのようなことをいうのでしょうか。 フレームワーク内で既に定義されているクラスを 継承して拡張した自分なりのクラスを持っているという理解で正しいでしょうか。 また、拡張したフレームワークを使用してアプリを作った場合 そのアプリは、拡張されていないフレームワーク上ではキチンと動作しないものなのでしょうか。 よろしくお願いします。
603 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 20:52:15 ] フレームワークの拡張という言葉はあまり使わない気がする フレームワークってのは、機能を簡単に使えるようにした壮大なライブラリ(クラス)群で、 料理で言うところの味噌や醤油のような調味料の集まりみたいなもの。 この調味料を継承して拡張して機能を自作で追加すると、 パスタにかけるだけで美味しいパスタができるというトマトソースを作ることができる。 フレームワーク(調味料)さえあれば、トマトソースのできる調味料が揃っているので 作ることはできるけど、レシピは教えてあげないと作れない。 そのレシピはdll(ダイナミックリンクライブラリ)といってレシピの集まり。 これを配布してあげることで、同じフレームワークを持っているPC上であれば、 どれもおいしいトマトソースのパスタを作ることができるという感じ。
604 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 20:56:44 ] 一般的な意味での「フレームワーク」と、.NET Framework は違う層だから、 そこは気をつけてね。
605 名前:602 mailto:sage [2009/04/01(水) 21:12:05 ] 言葉から、フレームワークそのものを追加・変更するような想像をしていたんですが 独自に拡張したクラスライブラリを作成するということだったんですね 納得いきました。ありがとうございました。
606 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 21:55:48 ] 横槍だけど フレームワークはライブラリより広義の「手法」的な意味だとおもうんだぜ? 機能群はライブラリで,(利用法とか運用法も含めた)方法論的な意味でフレームワークって良く使う
607 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 22:31:43 ] >>601 横ですが、Semaphoreはそうやって使うんですね 参考になりました
608 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 17:10:51 ] 階層が深くて扱いづらいintの変数に別名を付けるにはどうすればいいんですか? int a = bbbb.ccccc.ddddd; とすると値のコピーになりますよね これを参照にしたいんです
609 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 17:26:33 ] usingだめ?
610 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 17:29:35 ] それクラスの外に書くやつですよね クラスで管理したいです
611 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 17:31:13 ] 調べようぜ少しくらい ttp://msdn.microsoft.com/ja-jp/library/yh598w02(VS.80).aspx
612 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 17:33:15 ] ワラタ
613 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 17:33:15 ] そういうものが必要になることじたい何かおかしいのだが、 プロパティにしたらどう? int A { get { return bbbb.ccccc.ddddd; } set { bbbb.ccccc.ddddd = value; }}
614 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 17:37:26 ] unsafeだめ?
615 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 17:39:03 ] >>611 そっちか。それだめです期限付きでその中ではコピーされますよね 参照がいいです。
616 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 17:45:36 ] ・・・・・・(;´∀`)
617 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 17:47:43 ] だからunsafeつかって好きにかけや
618 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 18:55:39 ] FontDescriptionという構造体を呼び出すときに fd = new Microsoft.DirectX.Direct3D.FontDescription(); としているんですが 次のエラーが出てしまいます 次のメソッドまたはプロパティ間で呼び出しが不適切です: 'Microsoft.DirectX.Direct3D.FontDescription.FontDescription()' と 'Microsoft.DirectX.Direct3D.FontDescription.FontDescription()' ビルドしてみるとエラーがあるにもかかわらず問題なく動いているようです これはどうすればいいんでしょうか
619 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:04:06 ] 質問です。 class HogeCollection : IEnumerable<Hoge> のように、IEnumerable<T>を実装したコレクションのインスタンスがあるのですが、 そこから動的にHogeの型を取得するにはどうすればよいのでしょう?
620 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:08:24 ] リフレクション
621 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:12:26 ] GetType().GetInterfaces().First(i => i.Name == "IEnumerable`1").GetGenericArguments()[0] かな もっといい方法もありそうだけど
622 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:17:47 ] >>613 それも値がコピーされて格納されるじゃん 一瞬でも複製を作りたくないんだけど ほんとに引数にref指定してその中だけで使えるように渡すしか値型を参照で保持する方法はないの?
623 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:20:37 ] >>621 Nameを使うと誤判定の可能性があるので、 オープンジェネリック型を使った方がいいな GetType() .GetInterfaces() .First(i => i.GetGenericTypeDefinition() == typeof(IEnumerable<>)) .GetGenericArguments()[0]
624 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:24:10 ] structのこといってんの? 一瞬でもコピーされるのの何が問題なのかわからんから答えようがないよな
625 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:24:38 ] >>620-621 ,623 なるほど!ありがとうございました。
626 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:26:40 ] unsafeでポインタでFA
627 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:27:44 ] unsafe対応してないの!
628 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:28:37 ] すまんunsafeしかないってことか 構造を変えるわ、あきらめたthx
629 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:31:21 ] >>622 初心者スレに行って質問の仕方から勉強しなおしだな
630 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:40:56 ] >>622 それくらいの余計なコピーの作成くらい、実行時には最適化で消えると思うよ。
631 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:43:19 ] もしかして、複数スレッドから読み書きされるからコピーされると困る って話なのか?
632 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:51:16 ] たぶん異なるスレッドから見てるんでしょ 関係ないけど 参照でコピーしても、そのポインタを保持してるんだからメモリの節約にはならないんだっけ?
633 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:53:22 ] ただ呼び出しがめんどいってだけじゃね?最初の質問からすると。 最後にまた代入すりゃいいじゃんって思うけどねw んで質問ですけど、unsafe使って問題になることって何ですか? unsafe内のコードに問題が無いという前提で。
634 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:56:39 ] 関数の引数でref使う方法もなくはないけど、 aliasをサポートする別の言語を使うしかないな。C++/CLIで何とかならなかったっけ? C#でもこういう裏技はあるけど正直おすすめしない。 int hoge = 0; TypedReference tref = __makeref(hoge); __refvalue(tref, int) = 5; Console.WriteLine(hoge);
635 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:57:31 ] >>633 >unsafe内のコードに問題が無いという前提で。 その前提が"成り立つ事を保障できない"事こそが最大の問題だと思うのだけど
636 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 20:01:34 ] インテリセンスではエラー波線でないんですが、 オブジェクト参照がオブジェクト インスタンスに設定されていません。 というエラーが出るのですが、なんでですか?
637 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 20:02:41 ] オブジェクトがnullなのにメソッドを呼び出したかなんかしたんだよ
638 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 20:04:35 ] 宣言時に値は入れてるんですが、起動時の順番が問題で宣言がまだ見つからないってことですか?
639 名前:デフォルトの名無しさん [2009/04/02(木) 20:06:40 ] 入れてると思ってるだけで入ってないんだよ ぬるぽってやつだよ
640 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 20:07:40 ] ∧_∧ ( ・∀・) | | ガッ と ) | | Y /ノ 人 / ) < >__∧∩ _/し' //. V`Д´)/ (_フ彡 / ←>>639
641 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 20:09:10 ] pub class a pub int data = 500; pub class b pub int data; pub b(a aa) { data = aa.data; } でdata = aa.data;でエラーでるんです
642 名前:デフォルトの名無しさん [2009/04/02(木) 20:10:40 ] aaがnullなんだよ
643 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 20:11:31 ] >>635 そりゃそうなんだけど、それ以外にもなんかあるのかなーと思ったけど それ以外ないわな。unsafeは使用禁止とか普通にあるだろし 今回の参照の件とかはそれほど問題にする意味もないのかなと考えてたけど まぁunsafeなんだし、使わなけりゃ一番問題ないな
644 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 20:14:19 ] >>642 ありえないです。class bをaaを渡してnewした時初めてthis.dataに入れようとしますよね ここでエラーになるってことはaaは入ってるんです
645 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 20:17:31 ] ブレークポイント設定してaa.data;のところにカーソルあててみなよ aaがnullになってるから
646 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 20:20:49 ] nullになってました 自信あったのにショックです ありがとうです
647 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 20:28:51 ] エラーが出てるけど、自信があるのでデバッグしません!
648 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 20:29:49 ] >>634 ref 使う方法。変態のきわみだ。 delegate void Alias(ref int i); static void Main() { int bbbb_ccccc_ddddd = 0; ((Alias) delegate(ref int i) { i = 98765; })(ref bbbb_ccccc_ddddd); Console.WriteLine(bbbb_ccccc_ddddd); }
649 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 20:30:21 ] 事前にエラーがわかる静的言語は便利なことがよくわかるよな 特に初心者の人にとっては
650 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 21:09:57 ] 構造体の初期化はどうかけばいいのでしょうか Vector3 a = {0.0f, 0.0f, 0.0f};
651 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 21:12:41 ] コンストラクタが使えるだろ
652 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 21:12:52 ] Vector3 a = new Vector3(0.0f, 0.0f, 0.0f);
653 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 21:13:05 ] 構造体内にコンストラクタを書いてそこで初期化
654 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 21:18:52 ] thx!
655 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 21:20:18 ] >>633 部分信頼とかセキュリティ上の理由でunsafeコードを実行させてくれない仕組みに引っ掛かるとか。
656 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 21:24:22 ] struct Data { int a, b, c, d, e......; } class Cupsel { Data data; }
657 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 21:49:48 ] >>655 はーなるほど。そういう仕組みがあったのねぇ セキュリティポリシーによるようだね。通常はローカルだと問題ないのかな 今までなんも考えなかったわ。ありがとう
658 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 23:01:07 ] System.Drawing.Graphics g = Graphics.FromImage(backBuffer); g.Clear(Color.Black); g.DrawImage((Image)image, new Point()); Graphics.FromHwnd(panel1.Handle).DrawImage((Image)backBuffer, new Point()); WinFormsで、高速に、ちらつかせずに画像表示をさせたいんですが どうやるのがいいんでしょうか? 描画するまで画面を更新されないようにするやり方がわかりません・・ それと、加算合成とかをするにはDrawImageでは無理そうですがどうすれば。
659 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 00:02:18 ] ちらつき防止はコントロールのDoubleBufferedでいけるんじゃないの? あと、Graphics.FromHwnd(panel1.Handle)よりもpanel1.CreateGraphics()のほうが普通だと思う。
660 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 00:02:33 ] >>634 話は戻るが、そこでusingだ。
661 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 00:05:46 ] >>618 分かる人いませんか?
662 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 00:26:07 ] 何だろう。よく分からんけど、バージョン違いのアセンブリを参照してるとか? 参照設定はどうなってる?
663 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 01:02:12 ] >>660 usingディレクティブの別名は名前空間と型名だけだったと思うが、 質問者は変数の別名が欲しいといってるんじゃないのかな?
664 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 01:23:36 ] >>662 DirectX関係で参照してるのは DirectX Direct3D Direct3DX DirectInput DirectSound です Direct3DXのバージョンは1.0.2911.0で他のものより新しいのを使ってたんですけど バージョンをそろえてみても同じエラーが出ます
665 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 02:44:15 ] >>664 CS0121? msdn.microsoft.com/en-us/library/ky5f1hz8.aspx どうやらオーバーロードなどをしていて,複数の選択肢が暗黙的な型変換で,動作が決定不能になる時に発せられるらしい. 状況によって変わってくるから,他の部分で名前と名前,型と型がバッティングしていないか確かめてみたら? あと,なんだか Microsoft.DirectX.Direct3D.FontDescription で検索すると,成功している人が少ない雰囲気.
666 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 07:06:03 ] アクセス制限機能つきのアプリを作りたいです。 ユーザ権限やパスワード管理機能つけたいんだけど、 一から作るしかないですか? .NET Framework 2.0 ならいいライブラリがありそうだけど見つけきれません。。。
667 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 07:51:41 ] 使ったことないけど、System.Security名前空間から適切な制限を見つけてDemaidメソッド呼び出せばいいんじゃね?
668 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 10:34:17 ] System.Windows.Form.WebBrowserをIE8に変更できませんか? OSのIEは8に更新しました Vista + VS2008 です
669 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 10:41:42 ] >>668 更新した時点でもうなっとるがな。
670 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 15:13:53 ] windowsアプリで自動アップデート機能をつけようと思うのですが Program Files以下のファイルを更新するときは 管理者権限が必要ですよね。 Vistaの場合管理者でログインしても 普通にアプリを実行するとWindowsPrincipalはUserになっちゃいますよね。 右クリックで管理者として実行を行わないと 管理者権限で実行されませんよね。 そのため自動アップデートによるアップデートができないと思うのですが、 世に出回っているVista対応アプリはどうやって対処しているのでしょうか?
671 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 15:18:24 ] >>670 UAC の昇格をしてるでしょ。
672 名前:668 mailto:sage [2009/04/03(金) 15:21:40 ] >>669 さん 確認くんで調べたらIE7のままなんです
673 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 15:25:11 ] >>672 その結果を貼り付けてみ。互換モードになってるとかの落ちじゃないよね?
674 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 15:41:32 ] IE8 WebBrowser Control で検索したらすぐに答えが出てきたぞ ttp://blogs.msdn.com/ie/archive/2008/03/18/webbrowser-control-rendering-modes-in-ie8.aspx
675 名前:670 mailto:sage [2009/04/03(金) 16:08:08 ] >>671 ユーザが意図的に管理者として実行をして、 昇格をしてもらわないとアップデートできないので、 世に出回ってるアプリはどう対応してるのかということを質問しています。 普通に実行したときはバージョンアップの通知だけで、 通知があったら「管理者として実行」してもらうと言うことになるんでしょうか。 でもそれだとUACを知らない、年配などのライト層は ずっとバージョンアップできないってことになりますよね。 しかもそれって、自動アップデートではないですよね。
676 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 16:11:59 ] >>675 よくわからんけど、セキュリティソフトなんかは予めUAC昇格させる設定を ユーザーにさせてるんでないの? 都度か一括かの違いで
677 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 16:17:35 ] >>675 つか、何言ってんの? 「管理者として実行」しなくても、UAC の昇格を行うことはできるよ。 一般的な方法としては、マニフェストを書いておいて、そのアプリを呼び出す。 新しいバージョンがあるかを確認するアプリと、実際に更新をするアプリに分ける、 って感じだね。 Firefox も、ATOK も HP のプリンタドライバも、そんな感じでやってると 思うけど・・・。
678 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 16:24:46 ] Google ChromeがAppData内にインストールされるのは UACの昇格なしでアップデート可能にする為だって話を聞いたことがある
679 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 16:25:02 ] >>677 何言ってんのか分からないのに答えられるってすごいなぁ。 しかも最後、自信なさげなところがなんとも。
680 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 16:25:20 ] >>678 そもそも ClickOnce だし。
681 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 16:27:37 ] XPユーザーとしてはUACの昇格とかわけわかんないし怖いよ 今はそんなのも気にしなきゃならんのか
682 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 16:29:51 ] VistaユーザーだってUACなんか訳わからんよw Linuxみたいにアクセス権限だけでいいだろって突っ込まれまくりだろ
683 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 16:32:42 ] >>679 「UAC 昇格起動」と「修辞的疑問文」でくぐってからまた来てね。
684 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 16:33:35 ] 全世界の奴がMSに文句つけまくっていじめまくった結果がこれだよ そして無意味なセキュリティをつけたらフルボッコだよ
685 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 16:34:51 ] >>684 × 全世界の奴 ○ 狂ったLinuxユーザー
686 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 16:35:58 ] なんでLinuxユーザーが文句つけるんだ
687 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 16:38:37 ] >>680 ClickOnceって.NETアプリ以外でも使えたのか ClickOnceと同じ場所を使ってるだけかと思ってたよ
688 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 16:40:53 ] >>687 正確には、インストーラとして使ってる、ってとこかと。 そのおかげで、統合認証以外のプロクシを使ってると、インストールすらできないw
689 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 23:29:47 ] >>675 Verb を runas にしたら昇格するよ。 アップデータの PE わけて起動させたほうがいいかもしれないけど。 なんとなーく勘違いしてそうなので UAC についてプログラマの視点から 指摘しとくと、昇格ダイアログ出すまではプログラムで可能。 OK ボタン押したら昇格ダイアログ→OK → アップデートってやるんだよ。 あとアップデートに関して言えば、パッチパッケージにすれば明示的な 昇格はいらない(ポリシーにより不可になるし署名が要るけど)。 Program Files 以下でも。実は古くからある機能だが。 実際には、パッチは管理や検証がめんどくさくなるのであまり使われな いけどな。 >>681 Vista ユーザーからしたら XP の何もなく管理者で動くの不安になる正直 かといって Users で使おうとしたら不便極まりないし。両立できてかなり いい機能だと思うがなぁ >UAC。リダイレクトとかの機能含めてな。
690 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 00:26:26 ] >>665 はい、CS0121です 引数なしのコンストラクタを呼び出しているのに 二つ選択肢があるっていうのがちょっと理解できません・・・ ヘルプのコンパイラ エラー CS0121の使用例は理解できるんですが・・・ エラーは吐いているんですがビルドできるし正常に動作しています それも理解できないし気持ち悪いです
691 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 02:14:56 ] int a=0,b=0,c=0; int line_count = arrText.Count; ar_OKPOS = new List<int[]>[line_count]; for (int i = 0; i < ar_OKPOS.Length; i++){ ar_OKPOS[i] = new List<int[]>(new int[][] { new int[2] }); } foreach (string sOutput in arrText) { // 一行ずつ読み込んで,各行をsplitメソッドで分ける string temp = (string)arrText[a]; // string型にキャスト string[] temp2 = temp.Split(',');// splitメソッドで文字列アレイにして数える int col_count = temp2.Length; // 列数を数えているだけ string[] temp_line = sOutput.Split(','); for(int i=0;i<temp_line.Length;i++) { for(int k=0;k<2;k++){ i = i + k; ar_OKPOS[a][b][c]=Convert.ToInt32(temp_line[i]); c++; } c = 0; b++; } b = 0; a++; }
692 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 02:24:35 ] すいません 誤爆してしました
693 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 08:52:22 ] デザインパターンとか全然勉強せずにプログラマやってるけど、勉強したほうがいいのかな?
694 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 08:54:14 ] デザインパターンはなんかJava臭いよな C#はオブジェクト指向至上主義じゃないから合わないんじゃない
695 名前:デフォルトの名無しさん [2009/04/04(土) 09:52:38 ] 標準のクラスライブラリでも結構それっぽいのはよくでてくるよ ただjavaと違って、MSはほとんどデザインパターン用語を使わない
696 名前:デフォルトの名無しさん [2009/04/04(土) 13:38:17 ] privateなメンバ変数もprivateなプロパティとして表示させたほうがいいですか? またメソッドでメンバ変数を利用するときなるべく引数として渡した方がいいですか? それともメソッド内でいきなり使用しても問題無いですか? たとえばクラスに以下のようなメソッド等があったとして private int _num; public void Method() int num = CalcMethod(2); private int CalcMethod(int num1) return num1+_num: こういう書き方が良いのか private int _num: public void Method() int num = CalcMethod(2, _num); private int CalcMethod(int num1. int num2) return num1+num2; こんな書き方のほうがいいのか知りたいです。 例では単なる足し算ですが、複雑な計算をしているという仮定です。
697 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 13:41:03 ] 演算要素を全て引数で取らせるならstaticにする
698 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 14:20:05 ] メソッドを呼び出す側からすれば,メソッド呼び出しはオブジェクトを操作することなので 内部状態を存分に使ってもらって構わない気がする.
699 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 15:33:03 ] ありがとう なるべく引数で渡したほうが、その中で完結するのでわかりやすい気がして じゃあ、あんまり気にしなくていいってことかな?
700 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 15:58:22 ] 計算処理のように内部状態に関係なしに定義できるものは、 内部状態非依存(static)の方が単体テストしやすい まあ、その例くらいの規模なら大して変わらないんだが
701 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 16:06:09 ] >>696 むしろそのメソッドを定義したクラスはどんな責任と制約をもってんのよ? メソッド単体じゃあなんともいえない >699 時と場合による プログラミングしやすい分かりやすさもあれば、 利用しやすいわかりやすさもある
702 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 17:48:14 ] VC#単体(他から持ってきたライブラリを使わず)で開発したソフトやゲームを 販売する場合、ライセンス等の問題ってありますか?
703 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 17:59:31 ] 場合による。
704 名前:デフォルトの名無しさん [2009/04/04(土) 21:17:48 ] ミサイル防衛システム作りたいんですがヒントだけでもください
705 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 21:25:07 ] MDIで作成した子フォームに含まれるコントロールを取得後、アクセスしたいんですが foreachでいちいちループ回さないといけない・・・ なんか他にいい方法ないでしょうか? 子フォームはアクティブな状態のものです if (!(this.ActiveMdiChild as Form == null)) { foreach (Control Ctrl in (this.ActiveMdiChild as Form).Controls) { if (Ctrl is TextBox /*例としてテキストボックス*/ ) { //処理 } } }
706 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 21:41:58 ] 全コントロールを対象に処理が必要なら foreach で回さざるを得ないだろ。 特定のコントロールのみを対象にするなら Panel か UserControl に貼り付けて 必要なコントロールへのアクセスを容易にすればいいよ。
707 名前:705 [2009/04/04(土) 21:54:17 ] ん〜じゃあ無理か Panelのリストを管理するとまた手間がかかりますしねえ・・・ どうもありがとうございました
708 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 22:05:22 ] 動的に作成する場合でもIList<>に入れればいいし、 あらかじめポトペタならコントロールが限られてるから どちらにしても最低限のループでいけるんじゃないの?
709 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 22:16:50 ] Linqでコントロールの種類ごとに連想配列に分配するクエリを作れば?
710 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 22:29:30 ] >>702 ないよ
711 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 00:12:49 ] Form activeChild = this.ActiveMdiChild as Form; if (activeChild != null) { activeChild.Controls.Where(c => c is TextBox).ToList<TextBox>().ForEach(t => { // 処理 }); } かえって煩わしいな。
712 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 00:29:55 ] >>711 ん? 実験してみようとしたのだが、インテリセンスにWhere()が表示されないのだがなんでだ?
713 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 00:42:19 ] ControlCollectionがIEnumerable<Control>を実装してないからか?
714 名前:デフォルトの名無しさん [2009/04/05(日) 00:43:46 ] だな 気がつかなかった!すげー便利じゃん!と思ったのにorz
715 名前:n [2009/04/05(日) 00:52:48 ] 今までたくさんのサイトから通報者つのりあと少し です こいつは違反出品で昨日二度削除されました auok.auone.jp/_ev?tr=83751566&et=2 空き巣に入られた?以上では‥ 薔薇チョコ洋子さんは靴の転売や上履き二回削除されてるのに 今回は長期使用の文を消して書いてます 悪質なので評価欄の誹謗中傷の理由で通報お願いします auok.auone.jp/item/item_189662269.html?u=4682520 わいせつ物 auok.auone.jp/item/item_189667641.html?u=4682520 わいせつ物 三箇所違反ですのでよろしくお願いします
716 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 02:53:12 ] this.ActiveMdiChild.Controls.Cast<Control>().Where()とか?
717 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 03:03:10 ] クラス内の自動プロパティを初期化したいのですがコンストラクタ内でするしかないのでしょうか? 例えば public string Name{get;set;} というものがあって、Nameは始めはnullですが、""に初期化しておきたいのです。 フィールドでしたら private string Name = ""; と出来ます。 プロパティの量だけコンストラクタにも初期化する量が増えてしまうのでフィールドのように出来れば一度に初期化したいのですが方法はあるのでしょうか?
718 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 03:03:27 ] >708 がベストだろ
719 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 03:10:31 ] クラスを継承したときに基本クラスのメソッドにコードを追加するように書くにはわかりました。
720 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 09:26:10 ] >>717 ありません 自動プロパティの使用をやめるか普通にコンストラクタで初期化してください
721 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 09:52:29 ] >>717 リフレクションでstring型のプロパティを一括初期化できなくもないがバグの元だな
722 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 09:58:22 ] そのためのオブジェクト初期化子なんだろうか
723 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 09:59:50 ] ヘジさんが自動プロパティに必死で抵抗してたのは直接初期化できないからなのかな
724 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 10:12:36 ] 自動プロパティって、文法的にインターフェースでの宣言と一緒なのがちょっと気になるっちゃ気になる。 int Method(); とだけ書いたらメソッドの中身ができちゃうようなもんだからなぁ。 パッと見同じだけど全然意味の違うものってのは、 ミスの原因だし、読むときの混乱招くから。
725 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 10:12:47 ] コンストラクタで初期化するくらいなら、 タイピング量的に自動プロパティである必要がぜんぜんないな
726 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 10:14:42 ] もう、自動プロパティを自動で普通のプロパティに展開するユーティリティを使えばいいよ
727 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 10:22:42 ] private string _test; public string Test { get _test; set _test; } こういう糖衣構文を可能にするだけでよかったんだよ
728 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 10:26:55 ] 糖衣構文といいたいだけのやつ増えすぎ
729 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 10:29:42 ] 構文糖を可能にするだけでよかったんだよ
730 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 10:30:46 ] public property string Test = ""; でいいんじゃないの public readonly property string Test = ""; とか
731 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 10:36:05 ] public string Test { get GetTest(); set SetTest(value); } も可能そうだな
732 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 10:41:00 ] >>731 それは意味がわからない。普通にかけばいいだろ public string Test { get { return GetTest(); } set { SetTest(value); } }
733 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 10:41:50 ] インターフェイスにプロパティを宣言するときの書き方と合わせたかったんだろ 美学ってやつなんだろう
734 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 10:48:09 ] たとえ美学でも、読み取り専用にするprivate set;はせっかくの省力構文を台無しにしているな public string Test { get; } これで何がまずいのだろう
735 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 10:48:47 ] event の構文が event DelegateType Variable; event DelegateType Variable { add { ...] remove { ...} } なのを考えると、 property VarType Variable; property VarType Variable { set { ... } get { ...} } がよかった気もするなぁ。
736 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 10:50:10 ] >>732 楽になるじゃん それに変数とメソッドを同時に書くこともある public string Test { get GetTest(); set _test; }
737 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 10:52:33 ] property Name: string read FName write FName; もうこれでいいよ
738 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 10:54:11 ] >>735 それいいよね 読み取り専用プロパティは readonly property VarType Variable; にすればいいし
739 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 11:03:07 ] >>734 初期化も何もできないじゃん
740 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 11:26:12 ] >>739 private set;と書いたことにする
741 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 11:44:34 ] それなら>>735 スタイルにしてgetも書かないようにしないとおかしい アクセサを宣言する意味でgetやsetを書いてるのに
742 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 13:04:59 ] >>740 ( ゚д゚ )
743 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 15:08:15 ] アクセス修飾子をpublicとprivateだけと思ってる奴が多いようだな
744 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 16:25:18 ] そんな奴いないだろw もともとはプロパティのアクセサにアクセスレベルは指定できなかったんだよ public get; protected set;みたいなのはそもそも想定されてなかった だから別に>>735 の形になっててもおかしくはない
745 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 18:13:05 ] addとremoveが必須なeventとgetとsetは片方あればいいプロパティじゃ初めから条件が違うな
746 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 18:55:27 ] 話の流れを全部理解しているわけじゃないが、 そういうシンメトリックかどうかって話じゃないだろうw 素直に(VB方式ともいう)propertyってキーワードを導入しておいた方が 可読性の観点からは好ましかったんじゃないかって話なんじゃないの?
747 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 22:23:51 ] でもevent 型 名前;と型 名前 { get; set; }じゃ差がありすぎるからなあ イベントを理解する上でプロパティとの類似性はかなり重要なのに 構文上全然違う種類のものになっちゃってるのはさすがに
748 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 22:43:42 ] そういや、結構いろんな言語に精通してる同僚が最近 C# 触り始めたんだけど、 event 知らずに普通にデリゲート型のプロパティ使ってたなぁ。
749 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 22:51:16 ] イベントって機能がデリゲートで実現されていることを知らずにイベントを 使ってるって話ならありそうだが、デリゲート押さえてるのにイベント知らない、 なんてこと普通はありえん気がするけどね。
750 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 22:55:20 ] eventって別に必要ない機能だろ
751 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 22:58:49 ] javaなんかでよく出てくるgetHoge, setHogeパターンを言語に組み込んだのがプロパティ 同様にaddHogeListener, removeHogeListenerパターンを言語に組み込んだのがイベント
752 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 23:29:37 ] 言語に組み込む組み込まないの話ではないだろ
753 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 23:49:33 ] >>749 「デリゲートはイベント処理用のもの」って認識だとそうなんだけど、 「関数ポインタの便利版」って認識だと、 関数ポインタのプロパティでイベントハンドラ取ればいいやってなってもおかしくないかと。
754 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 23:56:59 ] もしプロパティを使うならデリゲートのコレクションを返すべきだろ button.ClickEventHandlers.Add(new EventHandler(button_Click)); これなら意味的には同じ
755 名前:754 mailto:sage [2009/04/05(日) 23:59:32 ] 外からの要素へのアクセスはできないようにしないといけないよもちろん マルチキャストでいいだろと突っ込まれそうだから一応
756 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 00:00:30 ] Formsのコントロールの初期化をデザイナーで作っているところなんだが、 ツールバーのボタンが横に並んだ1つづりのPNGファイルを ImageListを使って切り出して使おうとしているのだがうまくいかない。 System.Windows.Forms.ImageList il = new System.Windows.Forms.ImageList(); il.TransparentColor = System.Drawing.Color.Transparent; il.ImageSize = new System.Drawing.Size(24, 24); il.Images.AddStrip(Resources.tool); こんな風に書いてデザイナーに読ませると、AddStrip()が認識できずに落ちてしまうようだ。 仕方がないのでpartialされたForm本体側で追加で初期化してるんだが、当然ながらデザイナーではプレビューできない。 画像の切り出し、切り出したチップをそれぞれのコントロールで使用したいんだがどうしたらいいだろうか。
757 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 00:10:38 ] >>748 eventをつけた場合とつけない場合は何が違うのですか? public event EventHandler Unko; public EventHandler Unko
758 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 00:13:42 ] >>757 ググれかす 見た目としては、eventだと外から行える操作がデリゲートの追加と削除だけになる。
759 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 00:17:51 ] >>757 Unkoの硬さが違ってくる
760 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 00:23:11 ] >>758-759 ありがとう。 何となく分かったよ Unkoの硬さが+=と-=だけになるってことですね
761 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 00:28:52 ] >>756 デザイナで設定するのは無理なんじゃないの とりあえずImageListプロパティだけ設定して,Tagプロパティにインデックスを入れといて 後でコードから舐めてImageIndexプロパティに設定し直すとか
762 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 01:04:40 ] >>761 ありがとう。「無理」という返事を聞いてある意味安心した。 どうせデザイナーで作る部分はある程度静的な割付になるので、わざわざTagに入れてループをまわさなくても、 ImageList.Images プロパティをControl.Image に直接代入していくだけで十分だね。
763 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 01:22:48 ] >>762 ImageList継承して"ImageStrip"のようなプロパティを追加するとか、 あるいは最初から目的のイメージを持たせちゃうとかすれば出来る気もする。 っていうか、なんでわざわざそんなC#向きでない作り方をするんだろう。 なんでも道具にあった作り方ってあると思うんだけど。
764 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 01:24:20 ] あーImageListってシールされてるのか。。
765 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 01:59:32 ] String型がシールされてる上にIStringのようなインターフェイスもないってどういうこと? String型に限らずやたらシールされると拡張できなくて異常に不便
766 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 02:02:16 ] C#の入門誌のオススメ教えて
767 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 02:04:16 ] C#に入門書は必要ない ぐぐれば腐るほどでてくるからな・・・ 強いて言えば逆引き系のものがいいよ
768 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 02:04:39 ] 継承は最低の方法だってみんな分かって来てるじゃない それはともかくStringはIEnumerable<char>として扱うと便利だよ
769 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 03:31:43 ] >>763 コントロールで使う画像の処理をImageListに任せるのは、 Win32SDK時代から続く古式ゆかしいお作法なんだ。
770 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 08:32:28 ] > それはともかくStringはIEnumerable<char>として扱うと便利だよ これは気づかなかった。ありがとう
771 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 09:03:50 ] デザイナーいるとかうらやましいなおい・・・・
772 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 09:26:25 ] >>765 恥ずかしいレスだなおいw
773 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 09:31:03 ] >>771 それはボケなのか……?
774 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 10:42:32 ] Stringがsealedなのはimmutableにするため 変更できない方が扱いやすいから
775 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 17:54:34 ] 扱いやすいっていうか、継承を禁止しないとイミュータブルであることを保証できない。
776 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 18:04:25 ] なんとなくだが、>>774 は "stringはimmutableであった方が扱いやすい" と言いたかったのではないかと思う。
777 名前:デフォルトの名無しさん [2009/04/06(月) 21:19:49 ] >>766 洋書なら色々あるけど、邦訳版が出てないのが多い・・・。
778 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 02:18:55 ] C#って検索数がいまいちなんだよね。 なんで?
779 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 02:34:22 ] >>778 記号とか入いってるとかは検索エンジン的にマイナスな気がする。 あと、なんだかんだいって後発だしね。 それと、一般名詞そのまま使ってるrubyとかと比べりゃそりゃ少なくなる。
780 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 03:42:38 ] 思いつくままに検索してみた。言うほど少なくは無いようだが php の検索結果 約 9,700,000,000 件 javascript の検索結果 約 680,000,000 件 vb の検索結果 約 657,000,000 件 java の検索結果 約 377,000,000 件 scheme の検索結果 約 107,000,000 件 ruby の検索結果 約 102,000,000 件 c++ の検索結果 約 101,000,000 件 perl の検索結果 約 88,000,000 件 c# の検索結果 約 63,900,000 件 python の検索結果 約 62,300,000 件 delphi の検索結果 約 49,500,000 件 lisp の検索結果 約 8,290,000 件 fortran の検索結果 約 7,720,000 件 cobol の検索結果 約 6,530,000 件 c++/cli の検索結果 約 4,680,000 件
781 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 03:54:22 ] >>780 ごめんそれ違う。 漏れが言ったのは、グーグルトレンドの方。
782 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 04:47:38 ] >>780 発想は面白いよ発想は
783 名前:sage mailto:sage [2009/04/07(火) 13:13:32 ] vb.net の private shared は C# でいうとなんですか? private partial ? private protected?
784 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 13:17:51 ] private static
785 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 13:19:16 ] thx!
786 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 14:11:03 ] VB.netの存在意義がわからない 初心者向けならジェネリックやLinqの拡張をすべきではないと思うんだが・・・
787 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 14:12:59 ] VB.NETはVBプログラマ用の隔離病棟もしくはオブジェクト指向リハビリ施設
788 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 14:13:04 ] >>786 それは、貴方の考えた存在意義と違うってだけでしょう。
789 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 18:15:55 ] C#>VBってのはC#でオブジェクト指向を勉強した奴がやけに言いたがるようだけど 他から見たらチェイサーとクレスタ
790 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 18:24:42 ] そりゃ.NETがベースにあるからだろ
791 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 18:28:30 ] .NETのWebBrowserコンポーネントで RichTextBoxのSelectionColorプロパティみたいに、文字列をドラッグしたときの選択色を変える方法ありませんか?
792 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 05:02:52 ] Microsoft Visual C++ Express Edition このコンパイラで一度「デバッグ無しで開始」でコンパイル成功するとソースを書き換えてもプログラムが変わらないようです 今までは少しソースを書き換えようと思ったら新規作成で新しいソース作ってコピペを繰り返してたんですがいい加減ソースの管理がキツいです 誰か助けてください
793 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 05:09:03 ] バイト代は出ますか?
794 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 05:14:13 ] >>792 全ては君の勘違い
795 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 06:02:20 ] >>792 『Microsoft Visual C# Express Edition』で開発していると仮定しての話だが、(スレタイ読めよ!) 確かにVC++と違って C#の開発のときはアプリの実行ボタンでビルドが更新されないことがあるようだ。 しかし、コンパイルないしビルドボタンを押せば問題ないはず。 デバッグ無しで開始 や デバッグ実行 のボタンとは別にあるぞ。
796 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 09:47:57 ] >>792 リビルドしてみた?
797 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 09:53:21 ] むしろ自動ビルドしてるならクリーンアップ?で さもなくばexploreでファイル削除
798 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 15:22:07 ] .net のプログラムを C#に書き換えています。 .net におけるshadow(オーバーライドの一種で引数も返り値も変更可能なもの) はC#だとどういう風にトランスレートすればいいんですかね?
799 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 15:26:15 ] .net のプログラムってなに?VB?
800 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 15:27:01 ] もちろんC#
801 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 15:27:15 ] 隠蔽のnew
802 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 15:30:02 ] vb.netっす
803 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 15:32:06 ] VBではoverridesとshadowが別なのが良くわかんないね。 overridesがほぼC#のnewと同じ。 shadowとまったく同じものはなかったかと。
804 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 15:35:20 ] それでは Public Shadow Property X は public new override X {get return ...みたいな感じで書けばいいってことですか?
805 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 15:36:43 ] ああちがうか、そもそもoverrideとoverridesのちがいがわかってませんでした。 勉強してきます。
806 名前:デフォルトの名無しさん [2009/04/08(水) 15:43:35 ] WebBrowserのDocumentで、mshtmlを経由してiframeの中身にアクセスしようとするとUnauthorizedAccessExceptionになるのですが、 これを回避するにはどうすればいいのでしょうか。
807 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 18:51:30 ] public class Bar inherits Foo overrides sub f() end sub shadows sub g() end sub overloads sub h() end sub end class をリフレクションで調べるとこういう違いがあるようだべさ。 public class Bar : Ansi,Auto extends public class Foo : Ansi,Auto public virtual Void f() public Void g() public Void h(),HideBySig public constructor Void .ctor(),SpecialName C#の場合全部のメソッドにHideBySigが付いてるんだよね。
808 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 19:28:38 ] すみません。馬鹿な質問いいですか? フォームにラベルがいくつかありまして、それぞれ lbl001 lbl002 lbl003 という名前になっています。 で引数に001とか002を渡すと通し番号の一致するラベルのテキストを""に変えるメソッドを 作りたいのですが、どうしたら良いのでしょうか? 解りにくい文章ですみませんが、お願いします。
809 名前:808 mailto:sage [2009/04/08(水) 19:30:47 ] private void hoge(string number) { lbl+number.text=""; } という感じなのですが・・・
810 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 19:36:25 ] public void ClearLabel(string labelName) Control control = this.Controls.Find(labelName, false)[0].Text = ""; thisはForm
811 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 19:39:39 ] ああ、最初の変数宣言はイラネ public void ClearLabel(string labelName) Control control = this.Controls.Find(labelName, false)[0]; control.Text = ""; または public void ClearLabel(string labelName) this.Controls.Find(labelName, false)[0].Text = "";
812 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 19:42:38 ] public void Func(int number) { string name = "lbl" + number.ToString("000"); foreach (FieldInfo info in this.GetFields()) { if (name == info.Name) { Label label = (Label)info.GetValue(this); label.Text = ""; } } }
813 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 19:43:55 ] ラベルを配列に入れりゃいいんじゃないの
814 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 19:46:45 ] >>808 そういうことをするならラベルをコレクションで管理しとけ リフレクションを使うのはあくまで応急処置 最初からコレクションで生成してもいいし、どうしてもデザイナを使いたいなら以下のようにする var labels = new List<Label>(); labels.Add(lbl001); labels.Add(lbl002); labels.Add(lbl003);
815 名前:808 mailto:sage [2009/04/08(水) 19:58:30 ] みなさまありがとうございました! >>811 public void ClearLabel(string labelName) this.Controls.Find(labelName, false)[0].Text = ""; この場合labelNameは"002"とかでもlbl002を見つけてくれるのでしょうか? >>812 なるほど。僕でも判る解りやすいコードですね >>814 おっしゃる通りです。以降気をつけます
816 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 20:21:07 ] >>815 見つけてくれないからlabelNameを自分で作成すれ
817 名前:808 mailto:sage [2009/04/08(水) 21:27:47 ] >>816 ありがとうございました! 僕はデザイナでしかコントロールを置いたことがないので 名前の重複がありうるなんて知りませんでした。 なので名前のわかっているコントロールを探すなんてナンセンスな感じを うけましたが、自分が無知だっただけでした!
818 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 21:49:25 ] 何も解かってないことが解かった
819 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 21:54:33 ] >>817 が何を言ってるのかまるでわからない・・・
820 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 21:56:19 ] なんとなく理解できる俺もほ乳類を名乗って問題無いのか・・・
821 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 23:41:34 ] >819 多分Nameプロパティとフィールド参照名をごっちゃにしてるんだろ。 >817 参照名はスコープ内で重複しないけど、コントロールごとに設定できるNameプロパティの値は重複可能。 デザイナーは勝手に「Name = 参照名」に設定してるから一意に見えるだけ。自前でNameを設定してなければ、 int num = 2; Label label = this.Controls[ "lbl" + num.ToString("000")] as Label; if( label != null ) { 処理 } else { エラー処理とか } 自前のコードでNameを設定してて同じNameの奴が重複してたら、最初に追加されたやつ(普通はデザイナーが作った方)が返ってくる。 どうしてもフィールド名のほうでアクセスする必要がある場合は、>812みたいにリフレクションを使う。 でもクラス内で完結することに使うことはまずない。
822 名前:デフォルトの名無しさん [2009/04/09(木) 00:09:57 ] Regexクラスを使った正規表現って 交差演算子「&&」は使えませんよね?
823 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 00:12:33 ] 古語でも可也
824 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 00:18:44 ] >>822 MSDN読め。