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


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

C#, C♯, C#相談室 Part52



1 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:15:52 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part51
pc12.2ch.net/test/read.cgi/tech/1233757615/

Visual C# 2008 Express Edition 日本語版
www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

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

762 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:31:02 ]
>>761
push()とpop()とpeek()が使える、Listの特殊な場合がStack、って分類なだけでしょ。
実装的にもアルゴリズムのオーダー的にも差異はほぼ無いわけだし。

アセンブラレベルでpushとpopを特別扱いしてるのは、詳しくは知らないけど、
それこそコールスタックで使うとか歴史的理由とかその辺じゃないの?

763 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:32:06 ]
>>762
差異がないってw

764 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:37:16 ]
>>762
あんま関係ないけど、呼び出しスタックはダイクストラという偉い人がスタックはハードウェア化すべきだとのたまわったので、以後のCPUでは多く採用された。
構造化プログラミングの提唱者の人ね、その後RISCという方法が主流になって再び捨てられた。
歴史的にはそんな感じ

765 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:38:13 ]
>>763
実際、Javaではそのように扱っていて、特に問題は起きてないわけだが。

逆に、「ランダムアクセスができるものはスタックとは呼ばない」という定義が
一般的だと主張するなら、それを示してくれ。
「○○という計算機科学の教科書に書いてあった」とかそういうのでもいいよ。

766 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:39:15 ]
>>764
そーか、それは知らなかった。勉強になったよサンクス。

767 名前:デフォルトの名無しさん [2009/06/08(月) 19:40:24 ]
だから.NETのStackではあえて差異をつけてるんだろ
同じなら二つもいらない

768 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:41:44 ]
>>765
無意味なところに話を持っていくなぁ

769 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:53:06 ]
Stackでランダムアクセスができるのはおかしい
というのに異論がある人がいるとは思わなかったじぇ。

770 名前:デフォルトの名無しさん [2009/06/08(月) 19:57:24 ]
できたら意味がない
というだけのことなのに…



771 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:01:45 ]
>>769-770
じゃあ、コールスタックはおかしくないのか、というところに話が戻るわけだが。

772 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:08:31 ]
IListインターフェイス付きのコレクションと、そうでないコレクションは実装は同じでも設計レベルでは分けて考えろという事。
実装からインターフェイスを分離独立せよ、これがわからんやつはプログラマ廃業したほうがいい。

773 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:21:28 ]
0xcc.net/blog/archives/000043.html

他の言語でも、むしろ配列の操作の一部としてpush(), pop()がついてるのが普通みたいだね。

774 名前:デフォルトの名無しさん [2009/06/08(月) 20:22:57 ]
Visual C# 2008 EEで開発しています。

以前C++で書いた関数を利用するにはどうすればいいですか?


775 名前:デフォルトの名無しさん [2009/06/08(月) 20:23:42 ]
書き直しましょう

776 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:26:31 ]
>>773
そんな結論になるおまえにびっくりだ

777 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:29:08 ]
>>765
Introduction to algorithms
Stacks

The order in which plates are popped from the stack is the reverse of the order in which they were pushed onto the stack,
since only the top plate is accessible.

778 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:29:12 ]
>>774
今すぐネットを切断するんだ、そして冷水を浴びろ、それで利用方法を思いつけるはずだ。

779 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:30:16 ]
>>776
C#みたいに、配列とスタックを全く違うものとして扱う言語の方が特殊なんじゃないの。
多くの言語では、スタック操作は配列が提供する機能の一部として扱っているようだが。

780 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:32:22 ]
>>779
まさか、サイズ不定の場合はリンクリストにするのが普通だろ、こんなの常識



781 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:34:54 ]
俺アセンブラはMIPSアセンブラしか知らないけど
スタックポインタでランダムアクセスっぽくしてるのは
ランダムアクセスというよりPeekの操作に該当するんじゃないかな

782 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:36:10 ]
>>781
おまえさんは抽象的に考えるということを一度勉強すべきだな

783 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:38:18 ]
2010年に.NET2.0SDKに置き換わるものが出るの?

784 名前:デフォルトの名無しさん [2009/06/08(月) 20:39:46 ]
>>781
こんなところでグダまいてないでさっさとゲーム作れw

785 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:42:33 ]
>>777
俺も真っ先にブックサーチでそれを探したけど、
「(カフェテリアで使っているばね式なお皿のスタックは)一番上のお皿のみが
アクセス可能なので、スタックにpushしたお皿は逆順でpopしてくる」としか書いてないよね?
どこにも、「スタックから一番上以外のお皿を取り出してはいけない」とは書かれていないと思うのだけれど。

