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


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

ふらっとC#,C♯,C#(初心者用) Part47



1 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 18:23:31 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

前スレ
ふらっとC#,C♯,C#(初心者用) Part45 (実質46)
pc12.2ch.net/test/read.cgi/tech/1255658236/

377 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 08:34:46 ]
デザパタの本でも読むのがいいんじゃないかなー
GoFのじゃなく設計のパターンの方
仕事で設計してるならいいけど個人で作ってる場合は
本だのネットだの勉強会だのに頼るしかないね

ダメ出ししてくれる場が無いからつらいのう

378 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 08:54:04 ]
オープンソースのプロジェクトでも参加すればー

379 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:01:12 ]
方法はどうあれ適当な単位での切りわけさえできてれば破綻しない
個々が少々ダメでも他に影響しない限り問題ない

380 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:11:22 ]
ぶっちゃけ仕事じゃなく個人でやってるなら正しい設計なんて出来なくても問題ない。
外から見て問題のある動作するとかならともかく。

そんなことより楽しくて役に立つプログラムを素早く作れた方が評価されるよ。


381 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:24:21 ]
あるクラスを継承してさらにインターフェイスを実装ってできるんだっけ?

public class AAA: System.Windows.Forms : IHogeHoge

みたく

382 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:27:32 ]
>>381
public class AAA : System.Windows.Forms, IHogeHoge

もちょっと勉強しろよと

383 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:33:52 ]
>>382
サンクス

そういう風に実装する記述見当たらなかったんでちょっと聞いてみようとorz
頑張って勉強するよ

384 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:41:44 ]
間違ってるかどうかは環境によって変わることもある
間違いに気付かない人はある意味閉じた環境にいるニートみたいなもんで幸せな人なんだろう
そんなのがプロジェクトに参加したらアホ呼ばわりされるんだろう
PHPとかRubyとかにいっぱいいそうだ

385 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:51:59 ]
>>384
>間違いに気付かない人はある意味閉じた環境にいるニートみたいなもんで幸せな人なんだろう
これ本当にそうだよなぁ。
良い意味でも悪い意味でも。
気付かなくても問題が無い=それで良いってこともあるしね。

ポトペタで作ったソフトのお陰でチーム全員が残業から開放された!なんて状況下で
こんなださい設計のソフト作るやつはクズだね、とか言ってもしかたないし。

あと他人と仕事するならどっかの時点でアホ呼ばわりされて間違いに気付かないとだな。
そういう意味じゃオープンソースのプロジェクトに混ざるってのは悪くないのかもしれん。




386 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 10:06:42 ]
別にプログラミング自体が目的じゃないからな
科学技術計算のプログラムなんか想像を絶する汚さ

387 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 13:41:05 ]
C# からEXCELにデータ突っ込んでグラフ作って印刷しようとすると結構めんどく背ぇ…

388 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 13:55:16 ]
CSVにでも出力しといてVBSに投げるのがお勧め

389 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 14:01:13 ]
餅は餅屋ってことですな

390 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 14:23:09 ]
>>388のが楽にできそうだ・・・・
COMは開放やら何やら考えてるとすげぇめんどくさいし色々怖い

データファイルに落として
C#→EXCEL起動→強制的に内部の関数呼ぶとか、ボタン押したことにしてVBA実行→(゚д゚)ウマー
とか出来るんだろうか?


391 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 14:26:32 ]
だからVBSならVBAと同じだしいちいちマクロ作らなくていいから綺麗じゃん

392 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 14:39:06 ]
>>391
そっか、作っておいたVBSキックすればいいだけか
それで検討してみよう
サンクス!!

393 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 18:00:11 ]
>>389
いいこと言うなあ。
csvで出力して、Process.StartでExcelを起動。これで十分だな。

394 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 19:48:39 ]
> C#→EXCEL起動→強制的に内部の関数呼ぶとか、ボタン押したことにしてVBA実行→(゚д゚)ウマー
出来る

395 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 19:52:19 ]
vstoでもよい



396 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:01:16 ]
VBSで書いた方がC#より簡単とかお手軽とか思ってるのならよくわからん発想だな。
どう考えてもC#の方が簡単だと思うんだが・・・

自動記録したマクロ(VBA)をアドインで保存しといて、それを使うってのなら
まだ話も分かるんだけど

397 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:09:50 ]
MakeTransparentでPictureboxの画像の背景を透明にすることはできたんだが
Clickイベントを画像の中だけで起こしたいんだけどどうやりゃいいの?
画像をクリックしたらなんか処理したいんだが
PictureBoxが四角形だから画像からちょっとはみでたところでもクリックイベントが発生しちゃってちょっと格好悪い。

