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


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

C#, C♯, C#相談室 Part55



1 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 23:54:00 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

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

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

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

136 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 14:20:19 ]
急にもりあがってきた

137 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 14:50:34 ]
インスタンスメンバを表すのに::はあんまり使わないだろ

138 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 17:26:44 ]
EventInfoから直にハンドラ追加できるだろ

139 名前:131 [2009/12/19(土) 21:57:14 ]
>133
>135
>138

ありがとうございます。

EventInfoのAddHandler辺りを上手いこと使えば
出来そうな予感はしているのですが
いまいちよくわかりません。

MethodInfoも有り、ますます混乱してます。

140 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 22:00:37 ]
プラグインみたいなことをしたいならinterface用のDLLを
準備しておくのがセオリーだな。
インターフェイスにキャストしたあとは普通に使えるので便利。

141 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 22:27:42 ]
// csc /o /t:library test1a.cs
using System;
public class Foo {
 public event EventHandler Do;
 public void Fire() {
  EventHandler eh = Do;
  if (eh != null) eh(this, EventArgs.Empty);
 }
}

142 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 22:29:56 ]
// csc /o test1.cs
using System;
using System.Reflection;
public class Program {
 static void Main() {
  Type fooType = Assembly.LoadFrom("test1a.dll").GetType("Foo");
  object foo = Activator.CreateInstance(fooType);
  EventInfo einfo = fooType.GetEvent("Do");
  MethodInfo minfo = fooType.GetMethod("Fire");
  einfo.AddEventHandler(foo, new EventHandler(MyHandler));
  minfo.Invoke(foo, null);
 }
 static void MyHandler(object sender, EventArgs e) {
   Console.WriteLine("WTF !");
 }
}


143 名前:デフォルトの名無しさん [2009/12/20(日) 10:31:03 ]
質問です。
C#で、基本文法を学習した後に読む本、
例えばCのプログラミング作法、C++のEffectiveC#やCording Standards、に該当するような
コーディングのスタイルスタンダードや、べからず集、などで勉強になる良書でお勧めがあったら教えてください。
よろしくお願いしますm(_ _)m

144 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 10:34:10 ]
すいません3行目は
C++のEffectiveC++の間違いです



145 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 10:36:33 ]
本ばかり読んでないでMikuMikuDanceを作れ

146 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 11:15:41 ]
>>143
Effective C#は 最近翻訳版が出たんじゃなかったかな?
中まだ見てないけど。

147 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 14:42:46 ]
シーシャプー

148 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 15:09:35 ]
>>141,142
デリゲートもDLLで定義されている場合はもう少しめんどくさくなる。
-- test1a.cs
 :
public delegate void FooHandler(object sender, EventArgs e);
public class Foo {
 :
-- test1.cs
  Type fooType = asm.GetType("Foo");
  Type fooHandlerType = asm.GetType("FooHandler");
  object foo = Activator.CreateInstance(fooType);
  Delegate fooHandler = Delegate.CreateDelegate(fooHandlerType, typeof(Program), "MyHandler");
  EventInfo einfo = fooType.GetEvent("Do");
  MethodInfo minfo = fooType.GetMethod("Fire");
  einfo.AddEventHandler(foo, fooHandler);
  minfo.Invoke(foo, null);

MyHandlerがインスタンスメソッドの場合はthisが必要になる。
Delegate fooHandler = Delegate.CreateDelegate(fooHandlerType, typeof(Program), this, "MyHandler");


149 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 18:21:02 ]
>>146
出たな
なぜかMore〜の方が先に出たw

150 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 18:57:07 ]
なんで翻訳のほうが原書より安いんだ?

151 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 19:40:05 ]
結局原書を読むはめになるから

152 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 11:20:12 ]
MSの機械翻訳は暗号化

153 名前:デフォルトの名無しさん [2009/12/22(火) 11:19:34 ]
ムズカシス

154 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 13:06:00 ]
ムズクロスグリ



155 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 13:22:25 ]
ある何が

156 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 13:35:10 ]
すべて中国の陰謀

157 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 17:43:52 ]
ぐりクロスぐら

158 名前:131 mailto:sage [2009/12/22(火) 22:46:10 ]
>140

それは意味無いですね


