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


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

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



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

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

前スレ

ふらっとC#,C♯,C#(初心者用) Part29
pc11.2ch.net/test/read.cgi/tech/1216734995/

501 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 10:04:09 ]
あれってデリゲートが今みたいに積極的にイベント以外に使われるようになることを
想定してなかったんだろうな
今作り直すならイベントハンドラは別扱いとかコンテナは別にするとかになりそう

502 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 19:31:30 ]
>>501
なぜデフォでマルチキャストなのかって疑問は確かにあるけどそれはない。
だって関数ポインタの自然な発展形である以上、
その用途をイベントだけに見積もるなんてありえん。

503 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 19:34:08 ]
また俺のわからない話をする

504 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 19:43:20 ]
最初はシングルキャストと厳密に分けてたけどうざいだけでメリットがあんまなかったからやめたのさ。

505 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 19:59:17 ]
関数ポインタを引数にとるアンマネージ関数にマルチキャストデリゲートを渡しても
ちゃんと全部呼んでくれる。
神経質に使い分ける必要もないのかな。

506 名前:499 mailto:sage [2008/09/16(火) 20:13:47 ]
どうも
class Program
{
//計算を委託できる
public Func<double, double, double> Calc;
private double a, b;
public Program(double a, double b){
this.a = a;
this.b = b;
}
private double DefaultCalc(double a, double b){
return a + b;
}
public void Action(){
double result;
if (Calc != null)
result = Calc(a, b);
else
result = DefaultCalc(a, b);
Console.WriteLine("計算結果:{0}", result);
}
}
class Test
{
static void Main(string[] args){
Program program = new Program(12, 42);
program.Calc += ((a, b) => a * b);
program.Calc += ((a, b) => a / b);
program.Action();
}
}

507 名前:499 mailto:sage [2008/09/16(火) 20:14:33 ]
↑みたいなプログラムだとマルチキャストの意味が全くないし
間違えて+=で委託先を追加したら気づかずに余計な処理をさせちゃうこともあり得るので
どうせならシングルキャストを作れればいいのにと思いましたが
private Func<double, double, double> calc;
public Func<double, double, double> Calc
{
get
{
this.calc = value;
}
}
みたいなプロパティを追加すればいいだけだと気づきました、すみません

508 名前:499 mailto:sage [2008/09/16(火) 20:15:19 ]
setだった

509 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:17:06 ]
setオンリーのプロパティはガイドライン違反
SetCalcメソッドにしようね



510 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:20:36 ]
>>509
そんなガイドラインあったっけ?
VBなんて普通にWriteOnlyなんていう組み込みのキーワードまであるんだけど。

511 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:23:09 ]
>>510
msdn.microsoft.com/ja-jp/library/ms229006(VS.80).aspx

512 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:47:43 ]
<>で囲まれてる文字列を最小一致で全部取り出すにはどうしたらいいですか?
<html><body></body></html>なら、
html body /body /htmlを取り出してリストに突っ込むようなことです
最小一致なのでhtml><body></body></htmlが取り出されると困ります
よろしくおねがいします

513 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:57:44 ]
>>509>>511
そうでしたか、
わざわざどうもです
>>512
char[] separator = {'<', '>'};
string str = "<html><body></body></html>";
str.Split(separator, StringSplitOptions.RemoveEmptyEntries);
っていうのはどうでしょう

514 名前:512 mailto:sage [2008/09/16(火) 21:17:12 ]
>>513
うまくいきました
本当にありがとうございます。

515 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 22:15:33 ]
>>512
ちなみに、.NET の正規表現的には \<.*?\> で行ける。
*? で最小一致。

516 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 22:55:41 ]
>>515
ついでに先読み、戻り読みも入れて (?<=<).*?(?=>) で

>>513>>514
Split使うなら、ゴミが入らないようにしないと
str.Split('<').Skip(1).Select(s => s.Split('>')[0])

因みに、以下の場合はおそらく構文エラーなので適当に
- 1回目のSplitで空文字列がある(ただし、#0は除く)
- 2回目のSplitで要素数が2でないか、#0が空


517 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 23:05:38 ]
横やりだけどSkip()って初めて見るけど新しく追加されたメソッドか?

518 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 23:06:47 ]
>>517
LINQ

519 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 01:06:42 ]
LINQまったく使ってないなぁ
最初は興味あったけど構文が異質すぎて使えない



520 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 01:14:33 ]
クエリ式を使わないLinqもありだよ。C#のクエリ式ではSkipはサポートされていない。
VBではサポートされている。

521 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 01:28:02 ]
ゴミって空文字かな?
StringSplitOptions.RemoveEmptyEntries
でおkのような気がす
そういう感じで行くなら
str.Split(new char[]{ '<' , '>' }).Where(s => s != "")
の方が俺好みだば

クエリ構文はまったくわからないなぁ
まったく使わなそうな気がするのでそこだけ勉強すらしてないなぁ。。

522 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 01:42:24 ]
>>521
いや、こういう事

<html><body>ゴミ</body></html>