398 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:20:42 ]
>>397
クリックされた位置が透過色だったらイベントを握りつぶすだけじゃないのか?
もしくは、最初に非透過部分のRegionを作っておくか。
人に聞かなきゃならん問題とも思えんが。

399 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:33:14 ]
kwsk

400 名前:デフォルトの名無しさん [2009/11/12(木) 20:41:57 ]
印刷のロジックを組んでいます。
x、y座標を、紙の端から数えるようにしようとしたら、印刷可能範囲を(0,0)と捉えているみたいです。

紙の左上端を起点にするにはどうすればよいでしょうか?
または、印刷可能範囲の左上端が、用紙の左上端からみてどの座標にあるかを取得する方法は ありますでしょうか?

よろしくお願いいたします。

401 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:55:51 ]
HardMarginX,HardMarginYでいけたはず。

402 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:56:02 ]
それはプリンタドライバが知っている世界では
てか可能範囲の余白を知ってどうしたいんだ
セットされた紙次第なのに

403 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:57:19 ]
言語も不明なのによく答えたな

404 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:58:13 ]
>>403 は勘違い。別のスレと間違えてた‥ orz

405 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 21:03:54 ]
>>402
何いってんの。
例えば官製はがきの枠内に郵便番号が印刷できるのはどうしてだと思ってるんだよw



406 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 22:08:26 ]
pictureBoxを2個用意して
片方の画像から片方の画像へ移す処理をしたいのですが
上手くいきません。

AllowDropがpictureboxには用意されていないようでどうしたらいいのかも
わからず…
何か良い方法ありませんか?

407 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 22:14:56 ]
>>406
移すってどういう事をしたいのか正確に

ファイルの移動?ビットマップデータのコピー?
ドラッグドロップじゃないと出来ない処理?2つのコントロールは同じアプリケーションの同一フォーム?


408 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 22:18:19 ]
自分のアプリケーション内でのドラッグドロップは基本的に自由
自分でマウスイベント拾って好きなように実装するんだよ

409 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 22:53:29 ]
>>406
picturebox1.image=picturebox2.image
これでいけるよ

410 名前:デフォルトの名無しさん [2009/11/13(金) 01:26:20 ]
>>405
それってプリンタ毎に変わるでしょ?
ハード的な要因でドライバが設定した原点(0,0)を
ソフト側で変更なんて出来るの?

411 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 01:32:04 ]
そういうのはドライバというソフトがやる

412 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 01:56:12 ]
c++ではクラスのメンバにアクセスするとき->なのにc#だと.なんだね。

フォーム1ロードイベントにLabel1.Text="Hello";
ってC#そのまま書いたらコンパイル無効
thisも必ずつけなきゃいけないっぽい

C++ this->Label1->Text="Hello";
C# Label1.Text="aaa";

これだけみてもC#とC++はCという名前が共通についてるだけで
中身はかなり別言語なんだなぁ。

413 名前:デフォルトの名無しさん [2009/11/13(金) 01:58:19 ]
>>411
アプリって言い直したら気が済むのでしょうか

414 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 02:55:21 ]
>>412
言ってることめちゃくちゃだが
独り言ならチラシの裏にしてくれ

415 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 03:02:03 ]
ClickイベントとMouseClickイベントはどうちがうんだい



416 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 03:24:22 ]
フォーカス当ててEnterキー押した時なんかにはClickしか発生しない。
詳しくはMSDNのClickイベントとMouseClickイベントのとこに書いてある。

417 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 03:29:03 ]
コントロールによって違うから不用意に回答できないと思うが

418 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 04:51:50 ]
MSDN読めと書いてあるじゃないか

419 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 06:38:47 ]
>>412
死ね

420 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 09:11:29 ]
ラベルはハンドル型だから厳密にいうとC++(非CLI)の->とも意味が違うんだよそれ
C#にも一応->演算子はあるけどこちらはポインタにしか使えない(それが本来の使い方)

421 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 11:56:33 ]
プロパティで

private int age;

プロパティのset部分に
if(value>100)
age=100

ってやって、これ以外にageを設定するメソッドなどがなければ
みたいにやれば、外部クラスからは絶対にageを100より大きく設定できることはないよね?
それとも特殊な状況で変わったりしちゃう?

422 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 12:04:02 ]
大丈夫じゃねーかなーと思ったけど
BinaryFormatter使ったらprivateなフィールドもシリアライズできるから違う値も入れられるかも知んない

試してないから見当違いの可能性大