>141
>142
>148

皆様ありがとうございます。
試して後日結果を書きますね。


159 名前:デフォルトの名無しさん [2009/12/23(水) 18:01:19 ]
飯だ
うっほうっほ!

160 名前:デフォルトの名無しさん [2009/12/24(木) 00:11:45 ]
プログラマーとしてC♯の仕事に就くには、
デリゲートや
オーナードローや
オーバーライドの意味は絶対に知っておかなきゃ話にならないですか?

161 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 00:14:46 ]
言語仕様なんか全部完全に理解して人に説明できるくらいで当たり前
それではじめてスタートライン

162 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 00:24:40 ]
時や場所をわきまえるのが第一歩だな
つ マ板

163 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 00:24:40 ]
んなわけない
そんな奴がいたとしたら年収数千万クラスだわ
本もたくさん書いてることだろう
国内の本みれば国内のエンジニアのレベルがわかるでしょ

164 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 00:27:24 ]
C#の言語仕様って.Netの関数も入らないとどうしようもないわけだから…
絶対無理だね



165 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 00:32:38 ]
言語の勉強しない奴って何なんだろう
もうほんのちょっとだけ勉強すれば世界がかわるのに

166 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 00:52:56 ]
effectiveC#のデータバインドの項が良く解らないんです。つか使ったこと無いんです。
もうすこしサンプル読んで見たいのですが、お勧めのサンプルコードありませんか?

167 名前:デフォルトの名無しさん [2009/12/24(木) 01:11:50 ]
デリゲートとか、プロのうちの父ちゃんに聞いても知らなかったぞ。
ちなみに父ちゃんは、コボラーから独学でCを身に付けて開業し、今は月収100万くらい。

168 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 01:14:23 ]
畑違い

169 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 01:40:00 ]
>>167
新技術の学習をやめてる時点で先が無い

170 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 02:29:23 ]
C++には継承と似たものに
デリゲーション(委譲)ってのがあるが
それも知らないんだろうか。

まぁオブジェクト指向なんてすでに関数型使いこなせるヒトには大して重要じゃないし。

171 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 04:35:04 ]
>>163
それプログラマとしてじゃないよね?

172 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 09:26:17 ]
>>167
Cプログラマなら、関数ポインタの使い方を知っていれば、デリゲートの概念は知ってるのでOK。

173 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 10:18:06 ]
>>171
話しかけないでくれ

174 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 10:33:27 ]
デリゲートの使い道がわかりません。



175 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 10:39:13 ]
デリゲートと関数ポインタは機能として似た部分あるが概念はまったく違うものなのでおkではない

176 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 10:46:44 ]
>>175
そっか? Cの関数ポインタ型の抽象化といっていいんじゃないか。実装は、全然違うけど。

177 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 11:10:05 ]
どっちかというと,デザインパターンで多用されるような
メソッドを無理やりオブジェクトのように扱うための手法を
言語に取り込んで関数ポインタっぽくしたものだな

178 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 15:25:55 ]
関数ポインタ + thisがデリゲートという思ってれば問題ない。
一度C++でクラスメンバーへの関数ポインタを扱ってみるといい。
めんどくせーから。

179 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 15:39:31 ]
日本にプログラマとして数千万もらってる人いるのかなぁ

180 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 16:04:46 ]
プログラマー板へ行けよ

181 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 16:10:19 ]
ラムダ士気のおかげでデリゲートじゃなきゃやってられなくなった

182 名前:デフォルトの名無しさん [2009/12/24(木) 20:26:26 ]
リフレクションでプラグインのDLLをロードします。
そのときプラグインのメソッドは制限ゾーンで動かしたいと思っています。
そのときに、これ
[PermissionSet(SecurityAction.PermitOnly, Name = "Nothing")]
public void func() { ...
と同等の状態で動かしたいのですが、
MethodInfo.Invokeで呼び出す前に制限状態にするとInvokeに失敗してしまいます。
プラグイン側は第3者が作るので属性をつけることを強制できません。
なにか良い方法はないでしょうか。

183 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 22:55:22 ]
NothingなAppDomainを作って、そいつの中へDLLをロードすれば?

184 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 23:01:07 ]
らむだとでりげーどってなあに??



