[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 08/16 23:53 / Filesize : 244 KB / Number-of Response : 980
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

C#, C♯, C#相談室 Part46



1 名前:デフォルトの名無しさん [2008/04/22(火) 00:31:59 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
c++厨の嵐はスルー汁。

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

その他テンプレ>>2-5くらい

610 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 22:42:59 ]
TP1/Webのエラーコードっぽいけどな。
マニュアルある人ならわかるかもしれん。
今ゆうちょダイレクトメンテ中でエラーコード再取得できなかった。

611 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 22:43:26 ]
>>609
お前には聞いてないってw

612 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 22:45:14 ]
>>603  >>604の指摘でC#側を見て下記の点ではないかと思い
enc = System.Text.Encoding.UTF8;
// enc = System.Text.Encoding.Unicode;
// enc = System.Text.Encoding.BigEndianUnicode;
localPort = XXXXX;
udp = new System.Net.Sockets.UdpClient(localPort);

コメント部分を追加してみましたが変えましたが、半角英数もまともに表示できなかったです。
元々はUTF8でした。 何がいけないのだろう?

613 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 22:45:51 ]
逆ギレw

614 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 22:47:03 ]
技術もないのにあおるだけのアホは放って置いてできる人よろしく!

615 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 22:50:06 ]
>>614
ここで聞く前に、先ず質問の仕方を勉強してきてね

616 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 22:51:20 ]
だなw

617 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 22:52:55 ]
>>615,616
キメェw

618 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 22:55:16 ]
ゆうちょダイレクトは特に妙なところはなかったように記憶しているけど、
どこでひっかかってるの?
今確認しようとしたら、ちょうどサービス停止中だな。



619 名前:デフォルトの名無しさん mailto:age [2008/06/01(日) 23:03:10 ]
C# 側のコードです。 どのコードを指定しても正しく表示されなかった。orz
System.Net.Sockets.UdpClient udp;
private Button button1;
System.Text.Encoding enc;

enc = System.Text.Encoding.UTF8;
// enc = System.Text.Encoding.UTF7;
// enc = System.Text.Encoding.ASCII;
// enc = System.Text.Encoding.Unicode;
// enc = System.Text.Encoding.BigEndianUnicode;
localPort = XXXXXX;
udp = new System.Net.Sockets.Udp

System.Net.IPEndPoint remoteEP = null;
byte[] rcvBytes = udp.Receive(ref remoteEP);
string rcvMsg = enc.GetString(rcvBytes);

udp.Close();

バッファーを見たら、シフトJISが送られてくるようでした。
わからない…orz


620 名前:デフォルトの名無しさん mailto:age [2008/06/01(日) 23:05:29 ]
一部切れていました。
udp = new System.Net.Sockets.UdpClient(localPort);


621 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 23:08:29 ]
Shift_JISで送られてきてるのにUTF-8でデコードとかおかしいと思わないか?

622 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 23:11:50 ]
思わないでーす

623 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 23:17:29 ]
なんか、荒らされてるな。
IDない板だから、釣りや煽りに反応するのはやめましょう。
質問者の暴言は、たいてい騙り。
もちろん、ときどきとんでもない質問者もいるが、いずれにせよ放置で。

624 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 23:19:15 ]
技術ある人に作れって時点でネタだろ

625 名前:デフォルトの名無しさん mailto:age [2008/06/01(日) 23:23:40 ]
>>620
すみません、どの記号がどの文字コードかの知識が不足しています。orz

626 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 23:55:12 ]
とりあえず、ゆうちょに不正アクセスしてる奴がいると通報しとくか。
3人くらいで通報すれば目付けられるから

627 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 01:27:36 ]
何が不正?

628 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 06:31:07 ]
.Text.Encoding.GetEncoding(932)



629 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 06:59:26 ]
>>628
出来ましたありがとうございます。

630 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 08:16:51 ]
とりあえず、ゆうちょにログインも出来ないアホはほっとけよ

631 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 12:59:43 ]
ゆうちょの件一晩頭冷やして考えたらできました。
お騒がせしました。

632 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 13:09:14 ]
>>631
>>615

633 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 13:35:31 ]
結局何がまずかったの?

634 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 13:39:21 ]
態度

635 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 15:04:41 ]
>>634
いや、頭だろ・・・