423 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 13:04:12 ]
List<T>で、必要上インデックス0が最後尾
つまりList<T>[0]がList<T>[List.Count-1]になるようなクラスを作りたいんですが

とりあえず内部にList<T>をもっといて読み出すときだけ逆になるようにして対処しようとしてるんですが、
<T>の部分の実装の仕方が見当が付きません。
なにかヒントもらえませんか?

424 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 13:14:58 ]
横着しないで地道にList.Count-index-1を入れればいいだろ

425 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 13:15:54 ]
C#の配列機能ってすごすぎるだろ
フィボナッチの数列の第一項から第100項まで1秒以内のあっというまに計算できるとか便利すぎるな。
マジC#最強だな



426 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 13:34:50 ]
public class MyClass<T>
{
public T Value;

public MyClass(T v)
{
Value = v;
}
}

がぐぐったら出てきました^^;

427 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 15:57:06 ]
C++のテンプレートってなんでC#だとジェネリックって名前変えてるんだ?
まったく同じに見えるんだが何か機能面で違うのか?

428 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 16:03:49 ]
ここに書いてある
msdn.microsoft.com/ja-jp/library/c6cyy67b%28VS.80%29.aspx

テンプレートは型パラメータの制約等をコンパイル時に解決するけど
ジェネリクスは実行時まで持ってる

429 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 16:12:03 ]
いや機能全然違うから。
っつかテンプレートじゃないから。


430 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 16:44:02 ]
まあjavaのジェネリックと比べたらかなりテンプレートに近いけどな

431 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 18:37:57 ]
なんでジェネリクスとテンプレートが同じに見える奴がいるのか

432 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:35:11 ]
HttpUtilityがusing System.Webに存在しないようなのですが
VS2010では他に移動しましたか?

433 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:36:42 ]
参照設定した?

434 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:39:25 ]
C#2008ExpressがインストールしてあるPCに
VS2005Stdを後からインストールしてもトラブル起きませんか?

435 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:42:09 ]
気になるならvirtualPCにでも入れろ



436 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:42:44 ]
不具合は起こらないと思うが、関連付けは上書きされるだろうな

437 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:49:09 ]
>>433
言われる通りでした。
usingをしたら参照もしてくれると思っていたのですがそういうわけではないのですね。

438 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:55:50 ]
ドラッグの件で質問した者ですがもう少し詳しく

動的にいくつか作成したpictureBoxをドラッグし、
元からあるpictureBoxに移動したいです。

この時、作成したpictureBoxの場所自体を移動させたいのですが
どこのpictureBoxからドラッグされてきたのかという情報の
取得方法がわかりません。

eでは、中のBitmapの情報のみを拾ってくるので…

439 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:56:14 ]
>>437
usingを理解してない予感

using はネームスペースを省略しますよーってこと

本来なら
System.Windows.Form.WebBrowser
とか書かなきゃいけないけど
いちいちかくのはめんどくさい

だから
using System.Windows.Form;
って宣言しとけば
勝手にそこ以前をつけてくれる
もし、同じ名前があると曖昧だからフルで指定しろって言われるよ

440 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 20:14:59 ]
using ってエイリアスぐらいの立ち位置だったんだなぁ。
たしかにusing だけじゃインテリセンスで補完もしてくれないか

441 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 20:16:45 ]
>>438 自分でドラッグドロップどうさを MouseDown MouseMove を使って実装するとか
MouseDown のタイミングでどれを押下したかわかるだろ
ちょっと考えれば簡単。既存のドラッグ動作を良く観察して


442 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 21:06:50 ]
DateTimePickerって1790年くらいが最小で1192年とか実装できない
なんで?せっかく1192年からの鎌倉時代を舞台とした物語を作ろうとおもったのにカレンダー表示機能ないからできないじゃないか
FuckYou!!!

443 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 21:11:03 ]
自分で計算すりゃいいじゃん

444 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 21:35:05 ]
そりゃ計算は出来るだろうけどコントロールが使えないのは悲しいよな。
テキストボックスで我慢するかカスタムコントロール作るかになっちゃう。

445 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 21:42:36 ]
仮に日付が設定できたとして
一ヶ月が28日だったり
一年が13ヶ月だったりするんだぜ?



446 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 21:46:25 ]
日めくりを想像しろ
月や年なんて日の属性だ

447 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 22:46:54 ]
ja.wikipedia.org/wiki/1752%E5%B9%B4
こんな月もあるし

448 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:18:30 ]
世界の中心は欧米じゃないのに何言ってんの