523 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 11:17:23 ]
ああなるほど把握

524 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 14:56:32 ]
パブリックメンバにDictinaryを含むクラスをシリアライズしたいのだけど、
IDictionary実装クラスはシリアル化できないと怒られます。

KeyValuePair構造体の配列に変換してからシリアル化するのがいいのかと考えたんですが、
デシリアライズの時にどうすればいいのか・・・

どなたか助言いただけると助かります

525 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 15:09:15 ]
配列にしたとしても、KeyValuePair(のプロパティ)が変更可能でないから駄目じゃないか
俺は変更可能なKeyValuePairとDictionaryのラッパー作って対処したが

526 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 15:25:42 ]
Dictionaryでset可能なプロパティって気持ち悪いな
IXmlSerializableの実装でも書くか?

527 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 15:42:24 ]
C#でH8/3069の制御って出来ますか?

528 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 15:54:41 ]
うん

529 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 16:13:30 ]
返答ありがとうございます
もう少し具体的な質問が出来るようになるまで自分で勉強しようと思います



530 名前:524 mailto:sage [2008/09/17(水) 17:29:27 ]
結局パブリックプロパティで、
Dictionaryのkeyとvalueの2次元配列を取得、
Setterでは2次元配列のループでDictionaryにkeyvaluepairを格納していくような設計にしました。

やはりDictionaryはカプセル化した方が良かったですね。
ただデシリアライズ時のパフォーマンスがどうなるかは?ですが。


531 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 18:49:57 ]
>>528
え゙ ?H8向けのコンパイラ(実行環境)ってあるの?

532 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 18:55:26 ]
↑アホ

533 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 19:38:33 ]
いや、俺の方がもっとアホ

534 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 19:46:40 ]
>>531
H8は(というか今時のマイコンはほとんどそうだと思うけど)実機とIDEで
デバッグができるはず。

まあでもマイコンの開発にデバッガなんて俺はいらないと思うけどね。
少なくとも俺は使ったことも必要性を感じたこともないよ。

535 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 22:42:02 ]
タイマーで10ミリ秒毎にフォーム上のマウスカーソルの座標を取得し、
マウスに合わせて画像も一緒に移動させる。
更に、クリックした場所に画像を固定する。
ってなことをやってみたんですが、
移動時など、ものっすごい画像がチラついてしまいますorz
やっぱこういうのはDirectXなどを使ったほうが良いのでしょうか?

536 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 23:06:50 ]
本当にそれは10ミリ秒毎にする必要はあるのか?

537 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 23:08:53 ]
>10ミリ秒毎
意味あると思ってんのか?


538 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 23:23:14 ]
100fpsなんて格ゲでもやらんぜ

539 名前:535 mailto:sage [2008/09/18(木) 00:39:58 ]
3連発でダメ出しされるとは・・・orz
最初100ミリ秒でやったんですが、
マウスの動きに若干遅れるんで、10ミリ秒にしてみました。
意味は全然考えてませんでした。すいません。。
これは仕様から考え直したほうが良さげですね。
お騒がせしました&ありがとうございました。



540 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:14:11 ]
タイマでやらんでもできるっしょ。
ボードゲームのソースでも拾ってくれば?

541 名前:デフォルトの名無しさん [2008/09/18(木) 01:33:08 ]
C#というわけではないのですが、ファイル管理ソフトでファイル内
文字列まで見て該当ファイルを見つけるという検索がありますが、
あれは文字列の形式やフォーマットあるいはエンコードなどをすべて
のケースで調べているのでしょうか?

たとえばExcelやワードなどのファイルの場合は、それをテキスト形式
で取り込んで調べるのでしょうか?

542 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:36:38 ]
>>541
うぜえ、なんだこいつ
場違いなんだよ消えうせろクソ餓鬼

543 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 03:05:33 ]
>>540
画像をマウスと一緒に動かすのは、とりあえず諦めました。
で、オセロとか見てたんですが、置く画像が正方形なら簡単だけど、
長方形も混在してると、途端に難しくなりますね。
ゲーム系のプログラムは全然やったこと無かったんで、
もっと単純な物も参考にしてやってみます。

544 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 03:52:15 ]
>>543
PanelとかPictureBoxとかのMouseMove/MouseClickイベントで十分ぽい匂いがした。

545 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 07:56:55 ]
struct Vect
{
    public Point[] Points;
}

private void init()
{
    Vect v = new Vect();
    v.Points = new Point[] { new Point(2, 3), new Point(3, 4) };//これだといける

    v.Points = { new Point(2, 3), new Point(3, 4) };//これだとエラーが出る
}
なぜエラーがでるのでしょうか?どういう違いがあるのでしょうか?

546 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 08:00:00 ]
Point[] Points = { new Point(2, 3), new Point(3, 4) };

こんな感じで記述するといけるんですが・・

547 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 08:29:26 ]
>>545
new Point[] を省略していいのは変数宣言の時だけ。

548 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 15:22:45 ]
省略できるのしらんかったw