636 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 17:46:07 ]
そもそも質問してないだろ
意外とはまるからやってみぐらいの勢いだったんだが。
それを勘違いしたこまったちゃんが質問の仕方が悪いだの、態度が悪いだのってこんな匿名掲示板で言われてもなw

637 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 17:48:37 ]
>>636
ヨチヨチwww

638 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 17:51:25 ]
>>636
明らかに誰か作って教えてくれってスタンスだったけどなw

ヨチヨチwww



639 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 17:55:30 ]
それはそうと、ゆうちょ興味あったら挑戦してみ。
興味なかったらいいけど。

640 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 19:57:56 ]
ゆうちょダイレクトのアカウントなんて普通持っとらんがな(´・ω・`)
嵌るとかは単純に質問者の技術力不足だと思う

641 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:16:54 ]
そうだね。
俺はそもそも技術者じゃないから技術力不足は認めるよ。
ネットショップを経営しててそれに必要な入金チェックをちょっと作ってみようかなって思っただけだし。

642 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:24:42 ]
つ Python
無理にC#を使う必要性はない。

643 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:32:46 ]
PythonってWinアプリ簡単に作れるの?

644 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:35:08 ]
うん。GUIを扱うライブラリがあるし、IronPythonを使えば.netも使える

645 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:36:30 ]
ゆうちょ房のスレ荒らしw

646 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:47:33 ]
なるほど。
Python調べてみよう。Excelファイルいじくれるライブラリもあるといいけど。
C#始めて1ヶ月だけどフリーで開発環境まで全部まとめてインストールできるのが楽ではじめたんだよね。
今度は今手作業で集計してるバイトの勤怠管理でも作ってみるか。

647 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:08:48 ]
ゆうちょが出てきてからスレの雰囲気がすごく悪くなった

648 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:21:13 ]
過去スレ読んだが同じようなもんだぞ
ゆうちょに粘着している奴が悪くしてんじゃね?



649 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 00:14:43 ]
>>648
ヨチヨチwww

650 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 00:21:49 ]
なんかヨチヨチレスしかできないかわいそうなやついるな

651 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 00:52:27 ]
なんで技術者、学生以外でこんな板見てんだか・・・

652 名前:デフォルトの名無しさん [2008/06/03(火) 02:16:25 ]
初心者スレで同様の質問をしたのですが、相手にされなかったのでこちらで再度お聞きします。
ListViewのdetail表示時に行間を広くするにはどうしたらいいのでしょうか?

653 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 02:42:12 ]
ListViewItemのStyleあたりで設定できなかったっけ?
出来なかったらごめん。

654 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 09:19:23 ]
ImageList使う

655 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 12:20:34 ]
お前には無理だからさっさと諦めろ。

656 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:35:14 ]
>>652
>初心者スレで同様の質問をしたのですが、相手にされなかったのでこちらで再度お聞きします。
馬鹿じゃないの?
まじめな話。


657 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 14:07:08 ]
UserControlを継承したクラスを作って
クリックされた箇所に丸印を描画するようなプログラムを作るとしたとき。
Click()イベントで、クリックされた箇所を記憶し
Invalidate()でPaint()イベントを呼び出してクリックされた箇所を描画する。
という動きになるのでしょうか?


658 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 15:01:12 ]
はい



659 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 15:19:56 ]
フォームエディタで上にコントロールを乗せないなら、
UserControlじゃなくて、ただのControlからの継承でいい。

660 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 17:57:36 ]
>>658
>>659
どうもありがとうです。

ところで、趣旨が変わるんですが
折れ線(複数)グラフを書きたいのです。
ひとつの表示窓に複数のラインを書きたいのです。
そのライン単位でオブジェクトにしたいのですが、
(1)そのラインオブジェクトはControlから派生させて自分でライノブジェクト自身で描画させるべきでしょうか。
(2)それとも単なる(Control派生ではなく)オブジェクト化して、親表示窓Controlに個別に描画ルーチンを呼ぶ形にするべきでしょうか?
一般的にどうなのかなと思いまして。

(1)だったら、表示窓側の親オブジェクトは特に何も考えずに子が思いのままに描画する。
と思っていたのですが、背景処理が手間かと思えてきました。
子に当たるラインオブジェクトを描画すると親部分を上書きするからです。
リージョンを切れば親の描画部分を塗りつぶさなくても描けそうですが、折れ線なのでPATHが複雑になりすぎるかと思います。

(2)だったら特に背景塗りつぶし過ぎに関しては何も考えなくてよいのですが、
Paintルーチンで子オブジェクトにGrapicsオブジェクトを渡すサブルーチンコール形式になると思うのですが、なんだか嫌なのです。
一般的にこういうことをやりたい場合にはどうしますか?
変なことを言っているようだったら指摘してください。

661 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 18:02:28 ]
拡張性を考えれば当然後者だろ

662 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 19:57:03 ]
WPFなら前者だね

663 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 20:56:09 ]
Excel使え

664 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 21:37:46 ]
どこかにチャートコントロールあったはず

665 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 21:39:16 ]
ZedGraphとか

666 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:37:23 ]
ZenGraphってスクロール機能つけられる?

667 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:45:33 ]
便乗で質問なんですが
ZedGraphとかNplotを仕事(商用)として使ってる人いますか?


668 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 23:25:12 ]
ListViewの編集はなんで先頭のカラムしかダメなの?
面倒だね。



669 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 00:59:59 ]
WPFなら自由自在

670 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 01:18:50 ]
いやそういう話じゃなくて。

671 名前:660 mailto:sage [2008/06/04(水) 10:13:48 ]
皆さま。
ZenGraphとかNplotとかあるんですね。
これらを使うかどうかはともかく、これらの実装を参考にさせてもらいます。
どうもありがとう。


672 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:17:36 ]
Personクラスの派生クラスとして
Man,Woman,Noneを考えます。
Man,Woman,NoneはPersonクラスのstaticなメソッドを介して生成されるものとします。
Man,Woman,Noneのコンストラクタのアクセシビリティをそれぞれ
public,protected,privateにしております。
publicなManは生成されます。
protectedなWoman,privateなNoneは生成できません。
こういうときはコンストラクタのアクセシビリティをinternalにすればいいようです。
こういうinternalの使い方は正しいでしょうか?


673 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:20:56 ]
クラスライブラリを作ってるなら全然アリ
単一プロジェクトなら無意味

674 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:29:34 ]
他のアセンブリに公開するつもりがないならinternalでいいんじゃね

675 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:49:20 ]
Man,Woman,Noneクラスは外部に見せる必要がないならこういう手もある。
やりたいこととは違うと思うがクラス自体を見えなくすればコンストラクタの隠蔽は不要になる。
public enum PersonType { Man, Woman, None };

public class Person {
 public static Person GetInstance(PersonType x) {
  switch (x) {
   case PersonType.Man: return new Man();
   case PersonType.Woman: return new Woman();
   default: return new None();
  }
 }
 private class Man : Person { public Man() {} }
 private class Woman : Person { public Woman() {} }
 private class None : Person { public None() {} }
}

class Startup {
 static void Main() {
   Person man = Person.GetInstance(PersonType.Man);
   Person woman = Person.GetInstance(PersonType.Woman);
   Person none = Person.GetInstance(PersonType.None);
 }
}


676 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:53:36 ]
C++から入ると、friendが無いのがちょっと不便に感じるね。

677 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:56:41 ]
friendは邪悪だからなくていいよ。

678 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:22:41 ]
partial使えば内部型でもファイルを分けて書けるよ



679 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:31:51 ]
>>676
主にテスト用途だけどFriend Assemblyってのがある。
通常はprivateな型やメソッドをテストするのに使う。

680 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:57:45 ]
>>675

コレって変だと思うのはオレだけ?



681 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:03:44 ]
お前だけ
Comparer<T>.Defaultとか例を挙げたらキリがない

682 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:10:23 ]
ああすまんComparer<T>.Defaultは違うね
Stream.Null(実際の型はStream+NullStream)とか

683 名前:デフォルトの名無しさん [2008/06/04(水) 23:40:00 ]
>>680
君だけではないよ。
Factoryってこうやらないだろ?



684 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 23:59:22 ]
XmlReader.Createとかあるでしょ
一応MS的にはこういうのも「ファクトリメソッド」と呼ぶらしい

685 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 00:09:09 ]
どこが変だとか、どうあるべきかとか書いてくれないと答えようがない

GetEnumerator()の実装例でyield returnを使わないケースで内部クラスを使っている
なおC#の内部クラスはJavaのstaticな内部クラスと同等だから誤解のないよう

686 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 01:55:39 ]
というか基底クラスであるPersonクラスが具体的な派生クラスを知っているのが不自然。
気持ち悪い。

687 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 03:35:19 ]
既定クラスがBuilderを兼ねてるのがいやだったらPersonとファクトリーを分離するのは問題ない。
ただ、拡張可能なようにBuilderやStrategyパターンで作ってゆくと、
クラスやインターフェイスの数がすごいことになるから過剰な汎用化には反対したい。

688 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 04:39:40 ]
突然質問してごめんなさい。

皆さんはC#とかってどうやって勉強してるんですか?
こないだはじめたんだけど、資料が少なくて、学習がすすみません。
いい勉強法とかオススメの書籍があれば教えてください。

ちなみに今は実際にソフトウェア作ってみて、わからないことがあったら調べて・・・って感じです。



689 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 07:52:47 ]
C#で資料が少ないとか言ってたら何も覚えられん。

690 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 08:05:32 ]
MSDNに全て有る

691 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 08:47:31 ]
>563-567 >690
の質問とかぶると思うのですが。
 オープンなC#ソースでストラテジーパターンを実現しているらしき所を見かけたので、
newのコストについて教えてください。

【ソース概要】
・クラスConcreteAとConcreteBは同じParentStategyクラスの派生。
・それぞれのクラスには違う条件でこの方法で状態遷移する。
void override update(){
  ・・・
  if(hoge<hage)
    {parentStategyInstance = new ConcreteA()}
  else
    {parentStategyInstance = new ConcreteB()}
  ・・・
}
・update()は頻繁に発生する。
・各コンストラクタはメンバを一つ更新する一行のみ。
・ガベコレでメモリ使用量のコストが無いことは解ったつもり。

 C++ならキャスト一択の所と思うのですが、JITのおかげでこの書き方が
実は最高にスマートって事になっちゃいないか知りたいんです。

※JITのおかげさまで、簡単にベンチテストが作れない事が問題なんです><
※オブラートに包んだ所にミソがありそうなら、どんどん公開します。 O!S!I! O!S!I!

692 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 09:07:15 ]
Stategy自体選択ミスに1票

693 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 09:08:56 ]
switch最強伝説を更新するんですか? ('A`) >692