449 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:20:39 ]
>ユリウス暦の閏年のずれを戻すために1752/9/3 〜 1752/9/13 は無い。
げぇ…

450 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:27:15 ]
C#はVBとあまり変わらないよと言われたのですが
私にとっては別な言語に見えてしまいます。

たとえば、中国人や韓国人は同じアジアなので似てるといえば似てるのですが、
さすがに、東南アジアの人や、同じアジアと言われるオランダとかと比べると
まったく違うあろーって思います。ありがとうございました。

451 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:29:22 ]
欧米の話じゃないんだが

452 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:36:11 ]
そりゃVB関数使いまくってたらそうだろうな
先にC#やってたらVBは本当に全く同じなんだけどな

453 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:41:00 ]
構文が違うだけで他は同じと言っていいな。

454 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:46:08 ]
というか .NET がメインだからなあ

455 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:48:19 ]
.NET環境なら言語の違いは関係ないと言ってもよい



456 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:49:50 ]
B#で書いてC#に変換したら良いのでは?

457 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 23:56:53 ]
.NETはC#選んどけば間違いない

458 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 00:01:03 ]
未だにC#より使い易い言語に出会えない

459 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 00:02:41 ]
C#できるならVB.NETも余裕

460 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 00:46:35 ]
C#がというかVC#が快適すぎる
どうやったらここまでインテリセンス速くなるのか

461 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 01:52:02 ]
>>447-449
日本では、明治5年(1872年)に、従来の太陽太陰暦を廃して翌年から太陽暦を採用することが布告された。
この「太陰暦ヲ廃シ太陽暦ヲ頒行ス」(明治5年太政官布告第337号、改暦ノ布告)では、
「來ル十二月三日ヲ以テ明治六年一月一日ト被定候事」として、グレゴリオ暦1873年1月1日に当たる
明治5年12月3日を明治6年1月1日とすることなどを定めた。そのため明治5年12月2日まで使用されていた
天保暦は旧暦となった(明治改暦、明治の改暦)。

462 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 01:59:37 ]
それもきっちり施行されたわけではなく、和暦もあわせると専門家すらどっちでもいいじゃんと言い出すほど

463 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 10:13:46 ]
.net Framewark Compact のメニューが使いづらいのでピクチャーボックス上にアイコンを直接描画してプラグインの機能を呼び出したいのですが
そのためのクラス設計がいまいちよくわかりません
プラグインを読み込むときピクチャーボックスのどの位置にアイコンを表示するか計算してプロパティに持たせる
OnPringイベントハンドラでそれぞれのプラグインが自分の位置にアイコンを表示する
プラグインにピクチャーボックスのクリックイベントハンドラを持たせる
クリックされたイベントがすべてのプラグインで評価され
自分のアイコン領域だったら機能を起動
こんな流れを考えてましたが

プラグインのアイコンを押したとき、さらに選択肢アイコンを表示したくなったらどうするのか?
その場合アイコンを管理するコンテナクラスを作るべきなのか?

そんなことをうだうだ悩んでます
どうかアドバイスをお願いします

464 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 10:26:49 ]
プラグインって何だ?
普通にカスタムコントロールじゃね。

>選択肢
タップ&ホールドさせてメニュー出すのがWMの流儀。

465 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 10:27:42 ]
>>463
描画方法はカスタムドローのノリでいいんじゃね
アイコンの管理はContextMenuのように親子を階層管理して、
クリックイベントは親で評価して該当する子に伝えて
子は自分の管理する孫にヒットテストしていく感じで




466 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 10:49:03 ]
>>464
ありがとうございます
プラグインは普通にプラグインです
DLLであとから供給される機能なので後からメニューに割り込ませないといけないです
タップ&ホールドさせてメニュー出す→一つ選ぶ→そこから更に選ぶ 例えば描画なら エフェクト→モザイク→小・中・大
みたいにモザイクプラグインが自分で持ってる選択肢がどのように展開するかを先に決めることができないので・・・

>>465
ありがとうございます
ノリ的にはカスタムドローなんですよね
管理のイメージもContextMenuのListを持たせる方式がなんとなくイメージしやすいです
イベントの処理をどうしようか悩んでたら
>クリックイベントは親で評価して該当する子に伝えて
>子は自分の管理する孫にヒットテストしていく感じで
あーなんか光明が見えてきた感じです
仮想関数のデリゲートのインスタンスで解決するですかね?
スマートな方法というか、常道ではどうするのでしょうか?

467 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 10:49:14 ]
C#でゲーム作りたいけどC#でゲーム作るサイトがあまりない・・・
C言語とかC++で作るページならいくらでもみつかるのに。