>>780
なんで突然Linked Listの話が出てくるのか分からないんだけど、
一応聞いておくけど、Linked Listをランダムアクセスしたときの計算量は?

786 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:43:02 ]
>>783
SDKなら.NET3.5用のがすでにあるが、一体何を言いたいんだ?

787 名前:デフォルトの名無しさん [2009/06/08(月) 20:45:53 ]
>>785
お前プログラマやめた方がいいと思うよ、マジで、才能ないから。

788 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:46:37 ]
>>782
どういう突っ込みか理解できないんだけど。

789 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:46:45 ]
>>787
煽りはいいので、論理的な反論をヨロシク

790 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:49:09 ]
なんだか足し算できない子供が偏微分方程式を教えろと言っているような様相だなw



791 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:51:05 ]
と、高卒が申しております。

792 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:51:22 ]
>>785
明示的には書いてないが、その例えと同様に定義しているはずだが。
というのは、その先でキューをスタックで実装しろという問題がある。
意図から考えてランダムアクセスができるはずがない。

793 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:55:36 ]
ひどいパラノイアだな

794 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:55:44 ]
素直にオブジェクト指向の教科書買って、一週間程度でいいから読めよと……
余りにひどス

795 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:56:24 ]
質問者不在の不毛なやりとりだな・・・

796 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:57:49 ]
>>792
Figure 10.1では、まさに配列で実装したスタック(An array implementation of a stack S)を
例示として出してるように見えるわけだが。
その問題は、「キュー(の操作)をスタック(の操作のみ)で実装しろ」という以上の意味はないんじゃね。


飯食ってくるのでちょっと返事遅れる。

797 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:04:05 ]
>>795
だって、これを見た初学者が
「スタックは配列とは関係ありません。サイズフリーなリンクリストで実装するのが正統(キリッ」
とかいう謎の主張を真に受けたりしたら嫌じゃん。

798 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:10:27 ]
>>796
いや、だからその実装を抽象化したのがstackなんだろう。
stackと配列+インデックスは別物。カプセル化されてるだろ

799 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:22:47 ]
なあ、スレチじゃない?

800 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:24:26 ]
いつものC++の頭おかしい人では、ほんと困ります



801 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:25:21 ]
うん。スレ違いです。

802 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:26:16 ]
C++のスレもヤツと思わしき書き込みでメチャメチャになってるんだが
C++の中の人も大変だなw

803 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:33:16 ]
>>798
仮にそうだとしても、配列由来の操作を隠蔽しなければならない確固たる理由はなくね?
事実、C#以外の多くの言語では、スタック操作は配列操作の一部として扱われているわけで。

804 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:45:28 ]
ゲームプログラムなら俺に聞けスレも悲惨な有様だね、死んでしまえばいいのに

805 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:47:56 ]
自分は、VectorからStackが派生しているJavaは気持ち悪いと思う。
反対の、IStackやIQueueがあって、IListがその2つ(やその他)を継承するという作りのほうが自然に感じる。

806 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:48:31 ]
framework 4.0 の並列処理機能についてMSをのぞいて詳しく書いてあるサイトでわかりやすいところない?



807 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:52:42 ]
継承しないで、独立の実装されるのが理想だと思うな。
class ListStack : IList , IStack ←ないけど
class Stack : IStack ←ないけど
どちらも実装は同じでもいいだろう、しかし使う側がちゃんと考えて配列アクセスが不要ならStackを使うとしてくれるとListStackとStackの実装は後で変えることもできる。
基礎ライブラリなので変えることはしないだろうが、実際の開発ではこれが決定的な差になる。

808 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:57:02 ]
>>805
それだと、スタック操作を定義しないListが作れないような

809 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:57:51 ]
作りとしてはこんな感じかな
class ListStack : IList , IStack {
List list;
各種実装
}

class Stack : IStack {
ListStack list;
IStack で公開されるメンバーのみ公開しておく
}

これならListより配列の方が効率的だからという理由で後から object [] といった具合に変えて高速化する事も可能だろう。
上のDoubleListの例でいえば、Listを継承してしまうとListの機能に固定されてしまう訳だ。

810 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 22:30:22 ]
ふらっとが落ち着いたと思ったら、今度はこっちが荒されてて笑った

>>806
一番詳しい所は、Parallel Extensionsチームのブログ
日本語で詳しく書いてある所は知らない。