185 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 23:15:00 ]
そもそもなんでMethodInfo.Invokeで呼び出す必要があるんだ?
インターフェイスか基底クラスにしといて、そこで定義したメソッドを
SecurityAction.PermitOnly状態から呼び出したらいけるんでないの?


186 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 23:20:16 ]
Dispose("俺");

187 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 23:53:24 ]
Dispose("このスレ");

188 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 08:14:40 ]
"俺".Dispose();
"このスレ".Dispose();

189 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 09:39:15 ]
俺にとっては
using このスレ;

190 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 09:46:29 ]
">>1-1000".Dispose();

191 名前:デフォルトの名無しさん [2009/12/25(金) 11:10:51 ]
USBカメラと接続して静止画を撮りたいです。
DShowNETというのがあるようですが、VistaやWin7にも対応したいです。
どんな方法があるでしょうか。

192 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 11:17:42 ]
191.Dispose();

193 名前:デフォルトの名無しさん [2009/12/25(金) 11:47:24 ]
>>178
それやったことあるけど面倒だったわw。
確かに面倒だったね。

194 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 12:02:49 ]
>>191
DShowNETでOK



195 名前:デフォルトの名無しさん [2009/12/25(金) 12:44:46 ]
>>194
やだぷーw。

196 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 12:58:10 ]
OpenCV

197 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 13:36:41 ]
DirectX使えば?
AudioVideoだっけ?ちょっと忘れたが・・・

198 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 13:54:03 ]
>>199.Dispose();

199 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 13:58:17 ]
>>198
それヌルポ例外

200 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 14:06:36 ]
例外出てたの4秒か

201 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 14:14:05 ]
Silverlight4でWebカメラ使えるらしいけど

202 名前:191 [2009/12/25(金) 14:33:58 ]
VistaってDirectShowがDirectXが外れて
DShowNetが使えないって聞いたんだけど
ガセネタ?


203 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 14:37:59 ]
それは勘違い。SDKでの話。

204 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 15:13:53 ]
>>199
ヌルリじゃね?



205 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 15:17:46 ]
どちらにしろ
ノーリアクションException だな

206 名前:191 [2009/12/25(金) 15:54:43 ]
>>202
そうなんだ。ありがとう。

誤:VistaってDirectShowがDirectXが外れて
誤:VistaってDirectShowがDirectXから外れて

207 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 16:19:58 ]
もちつけ

208 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 17:00:44 ]
やだやだやだー!

209 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 19:24:54 ]
正解も書けよ

210 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 23:34:07 ]
一次元配列をラップしてArrayのstaticメソッドをインスタンスメソッドとして
使えるジェネリッククラスを書いたら便利かな、とふと思ったんだけど、
これは馬鹿げた発想だろうか?

それとも割とありふれた考え方?

もし同じようなことをやってる人がいたら、参考までにどんなクラス名にしてるか
教えてくれるとありがたい。

211 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 23:45:41 ]
ばかげた発想だろう
どうしてもってんなら拡張メソッド書いとけ

212 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 00:06:21 ]
>>210
どういうときに役にたつのかわからんちん

213 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 00:34:02 ]
わざわざそれ使うためにそのクラスをインスタンス化するのか?
拡張メソッドで充分だろ。


214 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 00:36:07 ]
>>210
同じようなことをやっている人: Microsoft
クラス名: Enumerable (名前空間: System.Linq)



215 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 00:46:26 ]



216 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 00:46:30 ]
まさにその通り過ぎて吹いたw

217 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 00:49:00 ]
その通りじゃないだろうよ。


218 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 00:52:54 ]
発想自体は馬鹿げたものではないと思う。
ただ、車輪の再発明は馬鹿げている。

219 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 01:58:54 ]
しかし他人の発明ってのは気軽には使えないんだよね。とくに業務用ソフトだといろいろとうるさく言われる。
だから自分で再発明するしかなくなる。

220 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 02:02:56 ]
発明の再実装、再構築
発明の追体験
は意味があると思うんだけどな。
何でもかんでも車輪の再発明というのはどうかと思う。

221 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 02:04:48 ]
再発明というのは表現が違う気がする
再構築とかの方がしっくりくる

222 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 02:10:28 ]
いずれにしろ、この場合はあるものをつかうのが正解。