549 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 17:28:56 ]
menustripコントロールで出来て、toolstripコントロールだと出来ないことってありますか?
toolstripならアイコンだけじゃなくて文字でも表示できるのでmenustripを使う意味はあるのかなと思いました。



550 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 19:24:28 ]
C#Builderのプロジェクトファイル群をVC#対応へ移行するにはどのようにするのでしょうか?

551 名前:デフォルトの名無しさん [2008/09/18(木) 21:06:14 ]
エラー 1 型または名前空間名 'Drawing' は名前空間 'System' に存在しません。アセンブリ参照が不足しています。

どこいっちゃったのよ。

552 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:13:25 ]
Drawingの前にSystemつけるかusing System.Drawing;じゃないか

553 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:18:55 ]
スレタイに C井 が足りない

554 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:20:07 ]
C丼は足りてる

555 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:24:26 ]
.net1.0からの移植

using System.Drawing;でエラーが出た もう意味がわからない

556 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:27:33 ]
※ C丼: コチュジャン丼。豚肉と温野菜をコチュジャンで甘辛くした物をご飯の上に載せた物

557 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:31:10 ]
ソリューションエクスプローラーの参照設定にSystem.Drawing入ってるか?

558 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:33:20 ]
「System」だけ参照設定に入ってるけど、一つ一つやらなきゃいけないの?
なんか似たようなエラー30個もある

559 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:35:48 ]
なるほど解決しました
エラー減っていくのが楽しいです
ありがとう



560 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:38:59 ]
現金な奴だw

561 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:40:21 ]
じゃあ、C丼について語ろうか

562 名前:デフォルトの名無しさん [2008/09/18(木) 21:43:23 ]
丼だけ〜 ?

563 名前:デフォルトの名無しさん [2008/09/18(木) 23:42:56 ]
C#で、Formに張り付いているTextBoxを、
マウスドラッグされた場所に移動する場合どの
メソッドをしようすればいいでしょうか?

564 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 00:41:50 ]
メソッドは使用しない。
プロパティなら使用する。

565 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 00:42:08 ]
private bool clicked = false;
Point beforeLocation;

private void textBox1_MouseDown(object sender, MouseEventArgs e)
{
clicked = true;
beforeLocation = textBox1.PointToScreen(e.Location);
}
private void textBox1_MouseMove(object sender, MouseEventArgs e)
{
if (clicked && (beforeLocation != null))
{
Point afterLocation = textBox1.PointToScreen(e.Location);
textBox1.Left += (afterLocation.X - beforeLocation.X);
textBox1.Top += (afterLocation.Y - beforeLocation.Y);
beforeLocation = afterLocation;
}
}
private void textBox1_MouseUp(object sender, MouseEventArgs e)
{
clicked = false;
}
超適当で作ってみたけど正しいかはわかんない

566 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 01:03:03 ]
もうちょっとシンプルに
int mx, my;
bool mDown;
private void textBox1_MouseDown(object sender, MouseEventArgs e)
{
mx = e.X;
my = e.Y;
mDown = true;
}
private void textBox1_MouseMove(object sender, MouseEventArgs e)
{
if (!mDown) return;
this.textBox1.Left += e.X - mx;
this.textBox1.Top += e.Y - my;
}
private void textBox1_MouseUp(object sender, MouseEventArgs e)
{
mDown = false;
}

567 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 04:36:53 ]
msdnドキュメントをオフラインで使用したいのですが
どこでダウンロードできますか?

568 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 04:42:58 ]
Download Centre

569 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 07:45:52 ]
2005用のしかないんだけど、2008にも使えるの?



570 名前:デフォルトの名無しさん [2008/09/19(金) 09:24:58 ]
すみません、、、質問させていただきます。


for文を利用して、偶数表示をするWEB画面を作成する課題がでました。
解答例)2,4,6,8,10

結果は、10が表示されます。デバッグしたら、
2,4,6,8もif文の中をとっているのに表示されません、、、
提出期限は昨日の夜まででした、、、ほんとに
どうしていいか分かりません。教えてください。


for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
litShowAns.Text = Convert.ToString(i) + "、";
}
}


litShowAnsはliteralのIDです。
ヒントは文字列の結合らしいのですが。。。何で文字列の結合が必要なのか分かりません。

571 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 09:36:30 ]
>>570
Aという変数に2から10まで入れたとして、最後に入ってるのは10だろ?

572 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 09:37:32 ]
>>570
文字列の結合を調べましたか? 試しましたか?

i がそれぞれの値のとき、何が起こっているか自分なりに説明できますか?

573 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 09:49:15 ]
>>570
litShowAns.Text += Convert.ToString(i) + "、";

574 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 09:54:16 ]
>>570
for (int i = 2; i <= 10; i+=2)
{
  string str += Convert.ToString(i) + "、";
}
litShowAns.Text=str;

575 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 09:55:15 ]
間違えた

string str ="";
for (int i = 2; i <= 10; i+=2)
{
  str += Convert.ToString(i) + "、";
}
litShowAns.Text=str;






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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