811 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:30:12 ]
あまりの流れに素で>>806をスルーしてたw
>>810を見て初めて存在に気づいたw

812 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:49:31 ]
うん、確かに分かりやすく記述してあるな。
ただbeta1だけにそもそも手を出さないのが正解かもしれんな。

813 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:55:20 ]
>>803
配列由来の操作を隠蔽しなかったら
他の実装に変えられなくなるじゃん。

814 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:41:17 ]
現在、とある目的のための汎用エディタをつくっているのですが、
GUIを楽に実装したいのでPropertyGrid を使いたいです。

しかし、なんせ汎用エディタなので、設定の項目は xml で定義できるようになっているため、
設定項目をまとめたものをクラスとして定義して PropertyGridに渡す」ということができません。

そういう場合でも PropertyGrid を使う事はできますか?

もしくは、空のクラスをつくって、設定ファイルに従って動的にプロパティを追加..
といったことができれば素直に PropertyGrid を使う事ができて楽なんですけど...



815 名前:デフォルトの名無しさん [2009/06/09(火) 01:51:26 ]
何に対して汎用的なのかサッパリーで
なんで汎用的だと設定項目がxmlになるのかよくわからん
IXmlSerializerとかなかったっけ

816 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:54:03 ]
できます

817 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 02:15:42 ]
すみません、まぎらわしい書き方でしたね。XMLうんぬんは全然関係なくて、
ようするに
項目名(プロパティ名)とその型(整数、文字列、実数)が設定ファイルで定義されている

設定をロードするまでプロパティの個数も名前も型もわからない

ソースコード上でクラスを定義できない

だから PropertyGridもつかえない?? ←ここが問題

こういう目的で PropertyGridをつかうにはどうすればいいのでしょう?
もしくは、動的にクラスのプロパティを追加したり削除したりするにはどうすればいいのでしょう?




818 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 02:40:53 ]
なんかnotepad++とかeclipseみたいな感じか

設定項目をxmlで記述するとして,
その設定項目を実際に反映させるのは誰の役目?
プラグイン方式にするのだったら設定項目を集めたクラスを,プラグイン側で公開するようにすればいいだけなんだけど

819 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 03:45:21 ]
TypeConverter を継承して、好き勝手な property を登録するという方法でやてみました。
その結果、TypeConverter を継承した MyPropConverter をつくり、

[TypeConverter(typeof(MyPropConverter))]
class Hoge{}

という空っぽの Hoge クラスのインスタンスを PropertyGrid.SelectedObject に指定することにより、
好きなだけ任意のプロパティ項目を表示できるようになりました。しかし...

たとえば
オブジェクトAを選択すると、設定テキストAの内容をつかってプロパティを表示、
オブジェクトBを選択すると、設定テキストBの内容をつかってプロパティを表示、
オブジェクトCを選択すると ... するというようにしたいのですが、
すると、いま選択されているのが AなのかBなのか、なんなのかを MyPropConverterが知る必要があります。
(オブジェクトの種類によって GetProperties の戻り値を帰る必要があるため)
これはどのように指定すれば良いのでしょう?

理想をいえば、MyTypeConverter のコンストラクタでそのまま設定テキストを渡して解析させ、
結果に応じて GetProperties の戻り値をかえたいです。しかしそのようにすると、

propertyGrid.SelectedIndex = new Hoge(); の行で実行時エラーになります。問題はそもそも
MyPropConverterのコンストラクタの呼び出し元はどこなのか?ということですが....



820 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 04:11:56 ]
>>819
ほれ
msdn.microsoft.com/ja-jp/library/system.reflection.emit.typebuilder.aspx
これなら何でもできるぞ



821 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 08:50:01 ]
プロパティの中にプロパティが入ってるやつ
Size 10, 10
 Width 10
 Height 10

それに似た感じで
Cube 10, 10, 10
 X 10
 Y 10
 Height 10
を作るにはどうしたらいいですか?

822 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 08:59:28 ]
何が分からないのか分からない
クラス/構造体の作り方が分からないのか?

823 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:17:26 ]
それは分かりました
クラスの中に構造体が入りません

824 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:20:04 ]
class Hoge {
 struct Point { public int X, Y }
 Point Size { set; get; }
}


825 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:27:10 ]
>>824
C/C++が混ざってるぞ

826 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:38:41 ]
>>825
いや、Y の後ろの ; 忘れてる以外は C# 的に問題ない。
コンパイル通るぞ。

827 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:57:30 ]
XとYのsetとgetはどこに書くのですか?