223 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 02:17:09 ]
そこにある車輪が使いにくいなら、
使いやすいように一から作り直すのは悪いことではない。
別にそれは再発明ではなく、ただの理論の整理だし、
たまにはそれくらいしないとより良い物は作れない。

というか、あるものは必ず使えという考えしか持てないのは大問題。

224 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 11:37:05 ]
あるものを組合せた方がはやいか
作りなおした方がはやいかなんてその時その時で結構違うよね。

んで往々にして後者を選んで自爆する人が多いから
車輪の再発明はやめておけって昔から言われてるんだろうと思うよ。
基本前者のスタンスでいてどうしても必要なら後者、がいいんだと思う。

ただ車輪の再開発って楽しいんだよねぇ。
俺の設計/実装の方が綺麗!!!俺のネーミングセンスいかしてる!!!0.01%速くなったぜ!!!
みたいな。




225 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 11:39:20 ]
使い方を調べたりドキュメント読むのが面倒だから
作っちまえって流れの車輪の再構築はダメなパターンだと思う。

あとマの習性としてどっか心の底で自分の方がうまくやれるって思ってる部分があるから
作り直したくなるんだろうなーとは思うなぁ。

226 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 13:34:07 ]
過程なんか実際どうだっていいんだよ。
成果物が評価されるかどうかの話。

227 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 19:06:59 ]
流れを読まずに書きこするが、計算結果をキャッシュして、依存するほかの部分の値が更新されていなかったらその計算結果を使い続けるということをしたいんだが、
そのときの更新した時点のTimeスタンプとして、System.Environment.TickCountをつかってもよろし?パフォーマンス的にとか言う意味で。

具体的にやりたいことは、UIElementTreeのようなものがあって、上の階層の座標やスケーリングが変更されたときはそれより下のものはパネル上の絶対座標が変わることになる。
各Elementは自分自身のパネル上での絶対座標を計算しておきキャッシュしておき上のものの座標などが変わらない限りそれを使い続けたい。

とりあえずその辺のアーキテクチャは置いといてタイムスタンプとしての使用に望ましい高速な経過時間に類するものがわかるものがしりたいです。

228 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 19:48:26 ]
>>227
それ本当にパフォーマンスを考慮する必要があるの?
そういう風に聞こえない。ただの杞憂じゃないの?

端的に言ってその「タイムスタンプの取得」、n万回/secとかで行われるわけじゃないでしょ?
だったらどこにパフォーマンスを気にする必要があるの?


229 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 20:07:35 ]
>>228
わかんないなら答えなくてもいいんだよ?

230 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 20:12:00 ]
わかるから答えてるんでしょ。

231 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 20:18:34 ]
涙拭けよ

232 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 20:31:33 ]
さて、と

233 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 22:44:50 ]
今日も一日ご苦労さまでした。

234 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:08:08 ]
System.Environment.TickCountは多分最も高速。
もちろん精度は例によってデフォルト15msくらいだからそこが注意だな。
DateTime.NowやUtcNowは遅い。UtcNowは比較的速いが。精度はTickCountと同レベル
Stopwatchはもっと遅い。ただし精度ははるかに高い。




235 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:51:28 ]
>>227
>>234
一日遅れのプレゼントが来ましたよ


236 名前:デフォルトの名無しさん [2009/12/27(日) 00:39:17 ]
WebBrowserでフォルダの中身を表示してExplorerのようにして使いたいと思い、
WebBrowserのActiveXInstanceプロパティを SHDocVw.ShellBrowserWindow
でキャストして、その Document プロパティを ShellFolderView として使い、
VerbInvoked イベントなどで何かの実行をイベントとしてモニターすることを
やってみました。

その際、VerbInvoked の戻り値を true にして返しているのですが、なぜか
なんの実行もしてくれません(コンテキストメニューでCopyを選ぶとこの
VerbInvoked イベントは立つのですが「貼り付け」のメニュー項目が現れて
くれません)。何か注意すべきことがあるでしょうか?

それと、VerbInvoked によって、コンテキストメニュー上の何の処理を実行
しようとしたのかを知る方法はあるでしょうか?これも知りたいのですが、
方法がわかりません。よろしくお願いします。






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

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

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