694 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 09:14:22 ]
C#自体の選択ミスに1票

695 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 09:19:38 ]
C#のEnum型とswitchの相性の良さは無敵だぉ!! デザパタ厨涙目! プギャー(^0^)9

696 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 09:27:05 ]
>695
私もそう言う事が聞きたかったので、ありがとうございました。

是非参考になるサイトをご紹介頂きたくお願い致します。 m(_ _)m

697 名前:デフォルトの名無しさん [2008/06/05(木) 09:28:56 ]
 ペイントを操作して、絵を描こうとしているのですが、
ドローイングエリアをうまくクリックしてくれません。
どなたか、どうすればいいのか教えていただけませんでしょうか?

[StructLayout(LayoutKind.Sequential)]
public struct RECT {
public int left;
public int top;
public int right;
public int bottom;
}
const uint WM_LBUTTONDOWN = 0x201;
const uint WM_LBUTTONUP = 0x202;

public void RemotePaint() {
IntPtr hWnd;
string sClassName = "MSPaintApp";
string sWindowText = null;
sClassName = "AfxFrameOrView42u";
sWindowText = null;
hWnd = FindWindowEx(hWnd, IntPtr.Zero, sClassName, sWindowText);
SetForegroundWindow(hWnd);
RECT winRect = new RECT();
GetWindowRect(hWnd, ref winRect);
System.Threading.Thread.Sleep(1000);
PostMessage(hWnd, WM_LBUTTONDOWN, 100, 100);
System.Threading.Thread.Sleep(500);
PostMessage(hWnd, WM_LBUTTONUP, 100, 100);
}