828 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:01:05 ]
構造体の中にプロパティが入らないからわけわからん・・・・

829 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:07:12 ]
>>826
ごめんPoint型のSizeは盲点だった

public struct Cube {
  private int width, height, length;
  public int Width { get { return this.width; } }
  public int Height { get { return this.height; } }
  public int Length { get { return this.length; } }
  public Cube(int width, int height, int length) {
    this.width = width;
    this.height = height;
    this.length = length;
  }
}

830 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:08:44 ]
>>827
クラスと同じ

>>828
何で入らないと思ったのかkwsk



831 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:39:17 ]
最後にreturn this;入れるのかな?
とりあえず仕組みは分かりました
ありがとうございます!

832 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:58:24 ]
この後この構造体使うプロパティ作ったんだけどビルドでIDE落ちる

833 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 11:36:21 ]
え、これ構造体の中のプロパティって全部使えないの??
外にまたそれ用のWidth、Height、Lengthのプロパティも作るなら構造体の中にプロパティじゃなくて変数だけでよくない?

と思い始めてるけど勘違いしてるのかな

834 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 12:10:44 ]
>え、これ構造体の中のプロパティって全部使えないの??
イミフ。set書け
>外にまたそれ用のWidth、Height、Lengthのプロパティも作るなら構造体の中にプロパティじゃなくて変数だけでよくない?
プロパティが何のためにあるか理解してないようだな。

835 名前:デフォルトの名無しさん [2009/06/09(火) 12:24:54 ]
NetworkStream読み出し用のバッファとして、Queueクラス使うのって大げさすぎる?
なるべくコンパクトでオーバーヘッドの少ない方法がいいのだけど、自前でByte用の
リングバッファクラス作った方がよい?

836 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 12:51:55 ]
そのbyte列ってどういう用途に使って、どのくらいのサイズがあるの?

837 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 12:59:37 ]
>>836
相手PCからほぼ間断なく来るバイト列を読み込みながら、パケットとして処理出来るまで溜め込んで
パケットを解析して次の処理に渡します。

パケットのサイズは200バイト未満で可変です。
パケット間は区切り文字も何もなくダラダラと流れてきますが、途中○バイト目がパケットサイズに
なっているので、それを頼りにパケットを解析します。

838 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 13:24:36 ]
TypeDescriptorから深い世界へどうぞ。

839 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 13:59:32 ]
なんかここ最近どっかのスレで見たことあるような質問だな・・・

840 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 14:16:41 ]
>>837
Queueは大袈裟っつーか使い道が違うんじゃないかな
NetworkStreamから1バイトずつ読み取るつもりなわけでもあるまい



841 名前:デフォルトの名無しさん [2009/06/09(火) 15:05:23 ]
WebBrowser.GoSearch メソッド で、IEのデフォルトの検索ページに飛ばしています。
デフォルト設定では Google になっていて、これまでは必ずGoogleに飛んでいた
のですが、ここ数日設定していないのに、Bing に飛んでしまいます。

WebBrowser.GoSearch メソッドを使うとこのBingが自動的に選ばれてしまうのを
これまで通り正しくIEのデフォルトの検索ページに飛ばせるように戻せないでしょうか?
できましたら、変更の仕方を教えていただきたく、何卒よろしくです。

842 名前:841 [2009/06/09(火) 15:07:12 ]
OSはWindowsXpSP3、.NETはVer2.0です。よろしくお願いします。

843 名前:841 [2009/06/09(火) 15:11:43 ]
ああ!!わかりました、標準の検索ページ自体が書き換えられていました。
すみませんでした。。。申し訳ありません。。。

844 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 15:38:00 ]
バイト数が送られてくるならリングバッファとかじゃなくて、
単にキューでバイト配列を管理したらいいんじゃない?


845 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 15:45:01 ]
受信単位の内部バッファをQueueで溜め込むのは普通にありだろう。
深く考えずに単一バッファにして追記していって消費したバイト分を前にずらすという力技でもいけちゃいそう。
サーバの話なら論外だけど。

846 名前:デフォルトの名無しさん [2009/06/09(火) 16:32:02 ]
tcpClient tcp;
public NetworkStream ns;
public Queue<Byte> ReadQueue = new Queue<Byte>();
Byte[] ReadData = new byte[512];

public Test(string hostname, int port)
{
tcp = new TcpClient(hostname, port);
ns = tcp.GetStream();
ns.BeginRead(ReadData, 0, ReadData.Length, CBRead, ns);
}