使いやすさ、簡単さはC#のほうがいいけど
やっぱサンプルコードが充実してるっていう点ではC++とかのがいいなぁ

468 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 11:02:41 ]
アプリケーションの設定で、独自の型を設定するにはどうしたら良いのでしょうか?
「参照」ボタンを教えても、自分の作ったネームスペースは出てこないんです。



469 名前:465 mailto:sage [2009/11/14(土) 11:07:33 ]
>>466
メニューが整列したデスクトップアイコンみたいなの想像してるんで
Zオーダーは考慮してないから注意してね
子から親ならデリゲート(イベント)かなと思ったけど
親から子ならインターフェース使うかなぁ
すべてのメニューに共通のインターフェース持たせとけば楽かと
void NotifyMouseClick(〜Args e) みたいな感じにするかな
継承まで考えるならこのメソッドの実装で virtual void OnMouseClick(〜) を呼ぶ

470 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 11:15:19 ]
>>469
>メニューが整列したデスクトップアイコンみたいなの想像してるんで
>Zオーダーは考慮してないから注意してね

OKですWMでアイコン並べるって話ですからiPhoneのアイコンと同じイメージです

>親から子ならインターフェース使うかなぁ
>すべてのメニューに共通のインターフェース持たせとけば楽かと
>void NotifyMouseClick(〜Args e) みたいな感じにするかな
>継承まで考えるならこのメソッドの実装で virtual void OnMouseClick(〜) を呼ぶ

なるほどなるほど
メッセージの流れを先に決めてしまえばイメージしやすいですね
親から子 子から親 要素からコンテナ みたいにいろんな方法がとめどなくあるので
身動き取れませんでした

なるべくいろいろなプラグインに対応できるようにここは慎重に考慮すべきですね
でも、頭の中がだいぶすっきりしてきました
ありがとうございます

471 名前:デフォルトの名無しさん [2009/11/14(土) 11:50:06 ]
MyClass<T>というのがあり、

Dictionary<string,MyClass<T>>のようなことをしたいのですが、
ここでDictonaryが保持するMyClassはMyClass<int>やMyClass<string>
のように複数の場合、どうしたらいいですか?

最悪Refrection使っても問題ないので、よろしくお願いします。

472 名前:デフォルトの名無しさん [2009/11/14(土) 11:58:25 ]
デバッグした時にエラーがあると、前回成功した結果で勝手に実行されるのをやめさせるには
どの設定を変えれば良いですか?

例えば、

private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "こんにちは";
}

で実行したあとに

private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "こんばんわ" エラー;
}

を実行すると、エラー一覧画面で怒られているのに
最初に実行した"こんにちは" が表示されるという具合です。


C# 2008のお試し版を使っています。

473 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 12:10:08 ]
>>471
Dictionary<string, object> かねえ・・・
せめてMyClassに共通の具体的な継承元があればそれにしておくくらいか

>>472
そんな現象は起こらないので、何か勘違いしてる

474 名前:471 mailto:sage [2009/11/14(土) 12:17:56 ]
>>473
レスありがとうございます・。

objectにしちゃうと、受け側で int hoge = (int)myDictionary[keyString].GetValue()
みたく、キャストしないと受けれないですよね? それを避けたいというのが動機です。

継承元を作るもやってみたのですが、
外部からmyDictionary[keyString].GetValue()のような形で呼ぶためには、
共通の基底クラスにも
MyBaseClass
{
public abstract "Type" getValue();
}
が必要になり、何一つ解決しませんでした。




475 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 12:29:02 ]
>>474
そもそも、異なる型を一つのコレクションに突っ込もうとしてる時点でキャスト避けるのは無理に近い
他のデメリットをすべてかなぐり捨ててキャストだけ排除したいなら、
想定する全部の型をメンバーに持ったクラスにするしかない
バリアント型みたいに型を表すenumでも持っておいて、それを見て取り出すべきフィールドを決める
まあ、やんない方が良いね。そもそも設計の方に問題があると思うから
あと気になったんだが、GetValue()の結果をキャストするのっておかしくないか?
object item = myDictionary[keyString] as MyClass<int>;
int hoge = item.getValue();
こうあるべきだと思うけどね。



476 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 12:30:20 ]
書き損じた
objectで受けるんじゃなくて MyClass<int> だね

477 名前:471 mailto:sage [2009/11/14(土) 12:32:21 ]
訂正
objectにすると、
(MyClass<int>)myDictionary[keyString].GetValue()
とするのにキャストが必要。
objectのままだと当然GetValue()にはアクセスできない。
の間違いでした。







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

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

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