698 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 10:39:13 ]
>>566
サブクラスのコンストラクタが動く前に
オーバーライドされた仮想関数が呼び出されるわけで
ちょっと気持ち悪いですね。



699 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 10:41:09 ]
>>691
あまりにも頻繁にUpdateが呼ばれるならやや効率は悪いだろうな。
でも多分誤差レベル。
大抵ほかの処理でそれ以上にメモリ使ってるだろうから。

ただ、作りとしてはぱっとしないな。


700 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 11:18:52 ]
>ぱっとしないな
ぶっちゃけそこなんです。

 上の話の終わり方だと、ConcreteAとConcreteBを継承した大きなクラスを作って
処理部分だけ、switchかdelgate型で置き換え可能にする。
・JITはswitchが強いってことは何処までか?
・一つの処理がどの程度長いとdelgate型が有利になるか?
でバッチテストが作れるなと思ってました。
  っていうか、そういうテストした人の本や社員のサイトがあっても良いなと。

これも「ぱっとしないな」と思ってくれたら、むしろ愉快なんですけどね。

あと
>大抵ほかの処理でそれ以上にメモリ使ってるだろうから。

私の
>・ガベコレでメモリ使用量のコストが無いことは解ったつもり。
への返事でそんなに深い意味は無いですよね?