private void CBRead(IAsyncResult ar)
{
NetworkStream ns = (NetworkStream)ar.AsyncState;
Int32 cnt = ns.EndRead(ar);
for (int i = 0; i < cnt; i++)
{
ReadQueue.Enqueue(ReadData[i]);
}
ns.BeginRead(ReadData, 0, ReadData.Length, CBRead, ns);
}


Queueを使ってやりたいことは大体こんな感じです。
延々とバックグラウンドで受信しているイメージです。
パフォーマンス的にどうなのかなあ、自前リングバッファの方がいいのかなあと言う疑問でした。

ちょっと質問からずれるのですが、連続してストリームを処理する場合のBeginReadの
使い方ってこれであってます?

847 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 16:34:52 ]
Mainが無かったです

static void Main(string[] args)
{
test("192.168.1.100", 10001);
while (true)
{
while (wl.ReadQueue.Count > 0)
{
Byte b = wl.ReadQueue.Dequeue();
Console.Write(b.ToString("X2"));
}
}
}


848 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 16:47:38 ]
もうQueueなんて使わないでMemoryStreamに流し続ければいいんでない?
そしてCBRead()の最後がキモい
だれも止められないじゃん

849 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 16:55:12 ]
>>848
どうしてもバッファから取り出した分を詰める作業が必要なのでMemoryStreamはちょっと。

最後キモイですか。
我ながらこりゃあいいやと思ったんですが、どうしましょうか。

850 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 17:08:55 ]
んーいまいちQueueの用途がわからない
もしかして>>846は肝心の”取り出した分を詰める作業”が書かれていない?

しかも,そもそもTCPなんだからByte型のデータを自前でバッファする必要性をあまり感じないんだが.
むしろQueueに突っ込むのは,データストリームから取り出した使えるデータの方がヨサゲ



851 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 17:13:56 ]
だよね
少なくともバイト数が分かる仕様ぽいから、
受信スレッドがひたすらまとまり単位でバイト配列に取り出してバイト配列をキューに追加
処理スレッドがキューからひたすら取り出して処理すればいいような気がする。
ああ、スレッド間の同期はちゃんとやってね。


852 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 17:15:44 ]
その場合は簡単なブロッキングキューを作ればよりシンプルになるかも。

853 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 19:30:09 ]
>>810
亀だけどサンクス
思ったより知りたいことが書いてあったので為になった!

854 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:41:04 ]
public static object GetMyObject() {
 AssemblyName asmName = new AssemblyName("myAsm");
 AssemblyBuilder asmBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(asmName, AssemblyBuilderAccess.Run);
 ModuleBuilder modBuilder = asmBuilder.DefineDynamicModule("myModule");
 TypeBuilder typeBuilder = modBuilder.DefineType("myClass", TypeAttributes.Public, typeof(object));
 typeBuilder.DefineField("x", typeof(int), FieldAttributes.Public);
 typeBuilder.DefineField("y", typeof(int), FieldAttributes.Public);
 Type mytype = typeBuilder.CreateType();
 return Activator.CreateInstance(mytype);
}

という動的クラスのインスタンスを返す関数を作って

propertyGrid.SelectedObject = GetMyObject();

とやってみましたが、プロパティグリッドにはなにも表示されません。
GetMyObject() の戻り値をみてみたところ、クラス名 myClass で
メンバ x, y も存在し、意図したとおりのクラスとインスタンスが
生成されているように見えるのですが、プロパティグリッド反映されないのはなぜなのでしょうか?



855 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:45:43 ]
だってobjectだもの

856 名前:デフォルトの名無しさん [2009/06/09(火) 20:46:32 ]
肝心のプロパティを定義してないじゃないか

857 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:53:34 ]
そうだった
objectじゃなくてもいいんだった

858 名前:デフォルトの名無しさん [2009/06/09(火) 20:56:33 ]
プロパティグリッドで使うだけなら本当に型を生成しなくてもTypeDescriptorで簡単にプロパティを追加できるよ

859 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:57:59 ]
>>856の書いてるように、フィールドでは駄目だよ。
基本的には読み書き可能なプロパティを定義しないと。


860 名前:デフォルトの名無しさん [2009/06/09(火) 21:04:18 ]
プロパティを定義するならアクセサメソッドの実装を
ILGeneratorで生成しないといけないので超面倒だぜ



861 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 21:12:53 ]
まあぶっちゃけDataSetに読み込んでDataRowViewを使えばいいんじゃないかなw


862 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 21:15:02 ]
ここまでしてpropertygrid使う意味があるのだろうか






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

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

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