※最大メモリ使用量より速度優先
※速度ねらいで、ConcreteA、ConcreteBに変数名の重複を許さないぐらい程度は妥協範囲。

701 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 11:22:09 ]
delegateの"e"が抜けてる。

702 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 11:25:28 ]
デリゲートなんかは下手に保持しとくより毎回newした方が速いらしいね

703 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 11:32:07 ]
thx
delegateは捨てましょう。

…C的には、関数ポインタよりnewが早i(ry

JITのnewまわりの最適化を見られれば、それでも疑問は解決できます。

704 名前:702 mailto:sage [2008/06/05(木) 11:36:07 ]
>>703
意味わかってる?
デリゲートが遅いって言ってるんじゃなくて,デリゲート型のオブジェクトをnewするときの話だよ

705 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 11:45:56 ]
>704
ミスリードです>< すいません。

 最初に戻ると、元parentStategyInstanceを持ってるクラスを作った時に、
デリゲート型のオブジェクトをnewできます。

あとは
  if(hoge<hage)
    {exceDelege = ConcreteAexceDelege}
  else
    {exceDelege = ConcreteBexceDelege}

あと、
>※速度ねらいで、ConcreteA、ConcreteBに変数名の重複を許さないぐらい程度は妥協範囲。
これ、 ConcreteA、ConcreteBでずらずら並んで、20個ぐらいあったら一気に話が不毛になるな。('A`)



706 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 11:51:10 ]
だから、逆なんだ。
  if(hoge<hage)
    {exceDelege = ConcreteAexceDelege}
  else
    {exceDelege = ConcreteBexceDelege}

よりも >702は
  if(hoge<hage)
    {exceDelege = new exceDelegater(ConcreteAexce)}
  else
    {exceDelege = new exceDelegater(ConcreteAexce)}

707 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 12:05:13 ]
newの最適化っつっても、確保に関しては基本的にマネージヒープの
未割り当て領域へのポインタをオブジェクトサイズ分進めるだけだぞ。
もちろん頻繁にnewすればGC起動の機会を与えることになるから、
パフォーマンスを気にするならインスタンスのキャッシュは基本ではあるが。

708 名前:691 mailto:sage [2008/06/05(木) 12:34:44 ]
 話を長引かせる様な書き方をしてしまってすいません。
>696 >700-701 >703 >705-706
まで私ですね。

>ConcreteA、ConcreteBでずらずら並んで、20個ぐらい
は失言でしたが、>707にはそこまで考慮して貰ってありがとうございます。
「インスタンスのキャッシュは基本」
これを確認出来て良かったです。

ソースの出所が良い所ぽかったので、>704みたいな事は無いか色々勘ぐったんです。

<ちら裏>
switchしかりnewも、CLRやJITの最適化って非線形で決めてナシなんだな。
皆さん好きですか?
私は、規模が変わるたびにバッチテスト・ベンチマークテストする事になりそうで('A`)



709 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 12:51:30 ]
大抵現実に影響があるようなパフォーマンス問題は
そんな細かい話ではない。


710 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 12:53:58 ]
デリゲートがキャッシュするよりnewってのは初めて聞いたな。
どこででた話?
それかひょっとして非常に使用頻度の低いデリゲートの話?







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

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

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