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

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

ふらっとC#,C♯,C#(初心者用) Part23
http://pc11.2ch.net/test/read.cgi/tech/1200033660/
2デフォルトの名無しさん:2008/02/03(日) 18:07:09
C#, C♯, C#相談室 Part44
http://pc11.2ch.net/test/read.cgi/tech/1194956418/

C♯, C#相談室 Part34
http://pc11.2ch.net/test/read.cgi/tech/1162467959/

【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
http://pc11.2ch.net/test/read.cgi/tech/1162950198/

Windows Live プログラミング
http://pc11.2ch.net/test/read.cgi/tech/1188112572/

初心者のためのプログラミング言語ガイド Part6
http://pc11.2ch.net/test/read.cgi/tech/1193132235/
3デフォルトの名無しさん:2008/02/04(月) 12:47:32
WPFのRichTextBoxの行間がデフォルトで二行分空いているようなんですが
一行にするにはどうしたらいいんでしょうか
4デフォルトの名無しさん:2008/02/04(月) 13:40:25
これたてなおす?
5デフォルトの名無しさん:2008/02/04(月) 14:26:19
contravariantって何に使うんですか?
MSの説明を見たのですが、基底クラスを引数に取れる利点がよくわかりません
6デフォルトの名無しさん:2008/02/04(月) 15:22:03
>>5
イベントハンドラを一つにまとめられる、じゃ不満か
7デフォルトの名無しさん:2008/02/04(月) 15:23:38
一般的な反変性の話なのか
デリゲートの話なのか
8デフォルトの名無しさん:2008/02/04(月) 15:26:34
>>6-7
そうですデリゲートの話です
一般的な説明じゃ何使うのかさっぱりで
9デフォルトの名無しさん:2008/02/04(月) 15:28:32
デリゲートっていっぱい関数登録できるものって解釈だとヤバイ?
複数の関数入れて例外が起きたら残りは実行されないのかな

今サンプル動かそうとしてるけど俺あほすぎて時間がかかってる orz
10デフォルトの名無しさん:2008/02/04(月) 15:48:14
>>8
似たようなデリゲート型をたくさん宣言しなくならなくちゃ
ならないような状況になれば分かるかと

>>9
MethodInvoker mi = M1;
mi += M2;
mi += M3;
mi.Invoke();

void M1()
{
MessageBox.Show( "Test1" );
}
void M2()
{
throw new Exception();
}
void M3()
{
MessageBox.Show( "Test3" );
}
11デフォルトの名無しさん:2008/02/04(月) 15:59:03
>>10
covarianceなら、登録できるメソッドが増えるから分かるんですが、
contravarianceは減ってしまいますよね?
だからわからないんです
12デフォルトの名無しさん:2008/02/04(月) 15:59:06
>>10
ありがと!やってみた

例外出たら止まるんか、超わかったw
感謝します
13デフォルトの名無しさん:2008/02/04(月) 16:15:05
>>11
どっちも増える
14デフォルトの名無しさん:2008/02/04(月) 16:22:28
>>13
基底クラスのほうを渡せてもあんまり意味ないと思うのでよく分からないんです
よろしければ具体的な例を教えてください
15デフォルトの名無しさん:2008/02/04(月) 16:35:16
event EventHandler Click;
event MouseEventHandler MouseDown;
void Hoge1(object sender, EventArgs e) { }
void Hoge2(object sender, MouseEventArgs e) { }

Click += Hoge1;//もちろんOK
MouseDown += Hoge1;//MouseEventArgsはEventArgsを継承してるからこれもOK
//Click += Hoge2; これはコンパイルエラー
MouseDown += Hoge2;//もちろんOK
16デフォルトの名無しさん:2008/02/04(月) 16:42:49
>>15
あ、よくわからずイベントハンドラの追加とか書いてましたがなんとなくぴんときた

buttonクラス内にはevent EventHandler Click;みたいにきっとあるんだなあ
17デフォルトの名無しさん:2008/02/04(月) 16:45:43
>>15
Click += Hoge2; これはコンパイルエラー
これなんでまずいんですか?
文法的に許しちゃいけない理由が見あたらないんですが・・・
18デフォルトの名無しさん:2008/02/04(月) 18:11:45
ヘタレな漏れにはメソッドが複数呼び出されるからって何がいいのかわかんね。

>>10の例だと
M1();
M2();
M3();

って書くのがそんなにめんどくさいの?
って言いたくなるんだが
もっと、こう、デリゲードじゃないとそれは無理だね
みたいに納得できる例はないだろうか?
19デフォルトの名無しさん:2008/02/04(月) 18:14:12
同じくよくわからんなぁ
20デフォルトの名無しさん:2008/02/04(月) 18:25:57
俺も分からん
識者の人はやくきてくれー><
21デフォルトの名無しさん:2008/02/04(月) 18:28:02
ちょうど今複数呼んでくれて嬉しいのに気づいたのはApplication.Idle
あちこちのフォームで好き勝手に登録できる
22デフォルトの名無しさん:2008/02/04(月) 18:42:50
>>17
引数eにMouseEventArgs型のオブジェクトが渡される保証がない
(EventArgs以下ならなんでも入れられる可能性がある)
>>18 イベントにイベントハンドラを複数登録できるようにするため
>>21 それきちんと後片付けしないとメモリリークするよ
23デフォルトの名無しさん:2008/02/04(月) 18:45:31
>>22
>イベントにイベントハンドラを複数登録できるようにするため
順番って登録した順番に依存するんじゃないの?
アーキテクチャ的にまずくね?
24デフォルトの名無しさん:2008/02/04(月) 18:49:03
マルチキャストデリゲートで一番使われるのはイベントじゃないかな。。
メインのオブジェクトがあって、
サブのオブジェクトたちがそれぞれイベント付けたりできるじゃん
親アプリにプラグインがたくさんある場面とか。
親は一発ですべての登録されたイベントを発行できる

ちなみに
dlg -= M1;
みたいにそれぞれ取り外しもできるし
dlg = null;
でクリアもできる
25デフォルトの名無しさん:2008/02/04(月) 18:50:02
>>23
そうね。むしろ順番に依存するようなのをデリゲートで書くべきじゃない
26デフォルトの名無しさん:2008/02/04(月) 18:51:24
前から思ってたんだけど、デリゲートって高階関数と違うの?
27デフォルトの名無しさん:2008/02/04(月) 18:52:04
>>26
勉強足りなすぎです。
28デフォルトの名無しさん:2008/02/04(月) 18:55:18
>>27
だまれ小僧
29デフォルトの名無しさん:2008/02/04(月) 18:55:48
>>27
関数を引数にとって、関数内で任意の処理ができるんだから同じじゃないの?
30デフォルトの名無しさん:2008/02/04(月) 18:56:12
>>27
>>1読めカス
31デフォルトの名無しさん:2008/02/04(月) 18:56:47
>>23>>25
何がまずいの?w
いやもちろんまずい場面もありうるだろうが、そんなのむしろ例外的じゃないの?

っていうかC#ってVBのカスタムイベントみたいなことって出来ないんだっけ?
32デフォルトの名無しさん:2008/02/04(月) 18:57:31
高階関数に相当するのはデリゲートじゃなくてデリゲートを引数に取るメソッドの方だろ
33デフォルトの名無しさん:2008/02/04(月) 19:00:42
>>32
ごめんそういうことがいいたかった
34デフォルトの名無しさん:2008/02/04(月) 19:07:30
>>31
addとremoveは定義できるよ
raiseはない
35デフォルトの名無しさん:2008/02/04(月) 19:14:20
>>34
ならハンドラを呼び出す順番もその気になれば一応制御できるんだよね?
36デフォルトの名無しさん:2008/02/04(月) 19:15:49
どうのこうの言いつつ、
結果的に>>1が投げた質問で盛り上がってる俺ら
37デフォルトの名無しさん:2008/02/04(月) 19:20:08
>>35
デリゲートオブジェクトは呼び出し対象の情報しか持ってないのに何を基準に並べ替えるの?
38デフォルトの名無しさん:2008/02/04(月) 19:24:37
>>37
俺も具体的な用途があまりあるとは思ってないんだけど、抽象的な可能性の話だよ。
例えば標準のFIFO動作をLIFOに変更するとかさ。
39デフォルトの名無しさん:2008/02/04(月) 19:49:51
詳しい人ktkr!!
誰かcontravarianceの使い方を教えてくだしぁ><
40デフォルトの名無しさん:2008/02/04(月) 19:52:41
お前は使わなくていい
41デフォルトの名無しさん:2008/02/04(月) 19:53:19
>>40
ここそういうスレじゃないから
42デフォルトの名無しさん:2008/02/04(月) 20:09:03
object型って変数宣言した瞬間にインスタンスが作られるんですか?
くだ質スマンセン
43デフォルトの名無しさん:2008/02/04(月) 20:13:35
作られないと思う
作られるのはintとかプリミティブ型だけ
44デフォルトの名無しさん:2008/02/04(月) 20:28:48
C#にはプリミティブ型なんてないお
45デフォルトの名無しさん:2008/02/04(月) 20:31:17
プリミティブ型(と呼ばれるもの)はあるよ
値型の中でも言語に組み込みのものをいう
46デフォルトの名無しさん:2008/02/04(月) 20:31:22
ボクシングって知ってる?
47デフォルトの名無しさん:2008/02/04(月) 20:31:36
本当かよw
48デフォルトの名無しさん:2008/02/04(月) 20:39:59
intはプリミティブ型で、Int32がオブジェクト型じゃないの?
4942:2008/02/04(月) 20:40:33
値型の場合・・・・・変数宣言した瞬間にスタック上にインスタンスが生成される。
参照型の場合・・・変数宣言した瞬間にスタック上に参照情報が生成され、初期値としてnullが入る。
ということですよね?

実は手元の入門書で↓のような例文で、
int hoge
hoge = 123;
object obj;
obj = (object)hoge;

「object obj; で、変数objのインスタンスをヒープ上に生成し、参照情報をスタック上に格納」
とあって混乱したのですが、間違いってことでしょうか?
50デフォルトの名無しさん:2008/02/04(月) 20:43:11
>>49
>変数objのインスタンスをヒープ上に生成
うんここはまちがいだな
参考までになんて本?
51デフォルトの名無しさん:2008/02/04(月) 20:46:38
>>48
全く同じ
言語仕様でも同じと明記されてる
52デフォルトの名無しさん:2008/02/04(月) 21:02:05
>参照型の場合・・・変数宣言した瞬間にスタック上に参照情報が生成され、初期値としてnullが入る。
ちがうよ。
53デフォルトの名無しさん:2008/02/04(月) 21:06:03
違うってんなら詳しく書け、書かないならレスつけんな
54デフォルトの名無しさん:2008/02/04(月) 21:06:05
先生ども

コンソールアプリケーションでデフォルトプリンタを取る方法って
普通のc#上には無いんでしょうか?
調べてみると、APIで取る方法とWSHで取る方法がありそうだけど
WSHはデフォルトプリンタを取得するサンプルが見当たらないし、
APIだとどうも負け組みかなって思っちまいます。
5542:2008/02/04(月) 21:10:22
>>50
やっぱりそうですか・・・。

本は↓です。
visual C#2005パーフェクトマスター (著:金城 俊哉 氏)
ttp://www.amazon.co.jp/Visual-2005%E3%83%91%E3%83%BC%E3%83%95%E3%82%A7%E3%82%AF%E3%83%88%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E2%80%95Windows-Vista%E5%AE%8C%E5%85%A8%E5%AF%BE%E5%BF%9C-Server2005-Perfect/dp/4798016098

初めに@ITの川俣氏の「改訂版C#入門」を一通りやって、なんとなく分かった気はしたんですが、
きちんと入門書から始めたほうが良さげだろうと思いまして。
VS2005の使い方も詳しく載ってるお手ごろな入門書を探して、これに行き着きました。

読んでみたら初版なせいか誤字が多い・・・しかもいきなりWindows Formの説明から始まって・・・
もしかして地(ry   orz
56デフォルトの名無しさん:2008/02/04(月) 21:20:32
俺は>>50の言ってる事の方が間違ってると思うなw
57デフォルトの名無しさん:2008/02/04(月) 21:22:37
っていうかヒープだのスタックだのなんてフレームワーク内部の低水準の話は
とりあえずうっちゃっておいても問題ない、というよりそんなの後回しに
すべきだと思うよ。
58デフォルトの名無しさん:2008/02/04(月) 22:09:24
>>49
C++とごっちゃになってるようにも読み取れるな
59デフォルトの名無しさん:2008/02/04(月) 22:15:18
>>49
そのライター結構いっぱい本書いてるけどやばい記述多いのかな
60デフォルトの名無しさん:2008/02/04(月) 22:16:54
>初期値としてnullが入る。
入らないよ。
61デフォルトの名無しさん:2008/02/04(月) 22:21:39
>>1
6242:2008/02/04(月) 22:34:56
そうですか。色々勘違いしてるのかもしれません
とりあえず今は置いといて、本を読み進めようと思います。
63デフォルトの名無しさん:2008/02/04(月) 22:41:55
値型も宣言しただけでは初期化されないよ。
6442:2008/02/04(月) 22:58:38
結局、宣伝はメモリ確保するだけで、(0やnullなども含めて)何かで初期化されるわけではない、ってことですかね?
というか、当たり前か・・・
65デフォルトの名無しさん:2008/02/04(月) 23:01:01
if(myPS->isString("+")){
if(debug){cout<<"24回"<<endl;
     }
return true;

上の分の->これっていったいなにをしているんでしょう
また、if文カッコ内debugの中の変数は0か1かではなく、True Falseでも判定かのうなのでしょうか?
よろしくお願いします
66デフォルトの名無しさん:2008/02/04(月) 23:05:01
猫でもわかるC#のフォーム編ってまだ発売決まってないのかな?
知ってる人います?
67デフォルトの名無しさん:2008/02/04(月) 23:11:25
著者か出版社に聞けばいいじゃんw
っていうか俺あの著者の本を好む人が理解できん。

あの人低水準のこと = 基本だと思ってないか?w
っていうかどうでもいい無駄話が多すぎ。
68デフォルトの名無しさん:2008/02/04(月) 23:13:05
>>67
そうなの?
かなり分かりやすく書いてあるから、重宝してるんだが
ありがとう、著者にメール送ってみる!
69デフォルトの名無しさん:2008/02/04(月) 23:14:41
人によるんじゃねえかなぁ、独習シリーズも人によっては結構わかりづらいみたいだし
文体がお堅いっていうのはあるけどお浚いする為にはああゆうのが便利だと思ってる

入門は柔らかい文体の本一冊+Webで、くらいで
70デフォルトの名無しさん:2008/02/04(月) 23:38:46
>>64
俺は宣言するだけじゃメモリ確保すらされないと理解してるんだが。
だって、一度も代入してないのをいきなり使おうとすると
>未割り当てのローカル変数 'name' が使用されました。
って出るじゃん
71デフォルトの名無しさん:2008/02/04(月) 23:45:49
独習シリーズって教科書には向かないけど、
自分でコツコツ読むには何でも書いてあるいい本だよね
7265:2008/02/04(月) 23:51:02
分かる人いたらお願いします・・・
73デフォルトの名無しさん:2008/02/05(火) 00:01:03
このスレはC#のスレ。それC++じゃないの?
74デフォルトの名無しさん:2008/02/05(火) 00:05:59
>>72
ポインタ演算子じゃないの?
75デフォルトの名無しさん:2008/02/05(火) 00:14:14
アロー演算子って呼び方が一般的じゃないかな
76デフォルトの名無しさん:2008/02/05(火) 00:14:39
そだね
77デフォルトの名無しさん:2008/02/05(火) 00:21:42
>>未割り当てのローカル変数 'name' が使用されました。
>って出るじゃん

英語のメッセージは
Use of unassigned local variable 'name'
なんだぜ?
allocateじゃなくてasign
78デフォルトの名無しさん:2008/02/05(火) 00:29:57
紛らわしいw
79デフォルトの名無しさん:2008/02/05(火) 00:35:38
80デフォルトの名無しさん:2008/02/05(火) 00:43:11
デリゲートとかクロージャみたいな難しい概念を
実際のコードに使ってる人なんているの?
81デフォルトの名無しさん:2008/02/05(火) 00:44:40
難しい(笑)
82デフォルトの名無しさん:2008/02/05(火) 00:45:00
難しくないから普通に使ってるだろ。
Cでポインタが難しいと言ってるのと変わらない。
83デフォルトの名無しさん:2008/02/05(火) 00:46:37
言語マニアしか分からなくないですか?
デリゲートとかクロージャがなくて困るケースってあります?
84デフォルトの名無しさん:2008/02/05(火) 00:48:35
.NET Fxはほとんど使えなくなるだろ。
85デフォルトの名無しさん:2008/02/05(火) 00:49:33
イベントドリブンな処理
86デフォルトの名無しさん:2008/02/05(火) 00:49:38
クロージャはともかく、デリゲートはVSでWindows.Formsをポトペタすると使いまくってるだろ。
87デフォルトの名無しさん:2008/02/05(火) 00:50:24
そうなんか(´・ω・`)
ポインタと違って無くても困らない程度のもんだと思ってたんだが
88デフォルトの名無しさん:2008/02/05(火) 00:52:02
関数ポインタの代わりがdelegateなわけで…
89デフォルトの名無しさん:2008/02/05(火) 00:53:22
MDIのアプリを作ろうとしていますが、
親のMDIフォームにToolStripContainerをDockStyle.Fillで張り付けた場合、
MDIの子ウィンドウが表示されなくなりますが、
これを表示させるようにするための解決法はございますでしょうか?

Excel2003のようなアプリを目指しています。
90デフォルトの名無しさん:2008/02/05(火) 00:56:02
クロージャはまぁ無くなっても困らんなw
91デフォルトの名無しさん:2008/02/05(火) 01:09:05
ArrayListで作る配列って、多次元配列に出来るの?
92デフォルトの名無しさん:2008/02/05(火) 01:13:31
ArrayList<ArrayList<string>>
93デフォルトの名無しさん:2008/02/05(火) 01:13:54
ArrayListにArrayList突っ込めば
94デフォルトの名無しさん:2008/02/05(火) 01:13:57
できるよ
95デフォルトの名無しさん:2008/02/05(火) 01:25:00
そうか、出来るのか!
何か難しそうだけどやってみるよ!!ありがと!
96デフォルトの名無しさん:2008/02/05(火) 01:58:08
コスト的に死ねると思うのは俺だけでいい
97デフォルトの名無しさん:2008/02/05(火) 02:08:08
4次元配列とか案の?
98デフォルトの名無しさん:2008/02/05(火) 02:50:20
お前は何を言っているんだ
99デフォルトの名無しさん:2008/02/05(火) 07:58:30
任意のN次元配列を動的に定義できるの?
100デフォルトの名無しさん:2008/02/05(火) 08:18:51
おまいの本当にやりたいことは配列の定義とかそんなちっぽけなことじゃなかったはずだ
101デフォルトの名無しさん:2008/02/05(火) 08:21:39
任意のN次元配列を動的に宣言できるの?
102デフォルトの名無しさん:2008/02/05(火) 08:23:05
動的にIL作ればいいんじゃね
103デフォルトの名無しさん:2008/02/05(火) 08:24:12
C#で書いてみれ
104デフォルトの名無しさん:2008/02/05(火) 08:25:10
つうか動的と宣言って相反するんじゃね
105デフォルトの名無しさん:2008/02/05(火) 08:34:32
Array.CreateInstance
106デフォルトの名無しさん:2008/02/05(火) 08:47:13
動的に作成じゃなくて動的に宣言らしいんだけど
107デフォルトの名無しさん:2008/02/05(火) 08:52:12
静的に宣言するか動的に作成するかしか出来んな
108デフォルトの名無しさん:2008/02/05(火) 09:51:18
>>79
遅くなってすません。
もう見てたんですが
もう一度見直したらしっかり使えるじゃまいですかw

ということでおかげさまで解決しました。
109デフォルトの名無しさん:2008/02/05(火) 10:33:51
任意のN次元配列を動的に宣言できるの?
110デフォルトの名無しさん:2008/02/05(火) 10:39:29
くどいよ
111デフォルトの名無しさん:2008/02/05(火) 11:25:08
俺もn次元配列興味あるなぁ
以前作ったときは、n次元を1次元に無理矢理マッピングして
コーディングしたんだけど、
エレガントさに賭けていたので
112デフォルトの名無しさん:2008/02/05(火) 11:38:26
(´・ω・`)しらんがな
113デフォルトの名無しさん:2008/02/05(火) 11:39:37
賭けていたのか
コードを見てみたいところだ
114デフォルトの名無しさん:2008/02/05(火) 11:40:54
確かに、int[][][][]・・[]とか書くのは美しくないなwww
115デフォルトの名無しさん:2008/02/05(火) 13:36:45
N次元配列にアクセスする時はArray.GetValue
116デフォルトの名無しさん:2008/02/05(火) 14:31:18
C#にクロージャってあるんですか?
匿名メソッドはクロージャではないと聞いたのですが
どこが違うのでしょうか?
117デフォルトの名無しさん:2008/02/05(火) 15:03:47
匿名メソッドはクロージャ
118デフォルトの名無しさん:2008/02/05(火) 15:13:38
>>116
クロージャで正解。
クロージャの考え方はいろいろあってとくに手続き型の言語ではバリエーションが広い。
自分の使ってる言語と動作が違うからC#のは真のクロージャではないという議論が、
しばらくなされたことがあって、そのときに
>匿名メソッドはクロージャではない
という話が出回ったことがある。
119デフォルトの名無しさん:2008/02/05(火) 15:17:28
>>117
>>118
ありがとうございます

メソッド内で匿名メソッドを宣言したときに、
親メソッドの変数を参照できないとクロージャではないみたいな話を聞いたもので

クロージャ自体方言みたいなもので
明確な定義がないんですかね?
120デフォルトの名無しさん:2008/02/05(火) 15:21:26
逆にレキシカルクロージャ以外クロージャではないと言ってる過激派もいるけどね。
121デフォルトの名無しさん:2008/02/05(火) 15:30:11
レキシカルクロージャってのも議論が混乱してて分からない俺涙目
どっかに分かりやすい解説ない?
122デフォルトの名無しさん:2008/02/05(火) 16:52:26
匿名メソッドは親メソッドのローカル変数を参照できる
123デフォルトの名無しさん:2008/02/05(火) 17:08:47
124デフォルトの名無しさん:2008/02/05(火) 18:13:36
静的スコープってのは、クロージャの中身がローカル変数になることをいうの?
動的スコープて何?
125デフォルトの名無しさん:2008/02/05(火) 18:18:49
C#についてるのってレキシカルクロージャだっけ?
126デフォルトの名無しさん:2008/02/05(火) 19:02:51
>>124
動的スコープのクロージャはマクロみたいなものでC#ではありえない。
コードにするとこんな感じ。

var f = DFUNC(a) { return a + b; } // この時点で b は存在しない。

void A() {
  var b = 2;
  f(3); // 6が戻る。
}

void B() {
  f(3); // b がないので実行時エラー
}
127デフォルトの名無しさん:2008/02/05(火) 19:06:58
>>126
なるほどなー
それはわかりやすい
128デフォルトの名無しさん:2008/02/05(火) 19:07:36
スクリプト言語でありそうなコードだね
129デフォルトの名無しさん:2008/02/05(火) 20:56:31
java屋の質問なんだけど、名前空間とディレクトリ階層が一致しなくてもいいみたいなんだが
みんなルール決めて変な事にならないようにしてるの?
javaみたいに言語仕様で縛らないのは何か意味があるのかな。
130デフォルトの名無しさん:2008/02/05(火) 20:58:45
むしろJavaが変
131デフォルトの名無しさん:2008/02/05(火) 21:05:48
なんで言語仕様でディレクトリの構成が縛られないといけないんだ
132デフォルトの名無しさん:2008/02/05(火) 21:10:56
言語なんて複数やってるもんなのにjava屋とかいっておきながら井の中の蛙とは一体
133129:2008/02/05(火) 21:12:36
>>130
んー、C#が変だとは思ってないんだが、クラス名の衝突を防いだりするためなんだから、ファイルもディレクトリ作ってぶつからないようにするんでないの?
134デフォルトの名無しさん:2008/02/05(火) 21:17:57
>>129
今まで違和感無かったか?俺はあったぞ。
135デフォルトの名無しさん:2008/02/05(火) 21:25:05
>>133
論理的な構成と物理的な構成が同じじゃなきゃいけないってのは原始的な感じがする
136129:2008/02/05(火) 21:40:50
チームで開発するときとかは、○○系はこのディレクトリに入れてって会社や個人でルールを決めてるってことか。
javaだとパッケージのルールだけ決めるだけだったから、C#には暗黙のルールでもあるのかな?って思ったんだ。
C#を悪く言ってるつもりはないんだけど、そう聞こえてたらごめん。
137デフォルトの名無しさん:2008/02/05(火) 21:43:06
いやいや別に無問題
138デフォルトの名無しさん:2008/02/05(火) 21:43:15
ArrayListって2.0ではListにとってかわられたんじゃないの?
139デフォルトの名無しさん:2008/02/05(火) 21:43:15
悪く言ってるようには聞こえてないよ
140デフォルトの名無しさん:2008/02/05(火) 21:43:55
たしかにもうListばかり使ってるな
141デフォルトの名無しさん:2008/02/05(火) 21:44:30
>>138
非ジェネリックのクラスを使う事ってある?
俺にはあんまり目的が思いつかんなー
142デフォルトの名無しさん:2008/02/05(火) 21:46:27
Silverlightでは非ジェネリックコレクションは削除されるって噂だよ
143デフォルトの名無しさん:2008/02/05(火) 21:48:26
Silverlightみたいな環境だとジェネリックって重いような木がするんだけどどうなんだろ
144デフォルトの名無しさん:2008/02/05(火) 21:51:26
ジェネリックって重いってどこから出てきた都市伝説だよ
145デフォルトの名無しさん:2008/02/05(火) 21:52:17
重いっつかコードが肥大化するでしょ?
Webにはどうなんかなーと
146デフォルトの名無しさん:2008/02/05(火) 21:52:26
ArrayList使うくらいならList<object>使った方がなんぼかマシだ
147デフォルトの名無しさん:2008/02/05(火) 21:53:27
ジェネリックが特殊化されるのは値型の場合のみでしかも実行時だよ
148デフォルトの名無しさん:2008/02/05(火) 21:54:19
テンプレートじゃあるまいに
149デフォルトの名無しさん:2008/02/05(火) 21:59:14
だいたいランタイムライブラリはクライアントにあるのに、
Webだからどうこうって意味不明だろ。
150デフォルトの名無しさん:2008/02/05(火) 22:13:27
ArrayList使いまくってて
しかもジェネリックが搭載されたのを知らないやつは
まだ余裕で使ってるぜ?
1.1縛りな開発とかだと知っててもジェネリック使えないしな

List<T>に慣れるとArrayListには戻れんな
151デフォルトの名無しさん:2008/02/05(火) 22:20:05
そもそもジェネリックって何の事かわかってない
C#はじめたばっかりの俺

ぐぐってみる
152デフォルトの名無しさん:2008/02/05(火) 22:20:27
WPFはGDI+にとってかわるのかな?
153デフォルトの名無しさん:2008/02/05(火) 22:24:21
WPFはノウハウが全く違うから普及するのに10年ぐらいかかりそうだな
154デフォルトの名無しさん:2008/02/05(火) 22:26:21
Hashtableはよく使う。
155デフォルトの名無しさん:2008/02/05(火) 22:37:17
>>152
WPFのソフトウェアレンダリングコードはGDI+からだいぶ流用したらしい。
社内的にはとってかわってるのかもね。
156デフォルトの名無しさん:2008/02/05(火) 22:41:29
>>154
何か理由があって使ってるの?
157デフォルトの名無しさん:2008/02/05(火) 22:43:29
画像とハッシュテーブルがどうからむのかよくわからん(´・ω・`)
158デフォルトの名無しさん:2008/02/05(火) 22:43:35
Hashtableは名前がダサい
HashTableならいいのに
159デフォルトの名無しさん:2008/02/05(火) 22:45:03
C#で作ったプログラムは必ず使う側に.NETが入っている必要があるんでしょうか?
160デフォルトの名無しさん:2008/02/05(火) 22:45:28
いいえ
161デフォルトの名無しさん:2008/02/05(火) 22:47:13
.NETがいらないC#プログラムを作るにはどうしたらいいんでしょうか?
using System;とかありますがああゆうの全部.NETのクラスライブラリだとかなんですか?

そこら辺のことが書いてあるサイトとかないでしょうか
162デフォルトの名無しさん:2008/02/05(火) 22:49:27
>>161
無理
自分で1からコンパイラ作れば可能だけどさ
163デフォルトの名無しさん:2008/02/05(火) 22:49:50
>>156
マルチスレッド絡み、やや微妙な制約はあるけどね。
ほんとはjavaのConcurrentHashMapだったかみたいな
専用のがあるといいんだけど。
164デフォルトの名無しさん:2008/02/05(火) 22:50:17
>>161
mono
165デフォルトの名無しさん:2008/02/05(火) 22:51:17
>>162
コンパイラ作るだけじゃダメ
CLIを実装しないと

Silverlightは.NETじゃないといえば.NETじゃないかも
166デフォルトの名無しさん:2008/02/05(火) 22:53:24
>>165
C#をネイティブコードにするコンパイラがあればいいんだろ。
別にILしなければならない理由はない。
167デフォルトの名無しさん:2008/02/05(火) 22:54:58
ライブラリどうすんのよ…
168デフォルトの名無しさん:2008/02/05(火) 22:55:00
ネイティブにして、移植したライブラリを使用したとして、
その環境は .NET ではないと言えるのだろうか。
169デフォルトの名無しさん:2008/02/05(火) 22:55:01
すまんCLIはいらないみたい
でも言語仕様に記載されてるBCL(標準クラスライブラリ)は全部実装する必要がある
170デフォルトの名無しさん:2008/02/05(火) 22:55:37
c#暦1ヶ月です。
MSDNのページがさっぱり理解できないんですが、ある程度使えるようになったら読めてくるもんなのでしょうか?
171デフォルトの名無しさん:2008/02/05(火) 22:58:43
日本語版は理解できなくても無理はない
英語版読め
172デフォルトの名無しさん:2008/02/05(火) 22:59:32
つーかどこが分からんの?
173デフォルトの名無しさん:2008/02/05(火) 22:59:34
>>170
カンでさがしてサンプルコード張って動かしてみるのが正しい使いかた
理解するんじゃない感じるんだ
174デフォルトの名無しさん:2008/02/05(火) 22:59:42
クラスの解説を読めるようになるのは初心者脱出の第一歩だな
C#の言語仕様についての説明のページはVB.NETと違って初心者向けに書かれてないから結構難しい
175デフォルトの名無しさん:2008/02/05(火) 23:00:11
なんでC#ってネイティブコード吐けないんだろ
176161:2008/02/05(火) 23:00:46
monoはうにx版.NETみたいな感覚でした、それは置いておいて無理ですか、把握しましたありがとう
177デフォルトの名無しさん:2008/02/05(火) 23:01:40
無理じゃないと言っているのだが。
178デフォルトの名無しさん:2008/02/05(火) 23:01:44
>>175
.NETを使うために作られた言語だから
179デフォルトの名無しさん:2008/02/05(火) 23:01:45
一応マルチプラットフォームを考えてるんだろうが、
だったら MS が色んなプラットフォームで処理系作りやがれと。
180デフォルトの名無しさん:2008/02/05(火) 23:02:45
吐けないんじゃない。吐かないだけ。
181デフォルトの名無しさん:2008/02/05(火) 23:03:27
馬鹿でかいBCLが障害
182デフォルトの名無しさん:2008/02/05(火) 23:03:51
>>175
フレームワーク使う言語としては正しいけどね・・・
183デフォルトの名無しさん:2008/02/05(火) 23:04:12
>>177
馬鹿?
184デフォルトの名無しさん:2008/02/05(火) 23:04:17
ネイティブコード吐ければもっと普及すると思う
185デフォルトの名無しさん:2008/02/05(火) 23:04:54
何でネイティブコードにこだわってるんだ?馬鹿なの?
186デフォルトの名無しさん:2008/02/05(火) 23:05:26
>>185
そこは突っ込みどころと違う
187デフォルトの名無しさん:2008/02/05(火) 23:06:24
>>185
バカはお前だろ
188デフォルトの名無しさん:2008/02/05(火) 23:06:35
そもそも.NETを普及させるための言語なわけだから
ネイティブコードを吐けるようにして普及を図ったところで意味がない
189デフォルトの名無しさん:2008/02/05(火) 23:07:04
CPU ごとに別のマシン語はかないといけないとなると
処理系作るの面倒だし・・・。
190デフォルトの名無しさん:2008/02/05(火) 23:07:04
もう.NETとかいう思想自体が古いけどな
191デフォルトの名無しさん:2008/02/05(火) 23:08:17
>>175
いきなりネイティブコード吐くとリフレクションやLCGと相性悪そうだがその辺考えてみた?
192170:2008/02/05(火) 23:08:26
MSDNの読み方というか、歩き方みたいなのがいまいち分からんのです。
ググる時も、大抵先頭にくるMSDNはなるべく避けて、@ITとかのサイトに逃げてます・・・
機械翻訳ぽいのがどうにも
193デフォルトの名無しさん:2008/02/05(火) 23:08:32
>>190
何が古いんだ?具体的にどうぞ。
194デフォルトの名無しさん:2008/02/05(火) 23:10:18
新しいのが出てないのに古いとはなかなか言い辛いでしょう

>>192
俺がMSDN渡り歩けるようになったのはプログラミング歴5年目くらいです
非常に遅いな
195デフォルトの名無しさん:2008/02/05(火) 23:10:32
というかネイティブコードじゃないこととフレームワークは関係ないだろ。
196デフォルトの名無しさん:2008/02/05(火) 23:12:17
>>192
基本的にMSDNはリファレンス。辞書。
分からないときに引くものであって、教科書じゃない。
MSDN2になって翻訳は随分まともになったと思うが。
197デフォルトの名無しさん:2008/02/05(火) 23:13:07
>>192
@ITは正しい選択
198デフォルトの名無しさん:2008/02/05(火) 23:13:54
まあ変なVB系Tipsサイトよりは
199デフォルトの名無しさん:2008/02/05(火) 23:14:04
そしてブーデー川俣の記事読むのか
200デフォルトの名無しさん:2008/02/05(火) 23:17:31
.NET Tipsで十分場合が多い
201デフォルトの名無しさん:2008/02/05(火) 23:18:13
緑のバイク
202デフォルトの名無しさん:2008/02/05(火) 23:19:46
C#、でぐぐってでた1ページ目が日本語C#情報の9割だと思う俺
203デフォルトの名無しさん:2008/02/05(火) 23:20:18
むしろ9割9分くらいだろ
204デフォルトの名無しさん:2008/02/05(火) 23:24:27
何件表示するかの設定によるんじゃ
205デフォルトの名無しさん:2008/02/05(火) 23:54:25
多次元配列の初期化で、配列初期化子は変数かフィールド初期化子の中でのみ使用できます。新しい式を使用してください。
というエラーが取れなくて困っています。
int[ , ] hoge = new int[ , ] {
 { 1, 2 },
 { 1, 2 }
};
は問題ないのに、
int[][ , ] hoge = new int[][ , ] {
 { new int[]{ 1, 2 }, new int[]{ 1, 2 } }, // ★
 { new int[]{ 1, 2 }, new int[]{ 1, 2 } }, // ★
};
とすると、★の行を指して上記のエラーがでます。
intからint[]に型を変えただけだと思っているのですが、何が違うのでしょうか。
206デフォルトの名無しさん:2008/02/05(火) 23:58:49
>>205
int[]の[,]なんだから逆
int[,][]
207デフォルトの名無しさん:2008/02/06(水) 00:00:10
基本やり直し。

配列初期化子ってわかる?
208デフォルトの名無しさん:2008/02/06(水) 00:01:33
>>207
お前は分かってるのかよ。わかってるなら書け。
209デフォルトの名無しさん:2008/02/06(水) 00:01:51
>>207
そんな大げさな間違いじゃない
210デフォルトの名無しさん:2008/02/06(水) 00:03:03
>>206
ほんとだ…
ありがとうございます。
211デフォルトの名無しさん:2008/02/06(水) 00:21:43
>>179
いろんなプラットフォームありますよ。
x86, x64, IA-64
.NET Compact Framewrok
.NET Micro Framework
どれもWindows上というのはご愛敬w。

後は申し訳程度にSSCLIがFreeBSD対応だった気がする。
212デフォルトの名無しさん:2008/02/06(水) 00:23:00
Linuxはmonoがあるしなぁ
MSも支援してるし
213デフォルトの名無しさん:2008/02/06(水) 00:25:52
質問した当人ですがあらゆるWindows上で使えたらなぁとか思ってました
214デフォルトの名無しさん:2008/02/06(水) 00:26:23
フィールドって言葉がイマイチなじめない
メンバ変数って言いたくなる
215デフォルトの名無しさん:2008/02/06(水) 00:46:59
>>213
「あらゆるWindows」ってなにがあるの?
216デフォルトの名無しさん:2008/02/06(水) 00:48:40
Windows1.0
217デフォルトの名無しさん:2008/02/06(水) 00:49:29
ごめんなさい凡そ今いるWindowsユーザーです
だから.NETなくて良いって条件さえあればVistaは知らないけどいけるかな
218デフォルトの名無しさん:2008/02/06(水) 00:49:50
最後にとが抜けたorz
219デフォルトの名無しさん:2008/02/06(水) 00:50:30
.net入れればいいじゃん。
220デフォルトの名無しさん:2008/02/06(水) 01:13:06
今時.NETくらい誰でも入れてるだろ、とかいう認識の俺はだめなんだろうな
221デフォルトの名無しさん:2008/02/06(水) 01:14:33
.NET程度が使えない環境は切り捨てられるべき
222デフォルトの名無しさん:2008/02/06(水) 01:24:51
private void foo(string hoge, string piyo)
{
 いろいろ処理
 foo(fuga, hogehoge);
}



private void foo(ref string hoge, ref string piyo)
{
 string hoge0 = hoge;
 string piyo0 = piyo;
 いろいろ処理
 foo(ref fuga, ref hogehoge);
}

どっちが良いんでしょうか?
渡す文字列は100文字程度で再帰による関数の呼び出しは100~5000回くらいです
後者が良い気がするのですが、文字列100文字程度なら前者のがいいのかなぁと考えてます
223デフォルトの名無しさん:2008/02/06(水) 01:26:39
やっとまともな質問だなw

後者でいいよ、むしろなんで前者選ぼうと思ったの?
224デフォルトの名無しさん:2008/02/06(水) 01:27:31
      ___    ━┓
    / ―\   ┏┛
  /ノ  (●)\  ・
. | (●)   ⌒)\
. |   (__ノ ̄  |
  \        /
    \     _ノ
    /´     `\
     |       |
     |       |
225222:2008/02/06(水) 01:28:48
>>223
やっぱりそうですか

>>224
参照渡しって初めて知りまして、なんかやばいですか?
226デフォルトの名無しさん:2008/02/06(水) 01:29:08
5000plyも呼べたっけ?
227222:2008/02/06(水) 01:31:12
実際はあんな形ではないんですが、想定してるのは5000回くらいまでです
228デフォルトの名無しさん:2008/02/06(水) 01:31:22
ああ末尾ね
229222:2008/02/06(水) 01:36:42
すみません、fugaとhogehogeはいろいろ処理、と書かれてる部分で引数を元に
値を設定されたstring型です
230デフォルトの名無しさん:2008/02/06(水) 01:43:15
>>225
なんかやばいかどうかは使いどころ

たとえば,参照渡しだと副作用完了点が関数内部まで拡大する可能性がある.
 2*n*val_func(n) ≠2*n*ref_func(n)

かもしれない
231デフォルトの名無しさん:2008/02/06(水) 01:48:55
とりあえず自宅のC#3.0で下記を試したら,一つだけ結果違った
static void Main(string[] args) {
    int n;
    n = 5;
    Console.WriteLine(2 * n * valfunc(n));
    n = 5;
    Console.WriteLine(2 * n * reffunc(ref n));

    n = 5;
    Console.WriteLine((2 * valfunc(n)) * n);
    n = 5;
    Console.WriteLine((2 * reffunc(ref n)) * n);
    Console.ReadLine();
}
private static int valfunc(int n)     { n = -n; return n; }
private static int reffunc(ref int n) { n = -n; return n; }

あと再帰に関してはrefもvalも計算コストはそんなに変わらないと思っている.
とある言語の実装だと「refは,呼び出し元でコピーした変数を値渡しして,戻ってきたら本物に上書き」みたいなことやってたみたい.
232222:2008/02/06(水) 01:53:51
参照渡しじゃなくてポインタ使えればなぁ、と思うんだけどそうもいかないんですよね

>>230
それだと非常にやばいです、それとあまり差がないんですか、ありがとうございます
どの道わからなければ安全そうな値渡しにしようと思ってたのでこれでいってみます
ありがとうございました
233デフォルトの名無しさん:2008/02/06(水) 02:05:19
C#ってオブジェクト渡しは全部参照渡しみたいなもんじゃないの?
234デフォルトの名無しさん:2008/02/06(水) 02:07:22
参照型は参照渡し
値型は値渡し
235デフォルトの名無しさん:2008/02/06(水) 02:07:53
FileInfoとか渡したらどうなるんだろうね
236デフォルトの名無しさん:2008/02/06(水) 02:09:55
参照だろ
237デフォルトの名無しさん:2008/02/06(水) 07:28:13
stringは参照渡しだからrefなんざつけんでいい
stringの代入はコピーではなくポインタを代入してるだけ
238デフォルトの名無しさん:2008/02/06(水) 07:40:12
>>232
stringを渡すときrefつけるのとつけないので結果が変わる場合があるのはわかってる?
239デフォルトの名無しさん:2008/02/06(水) 08:23:49
>>234
参照型を値で渡すのと参照渡しは違うよ。
揚げ足取りじゃなくて全然違う。
240デフォルトの名無しさん:2008/02/06(水) 09:26:56
なぜ説明を書かないのだろう。
241デフォルトの名無しさん:2008/02/06(水) 09:59:58
揚げ足取りだから
242デフォルトの名無しさん:2008/02/06(水) 10:34:02
MSDNでrefで検索して最初に出て来るページにすっかり書いてあるだろJK
243デフォルトの名無しさん:2008/02/06(水) 11:03:23
メソッド内で生成された参照型のインスタンスへの参照を、呼び出し元で受け取るには、refなりoutなりを使って参照の参照を渡す必要がある。(returnは別として)
呼び出し元で作成したインスタンスを操作するなら、インスタンスの参照を渡せばいいから、refはいらない。

引数をメソッド内で変更したい場合、Stringみたいに操作する度に新しいインスタンスが生成されるタイプのクラスは前者。StringBuilderみたいに新たなインスタンスを生成せずに操作できるタイプのは後者。
244デフォルトの名無しさん:2008/02/06(水) 11:16:06
読み返してみるとくどくて意味不明だな。すまん。
徹夜明けだからもう寝るわ。
245デフォルトの名無しさん:2008/02/06(水) 14:51:23
using System;
using System.Text;

namespace ConsoleApplication1{
  class Program
  {
   static void Main(string[] args)
   {
    StringBuilder strbld = new StringBuilder("Start");
    EditValue(strbld);
    Console.WriteLine(strbld.ToString()); //出力:Start+Edit

    ChangeValue(ref strbld);
    Console.WriteLine(strbld.ToString()); //出力:Changed

    NotChangeValue(strbld);
    Console.WriteLine(strbld.ToString()); //出力:Changed

    Console.ReadKey(true);
   }
   static void EditValue(StringBuilder value)
   { value.Append("+Edit"); }

   static void ChangeValue(ref StringBuilder value)
   { value = new StringBuilder("Changed"); }

   static void NotChangeValue(StringBuilder value)
   { value = new StringBuilder("NotChanged"); }
  }}

こういうことか。勉強になった。Thx
246デフォルトの名無しさん:2008/02/06(水) 15:00:13
違うだろ
247デフォルトの名無しさん:2008/02/06(水) 15:06:43
参照型の参照渡しはポインタtoポインタ(**object)だな
まぁ,C風に覚えてもかまわないと思われ
248デフォルトの名無しさん:2008/02/06(水) 15:16:11
>>246
どう違うの?
出力結果を見ると違わないんだけど。
アホにも分かるように教えてくれ。
249デフォルトの名無しさん:2008/02/06(水) 15:22:19
>>248
>>246 ではないが NotChangeValue の後が違うかと。
250デフォルトの名無しさん:2008/02/06(水) 15:29:56
ん?stringもref stringも
関数内で引数を書き換えなきゃ変わらんだろ
251デフォルトの名無しさん:2008/02/06(水) 15:48:50
あーそうか、ChangeValueとかNotChangeValueとかいう関数名が分かってないようにとられた原因か。
ChangePtrとNotChangePtrに名前を変更して読んでちょうだい。

上記二つのメソッドは参照の参照を変更しようとしているから、
参照渡しをしないNotChangePtrの方は当然参照が変更されない

EditValueというメソッドは、参照型を値渡しで受け取り、それのインスタンスメソッドによって
インスタンス自身が変化する。

こういう認識でいいんだよね?
252デフォルトの名無しさん:2008/02/06(水) 15:51:24
>>250
意味分からん。
コードで書くとどういうこと?

253デフォルトの名無しさん:2008/02/06(水) 15:52:24
他Formから値を参照したいのだがわからないww
初心者過ぎて笑われそうだが…
Form1,2で
1に設置しているRadiobuttonをCheckすることで
2に値の変化を与えたい。
わかりにくい説明ではあるが誰か教えてくださいな^ω^
254デフォルトの名無しさん:2008/02/06(水) 15:53:18
>>249
コンパイルして走らせてみた?
出力結果は間違いないよ?
255デフォルトの名無しさん:2008/02/06(水) 15:53:45
>>253
C#の基礎というかプログラミングの基礎のページ見て来い
256デフォルトの名無しさん:2008/02/06(水) 15:55:22
>>253
"デリゲート"でググれ
257デフォルトの名無しさん:2008/02/06(水) 15:59:35
すまんID出ないんだったな。

>>245
>>248
>>251
>>254

全部同一人物です。
以後コテハン245になるとしよう。


258デフォルトの名無しさん:2008/02/06(水) 16:00:24
>>250
static void Main( string[] args )
{
    string str = "250 は";
    Manuke( str );
    Console.WriteLine( str );
    Teinou( ref str );
    Console.WriteLine( str );
    Console.ReadKey();
}

static void Manuke( string s )
{
    s = "間抜け";
}

static void Teinou( ref string s )
{
    s = "低能";
}
259:2008/02/06(水) 16:03:50
ありがとっす^ω^
260:2008/02/06(水) 16:05:29
あっ
>>253
ですww
困ったらまたきますんでw
261254:2008/02/06(水) 16:05:47
>>258

禿同。

参照渡しと値渡しの違いって中級者でも分かってない人が多いって記事をどっかで見たことある。
262デフォルトの名無しさん:2008/02/06(水) 16:06:01
>>258
そんなレベルの話してたのか?
263262:2008/02/06(水) 16:07:05
あ、値渡しはともかく参照渡しってCのアドレス(ポインタ)渡しと結局同じだと思ってたけど違うの?って意味な
264デフォルトの名無しさん:2008/02/06(水) 16:08:55
>>258
だからそうやって引数を書き換えなきゃ同じだろ
265デフォルトの名無しさん:2008/02/06(水) 16:11:19
>>264
彼らは参照渡しは知ってても使い方を知らないんだろう
266デフォルトの名無しさん:2008/02/06(水) 16:13:00
>>258が話の流れと日本語を読めないってことだけは分かった
267デフォルトの名無しさん:2008/02/06(水) 16:14:53
>>263
まあ凡そ。
それを大前提に進んでた話なんだけど>>258が爆発した
268デフォルトの名無しさん:2008/02/06(水) 16:16:08
かわいそうな>>258がいるスレ
269デフォルトの名無しさん:2008/02/06(水) 16:27:43
で、話の大元の>>222に立ち返ったとして何を議論してたんだっけ?

270デフォルトの名無しさん:2008/02/06(水) 16:32:29
>>222は前者でいいってことじゃね
余計な副作用を与えないために
271デフォルトの名無しさん:2008/02/06(水) 18:05:58
>>247
というか、むしろそのほうが分かりやすいような気が
「参照情報」なんて回りくどい言い方せずに、「アドレス」って言ったほうがイメージが伝わりやすいような
272デフォルトの名無しさん:2008/02/06(水) 18:36:51
>>271
根本に返って冷静に考えてみ。
アドレスの方が本来間接的な表現な上に間違ってるでしょ。

参照をもし言い換えるのなら、俺なら「位置情報」と言うな。
273デフォルトの名無しさん:2008/02/06(水) 18:37:58
いやそりゃアドレスじゃん、英語のアドレスが住所としか略されないとでも思ってるのか?
274デフォルトの名無しさん:2008/02/06(水) 18:38:52
位置情報を英語に置き換えりゃアドレスになんだろ
機械翻訳で訳される2単語が実用される英語だとでも思ってんのかね
275デフォルトの名無しさん:2008/02/06(水) 18:40:47
>>272
厳密な意味ではいろいろあるだろうけど、初心者にとっては直感的にはアドレスが一番しっくりくると思うが
276デフォルトの名無しさん:2008/02/06(水) 18:41:26
最近はスレタイも読めないバカが増えたな
277デフォルトの名無しさん:2008/02/06(水) 18:43:29
>>273
住所にすら略されないが?
278275:2008/02/06(水) 18:44:59
×初心者
○日本人の初心者

まぁ瑣末事だけどw
279デフォルトの名無しさん:2008/02/06(水) 18:51:16
>>274
言葉にはそれぞれ意味上のふり幅ってものがあるんだよ。
特に英語のような多義的な言葉を文脈によって使い分ける傾向が高い言語ではね。

"address"は多義的過ぎる上に、コンピュータの世界では別の抽象レベルで
既に別の意味で使われているから望ましくない。

もっと意味のふり幅が少ない言い方を工夫すべき。

……ここまで補足しないとわからないかねえしかし。。
280デフォルトの名無しさん:2008/02/06(水) 18:53:19
エイリアスでええやん
281デフォルトの名無しさん:2008/02/06(水) 19:00:55
アプリケーション設定を暗号化して保存したいんですが、いまいち
system.comnfigurationクラスの使い方がよくわかりません。
どっか良いサンプルないですか?
MSDN読んでもいまいちよくわかりません。
282デフォルトの名無しさん:2008/02/06(水) 19:34:25
暗号化は変なサンプルも多いから気をつけろよ
283デフォルトの名無しさん:2008/02/06(水) 21:00:59
ポインタの参照渡し
284デフォルトの名無しさん:2008/02/06(水) 21:27:31
最近のスレの内容・・・予想以上に.NET普及は早そうだな

>>281
BinaryFormatterとかでは駄目なの?
285デフォルトの名無しさん:2008/02/06(水) 22:37:14
メソッドに渡す引数の属性で[in]や[out]があるんですが、
これはC#のrefやoutとは違うものなんでしょうか
286デフォルトの名無しさん:2008/02/06(水) 22:41:38
そいつはマーシャラに対する指令
287デフォルトの名無しさん:2008/02/06(水) 22:41:57
[Out]はoutと同じ。
refは[In][Out]相当。
[In]単独は、アンマネージとの相互運用で使うことがある。
288デフォルトの名無しさん:2008/02/06(水) 22:45:50
C#の中だけで完結する限りは[in]や[out]は無意味
289デフォルトの名無しさん:2008/02/06(水) 22:47:46
C/C++で作ったコードをC#で使えるようなラッパーを作りたいんですが
参考になるようなHPとか本あったら教えてください
290デフォルトの名無しさん:2008/02/06(水) 22:48:35
俺も知りたい
291デフォルトの名無しさん:2008/02/06(水) 22:48:49
C++/CLIでいいじゃないか。
292デフォルトの名無しさん:2008/02/06(水) 22:51:14
>>289
本は知らんが、このあたりのキーワードでMSDNとか
探してみればなんかヒントあるんじゃね。

* COM Interop
* P/Invoke
* C++/CLI
293デフォルトの名無しさん:2008/02/06(水) 22:54:18
VC#2008対応の解説本早く出せよ。
294デフォルトの名無しさん:2008/02/06(水) 22:57:05
誰に言ってるのw
君統合失調の初期症状じゃないのマジで
295デフォルトの名無しさん:2008/02/06(水) 22:59:48
確かにアンマネージドとの連携について詳しい本があったら欲しいな

Win32API叩く度に検索して調べるの面倒になってきた
296デフォルトの名無しさん:2008/02/06(水) 23:00:45
つMSDN
297デフォルトの名無しさん:2008/02/06(水) 23:08:54
>>295
Win32API使うだけなら、P/Invoke.netとかでいいだろ。
298デフォルトの名無しさん:2008/02/06(水) 23:10:21
>C#の中だけで完結する限りは[in]や[out]は無意味
そうでもない。
299デフォルトの名無しさん:2008/02/06(水) 23:16:48
>>298
具体的にkwsk
300デフォルトの名無しさん:2008/02/06(水) 23:18:40
WebBrowserコントロールでブラウザ作ってるんですが、yahoo.co.jpを開いて閉じるとフリーズしてしまいます。
Googleとかだと大丈夫なのですが。
なんででしょうか?
バグってるんでしょうか?
301デフォルトの名無しさん:2008/02/06(水) 23:20:26
説明にもなってない
それで解決できるはずも無い

まあ確かにWebBrowserは色々胡散臭いが
302デフォルトの名無しさん:2008/02/06(水) 23:24:52
あなたのコードがバグってるんでしょうね
303デフォルトの名無しさん:2008/02/06(水) 23:33:14
WebBrowserはJavaScript周りがバグりまくっている。
JavaScript以外にもFlashを使っているサイトを表示した直後も半フリーズ状態になる。

で、結論は「使うな」。
IEコンポーネントで全て置き換えろ
304デフォルトの名無しさん:2008/02/06(水) 23:46:28
新規プロジェクト作ってWebBrowser貼り付けて、下記の1行を追加しただけで終了時に固まる。

public Form1()
{
InitializeComponent();
webBrowser1.Url = new Uri("http://www.yahoo.co.jp");
}

で、原因はWebBrowserは開いたページの内容によっては内部で立ち上がった謎のスレッドが終わらなくなる
直る見込みはない
諦めろ
305デフォルトの名無しさん:2008/02/06(水) 23:50:33
>直る見込みはない
何故ですかね?MSにやる気がないから?
306デフォルトの名無しさん:2008/02/06(水) 23:55:02
>>305
WebBrowser Controlが登場して何年経ったと思ってるんだ
海外の方でも2年近く前から話題になっているくらいの問題だぞ
http://www.eggheadcafe.com/aspnet_answers/NETFrameworkNETWindowsForms/Apr2006/post26457510.asp

直るならとっくの昔に直ってる
307デフォルトの名無しさん:2008/02/07(木) 00:09:08
>>304
固まらなかったよ
308デフォルトの名無しさん:2008/02/07(木) 00:29:46
>>304
VS2005
Win2003R2x64
固まる
309デフォルトの名無しさん:2008/02/07(木) 00:34:05
>>304
固まるというか、ウィンドウは閉じてるのにVS2005がデバッグ実行中のままになった
310デフォルトの名無しさん:2008/02/07(木) 00:42:20
>>304
XP
VS2008
.NET Framework3.5
固まらない
311デフォルトの名無しさん:2008/02/07(木) 00:42:25
WebBrowser使ったこと無いからよく分からんが
スレッドがバックグラウンドになってないんじゃないか?
312デフォルトの名無しさん:2008/02/07(木) 00:44:07
WebBrowserと名前のつくコントロールは、
大昔のVBやDelphiからあったが、
どれもこれもまともに使える代物じゃなかったな。
313307:2008/02/07(木) 00:44:20
VS2005Pro
XPx64SP2
IE:7.0.5730.11
Flash:9.0.115.0
プラットフォーム:x86
固まらない
314デフォルトの名無しさん:2008/02/07(木) 00:47:52
コンストラクタ内で実行しなけりゃいいんじゃね?
315デフォルトの名無しさん:2008/02/07(木) 00:48:36
>固まる環境の人
Navigateメソッドでもなる?
316デフォルトの名無しさん:2008/02/07(木) 00:58:16
>>315
なった
コンソール用のテストコード書いてみたが、こちらも見事に固まる
ちなみに終了シグナルは飛んできて一見終わった様に見えるが、
残骸が残っていて悪さしているようだ

class test {
ManualResetEvent _mre = new ManualResetEvent(false);
public void run() {
Thread thread = null;
try {
_mre.Reset();
thread = new Thread(new ThreadStart(entry));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
} finally { _mre.WaitOne(); }
}
void entry() {
WebBrowser bra = new WebBrowser();
browser.Navigate("http://www.yahoo.co.jp/");
while (_browser.ReadyState != WebBrowserReadyState.Complete) { // 省略 }
_mre.Reset();
}
}
317デフォルトの名無しさん:2008/02/07(木) 01:02:56
>>306
海外とか知らねえよバカ
318デフォルトの名無しさん:2008/02/07(木) 01:29:08
319デフォルトの名無しさん:2008/02/07(木) 01:37:03
>>318は www.google.co.jp になっているから、www.yahoo.co.jp に変更して試して見るべし
320デフォルトの名無しさん:2008/02/07(木) 01:40:36
>>316
ちなみにIEのバージョンは?
321デフォルトの名無しさん:2008/02/07(木) 01:43:14
>>320
Windows Server 2003R2 x64
IE 6.0.3790.1830 SP1
.NET3.0は入れてない
322デフォルトの名無しさん:2008/02/07(木) 01:52:31
家のパソコンにIE6が入ってるから試そうと思ったけど繋がらないや
帰るか
323デフォルトの名無しさん:2008/02/07(木) 02:15:42
>>318-319
このエラーでた
意味はわからん
http://msdn2.microsoft.com/ja-jp/library/ms172219.aspx
324デフォルトの名無しさん:2008/02/07(木) 08:25:57
>>284
binaryformatterは暗号化していないので解析しようと思えば
すぐできてしまうから、パスワードなんかは保存したくないわけです。
system.security.cryptographyのクラス群で暗号化してから保存すれば
同じことなんですが…。

アプリケーション設定が.net2.0以降すごく使いやすくなっているみたいなので、
そちらで暗号化できるならそっちを使いたいなあと思った次第です。
設定クラスの定義、設定ファイルの読み出し、保存を毎回毎回アプリ作るたびに
実装するのって、エラー処理なんかまで含めて考えると意外と面倒くさいもんで。。
325デフォルトの名無しさん:2008/02/07(木) 12:58:22
またWebBrowser被害者か
326デフォルトの名無しさん:2008/02/07(木) 14:16:27
loaderLock マネージ デバッグ アシスタント (MDA: Managed Debugging Assistant) は、Microsoft Windows
オペレーティング システムのローダー ロックを保持するスレッドでマネージ コードを実行しようとする試みを
検出します。

このような実行は不正であり、デッドロックの発生につながり、DLL がオペレーティング システムのローダーに
よって初期化される前に使用される可能性があります。
327デフォルトの名無しさん:2008/02/07(木) 15:00:57
>>323
IEのアドイン全部停止して試してみるとかどう?
328デフォルトの名無しさん:2008/02/07(木) 15:19:01
質問です。
インターネット上にあるpng形式のファイルを取得して保存したいと考えています。
そこで、
Stream objStream;
objStream = wrGETURL.GetResponse().GetResponseStream();

StreamReader objReader = new StreamReader(objStream);

string filepath;

filepath = "C:\\hoge\\hoge.png";

if (File.Exists(filepath))
{
File.Delete(filepath);
}

StreamWriter w = new StreamWriter(filepath);

w.Write(objReader.ReadToEnd());
w.Close();
objStream.Close();

とやりましたが、保存できないようです。
StreamReaderのどのメソッドを使えば、インターネット上の画像ファイルの読み込みを一括でおこなえるのでしょうか?
329デフォルトの名無しさん:2008/02/07(木) 15:20:48
どこでおかしくなってるのかちゃんと調べろよ。
330デフォルトの名無しさん:2008/02/07(木) 15:26:48
StreamReader/StreamWriterはストリームを文字列で扱うクラス。
画像みたいなバイナリファイルに使っちゃ駄目。
331デフォルトの名無しさん:2008/02/07(木) 15:28:07
File.Copy()でファイルをコピーする場合、
途中で止めるにはどうすればいいですか?
プログラムを強制終了しても、止まらないようなのですが・・・
332デフォルトの名無しさん:2008/02/07(木) 15:42:42
File.Copyだと止められないんじゃない
SHFileOperation使えば
333デフォルトの名無しさん:2008/02/07(木) 15:55:34
>>332
ダイアログがうざいから
SHFileOperation使いたくなくてFile.Copy()にしたんですが
やっぱり止める方法はないんですかね・・・

FileStreamでnバイトずつ読み込み→書き込み→停止信号監視
とやれば止められそうですが遅くなりそうで
334デフォルトの名無しさん:2008/02/07(木) 16:19:46
>>327
変化なし
335デフォルトの名無しさん:2008/02/07(木) 16:39:19
>>331
Windows APIのCopyFileExだと
コールバック付きで途中中断もできる。
こっちはだめ?
336デフォルトの名無しさん:2008/02/07(木) 16:47:50
>>335
ありがとうございます
そんなのがあるんですか
Win32APIだとVISTAへの対応が心配ですが試してみます
337デフォルトの名無しさん:2008/02/07(木) 17:18:48
CopyFileExだとファイル単位でコールバックだね
338デフォルトの名無しさん:2008/02/07(木) 17:20:09
>>337
>ファイル単位
そうですかぁ・・・
ファイルコピー/移動中にスキップしたりしたいので
>>333の方法しかないですかね
オーバーヘッド食いそうだなぁ('A`)
339337:2008/02/07(木) 17:27:08
>>338
すまん嘘だった
340デフォルトの名無しさん:2008/02/07(木) 17:27:48
そして属性やNTFSサブストリームが消える罠
341デフォルトの名無しさん:2008/02/07(木) 17:37:11
それらもコピーされると書いてある。
http://msdn.microsoft.com/library/ja/jpfileio/html/_win32_CopyFileEx.asp
342デフォルトの名無しさん:2008/02/07(木) 17:51:44
うん、338へのレスだったんだ
343デフォルトの名無しさん:2008/02/07(木) 18:07:53
>>318
WebBrowserConstorlは基本的にメッセージポンプが必要。
だたメッセージポンプなしでも特定の条件が重なったときは動作する。
そのコードだと動くほうが例外的。
344デフォルトの名無しさん:2008/02/07(木) 21:17:54
>>343
詳しく
345デフォルトの名無しさん:2008/02/07(木) 22:04:02
>>318を下記のように修正
thread = new Thread(new ThreadStart(entry2)); 

void entry2(){
  bool once = false;
  EventHandler apidle = delegate(object sender, EventArgs e){
    if (once) return; else once = true;
    entry(); // 元のentry()をcall
    Application.ExitThread();
  };
  Application.Idle += apidle;
  Application.Run();
  Application.Idle -= apidle;
}
346デフォルトの名無しさん:2008/02/07(木) 22:16:18
>>324
クライアントにパスワード残して「解析しようと思えば」っておかしいだろ・・・
本気でやるなら認証鯖立てるしかないんじゃね?
347デフォルトの名無しさん:2008/02/07(木) 22:20:22
>>345
おぅ
動いた
348デフォルトの名無しさん:2008/02/08(金) 00:07:17
>>343
ナイス!

ただ、
>>WebBrowserConstorl
これタイプミスしてなければ...
349デフォルトの名無しさん:2008/02/08(金) 01:03:13
コメントにtodoとか入れておいたものがタスク一覧に現れるのは開いているファイルだけのようですが
ソリューションかプロジェクトの全てのファイルを一括で確認する方法はありませんか?
350デフォルトの名無しさん:2008/02/08(金) 01:28:45
スレッドモデル指定なしのCOMを使ってるのか
COMのスレッドモデルは死ぬほどややこしいからな〜
351デフォルトの名無しさん:2008/02/08(金) 01:53:29
ありません。
352デフォルトの名無しさん:2008/02/08(金) 09:04:24
>>346

確かに暗号化してあってもクライアントにパスワードを残すのはよろしくないですが、
ログイン名だけは記憶できるようにしたいとか、接続先URLも攻撃を避けるために
隠蔽したいとか、どうしてもクライアントに暗号化して残したい情報はあると思ってます。

windows認証(DPAPI)で暗号化して, windowsのパスワードが安全なポリシーに従って
設定されていれば、それなりの安全性は保てると思うんですが、やっぱまずいっすかね。
353デフォルトの名無しさん:2008/02/08(金) 09:30:50
誰から守りたいわけ?
354デフォルトの名無しさん:2008/02/08(金) 11:29:04
普通の配列
int[] array
から
List<int> list
に中身をコピーするメソッドって無いですか?
foreach(int i in array){ list.Add(i); }
ってしないと駄目ですか?
355デフォルトの名無しさん:2008/02/08(金) 11:45:31
>>354
C#3.0用 array.ToList()
多分中身は>>354
356デフォルトの名無しさん:2008/02/08(金) 11:46:08
new List<int>(array);
// たぶん中身は(ry
357デフォルトの名無しさん:2008/02/08(金) 11:54:26
>>355,356
ありがとうございます。
10分も悩んでしまいました;;;
358デフォルトの名無しさん:2008/02/08(金) 12:56:50
ToList()だとインスタンスが書き換わらない?
AddRangeって手もあるよ
359デフォルトの名無しさん:2008/02/08(金) 14:55:57
>>345
動かなくね?
360デフォルトの名無しさん:2008/02/08(金) 15:03:37
361359,360:2008/02/08(金) 15:07:43
>>345>>360>>345の指示で>>318を修正したもの

で、Windows XP Pro SP2だと普通に動いた。
が、Windows Server 2003 R2 x64、Windows XP x64だと動かない。

腐ってやがる・・・
362デフォルトの名無しさん:2008/02/08(金) 15:24:14
早すぎたんだ
363デフォルトの名無しさん:2008/02/08(金) 15:25:44
つまり>>304>>316は別の問題だったわけか。
64bit環境はないからテストできんなぁ。
64bit環境で32bit指定したexeの場合はどうなの?
364デフォルトの名無しさん:2008/02/08(金) 15:32:00
うちはXPx64だけど32bit指定でも64bit指定でも問題なかった
365デフォルトの名無しさん:2008/02/08(金) 15:32:18
これ、どうなればいいの?
TEST押したらdoneが出るだけ?
366デフォルトの名無しさん:2008/02/08(金) 17:06:01
>>365
doneダイアログが出た後にフリーズしなければok
問題がある場合はdoneダイアログが出てスレッドは終了しているはずなのに直後にフリーズするはず
あと、俺の環境でも32bitだと問題なし
367デフォルトの名無しさん:2008/02/08(金) 17:06:57
レスをざっと見た感じNT5.2x64以外は大丈夫なんじゃね?
NT5.2x64なんて使ってる奴いるの?
368デフォルトの名無しさん:2008/02/08(金) 17:07:08
なるほど、Vista64でAny x86 x64 すべて動作。
ってVS2008ですが。2005でやったほうがいいかな
369デフォルトの名無しさん:2008/02/08(金) 21:14:42
いやー、訳分からんPG起動させるオマイラほんと関心するわww
370デフォルトの名無しさん:2008/02/08(金) 21:20:19
コントロールの再描画についての質問ですが、Control.Updateメソッドは
「再描画すべき所があればWindowsメッセージキューに即割り込んでPaintイベントを発生する」
という理解でいいんでしょうか?
いちおう↓とか読んだのですが、いまいちピンと来ないもので。
ttp://dobon.net/vb/dotnet/control/refreshupdateinvalidate.html
371デフォルトの名無しさん:2008/02/08(金) 21:35:48
>>369
訳分からんやつはそも参加しない話

そしてPGなんて略し方(笑)
372デフォルトの名無しさん:2008/02/08(金) 23:09:26
すいません質問です。
PointFの引数になぜPointを代入できるのは仕様でしょうか?
373デフォルトの名無しさん:2008/02/08(金) 23:10:37
修正してたら日本語がおかしくなってしまいました、すいません。
374デフォルトの名無しさん:2008/02/08(金) 23:14:32
VC#2005で、プログラムを組んでいるのですが、
C言語で書いた関数(メソッド)を使いたいと思っています。
ですが、.Cファイルをコンパイル、リンクする方法がわかりません。
プロジェクトに.cファイルをぶち込むと、テキストファイル?として
認識され、うまくリンクされていません。
VC++だと.Cファイルも使えたのですが、C#ではできないのでしょうか?
.Cファイルをincludeする方法がありましたら、教えてください。

スレ違いでしたら誘導お願いします。
375デフォルトの名無しさん:2008/02/08(金) 23:15:33
VC#では_
376デフォルトの名無しさん:2008/02/08(金) 23:21:38
まずCOMとIDLを用意してください
377デフォルトの名無しさん:2008/02/08(金) 23:23:15
>>372
暗黙の型変換が出来るように演算子がオーバーロードされている。
public static implicit operator PointF(Point p)
378デフォルトの名無しさん:2008/02/08(金) 23:26:38
>>374
VC++でC向けのDLLとしてコンパイルしてC#からDllImport
またはC++/CLI
379デフォルトの名無しさん:2008/02/08(金) 23:37:40
Cのソースがそのまま使えるかもなんて発想はどこから来るんだ
380デフォルトの名無しさん:2008/02/08(金) 23:40:20
そんなに量が多くないんだったら手書きでC#に移植したら
381デフォルトの名無しさん:2008/02/08(金) 23:41:03
>>370
ほぼOKじゃね
メッセージキューに割り込むってか
WndProcを直接呼ぶ
382デフォルトの名無しさん:2008/02/08(金) 23:41:30
>>377
式で検索したら出てきました、ありがとうございました。
ということは内部で構造体を作り直してるのでやりすぎると遅くなりますね。
383374:2008/02/09(土) 01:33:43
レスくれた方、ありがとうございます。
簡単には、C#でCのファイルは使えないんですね。
DllImportでの使用か、C#で書き直すか(限りなく大量ですが。)
検討してみます。
VC++でプログラム組んだほうが早い気もするし、困ったもんです。
ありがとうございました。
384デフォルトの名無しさん:2008/02/09(土) 01:58:47
C++/CLIおすすめ
DLLコピーし忘れ事故を一番防止できると思う
プロジェクトに加えておけば勝手にコピーしてくれるし
385デフォルトの名無しさん:2008/02/09(土) 02:01:17
>>383
普通にDLL作ってC#から読ませるだけやがね
386370:2008/02/09(土) 03:35:09
>>381
"直接呼ぶ"というのはどういう意味ですか?
WndProcは「.NETの外から来るWindowsメッセージを.NETのイベントに置き換えるメソッド」なので
Updateメソッド→Windowsメッセージ(WM_PAINT?)→WndProcメソッド→Paintイベント
という流れなんでしょうか?
あと、Paintイベントを発行するOnPaintメソッドがありますが、これは上記には絡まないんですか??

Paintイベントが発行されるまでの流れが分からなくて混乱しています。。(まだこの辺理解するには早いのかも
質問ばかりですみません。
387デフォルトの名無しさん:2008/02/09(土) 07:53:57
>>386
何が流れているの?

データ?処理?他?
388デフォルトの名無しさん:2008/02/09(土) 08:34:49
public class A {
 何か処理

 class AData {
 }
}

みたいに、自クラス内のみ、もしくはそのファイル内でのみ使えて、
外部からは見えないクラスを使いたいのですが、
アクセスレベルはどのように書けば良いのでしょうか。
389デフォルトの名無しさん:2008/02/09(土) 09:12:25
private。
ちなみに、A、ADataとも、互いのprivateフィールドやメソッドにアクセス可。
ソースファイル単位のアクセスレベルはない。
390デフォルトの名無しさん:2008/02/09(土) 10:53:43
public class A {
 private void hoge() {
  AData data = new AData();
  data.ANum = 1;
 }

 private class AData {
  private int ANum;
  private AData(){}
 }
}

のように書いてみたんですが、

AData data = new AData();
data.ANum = 1;

この部分で両方ともアクセスできない保護レベルになってると怒られるんですが…。
391デフォルトの名無しさん:2008/02/09(土) 11:06:28
>>390
AData は Aから見て別クラスなんだから、メンバまで private にしたら当然見えない。
ADataはAのprivateクラスだから、Aの外からは見えないがADataそのものはAからは
見える。

ので、ANumをAから見たければ、こうする。

public class A {
 private void hoge() {
  AData data = new AData();
  data.ANum = 1;
 }

 private class AData {
  public ANum;
  public AData(){}
 }
}
392デフォルトの名無しさん:2008/02/09(土) 11:29:24
>>386
WndProcとPaintイベントの間にOnPaintが挟まる。
メッセージキューは、位置としてはWndProcより前にあるのだが、
(Updateのように)これを介さずWndProcへ送られる場合もあって、
それを381は直接呼ぶと表現しているんだろう。
393デフォルトの名無しさん:2008/02/09(土) 11:48:46
>>391
それをやると、アクセシビリティに一貫性がありません、ADataのアクセシビリティは
フィールド○○よりも低く設定されています。
と怒られてしまいます。
394デフォルトの名無しさん:2008/02/09(土) 11:59:09
>>393
>>391の通りならエラーにはならない
どこかでAData型をAの外に見せてるんだろ
395デフォルトの名無しさん:2008/02/09(土) 12:03:07
>>393
今適当にやったけど、普通にできるぞ。本当にそのエラーなのか?
  
396デフォルトの名無しさん:2008/02/09(土) 12:05:54
public class A {
 public AData data;//ここでエラー
 private void hoge() {
  data = new AData();
  data.ANum = 1;
 }

 private class AData {
  public int ANum;
  public AData(){}
 }
}
たぶんこうなってると推測
クラス外から見えない型のオブジェクトを公開しても外から触れないだろ
397デフォルトの名無しさん:2008/02/09(土) 12:11:49
オブジェクト思考じゃないかもしれないですけど、階層型の構造になったプログラムで、兄弟(同階層)のオブジェクトの状態を知りたいときはどうするべきでしょうか?
親から回すしかないですかね?
398デフォルトの名無しさん:2008/02/09(土) 12:15:49
子に親への参照を持たせるかな
399デフォルトの名無しさん:2008/02/09(土) 12:18:28
漠然としすぎててワカンネ
兄弟だろうと姉妹だろうと参照もてばいいんじゃねーの
400デフォルトの名無しさん:2008/02/09(土) 12:30:28
>>397
日本語でおk。
401デフォルトの名無しさん:2008/02/09(土) 12:50:32
オブジェクト思考がなんだか解らないから、
参照持たせた所で、それは「オブジェクト思考」じゃ無いって叩かれるのを避けたかったんじゃない?

オブジェクト思考がなんだか解らないの、声だけ大きいキチガイが身近に居るとか。
402デフォルトの名無しさん:2008/02/09(土) 12:51:55
>>398
それアリなの?おぶじぇくと思考的に
403デフォルトの名無しさん:2008/02/09(土) 12:54:55
Parent プロパティ
でMSDN引いてみれば
404デフォルトの名無しさん:2008/02/09(土) 12:59:43
>>352
もう少し隠蔽すべきデータかどうか考えてみたら?
他の鯖認証してるツールのアクセスログとか見てみな。
405デフォルトの名無しさん:2008/02/09(土) 13:50:05
オブジェクト思考ではなくオブジェクト指向な。
406デフォルトの名無しさん:2008/02/09(土) 14:08:52
>>390
これじゃだめなん?
private class AData {
private int aNum;
protected internal int ANum { get { return aNum; } set { aNum = value; } }
protected internal AData() { }
}
}
407デフォルトの名無しさん:2008/02/09(土) 14:17:22
本末転倒だな
408デフォルトの名無しさん:2008/02/09(土) 14:21:10
つーかC#の話題じゃなくてオブジェクト指向スレ行けよ
409デフォルトの名無しさん:2008/02/09(土) 14:54:12
なんで馬鹿ってのはすぐに「〜スレ行けよ」って言いたがるんだろうねw
410デフォルトの名無しさん:2008/02/09(土) 15:02:59
そりゃ自分に理解できないことは全部すれちがい
411デフォルトの名無しさん:2008/02/09(土) 15:22:58
何で直線バカって目先のことしか考えられないんだ
どうでもいい話は直ぐ飛びつくしキモいんだよな
412370:2008/02/09(土) 16:30:52
>>392
>WndProcとPaintイベントの間にOnPaintが挟まる。
Paintイベントは直接的にはOnPaintによって発行される、ということでしょうか
ということはもしかして「イベントHogeは常にOnHogeメソッドによって発行される」のですか?
もしそうならスッキリしますね。

そうすると、例えばpictureBoxインスタンスのPaintイベント処理は、
「pictureBox_Paintイベントハンドラを設定」と「overrideしたOnHogeの作成」
のどちらでも機能的に同じことができる、ということでしょうか?
(そういえば誰かが「同じことをするにも何通りものアプローチがあるから、1つに拘るな」と言ってたのを見た記憶が)

>>387
他のウィンドウに隠れて無効化されたコントロールを再描画する、という単純なものです。。。
413デフォルトの名無しさん:2008/02/09(土) 23:17:26
こんばんは

C#でメモリ確保の方法ってありますか?

指定したメモリ数を確保するツールを作りたいのです。
教えてください。
414デフォルトの名無しさん:2008/02/09(土) 23:45:11
確保してどうしようってんだ
415デフォルトの名無しさん:2008/02/09(土) 23:49:13
それで思い出したけどスタックアロケートみたいのあったよね、あれってなんだったんだか
416デフォルトの名無しさん:2008/02/10(日) 00:01:14
>>413
new
417デフォルトの名無しさん:2008/02/10(日) 00:12:19
クラスのフィールドを取得するとき、フィールドをpublicにするかプロパティを用意するかは、どうやって決めたらいいんですか?
チェックなどを設けずに単にset{ this.hoge=hoge; } get{ return hoge; }とするのでも、プロパティ使う意味あるんでしょうか?
418デフォルトの名無しさん:2008/02/10(日) 00:15:21
>>413
一昔前にあったメモリを強制的に確保して開放するメモリ掃除ツールの模倣?

Console.ReadLine();
byte[] buffer = new byte[1024 * 1024 * 256];
buffer[1234567] = 5; //最適化防止用

Console.ReadLine()を抜けるとタスクマネージャにおけるPF使用量が増える。
ただNT系でメモリ掃除効果があるかは知らん。用途勘違いしてたら無視してくれ。
419デフォルトの名無しさん:2008/02/10(日) 02:35:00
http://www.atmarkit.co.jp/fdotnet/onepoint/onepoint02/onepoint02_01.html
この記事を読んで一瞬でも難しいと思った自分は、まだまだ修行不足なんだろうなぁ…
返り血が構造体なプロパティや、構造体なコレクションのforeachなんかは
自分もそのうち使うと思うので注意だけど、他にも初心者は気をつけとけ!っていう所ありますか?
420デフォルトの名無しさん:2008/02/10(日) 02:58:23
>>419
> 構造体なコレクション
これ,できるのか・・・継承とか委譲とかはクラスにしかできないとおもてた
421デフォルトの名無しさん:2008/02/10(日) 03:25:22
>>419
フィールドやセッターならエラー吐いてくれるからまだいいけど、
破壊的なメソッド呼び出しはエラーにならずに
コピーに対して無意味な操作をしてしまうって方が厄介なんだよね。
これのせいで値型のメソッドはimmutableであるべきだとか
そもそもフィールド操作と区別がつかないプロパティのシンタクスが
問題なんだとか主張もあったりなかったり。
422デフォルトの名無しさん:2008/02/10(日) 05:54:21
あと値型でジェネリック系のコレクションを使う場合は
IEquatable<T>.Equals(T o)やIComparable<T>.CompareTo(T o)を
実装しないとパフォーマンスが非常に悪いことになる。
423デフォルトの名無しさん:2008/02/10(日) 10:40:03
初心者は構造体を使うな。
424デフォルトの名無しさん:2008/02/10(日) 11:42:20
>>415
unsafe { byte* buf = stackalloc byte[10]; }
425デフォルトの名無しさん:2008/02/10(日) 13:09:39
構造体なんて自作するもんじゃないやね
426sage:2008/02/10(日) 13:11:27
データグリッドに以下の様な利用期間を表示しています
表示しているデータは、DBに対してSELECT文で SELECT data1,"〜",data2...で取得しています(data1,2はstring型 "〜"は表示上仕方なく)

開始日付 終了日付
20000101 〜 20000131
20010101 〜 20010131
20020101 〜 20020131
20030101 〜 20030131
20040101 〜 20040131

必要だと思うことが以下の3項目です
1、更新ボタンを押された際に開始、終了のどちらかがNULL場合はエラー
2、入力された値が日付で無い場合はエラー
3、開始日付<終了日付で無い場合はエラー

処理としては更新ボタンが押された際"DBのデータを削除後、画面情報をDBにINSERT"しようと考えています。
その際に"昇順、かつ終了日付<次の行の開始日付の様にZの様な並び"にソートする方法を調べていますが今一よく分かりません。
多次元配列で[0,2]と[1,0]を比較して逆なら行を入れ替えて・・・の様な作りになるのでしょうか・・・。

IComparableとArrayListを調べてるのですが基礎が無さ過ぎる為にかなりパニクってます;
C#が初めての言語で経験2週間の度素人です・・・よければ教えてください。
開発環境はVisualStudio2003になります。
427デフォルトの名無しさん:2008/02/10(日) 13:59:23
>>426
20020101 〜 20040131
20030101 〜 20030131
20020201 〜 20030115
こういうケースはどう並ぶの?
428デフォルトの名無しさん:2008/02/10(日) 14:00:46
>>426
「表示」だけじゃ無いんだよな?日付入力して更新ということであれば

1.チェックの1〜3でOKならTMPテーブルに書き込む
2.TMPに書き込めたらcommitして元データ削除
3.TMPから元テーブルにコピー
4.元テーブルからSQLで読み込み(ここでソート)

どうしても配列でソートなら「配列、ソート」でぐぐるか本嫁、基本だから

排他が気になるけど全デリート全インサートなん?
429419:2008/02/10(日) 14:01:16
レスありがとうございます。せいぜい気をつけるしかないってことですね。
そういえば、C#のjavaより良い点の一つが、値渡しができる構造体って教わりましたよ。
なんとか使いこなせるよう頑張ろう。
430デフォルトの名無しさん:2008/02/10(日) 14:10:29
構造体を使うときに気をつけないといけないのはボクシング
こんなこというと,そんなもん大したコストじゃないだろとか言われそうだから先に言っとくけど,
構造体はそんなもんが問題になるような状況で使うもの
431デフォルトの名無しさん:2008/02/10(日) 14:11:56
>>429
何が頑張ろうだ、頑張るのはお前だw
432デフォルトの名無しさん:2008/02/10(日) 14:13:09
>>431
日本語って難しいよな
433デフォルトの名無しさん:2008/02/10(日) 14:13:22
>>431
君頭悪いでしょw
434デフォルトの名無しさん:2008/02/10(日) 14:13:34
読解力がないだけ
435デフォルトの名無しさん:2008/02/10(日) 14:14:58
>>431
同意
436デフォルトの名無しさん:2008/02/10(日) 14:15:05
>>430
なんか言ってること変じゃないか?w
よくわかってないのなら無理しない方がいいと思うよ
437デフォルトの名無しさん:2008/02/10(日) 14:15:40
>>435
同意?
438430:2008/02/10(日) 14:19:21
構造体はそんなもんが→構造体はその程度のコストが
これでいいか?
439デフォルトの名無しさん:2008/02/10(日) 14:23:39
よくないでしょw
ボクシングは構造体にまつわる問題だ、と自分で言ってるのに、
どうして「ボクシングが問題になるような状況で」構造体を使うんだよw
440デフォルトの名無しさん:2008/02/10(日) 14:25:43
そうじゃなくて構造体の一番の意義は、
たとえば配列の要素にアクセスするような場面における参照型のオーバーヘッドを
回避することでしょ。
441デフォルトの名無しさん:2008/02/10(日) 14:42:26
>>439
GC負荷を減らしたいときに構造体が活用できることがある。
でも構造体を使うときはボクシングに気をつけないとかえってGC負荷を増やしてしまう。
だからGC負荷を減らしたいときは、ボクシングに気をつけながら構造体の活用を考えよう。

というような話を>>430はしたいのだろう。
442デフォルトの名無しさん:2008/02/10(日) 14:49:39
構造体でボクシング利用するような事例ってどんなのだ?
443デフォルトの名無しさん:2008/02/10(日) 14:52:35
ボクシングってなーに?
444デフォルトの名無しさん:2008/02/10(日) 14:55:33
>>430はボクシングしないように構造体を使わないと早くならんぞといっているだけだろ
俺はほぼ全てのケースで構造体使っても早くならんと思ってるけどな
445デフォルトの名無しさん:2008/02/10(日) 14:55:41
構造体のアップキャスト
446デフォルトの名無しさん:2008/02/10(日) 14:57:15
>>442
例えば構造体のToStringをオーバーライドしてないとき。

public struct Hoge
{
  public int Fuga;
}

Hoge hoge = new Hoge();
string str = hoge.ToString(); // ←ここでボクシングがおきる

他にもIEquatable<T>を実装させずにDictionaryのキーにしたときとかボクシング起きまくり
447デフォルトの名無しさん:2008/02/10(日) 15:04:16
>>444
構造体は速くするためというよりは遅くならないための仕組みな気がするね。

>>446
>他にもIEquatable<T>を実装させずにDictionaryのキーにしたときとかボクシング起きまくり

GetHashCodeのオーバーライドも忘れずに。
448デフォルトの名無しさん:2008/02/10(日) 15:40:00
>>446みたいなのって単なる設計のミスだと思うんだけど。
449デフォルトの名無しさん:2008/02/10(日) 15:56:38
static string ToString(ValueType this);//ValueTypeは参照型
こんなメソッドを呼び出してることに相当するわけだから
450デフォルトの名無しさん:2008/02/10(日) 16:06:28
>>448
>>449
C#コンパイラが出力したIL見てみれば分かるけど
.NET 2.0以降ではconstrainedプレフィックスが使えるようになったので
ValueType.ToStringの呼び出しそのもののボクシングは回避できるようになった。
その意味では設計で対処されてる。

ただ、ValueType.ToStringが中でbase.GetType().ToString()を呼んでいるので
そこでボクシングとかGCヒープアロケーションは起きる可能性が高い。
451デフォルトの名無しさん:2008/02/10(日) 16:28:54
GetTypeって実際は何をやってるんだろうなあ
452デフォルトの名無しさん:2008/02/10(日) 17:13:59
試してみたけどGetTypeにもToStringにもヒープアロケーションはあるみたいだね

static void Main(string[] args)
{
for (int i = 0; i < 10000000; ++i)
{
Type t = i.GetType();
}

Console.WriteLine(GC.CollectionCount(0));
Console.WriteLine(GC.CollectionCount(1));
Console.WriteLine(GC.CollectionCount(2));
}

458
2
1

GetType→ToString

1206
2
1

ToStringはstringを作るわけだから当たり前だけど
453デフォルトの名無しさん:2008/02/10(日) 17:53:12
ToStringは使用頻度が低いから特に問題にはならないと思うが、
ハッシュや比較はコレクションで大量に使うからきちんと実装しといたほうがいい。
IEquatable<T>やIComparable<T>などを実装しないならジェネリックでないコレクションを使ったほうが、
ボクシングの回数は少なくて済むから逆にパフォーマンスもいいんだよね。
454デフォルトの名無しさん:2008/02/10(日) 18:06:28
今さらながら
プログラミング.NET Framework第2版
を買いました。
もう4月までずっと春休みなので
休み中に読破しようかな〜
455デフォルトの名無しさん:2008/02/10(日) 18:09:55
大学生は暇でいいですなー
456デフォルトの名無しさん:2008/02/10(日) 18:37:24
あの本は勉強になるな
457デフォルトの名無しさん:2008/02/10(日) 18:39:23
>>454
この業界来ないように他業種の勉強しておいた方がいいと思うよ
458デフォルトの名無しさん:2008/02/10(日) 19:28:08
コレクションで使う場合はハッシュと比較が影響を与えやすい。
ほかに、領域確保の効率が悪くなることで参照型より負荷が高くなることもある。
459デフォルトの名無しさん:2008/02/10(日) 19:28:52
第3版はいつ出るんだろ?
460デフォルトの名無しさん:2008/02/10(日) 19:37:27
>>457
微妙に同意してしまうのだがw
461デフォルトの名無しさん:2008/02/10(日) 20:01:22
>>460
激しくだろ?
462デフォルトの名無しさん:2008/02/10(日) 21:02:03
まああれだ、不幸な奴ってのは不幸な理由を自分の置かれた環境に求めたがる、
という例の恥ずかしい法則でしょ
たとえば職業とかさw

お前が不幸なのはそれはお前だからだ、というのが真実なのにねw
463デフォルトの名無しさん:2008/02/11(月) 08:22:09
タブページをSelectedIndexの変更で切り替えると、切り替え先のチェックボックスが何故か押されてしまいます。(しかも2番目)
クリックで切り替えたときは何も起こらないのですが、何か原因があるのでしょうか?
464デフォルトの名無しさん:2008/02/11(月) 11:13:36
自己解決しました
465デフォルトの名無しさん:2008/02/11(月) 11:14:29
質問はするが、解決結果をフィードバックする気はないと
466デフォルトの名無しさん:2008/02/11(月) 11:31:27
なんかのイベントでChecked = true;って自分で書いたんだろ
467デフォルトの名無しさん:2008/02/11(月) 12:48:18
とあるネイティブWin32アプリの拡張dllをC#で書くことって可能ですか?
つまりC#(.NET)でアンマネージなDLLの開発が出来るかということだと思うんですが・・。
因みにWin32アプリの方をCOM対応にするとかはなしで。
468デフォルトの名無しさん:2008/02/11(月) 12:54:25
C#でアンマネージドなDLLは作れないけど、CLRの機能としてマネージド関数をアンマネージドの世界に公開することは出来る。
ただ、多くの場合まともに動かないから、素直にC++/CLIでラッパDLLを書いたほうがいい。

ここで気をつけなければならないのが、一つのプロセスには一つのCLRしかロードできないということ。
つまり、そのプロセスに別のバージョンのCLRを使うモジュールがロードされていると正常に動かない可能性がある。
469デフォルトの名無しさん:2008/02/11(月) 13:23:56
やっぱり難しいですか。
C++はかなり苦手なんだけど、ラッパDLLがいいんなんですね。
念のため調べたいので、どっかにCLRでマネージドを公開するいい例が無いでしょうか・・?
470デフォルトの名無しさん:2008/02/11(月) 13:28:03
ラッパより糖衣だろう
471デフォルトの名無しさん:2008/02/11(月) 13:28:58
472デフォルトの名無しさん:2008/02/11(月) 13:34:32
ILかw
これはひどい
473デフォルトの名無しさん:2008/02/11(月) 13:39:54
>>471
逆PInvokeはさすがに知らんかった。
どの言語から使いたいのかわからないけどCOMが一番取り回しが楽だよ。
登録の問題はSxSで回避できるし。
474467:2008/02/11(月) 13:51:19
もう圧倒的にCOMがいいのは重々承知なんですが、
OpenSource系のWin32だし苦手なC++なので手が入れられないんですよね。
逆アセンブリ?もちょっと・・
475デフォルトの名無しさん:2008/02/11(月) 13:57:48
じゃあやっぱりC++/CLI
476467:2008/02/11(月) 14:03:55
ですよねー。それがいいみたいですね。
よく分かってないので、C++/CLIでのラッパーの作り方とか調べてみます。
477デフォルトの名無しさん:2008/02/11(月) 14:59:09
そこらへんくわしい書籍ないかな?
あんまり見かけない気がする
てかC++/CLI関係の本がないか。。。
478デフォルトの名無しさん:2008/02/11(月) 16:24:41
装飾付きRTFファイルに装飾付きRTFデータを追記する方法で困っています

装飾部分が毎回同じ(黄色のハイライトのみ)なので単純合体の方法で
現存のRTFファイルをテキスト読込し最後の2行の終了部を削る
追加するRTFデータをRTFファイル出力してからテキスト読込して
最初の2行の装飾部を削ってテキストを合体させテキスト出力する

そのくらいしか思いつきません
他によい方法はありますでしょうか?
479デフォルトの名無しさん:2008/02/11(月) 16:39:30
フォームにリッチテキストボックスを2つ置いて、起動時に引数でファイル読込して
片方に追加させファイルに書込んで終了する単独ソフトを作った方がいいのかなあ
480デフォルトの名無しさん:2008/02/11(月) 19:46:07
Qtで作成させたウィンドウのイベントをフックするプログラムを作りたいのですが、
スパイ++で覗いたところ、QWidgetというクラスで、キャプションはlbOKというオブジェクトです
このlbOKをクリックするイベントを送りたいのですがどうしたらいいでしょうか?
ウィンドウハンドルやウィンドウProcなども分かっています
よろしくお願いいたします
481デフォルトの名無しさん:2008/02/11(月) 19:58:02
実際にクリックしてみてどんなメッセージが飛んでるか、
Spy++で調べて、SendMessageで再現すればいいよ。
482デフォルトの名無しさん:2008/02/11(月) 19:59:07
>>480
SendMessage, BM_CLICK
483デフォルトの名無しさん:2008/02/11(月) 20:09:20
>>481
>>482
なるほど参考になりました
SendMessageですね!!
さっそくSpy++で調べてやってみます!!
484デフォルトの名無しさん:2008/02/11(月) 21:28:58
Vistaの「Task Dialog」で
OPENFILENAME構造体のFlugsにEnableTemplateHandle、またはEnableHookを選択するとXP以前の外観に戻ってしまうんです。
ダイアログボックスをカスタマイズするには、ウィンドウメッセージをフックする必要があるので、EnableHookを必ず選択しないといけなく新しい外観のままカスタマイズすることはできないのです

C++では使えないようなんですが
ttp://msdn2.microsoft.com/ja-jp/library/43xtah3y.aspx
C#ではどうなんでしょう
おねがいします。
485デフォルトの名無しさん:2008/02/11(月) 21:42:45
ものすごい初心的な質問だと思うんですが

ボタンだけを配置したフォームでキーイベントを受け取りたいのですが
どうすれば良いのか教えてください
486デフォルトの名無しさん:2008/02/11(月) 22:55:36
結局はゆうが細かったということで
487デフォルトの名無しさん:2008/02/12(火) 00:55:49
ContextMenuStripでShow()した時に、
ContextMenuStripが閉じるまでShow()から制御が戻らないようにしたいんだけど、
どうすればよい?

TrackPopupMenu()みたく、メニュー側でモーダルループ持たせたいんだけど。。。
488デフォルトの名無しさん:2008/02/12(火) 05:27:39
HttpWebRequestを用いて通信したとき、
200successや404notfoundなどの
コードはどのように取得したらいいのでしょうか?
よろしくお願いいたします。
489デフォルトの名無しさん:2008/02/12(火) 08:52:18
>>488
HTTPの応答時のステータスコードを取得する
ttp://dobon.net/vb/dotnet/internet/httpstatuscode.html
490デフォルトの名無しさん:2008/02/12(火) 09:00:56
>>488
HttpWebResponse.StatusCodeとHttpWebResponse.StatusDescriptionに
はいってんじゃね?

404だと例外放るからWebExceptionキャッチして、webException.Response
をHttpWebResponseにキャストして、同様にStatusCodeなんかを見る。
491デフォルトの名無しさん:2008/02/12(火) 12:47:34
>>489
>>490
ありがとうございます
HttpWebResponseにキャストしなくちゃいけなかったんですね
大変助かりました
492デフォルトの名無しさん:2008/02/12(火) 15:07:00
PDFファイルの中の文字を検索とかってできるんかね?
493デフォルトの名無しさん:2008/02/12(火) 16:35:42
ネットの海からライブラリを探すしかない
494デフォルトの名無しさん:2008/02/12(火) 16:43:15
仕様は公開されてるから自分でできるよ
495デフォルトの名無しさん:2008/02/12(火) 16:55:27
PDFってバイナリでしょ?
画像も入るからむずかしくね?
496デフォルトの名無しさん:2008/02/12(火) 16:56:11
そういやGoogleボットはPDF内もクロールしてるな
できるんじゃね
PDFのgrep作ったら俺にもちょうだい
497デフォルトの名無しさん:2008/02/12(火) 17:05:22
>>495
バイナリエディタで見ればわかるが、少なくとも文字はただのテキスト。
498デフォルトの名無しさん:2008/02/12(火) 17:27:13
UserControlでスムーズスクロールを実装するにはどうやればいいのでしょうか?
499デフォルトの名無しさん:2008/02/12(火) 18:06:14
ああ、つまりアレか
PDFファイルを開いて文字列だけ正規表現か何かで抜き出せばいいのか
500デフォルトの名無しさん:2008/02/12(火) 18:27:22
画像と画像じゃない部分は区別しなくていいの?w
ダメだろそんなルーズな方法
501デフォルトの名無しさん:2008/02/12(火) 18:42:02
pdfのライブラリでテキストだけ抜き出せるべ
502デフォルトの名無しさん:2008/02/12(火) 21:18:19
バイナリから文字列っぽい部分拾ってくるだけなら、ただのstringツールだ
503デフォルトの名無しさん:2008/02/12(火) 23:24:58
PDF -> テキスト ならTeXについてくるツールでいいんじゃね
504デフォルトの名無しさん:2008/02/13(水) 01:14:16
携帯から失礼します

GameState = Title;

switch (GameState)
{
  case Title:
  処理
  if("Aを押したら")
  {
  GameState = Main;
  }
break;

case Main:
処理
  break;
}

こんな感じのプログラムを打っているのですが、実行結果が少しおかしいのです。

タイトル画面からAを押したらメイン画面に移行します。しかし、メイン画面での処理が始まりません。

試しにGameStateにMainを入れて始めたら、メイン画面の処理が行われました。

ちなみに、タイトル画面にメイン画面の処理を全て入れてタイトル画面→メイン画面と移行させたらメイン画面の処理が行われました。

しかし、タイトル画面ではタイトルの処理だけ、メイン画面ではメインの処理だけさせたいのでこれでは意味がないのです。

説明下手で申し訳ないです。何か分かりましたら教えて頂けないでしょうか?
505デフォルトの名無しさん:2008/02/13(水) 01:20:14
>>504
breakしてんだから始まるわけないじゃん
処理のフローをちゃんと見直せ
506デフォルトの名無しさん:2008/02/13(水) 01:29:16
アフォすぎてワラタ
507デフォルトの名無しさん:2008/02/13(水) 01:38:51
PDFのフォーマットは失禁するほど複雑だし(1300ページ超)、文字列も何種類かあるし、
自前で解析なんてやってられない
508デフォルトの名無しさん:2008/02/13(水) 01:39:28
なんでPDFなんてできたんだ
509デフォルトの名無しさん:2008/02/13(水) 01:45:06
お答えありがとうございます。アホな質問に答えて頂き感謝します。

しかし、break文を消した所、

コントロールはひとつのcaseラベル(case 0)から別のラベルへ流れ落ちることはできません。

と、エラーが出ました。恐らく

case Title

処理

case Main

と書いてあるためだと思われますが、これだ


ここまで書いて思ったのですが、なんか質問する以前の問題のような気がしました。もっと勉強し直して来ます……すいませんでした
510デフォルトの名無しさん:2008/02/13(水) 02:12:19
>>509
だからフローを見直せって
switchの使い方がおかしいんだろ
511デフォルトの名無しさん:2008/02/13(水) 02:17:44
>>510
はい、もう一度見直します。もっとじっくり考えます。今日はこれが出来るまで寝ないつもりで頑張ります。
512デフォルトの名無しさん:2008/02/13(水) 02:21:23
C#以前に構造化プログラムを理解してないんだろ
初心者はif while以外使うな
これだけでプログラム書ける
513デフォルトの名無しさん:2008/02/13(水) 02:25:24
今時構造化プログラミングが何かすらソフトウェア工学で教えなかったりするらしいな
514デフォルトの名無しさん:2008/02/13(水) 02:36:53
それってまずいだろw
構造化プログラムが書けなきゃOOPなんて絶対むりやん
515デフォルトの名無しさん:2008/02/13(水) 02:45:56
そもそもソフトウェア工学学んだりしてるやつがほとんど居ないだろ
独学も含めてな
516デフォルトの名無しさん:2008/02/13(水) 04:33:15
なんとか無事に出来ましたので報告します。やはりswitch文の使い方に問題がありました。

今思うとなんでこんなことを、と恥ずかしさで死にそうです。しかし、今回の経験を通してswitch文だけではなく、enum型、メソッドの使い方を学びました。

こんだけ必死になったのも、自分の醜態を晒したからだと思いますw これからも日々精進で頑張ります。

長々となりましたが、自分のしたいことが出来ましたので報告とさせて頂きました。色々とお見苦しい所があったかと思います。失礼しました。
517デフォルトの名無しさん:2008/02/13(水) 04:38:38
うん、良い子だ
518デフォルトの名無しさん:2008/02/13(水) 04:47:40
俺ん時はソフトウェア工学教える授業でちゃんとあったんだよな
んで、人伝に聞いただけなんだけどJava使っていきなりOOPだとか
って考え直したらソフトウェア工学自体やってねえだけか
519デフォルトの名無しさん:2008/02/13(水) 04:48:47
>>516
解決してよかったね
520デフォルトの名無しさん:2008/02/13(水) 09:52:19
三十郎か
521デフォルトの名無しさん:2008/02/13(水) 10:30:13
>>516
報告乙。恥ずかしさを思い出して氏ね。
522484:2008/02/13(水) 12:38:08
その後いろいろ調べてみたところ、Vistaで利用できる新しいファイルダイアログボックスをカスタマイズするには、
COMベースのAPIを利用する必要があるということがわかりました

C++での利用例を参考に(この時点では表示できている)、C++のヘッダーファイルを読み、C#で実装しました
そして、コンパイルし動かしてみると、メモリアクセス違反が発生し、ダイアログが表示されません
どうしてなんでしょうか?

ソースコードは
http://www.uploda.org/uporg1248711.zip.html
開発環境はVS2005Pro
最新のMicrosoft Windows SDK for Windows Vistaが必要だと思います。
もちろん、Vistaでのみの動作です。
お願いします
523484:2008/02/13(水) 12:44:54
すいません、アップロードに失敗したのでこちらをお願いします。
http://www.uploda.org/uporg1248719.zip.html
524デフォルトの名無しさん:2008/02/13(水) 14:23:08
>>513
順次構造・繰り返し構造・分岐構造やフローチャート程度のものなら高校でやるよ。
工業系でない一般高校でも。
525デフォルトの名無しさん:2008/02/13(水) 14:51:28
>>524
まじ?一体いつから・・・
俺ん時はなかったな
526デフォルトの名無しさん:2008/02/13(水) 15:49:29
くだ質でスンマセンですが
List<hoge>fuga1と
List<hoge>fuga2が
含まれるリストが同じか否かを知るには、どうやればいいですか?
527デフォルトの名無しさん:2008/02/13(水) 16:24:39
>>526
Enumerable.SequenceEqual
528526:2008/02/13(水) 16:51:15
>>527
C#3.0まだ勉強してないです・・・
とりあえずカッコ悪いけどforeachで回します
529デフォルトの名無しさん:2008/02/13(水) 17:50:38
カウンタ使わないと無理じゃないの?
それならforのほうが
530デフォルトの名無しさん:2008/02/13(水) 18:30:05
えっ?
531デフォルトの名無しさん:2008/02/13(水) 19:21:46
^^;
532デフォルトの名無しさん:2008/02/13(水) 19:34:39
>>526
まずは要素数を比較
一致するならリストをソートして先頭から順に一致するか検査
533デフォルトの名無しさん:2008/02/13(水) 19:48:25
>>532
ソートしたらO(n logn)になっちゃうやん
534デフォルトの名無しさん:2008/02/13(水) 19:49:25
順序も含めて「同じ」かもしれないだろ
535デフォルトの名無しさん:2008/02/13(水) 19:59:29
>>532
アフォ過ぎてお茶吹いたwww
536デフォルトの名無しさん:2008/02/13(水) 20:06:13
順序無視ならHashSet<T>が使えるな
537デフォルトの名無しさん:2008/02/13(水) 20:14:51
使ったこと無いけど、Dictionaryのキーだけバージョンか
538デフォルトの名無しさん:2008/02/13(水) 20:21:22
うるせー
ソートして何が悪い
俺はソートが好きなんだよ
539デフォルトの名無しさん:2008/02/13(水) 20:22:29
HashSetは集合演算用だろ
よくしらんけど
540デフォルトの名無しさん:2008/02/13(水) 20:37:11
>>536
同じ要素が複数あったらダメダな
541デフォルトの名無しさん:2008/02/13(水) 20:41:05
集合演算したいだけならふつうのSetがあるだろ
542デフォルトの名無しさん:2008/02/13(水) 20:41:37
>>538
ププププ
543デフォルトの名無しさん:2008/02/13(水) 20:43:39
fuga1.TrueForAll(fuga2.Contains)
みたいなことやるよりはマシか
544デフォルトの名無しさん:2008/02/13(水) 22:06:24
>>533>>535
アホは君らだ。
545デフォルトの名無しさん:2008/02/13(水) 22:25:31
そーっとしとこう
546デフォルトの名無しさん:2008/02/13(水) 22:34:35
マジレスしてい〜い?
547526:2008/02/13(水) 23:00:19
スンマセン自分のせいでスレのふいんきが
結局どんなのが良いんですかね?

ソートしちゃうのが一番単純ですが、ソートに使えそうなフィールドがない場合や
IComparable付けてない場合だと駄目ですよね??
fuga1.TrueForAll(fuga2.Contains)はいいかなと思ったんですが、駄目なんですか?
548デフォルトの名無しさん:2008/02/13(水) 23:06:45
つかそもそもソートしていいの?
549デフォルトの名無しさん:2008/02/13(水) 23:11:55
重複はあるの?
550デフォルトの名無しさん:2008/02/13(水) 23:26:42
>>547
問題を具体的に示しなよ。
正解教えてあげるからさ。
551デフォルトの名無しさん:2008/02/13(水) 23:29:19
>>546
 *      *
  *     +  いいよん
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *
552デフォルトの名無しさん:2008/02/13(水) 23:31:16
最近のC#erってのはアルゴリズムもわかっとらんのか
553デフォルトの名無しさん:2008/02/13(水) 23:35:55
いやここ初心者スレだし
554デフォルトの名無しさん:2008/02/13(水) 23:36:58
ttp://www.atmarkit.co.jp/fdotnet/technology/idnfw11_index/index.html
この辺読んでるんだが、アセンブリの厳密名とか署名とか、なんか色々面倒くさいと感じた。
当分気にしなくてもいいんだろうか。
555デフォルトの名無しさん:2008/02/13(水) 23:38:20
つまり回答者のお前らも初心者だったのか
556デフォルトの名無しさん:2008/02/13(水) 23:40:21
悔しさが滲み出る良レス
557デフォルトの名無しさん:2008/02/13(水) 23:40:42
>>547
それじゃ一方が他方の部分集合であることしか分からんじゃん。
それに、O(n^2)
558デフォルトの名無しさん:2008/02/13(水) 23:45:36
ソートした後の結果が同じかどうか知りたいのであれば
最初からListを使うべきではないんだと思うな
SortedListあるいはDictionaryあたりを使うべきなんじゃないかね
559デフォルトの名無しさん:2008/02/13(水) 23:48:16
(・∀・)ニヤニヤ
560526:2008/02/13(水) 23:53:15
>>548
>つかそもそもソートしていいの?
「いい」というのは、「並びが変わってしまっていい」という意味ですか?
対象のリストは大丈夫です。必要ならソート用Listをコピーして用意すればいいと思いますが

>>549
ないです。ある場合はまた面倒なんでしょうかね・・・?

>>557
重複がないので↓で大丈夫だと思うのですが?(というか大丈夫でした)
bool b;
if(fuga1.Contains==fuga2.Contains) { b = fuga1.TrueForAll(fuga2.Contains); }


>>552さんのいうとおりアルゴリズムの基本もちゃんと分かってない阿呆なので、この辺で失礼します。
ありがとうございました。
561デフォルトの名無しさん:2008/02/13(水) 23:54:05
ソートなんかしたらO(n logn)で無駄だろ
普通に要素比較しろ
562デフォルトの名無しさん:2008/02/13(水) 23:54:23
>>557
二つのリストの長さは等しいの?
563デフォルトの名無しさん:2008/02/13(水) 23:56:27
>>561
アホ。
564デフォルトの名無しさん:2008/02/14(木) 00:00:44
何なのこの流れ
565デフォルトの名無しさん:2008/02/14(木) 00:05:29
要素数はいくつなんだ?
100とかじゃないよな?
566デフォルトの名無しさん:2008/02/14(木) 00:06:12
>>563
いや、アホはお前だろw
567デフォルトの名無しさん:2008/02/14(木) 00:09:15
質問者も逃げ出したのか
568526:2008/02/14(木) 00:11:20
スンマセン、>>560はfuga1.Contains==fuga2.Containsはミスです。

ふと思ったんですが、Listをコピーしておいて(←参照型だから軽いですよね)、
ContainsがtrueだったらRemoveしておけば多少早くなりませんか?

bool b = true;
if (fuga1.Count == fuga2.Count)
{
foreach (hoge f in fuga1)
{
if (fuga2.Contains(f))
{
fuga2.Remove(f);
}
else
{
b = false;
break;
}
}
}
else
{
b = false;
}

重複の場合はどうしょ・・・・
569526:2008/02/14(木) 00:12:19
しまったスペースが
お見苦しくてスマンセン
570デフォルトの名無しさん:2008/02/14(木) 00:17:20
>>568
二つのリストに同じ要素が入っているとしても順番までも同じとは限らないの?
571526:2008/02/14(木) 00:25:17
>>570
順番は違います(とくに規則性はないです)
順番が一意に決まってるのならもっと早い方法があるってことですか?
572デフォルトの名無しさん:2008/02/14(木) 00:26:39
うん
573デフォルトの名無しさん:2008/02/14(木) 00:36:47
ハッシュテーブルに突っ込めばいいじゃん。
574デフォルトの名無しさん:2008/02/14(木) 00:38:43
wpfでfarameを使ってwebページにnavigateした後にそのページのDOMを取得するには
どうしたらいいんでしょう。windows.formsのwebbrowserでdocumentを取るみたいに
したいんですが。
575デフォルトの名無しさん:2008/02/14(木) 00:43:52
>>574
WPFって何なのですか?
新規作成のメニューにあって気になってたんですが・・・・
576デフォルトの名無しさん:2008/02/14(木) 00:47:33
WPF は流石にぐぐったらいくらでも情報出てくる。
577デフォルトの名無しさん:2008/02/14(木) 01:03:31
概要さらっとぐらい教えてくれたっていいのに・・・
まあいいか、自分で調べるわ
578デフォルトの名無しさん:2008/02/14(木) 01:32:54
どう考えても調べたほうが速いし正確
579デフォルトの名無しさん:2008/02/14(木) 01:45:48
大体解ったのでもういいです
http://channel9.msdn.com/screencasts/thailandscreencast.wmv
580デフォルトの名無しさん:2008/02/14(木) 03:49:37
WPF 結構色々できますね、XMLのドキュメントはバイナリー化されているんだ、なるほど。
やっていたらもう四時になっしまった、寝なきゃ・・・
581デフォルトの名無しさん:2008/02/14(木) 05:01:10
regsvr32使って登録したアンマネージドなDLLは,
そのまま[DllImport]で呼べると思ってたんだけど
DLLが見つかりませんって実行エラーがでる...

これってどうやればいいんですか?
DLLはいろんなファイルや他のDLL参照してるから
今のフォルダ構成から動かせられないって制限付きなんですが...
582デフォルトの名無しさん:2008/02/14(木) 05:51:47
てs
583デフォルトの名無しさん:2008/02/14(木) 05:55:50
>>581
DLLが見つからないんじゃない?
584デフォルトの名無しさん:2008/02/14(木) 06:05:27
regsvr32ならCOM呼び出しになる
参照設定で追加
585デフォルトの名無しさん:2008/02/14(木) 06:19:26
C#を使い、.net無し環境で動くまともなプログラムは作れますか?
586デフォルトの名無しさん:2008/02/14(木) 06:31:21
なにをしてまともと言うのか
587デフォルトの名無しさん:2008/02/14(木) 06:58:01
えっと、HelloWorldくらいなら出来る、とかそういうレベルではなく
普通に配布されているようなユーティリティのようなものを作れるのかなと
WinAPIを直接触ってしまったらしまったでC#でやる意味もない気もしますし

自分でもうまくまとまらないですすみません
588デフォルトの名無しさん:2008/02/14(木) 07:08:28
Linuxへの移植も可能っぽいし(framework部は動かないが)、やろうと思えばできるんじゃない
つかC#から.net切ったら何も残らないと思うのだが
589デフォルトの名無しさん:2008/02/14(木) 07:09:29
なるほど・・・C/C++をやってきての段階なので、ちょっと概要を調べつくしつつ
使い分けできるようにしていきたいと思ってます、ありがとう
590デフォルトの名無しさん:2008/02/14(木) 07:19:00
むり
591デフォルトの名無しさん:2008/02/14(木) 07:21:20
>>590
安価つけよう、なぜか>>589-590で笑っちまった
592デフォルトの名無しさん:2008/02/14(木) 07:47:20
いや無理じゃないぜ
C#単体では動かないが
593デフォルトの名無しさん:2008/02/14(木) 08:35:40
むりなものはむり
594デフォルトの名無しさん:2008/02/14(木) 09:07:26
Windows限定なら.NETFrameworkなし環境用のexeを作るツールがある

でも借りたPCで.NETインスコ不可等の事情がない限り、そのまま配布してほしいな

よく考えてみたらスレ違いな気がする…
595デフォルトの名無しさん:2008/02/14(木) 09:08:45
ngenは意味ないしなぁ
ネイティブコンパイラなんてあったっけ
596デフォルトの名無しさん:2008/02/14(木) 09:13:37
gugurekasu
597デフォルトの名無しさん:2008/02/14(木) 09:44:14
>>588
てか、そこは「Linux 版の .NET 環境もあるよ」と教えるべきでは。

>>595
http://www.remotesoft.com/

でも、言語仕様の時点で .NET Framework の存在を仮定してる言語のネイティブコンパイラ使ってもなぁ。
598デフォルトの名無しさん:2008/02/14(木) 10:09:07
>>597
念のために言っておくと .NET Framework の存在は仮定してない。
# C# が必要とする BCL は Micro Framework に比べてもはるかに小さいし、アセンブリやリフレクションの概念さえない。
ただし、RTTI や GC を含む基本的な言語システムはどうしても必要になってくるけど。
599デフォルトの名無しさん:2008/02/14(木) 10:23:30
TextBoxでマルチラインを有効にした状態で行間設定はできないのでしょうか?
行間がビチビチで読みにくいのですが。
600デフォルトの名無しさん:2008/02/14(木) 10:48:15
>>597
monoって今ぶっちゃけどうなんすか?
専用スレが寂れまくってますが。
601581:2008/02/14(木) 10:51:26
>584

参照設定でDLLを追加してみましたが,同じ結果でエラーが出ました

追加情報: System.Web.Services.Protocols.SoapException: サーバーは要求を処理できませんでした。 ---> System.DllNotFoundException: DLL '***.dll' を読み込めません: 指定されたモジュールが見つかりません。 (HRESULT からの例外: 0x8007007E)

Webサービスで参照させているのが影響してたりしますでしょうか...?
(テスト環境はローカル)

参照の追加ダイアログで確認する限り,DLLへのパスはあっています
602デフォルトの名無しさん:2008/02/14(木) 10:58:44
ソケットでサーバーで接続元のIPアドレスとポート番号を取得するにはどうすればいい?
603デフォルトの名無しさん:2008/02/14(木) 11:24:11
Socket クラス使ってんなら RemoteEndPoint があるだろ
604デフォルトの名無しさん:2008/02/14(木) 13:56:30
605デフォルトの名無しさん:2008/02/14(木) 14:02:22
>>604
踏むのが怖い
606デフォルトの名無しさん:2008/02/14(木) 14:04:59
torrentだから例え踏んでもその先に行けないだろう、キミは
607デフォルトの名無しさん:2008/02/14(木) 14:05:39
C#伸びていくのかねぇ
608デフォルトの名無しさん:2008/02/14(木) 14:11:18
なんだかんだある程度広がるのは確実だろうなぁ
VSのC#への偏向具合もあるし、MSは.NETひいてはC#を当分主軸として動きそうだし
609デフォルトの名無しさん:2008/02/14(木) 14:16:39
なんだかんだだよななんだかんだ
なんだかんだWindowsシェア広いし

俺としてはASPが強力だと思えるからWindowsサーバがどれくらい増えるか気になる
610デフォルトの名無しさん:2008/02/14(木) 14:28:36
vista以降は.NET標準で入ってるから、windowsが廃れない限り確実に伸びるんじゃないですかね?
611デフォルトの名無しさん:2008/02/14(木) 17:06:37
windowsサーバをまともに構築する苦労というかは結構でかい気がするな

というのも初心者がWindowsサーバ構築して公開して悲惨なことになっているのを見てだけど
612デフォルトの名無しさん:2008/02/14(木) 17:14:53
そんなんOS問わずだと思うが
613デフォルトの名無しさん:2008/02/14(木) 17:17:34
そうかねぇ、初心者が構築したってんだからそうでもないだろ

linuxなんて最初からセキュリティ割とがちがちだし
614デフォルトの名無しさん:2008/02/14(木) 17:19:08
初心者のLinuxサーバ構築よりマシかと、動いたところでいっぱいいっぱいで
もう触らないとか、目も当てられない状況になる事多々ありなんですが
素敵な踏み台サーバーは勘弁、某大学とかとかwww
615デフォルトの名無しさん:2008/02/14(木) 17:19:48
WindowsServerがセキュリティは上だよ。
616デフォルトの名無しさん:2008/02/14(木) 17:21:31
初心者linuxサーバはインスコから合わせて解説通りやる
ポート開放やデフォのセキュリティからちょこっと解放したり

Windowsは普通にデフォのWin環境で鯖構築するから目も当てられない
これくらいは常識以下

某大学は偶然狙われただけだろう、狙われればどこも同じなんて状況だよ
そんな悲惨なのが溢れてる
まあそういうとこは大学のページほどアクセスやらされ辛いわけだがな
617デフォルトの名無しさん:2008/02/14(木) 17:22:41
WinXPやなんかで公開するのか?
そりゃ見事にアウトゾーンだがまあ初心者ならやるか・・
618デフォルトの名無しさん:2008/02/14(木) 17:23:07
えー、めんどくさくなって全部ONにしてtelnetポート開けっぴろげだぜベィベー
とかよ
619デフォルトの名無しさん:2008/02/14(木) 17:30:03
想像だけで語るスレはここですか?
620デフォルトの名無しさん:2008/02/14(木) 17:41:44
WindowsServerは、馬鹿が使っても大丈夫なようになっているから、
生半可な知識でLinux鯖立てる人より安全。
なぜなら、彼らはOSのバージョンアップのやり方を知らないから。makeも知らない。
だから、人件費が削減できて、結果的に(フリーのLinuxより)Windowsを買った方が安くつく。
だから売れる。商売が成り立つ。もちろん知識のある人の多い会社はわざわざOSを買ったりしないが。
WinならWindowsUpdate一発だから。GUIだから馬鹿でもやれる。
大学のサーバは本当にひどい。
VineLinux3.2(M大、N大)とか、PHP3系(S大、W大)とか、普通に使っているし。
証明書なしで学外からパスワードを入力させる。うちの大学のことだが。
でもさすがにWinXPで鯖立てる大学は知らない。犯罪だしな。
621デフォルトの名無しさん:2008/02/14(木) 17:45:03
犯罪にはならないよ
622デフォルトの名無しさん:2008/02/14(木) 17:45:38
XPで鯖立てたら犯罪って。中途半端な知識だなぁ。
623デフォルトの名無しさん:2008/02/14(木) 17:48:43
ヒント:同時接続数
624デフォルトの名無しさん:2008/02/14(木) 17:50:11
wwwwwwwwwwwwwwww
625デフォルトの名無しさん:2008/02/14(木) 17:51:09
大学は本当にヤバイですよ
このスレで質問してるような自分が相当できる人だと思われてる・・・
626デフォルトの名無しさん:2008/02/14(木) 17:53:23
で、C#の質問はまだ?
627デフォルトの名無しさん:2008/02/14(木) 17:54:15
×大学は本当にヤバイですよ
○私の大学は本当にヤバイですよ
628デフォルトの名無しさん:2008/02/14(木) 17:57:27
>>627
俺の大学、高木先生に「この大学に入学するな」リストに入ってるwww
629デフォルトの名無しさん:2008/02/14(木) 17:58:46
どこ?
630デフォルトの名無しさん:2008/02/14(木) 18:01:49
631デフォルトの名無しさん:2008/02/14(木) 18:05:30
632デフォルトの名無しさん:2008/02/14(木) 18:06:52
スラドで話題になってた奴か
633デフォルトの名無しさん:2008/02/14(木) 18:11:48
やべ、俺の大学もリストアップされてるwww
634デフォルトの名無しさん:2008/02/14(木) 18:16:00
どこ?
635デフォルトの名無しさん:2008/02/14(木) 18:49:31
法政
636デフォルトの名無しさん:2008/02/14(木) 20:59:55
wpfで作られるWindow1クラスのクラス名とかWindow1.xamlのファイル名とか
リファクタリングしてもxamlの方が更新されなくて、いちいち手動で直さないと
いけないのがすごく面倒くさいんですが、なんか良い方法ってあるんでしょうか?

それとも、Window1でそのまま使った方が良いのかな…。なんか気分が悪い。
637デフォルトの名無しさん:2008/02/14(木) 21:04:32
デフォルト設定ならWindows Serverの方が圧倒的に堅い。
素人が余計な事をしなければ、ある程度のセキュリティを確保できる。
が、ガチガチのセキュリティを確保しようとすると、やれレジストリだ何だと鬼のように難しい。
そしてちょっと凝った事をしようとすると「動かん」「バグですか」となる。

一方、デフォルトのLinuxはオープン。来る者拒まずな感じ。
そのかわりガチガチにするのは楽。
素人が訳も解らずにネット上の「入門」とか言ってるサイトに転がってる設定ファイルをコピペ
するだけでも、それなりになる。
そして自分が何をやったのか、訳も解ってないのに偉そうになる。
638デフォルトの名無しさん:2008/02/14(木) 21:12:15
>>637
それはもう常識でしょう、語らなくてもいいです、スレ違い(笑
639デフォルトの名無しさん:2008/02/14(木) 22:57:56
なんでサーバの話してんの?
640デフォルトの名無しさん:2008/02/14(木) 23:01:10
少しくらいログ読めば?
641デフォルトの名無しさん:2008/02/14(木) 23:17:01
UIのコンテナ関係の質問です。
元のコンテナをDisableにすると中のコントロールも灰色になってしまうのですが、
これを自前でドローする以外で回避するにはどうしたらいいでしょうか?
642デフォルトの名無しさん:2008/02/15(金) 00:14:04
自前ドローだけで回避できるのか?
WS_DISABLEDが伝播してきてるんじゃないのかね
643デフォルトの名無しさん:2008/02/15(金) 02:41:57
>>641
見たこと無いな、そんな機能
色は変えなくてもDisable?
それでなけれぱ、一旦コンテナから離して、優先順位を上にしてしまうのが楽チンそうな気がする。
644デフォルトの名無しさん:2008/02/15(金) 10:02:09
ちょっと教えて下さい。
HttpRequest/HttpResponceを使ってWebサーバと通信して居ます。
WebサーバからCookieが送られて来るのですが、JavaScript中に埋め
込まれて送られてきます。
HttpResponceで受け取ったデータの中を舐めても良いのですが、もっ
とスマートにCookieを取り出したいのですが、何か良い方法は無いで
しょうか?
ちなみに、IEがDocument Setting\ユーザ名\Cookieに保存するCookie
ファイルを直接読み出す方法を考えて見たんですが、ログインユーザ
を意識しないでやる方法を探して居ます。
何か良い方法は無いものでしょうか?
645デフォルトの名無しさん:2008/02/15(金) 10:23:20
>>644
Cookies
646デフォルトの名無しさん:2008/02/15(金) 11:18:22
DateTime型のToString()メソッドで、XML SchemaのdateTime型(CCYY-MM-DDTHH:MM:SSZ)形式を
一発で出す方法は無いでしょうか?

DateTime dt = DateTime.Now();
dt.ToString("s");

でCCYY-MM-DDTHH:MM:SSまでは出る事がわかったのですが。
(タイムゾーンが出ないです)

TimeSpanを使って長ったらしい内容にしないと無理でしょうか?
後々、バグの原因になりそうなので簡潔に書いておきたいのですが。
647デフォルトの名無しさん:2008/02/15(金) 11:35:15
dt.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss':'zzz");
とか?
648デフォルトの名無しさん:2008/02/15(金) 12:15:14
つーかDateTime構造体にタイムゾーン情報って含まれてたっけ?
単なるlong値じゃねーの
649デフォルトの名無しさん:2008/02/15(金) 12:17:49
UTCかGMTかの区別は入ってるよ。
あとは実行した環境のタイムゾーン見ればよし。
650デフォルトの名無しさん:2008/02/15(金) 12:18:09
UTCかローカルタイムか、ね
651デフォルトの名無しさん:2008/02/15(金) 12:48:47
>>647
XMLスキーマのdateTimeってGMT+タイムゾーンだからそれじゃダメじゃね?

>>648
.NET2.0から仕様が変わってタイムゾーンを保持するようになった

652デフォルトの名無しさん:2008/02/15(金) 13:06:17
>>644
HttpWebRequest/HttpWebResponseではJavaScriptが動作しないので、
埋め込まれていたら無理。
IEで利用しているCookieを取得するには、InternetGetCookie。
653デフォルトの名無しさん:2008/02/15(金) 13:51:37
>>651
なら 'GMT'zzだね。
654デフォルトの名無しさん:2008/02/15(金) 13:54:03
'Z'
655デフォルトの名無しさん:2008/02/15(金) 14:10:52
DateTimeはカスタムクラスを作っておいて必ずそれを呼ぶ様にした方がいい。
特にDBとか使ってるときにDB側の日付型の違いで地獄に堕ちるのを防いでくれる。
656デフォルトの名無しさん:2008/02/15(金) 14:26:17
>DB側の日付型の違い
これって結構あるものなんですか?標準と微妙に違ってたり、とか?
657デフォルトの名無しさん:2008/02/15(金) 14:36:05
フォームの質問です。

メインウィンドウからダイアログ1を開く→OK押す(ダイアログ1消える)→ダイアログ2が起動
(重い処理なのでプログレスバー表示)→完了(ダイアログ2消える)→メインウィンドウに戻る

をしたいのですが、1を消すタイミングでclose()、dispose()してるにも関わらず
ダイアログ2が終わるまで1のダイアログが残ってしまいます。(1の上に2が重なってるイメージ)
どうやれば、1のダイアログをすぐに消すことが出来るんでしょうか。

658デフォルトの名無しさん:2008/02/15(金) 14:38:22
親ウィンドウをdisposeって普通しないんじゃ?
最小化すればいいんでないの
659デフォルトの名無しさん:2008/02/15(金) 14:40:35
>>656
selectした際に特に変換せずに抜き出すと、各社ばらばら。
あと内部保持形式がUTCだったり設定依存だったりと。
俺は日付に関する値でも迷わずvarcharにしている。
で、どうしてもという時は、where句で必要に応じてvarchar -> dateとかキャストして使うようにしている。
660デフォルトの名無しさん:2008/02/15(金) 14:45:12
>>658
良く嫁
661デフォルトの名無しさん:2008/02/15(金) 15:08:45
>>659
すごいですね・・・DBやったことないんで知りませんでした
地獄には堕ちたくないですよねやっぱ
662デフォルトの名無しさん:2008/02/15(金) 15:10:05
重い処理とやらをUIスレッドでやってるだけじゃね?
663デフォルトの名無しさん:2008/02/15(金) 15:10:29
SQL92準拠にしとけばいい
664デフォルトの名無しさん:2008/02/15(金) 15:19:41
>>657
ダイアログ2を開く処理はどこに書いてる?
ダイアログ1のOKボタンのハンドラに書いてないか?
665デフォルトの名無しさん:2008/02/15(金) 15:22:06
>>663
そんなの関係ねぇ〜
666657:2008/02/15(金) 16:28:57
>664
処理の流れは、

1.メインウィンドウ
ダイアログ1を開く処理(xxx.ShowDialog())
2.ダイアログ1
処理 (DialogResult.OKを返す)
3.メインウィンドウ
DialogResult.OKを受け取った後、ダイアログ1を閉じる処理 (close()、dispose())
4.メインウィンドウ
ダイアログ2を開く処理(yyy.ShowDialog())
5.ダイアログ2
処理 (処理後にclose()、dispose())

5でダイアログ2が消えると同時に3のclose()が働いてるようです。
因みに3の直後でmessagebox.show()でメッセージを表示すればダイアログ1は消えます。
667デフォルトの名無しさん:2008/02/15(金) 16:43:11
再描画
668デフォルトの名無しさん:2008/02/15(金) 18:02:16
DateTimeにnullが代入できないのはどうにかならんのだろうか
nullに相当する時間をきめてやるとか、処理がめんどい
669デフォルトの名無しさん:2008/02/15(金) 18:17:58
Nullable<DateTime>
670デフォルトの名無しさん:2008/02/15(金) 18:36:22
DateTime.MinValueでいいんじゃね
671デフォルトの名無しさん:2008/02/15(金) 18:40:08
Nullableと?って何が違うの?
672デフォルトの名無しさん:2008/02/15(金) 18:43:09
同じ。
673デフォルトの名無しさん:2008/02/15(金) 19:42:34
DateTimeをクラス化すればいい
674デフォルトの名無しさん:2008/02/15(金) 20:35:05
>>669
ジェネリックかじってたけどこれは知らんかった

>>670
それも考えたけどフレムワクのバージョンとか
環境の違いで値が変わる可能性がないとは言い切れない
とか妄想したんで使ってない

>>673
その考えはなかった
675デフォルトの名無しさん:2008/02/15(金) 22:35:36
>>671
構文糖衣ってやつ。
676644:2008/02/15(金) 23:42:22
>>645,652
回答ありがとうございます。早速試して見ます。
677デフォルトの名無しさん:2008/02/15(金) 23:45:01
>>675
クラス型と値型との違いはないの?
678デフォルトの名無しさん:2008/02/15(金) 23:51:49
>>677
T?に対応するのはNullable<T>構造体だよ。
だからどっちも値型。
679デフォルトの名無しさん:2008/02/16(土) 00:58:29
monoからDateTime.cs引っ張ってきてクラス化してみようと思ったが面倒なんで途中でやめた
680デフォルトの名無しさん:2008/02/16(土) 01:01:14
世界がお前の偉業を待ち望んでる
最後までやれ
681デフォルトの名無しさん:2008/02/16(土) 01:06:41
>>678
なるほどなー
Nullableって使いやすくて大好きさ
682デフォルトの名無しさん:2008/02/16(土) 12:50:26
2つのIEnumeratorを並行して列挙したいんだけど
自分で列挙子を直接操作する以外の方法ある?
683デフォルトの名無しさん:2008/02/16(土) 13:00:14
>>682
> 並行して列挙
って何?
684デフォルトの名無しさん:2008/02/16(土) 13:05:41
ZipWithみたいなのが欲しいってこと?
ttp://blogs.wankuma.com/mnow/archive/2008/01/24/119056.aspx#119332
685682:2008/02/16(土) 13:19:55
>>684
うん
.NET3.5も含めて,標準の方法はないということでいいのかな
686デフォルトの名無しさん:2008/02/16(土) 13:23:31
>>685
であれば残念ながら標準では無いですな。
必要なら作るしかない。

ちなみにMicrosoft Parallel Extensions to .NET Framework 3.5の中にも
internalメソッドでZipWithが入ってる。
標準で入れてくれてばいいのに。
687デフォルトの名無しさん:2008/02/16(土) 14:32:58
Haskell を馬鹿にするわけじゃないけど、
zip with って名前が何だかださくない?
688デフォルトの名無しさん:2008/02/16(土) 15:05:04
WriteLineみたいな英単語の先頭ごとに大文字にするクラス名・メソッド名の記法はなんていうの?
ハンガリアン記法で調べてかかったページを見ても書いてないんだけど。
689デフォルトの名無しさん:2008/02/16(土) 15:22:11
>名前付けのガイドライン
690デフォルトの名無しさん:2008/02/16(土) 15:34:52
>>688
CamelCaseと言います。
ttp://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%A3%E3%83%A1%E3%83%AB%E3%82%B1%E3%83%BC%E3%82%B9

JIS X 3015だと「らくだ形式」って訳されてますな。
691デフォルトの名無しさん:2008/02/16(土) 15:37:15
違わないか?w
692デフォルトの名無しさん:2008/02/16(土) 15:45:17
"名前付けのガイドライン"でググってMSDNで確認した、後に
>690のリンクに飛んだら、吹いた。

MSとWikiPediaならどっちもどっちだけど、 書いてる奴マジやる気ないんだな。
693デフォルトの名無しさん:2008/02/16(土) 15:46:53
「Pascal 形式」じゃねーの?
少なくともハンガリアン記法は関係ない
694デフォルトの名無しさん:2008/02/16(土) 15:52:32
ハンガリアンはMS自らによって完全否定されました
695デフォルトの名無しさん:2008/02/16(土) 16:02:38
>>693
「Pascal 形式」であってるよ。

ttp://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%A3%E3%83%A1%E3%83%AB%E3%82%B1%E3%83%BC%E3%82%B9
>
>アッパーキャメルケース (UCC)、またはパスカルケース(PascalCase)
> 複合語の先頭を、大文字で書き始める。
> つづり例:CamelCase
>
>ローワーキャメルケース (LCC)、または単にキャメルケース
> 複合語の先頭を、小文字で書き始める。
> つづり例:camelCase
696デフォルトの名無しさん:2008/02/16(土) 16:13:07
微妙に話が変わるけどReSharper 4.0でCompletion with CamelHumpsが入るっぽいな。

たとえば"SqlBulkCopy"というメソッドを"SBuC"みたいな書き方で補完できるらしい。
ttp://www.jetbrains.net/confluence/display/ReSharper/ReSharper+4.0+EAP+Notes#ReSharper4.0EAPNotes-CompletionwithCamelHumps
697デフォルトの名無しさん:2008/02/16(土) 16:26:38
なにそれ気持ち悪い
698デフォルトの名無しさん:2008/02/16(土) 16:28:12
ハンガリアンは誤解された形で広まってしまっただけで、
元々の考えは別に悪い物ではない。
699デフォルトの名無しさん:2008/02/17(日) 05:08:52
独自の設定ファイルを簡単に読み書きできるクラスってないでしょうか。
また設定ファイルの一部はデータグリッドに表示して編集もしたいです。
700デフォルトの名無しさん:2008/02/17(日) 05:22:32
独自のファイルを操作するクラスは独自に作るんじゃないのか?
701デフォルトの名無しさん:2008/02/17(日) 09:36:59
List<Hoge> listの中身をランダムにソートしたいです。

list.Sort( delegate( Hoge a, Hoge b ) {
 return rand.Next( -1, 2 );
} );

のように、ランダムに-1〜1が返るようにして実装したつもりなのですが、動かすと
Array.Sort が x. CompareTo(x) を呼び出したときに、IComparer または依存する IComparable メソッドは 0 を返しませんでした。
という例外が発生します。
どこが悪いのでしょうか?
702デフォルトの名無しさん:2008/02/17(日) 10:24:55
比較関数は推移性とかを満たしていることが前提だからな
703デフォルトの名無しさん:2008/02/17(日) 11:09:15
>>699
DataSetとか。
でも、保存するのが単純な値などかによっても善し悪しあるから、
素直に2.0以降は独自クラス作ってシリアライズのが楽。
704デフォルトの名無しさん:2008/02/17(日) 11:10:32
>>701
エラーは、自分自身との比較は0を返せって意味だけど、
そもそもソートの比較関数は、例えばA<BでB<Cのとき、A<Cでなければならかなかったはず。
答えがランダムじゃだめだと思う。

一旦別のリストにコピーしてから、
そのリストの添え字をRandom.Nextで生成してAddしていけば?
705デフォルトの名無しさん:2008/02/17(日) 11:40:16
>>701
ランダム並べ替えが目的なら、昔からある定番アルゴリズムを使えばよし。
Sortメソッドは、一定のルールに基づいて並べ替えを行うメソッドなので、ランダム並べ替えに使うのは良くない。コードを読む人が混乱する。

static void Shuffle<T>(ref IList<T> list)
{
Random r = new Random();

for (int i = 1; i < list.Count; i++)
{
int j = r.Next(list.Count);
T tmp = list[ i ];
list[ i ] = list[ j ];
list[ j ] = tmp;
}
}
706デフォルトの名無しさん:2008/02/17(日) 11:41:43
>>701
「i番目の要素をi以上配列の長さ未満のランダムな要素と交換する」をすべてのiについて行えばシャッフルできるはず。

ところで、
Enumの名前とプロパティの名前をできるだけ同じにしたいときがあるんですがどうしてます?
↓こういう場合です。
class MyIO
{
enum MyIOMode
{
Syncronized,
Asyncronized
}

public MyIOMode MyIOMode { get; set; }

MyIO()
{
MyIOMode = MyIOMode.Asyncronized;
}
}
System.IO.FileModeみたいに複数のクラスで使われるならenumを名前空間に直接書いてもいいんですが、
そのクラスでしか使わないとなるとクラスの中に書きたいと思うのです。
707デフォルトの名無しさん:2008/02/17(日) 11:44:45
>>705
ref にする意味ってあるの?
708705:2008/02/17(日) 11:48:40
すまん。refは不要というか不可だ。
709デフォルトの名無しさん:2008/02/17(日) 12:02:17
>>705
for (int i = 1 だとまずくね?
Count=1 や 2 なら問題ないけど Count=3 だと
リスト先頭だった要素は Shffule 後にも先頭にいる確率が 4/9 になる
710デフォルトの名無しさん:2008/02/17(日) 12:09:57
>>706
MSのガイドラインによると,ネストした型を外に見せるのは推奨されない
外に書いていい
711デフォルトの名無しさん:2008/02/17(日) 12:24:01
>>710
そんなガイドラインあったっけ?
っていうか.NETのライブラリだって普通にネストした型を公開してるよね。
たとえばListViewItemCollectionなんてそのはずだけど
712デフォルトの名無しさん:2008/02/17(日) 12:47:31
>>711
http://msdn2.microsoft.com/ja-jp/library/ms229027(VS.80).aspx
コレクション系は例外に当たるみたい(List<T>+Enumeratorとか)
713712:2008/02/17(日) 13:00:34
親とデザイン的に強く結び付いてるときは(親のprivateメンバにアクセスするとか)
稀に入れ子の型にすることもあるってことかな
単に親でしか使われないからというだけではなく
714デフォルトの名無しさん:2008/02/17(日) 13:07:51
というより当該のガイドラインそのものが合理的根拠がない「俺様ルール」か、
それが言いすぎならせいぜい「村の掟」に過ぎないってことじゃないの?
715デフォルトの名無しさん:2008/02/17(日) 13:19:19
それを言うなら名前付けの規則とか
名前空間をあんまり深くしすぎるなとかだって同じだろ
単にMSの好みだから従わなくていいと言ってしまえばそれまで
716デフォルトの名無しさん:2008/02/17(日) 13:43:17
変なプログラムの例ならCプログラミング診断室を読むといいよ
717デフォルトの名無しさん:2008/02/17(日) 14:06:20
Cプログラミング診断室で昔何度か探し回ったものの書籍紹介しかなくて泣いたのはいい思い出

ちょっと下にスクロールするだけだったと思わなかったのは俺だけかなぁ
718デフォルトの名無しさん:2008/02/17(日) 14:15:49
君だけだろwwwww
719デフォルトの名無しさん:2008/02/17(日) 14:18:56
俺だけか…てかあそこ読む意味をあんま理解してない辺りまだまだですね、すみません
720デフォルトの名無しさん:2008/02/17(日) 14:42:17
>>717
え?ちょw今知ったwww本借りてきたのにwwwww
721デフォルトの名無しさん:2008/02/17(日) 15:21:58
定数文字列を格納する一番(?)スマートな手段というのはどんなものなのでしょうか?

現状
struct hoge{
 const string piyo = "abcde";
 const string fuga = "abcde";
 const string hogehoge = "abcde";
 const string piyopiyo = "abcde";
 const string fugafuga = "abcde";
       :
}
といった具合にだーっと書いています、文字列定数の数は50個程度、文字列長は10~300文字程度です
調べれば定数と言えばconstと出てくるのでこれで通していたのですが
もっと良い手段があるのではないかと思い質問しました。
それではよろしくお願いします
722デフォルトの名無しさん:2008/02/17(日) 15:24:30
>>721
リソースとして埋め込むかテキストファイルにでも書いておいたらいいんでない?
723デフォルトの名無しさん:2008/02/17(日) 15:47:36
>>721
.NET Frameworkの中では
SR.GetString("キー文字列")
みたいにしてるよ
そういう風にしとくと後で実装変えられて便利
724デフォルトの名無しさん:2008/02/17(日) 16:01:01
Icon ico = Properties.Resources.IconFile1;
以上の部分で、以下のようなエラーが出ます
エラー CS0103: 名前 'Properties' は現在のコンテキスト内に存在しません。

以前までは正常に動いていたためどこかを変えてしまったせいかとも考えたのですが
エラー文から見るにPropertiesが無いといっているように思えます
しかし、ソリューションエクスプローラから見るとProperties/Resources/IconFile1はしっかり存在します

こういった場合はどういう間違い・おかしな部分が考えられるのでしょうか?
725デフォルトの名無しさん:2008/02/17(日) 16:24:31
>>724
開発しているのにまずエラーコードやエラーメッセージでググらずに2chに書き込んでる部分かな
726デフォルトの名無しさん:2008/02/17(日) 16:30:00
>>725
なにを根拠に言っているか笑えてきますが既に検索済みです。
727デフォルトの名無しさん:2008/02/17(日) 16:30:34
ああゆう断定形はネタだよ、ガチで言っちゃってるやつはすぐふぁびょるから見もの
728デフォルトの名無しさん:2008/02/17(日) 17:22:34
バルーンを手動で表示させると、最初だけふきだしの先っぽが違う方向に出るのは何故なんだぜ?
ツールチップに関するコードは↓のみなんだけど、回避する方法は無いものか…

toolTip1.Active = false;
if( textBox1.Text.Length > 5 ){
  toolTip1.Active = true;
  toolTip1.Show( "hoge", textBox1 )
}
729デフォルトの名無しさん:2008/02/18(月) 10:30:35
ツンデレ
730デフォルトの名無しさん:2008/02/18(月) 12:15:37
ArrayListで2つのコレクションがあるんだけど、どちらもPointerなのね
この2つのコレクションに含まれてる要素で、重複するものだけを取り出したいんだけど、どうやればいいんでしょ?
たとえば、
1つめのコレクションhoge1には、{P1, P2, P3, P6, P7, P8 }
2つめのhoge2には{P2, P7}
とあるとき、P2とP7だけ取り出したいんです
foreach( Point p in hoge2)
{
  if( hoge1.Contain(p))
  {
    point.add(p)
  }
}
とやったら、if分のところで、比較ができないというエラーが出マスタ
今回、ジェネリックは使わないので、ArrayListでお願いしますm(__)m
731デフォルトの名無しさん:2008/02/18(月) 12:58:58
日本語でおkっていうか。
Pointer って何? そういうクラスってことでいいの? だとしたらポインタとごっちゃになるろくでもない名前だけど。
比較ができないってエラーメッセージはググった限り .NET のエラーメッセージには存在しないようだけど?
732デフォルトの名無しさん:2008/02/18(月) 13:49:25
>>731
スマソ Point型と間違えたわ
2つのコレクションは、どちらもPoint型変数が入ってるのよ
733730:2008/02/18(月) 14:10:04
もっと調べたら、ObjectとPointが比較できないとか、明示的なキャストが必要です、とか出てきマスタ。
734デフォルトの名無しさん:2008/02/18(月) 17:03:21
.NET Framework 2.0かそれ以下かでArrayList.Containsの挙動が違うらしいが。
1.xならContains使わずにループでunboxingして比較するしかないんじゃない?
735デフォルトの名無しさん:2008/02/18(月) 17:30:49
ArrayList はジェネリックじゃないから、Contain() の引数は Object 型でないとダメだぞ。
Add() する時にもちゃんと Point から Object にキャストしてるんでしょ?
736デフォルトの名無しさん:2008/02/18(月) 20:24:08
どうもありがとう

>>734
ソースコードはC#1.0のときに書かれたものですが、.今はNET2.0で使ってます

>>735
Add()するときはObjectにして加えてます。
なるほどそうか。
Contein()の引数を、Point型のままにしてますた。
Object型にキャストしてから引数に使えばいいんだ・・・。

やってみます。
どうもありがとうございます。

しかし、受け継いだソースがC#1.0向けに書かれたソースなので、
ArrayListを全部ジェネリックに書き換えるのが手間だと思っていたけど、
結局書き換えた方が後々楽な気がしてきた・・・orz
737デフォルトの名無しさん:2008/02/18(月) 21:07:39
>>736
アップキャストしてどうすんだよ
ポリモルフィズムを理解してないんじゃねーの?
738デフォルトの名無しさん:2008/02/18(月) 21:21:04
739デフォルトの名無しさん:2008/02/18(月) 21:52:22
ぽまいら、変数とかの命名でプレフィックスとかつけてまつか?
740デフォルトの名無しさん:2008/02/18(月) 21:59:30
必死になっていい単語思いつかないときに時々使う
741デフォルトの名無しさん:2008/02/18(月) 21:59:33
どっちでもいいけどクラス外から見えるメンバにプレフィックス付けたら死刑
742デフォルトの名無しさん:2008/02/18(月) 22:03:04
クラス外から見えるメンバって静的メンバ定数のことか?
それ以外にまさかないよね?
743デフォルトの名無しさん:2008/02/18(月) 22:08:24
アクセス制御とstaticかどうかは関係ないだろ

publicフィールドはゆるさーんて言いたいだけ?
744デフォルトの名無しさん:2008/02/18(月) 22:13:52
public フィールドなんてキチガイしか書かんだろ。
構造体ならともかく。
745デフォルトの名無しさん:2008/02/18(月) 22:16:27
メンバって言ってるんだからC#の世界ならパブリックメソッドとプロパティとイベントでしょ。

個人的にはいまだに型名にプリフィクスつけるよ。
少数派なのは認識してるが、やっぱり構造体、クラス、列挙体がぱっと見ただけで
区別つく方が好都合な場面が多い。
特にクラスのつもりで構造体扱っちゃうような「致命的な凡ミス」を防げる蓋然性があがるし。
746デフォルトの名無しさん:2008/02/18(月) 22:18:40
オレはC#の場合はプロトタイプや使い捨てのプログラムでは書く

命名規則はプロパティと同様にしておいて、

class Hoge{
public int Foo;
}

必要になったら

class Hoge{
private int foo;
public int Foo{ get{return foo;} set{foo=value;} }
}
あまりオススメはしない
747デフォルトの名無しさん:2008/02/18(月) 22:38:37
プレフィックスつけるってそもそも設計ミスじゃない?
つーかVBer以外で使う人いるの?
結構人見てきたけどVBerだけだったよ。
748デフォルトの名無しさん:2008/02/18(月) 22:42:24
まあ関連するプロジェクトが全て自分の管理下にあるならリネームなんて一発だしな。
リフレクションで型名とかメソッド名が文字列に埋め込まれてると痛いが。
749デフォルトの名無しさん:2008/02/18(月) 22:50:45
>>736
私は、キャストが手間という理由でジェネリック使いまくり。
違う型のリストが複数あるとき、インテリセンスで要素の型が判別できるのが特に嬉しい。

>>737
ArrayList はポリもーフィズムとアップ・ダウンキャストを前提に使うものなのでは。
初心者用スレだし、一応ツッコミ。
750デフォルトの名無しさん:2008/02/18(月) 22:52:14
メソッドやプロパティのほとんどを日本語にしているから
プレフィックスがないと入力が不便。
751デフォルトの名無しさん:2008/02/18(月) 23:21:15
プレフィックスが教えてくれるのは変数の型だけだぜ!!

って誰かが言ってたな。
752デフォルトの名無しさん:2008/02/18(月) 23:29:43
前に見た糞プロジェクトで、フィールドに普通に名前つけて
プロパティ名が全部p_なんちゃらとかなってて思わずワロタよ
753デフォルトの名無しさん:2008/02/18(月) 23:30:03
.NET Frameworkのクラスライブラリのソースコードのメンバ変数はプリフィックスだらけ
754デフォルトの名無しさん:2008/02/18(月) 23:55:21
>>753
privateなフィールドなら好きにすればいいが、public メンバにやったら殺す
755デフォルトの名無しさん:2008/02/19(火) 00:04:58
756デフォルトの名無しさん:2008/02/19(火) 00:16:12
>>744

publicなフィールドってやっぱだめ?
set getでフィールド渡すだけだと、いちいちプロパティの宣言するのが面倒くさくて
ついついやっちまうんだけど。
757デフォルトの名無しさん:2008/02/19(火) 00:19:24
C#3.0の自動プロパティで駆逐されると信じたい
public int MyProperty { get; set } これだけ
758デフォルトの名無しさん:2008/02/19(火) 00:20:31
重い処理を行うプログラムがあり、BackgroundWorkerを使ってるんですが、
画面への出力にはDoWorkからフォーム操作を行おうとすると「あるスレッドで作成された
コントロールに対して、別のスレッドのコントロールを親にすることはできません。」と出ます。

それは分かるんですが、フォームへの描画自体に時間がかかる場合、その処理自体を
バックグラウンドで行うにはどうやれば良いのでしょうか。
759デフォルトの名無しさん:2008/02/19(火) 00:21:22
バッファに書き込んどけ
760758:2008/02/19(火) 00:43:11
説明が抜けてましたが、実際は子ウィンドウから処理を実行し、親ウィンドウに
複数のウィンドウ(タブ)を追加するといった処理をしたいです。(タブを追加する処理が重い)
バッファに書き込む方法はSetStyle()だと思うんですが、どうも親ウィンドウのフォームでは
SetStyle()が指定できないようでした。。
761デフォルトの名無しさん:2008/02/19(火) 00:55:36
Bitmapに描いとくってことだろ
762デフォルトの名無しさん:2008/02/19(火) 01:38:40
プレフィックスつけてるひと、けっこういるのね
型名とかコントール名とか、どうやって省略したらいいか困るときがある

int int_x=0;
string str_name = "taro";
textbox tbx_input = new textbox();

みたいな感じで頭に三文字略称をつけろとかいう
つまんないローカルルールが社内で流行ってて
しかも人によって略称が違うときがあって逆に混乱するという
ちゃんと取り決めしてないのにプレフィックスつけろって…
プレフィックス一覧とかあると助かるんだけど、いいのが ない
763デフォルトの名無しさん:2008/02/19(火) 01:54:45
ないと思うけどlong int_x = 0;
764デフォルトの名無しさん:2008/02/19(火) 01:55:16
var int_x = 0;
765デフォルトの名無しさん:2008/02/19(火) 01:55:18
コントロールはわからないでもないけど
その他の型名を付けることに関しては全く無意味だと思う
766デフォルトの名無しさん:2008/02/19(火) 03:23:59
VS2005でSocket通信を行っているのですが、LANケーブルを抜かれた等の経路切断の検出方法に困っています。
調べたところ、TCP KeepAliveを使えば出来そうな気配なのですが、C#用の資料が全然見つかりません。

資料もしくはサンプルのポインタを教えてください。

私が調べたかぎりでは
ttp://vsug.jp/tabid/63/forumid/45/threadid/8051/scope/posts/Default.aspx
がかなり近いケースで、ほぼ要求事項は同じです。(違いは私はクライアント側になります)

たしかにこのSetSocketOptionを設定しても、検出はできませんでした。
// KeepAliveの設定
_tcpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, 30000);

レス3番目の方法はどこにどう実装していいものやらわからず、またどうやって検出するのかもわからない状況です。
必要あればサンプルも貼ります。
767デフォルトの名無しさん:2008/02/19(火) 03:32:52
>>766
TCPに任せちゃうんじゃなくて,自分でソケットをラップした通信ライブラリを作ってそこでACKみたいなのをやりとりすれば
直ぐ確認できるはず
768デフォルトの名無しさん:2008/02/19(火) 03:45:01
>>757
それをプロパティにするとなんかメリットあるの?
いつもpublicフィールドにしちゃうけど
769デフォルトの名無しさん:2008/02/19(火) 08:23:15
>>762
型名っていうかクラスと構造体とenum(とそれぞれのインスタンス)を
区別するためだけ、なんだけどね

要はクラスならcを頭につけるとかそういうやつ
770デフォルトの名無しさん:2008/02/19(火) 09:37:26
描画をバックグラウンドって、
描画からみの処理自体を細切れにしてやるしかないな。
771デフォルトの名無しさん:2008/02/19(火) 09:41:50
>>768
あとで実装変えられる
772デフォルトの名無しさん:2008/02/19(火) 09:51:58
>>771
あーやっぱめんどくさいからpublicフィールドで十分かな(´・ω・`)
773デフォルトの名無しさん:2008/02/19(火) 09:53:02
propコードスニペット使えよ
774デフォルトの名無しさん:2008/02/19(火) 11:14:22
プロパティーを使っておくと、リフレクションを使ったライブラリやコードを組むときに便利だよ
C#3.0から導入される匿名型は自動的にプロパティーとして実装される事もあるし、とりあえず以下の例を見てもらえれば解る。
Button と DataGridView コントロールをフォームに置く。
以下のコードを実行する、C#は日本語でもコードできるのでそのままいけます、DataGridViewのタイトルに注目、プロパティーの名前がそのまま出る。

class 行の定義 { public int 行番号 { get; set; } public string 内容 { get; set; } }
ボタンのイベントに対して
行の定義[] データテーブル = new 行の定義[] {
new 行の定義() { 行番号 = 1 , 内容 = "ABC" } ,
new 行の定義() { 行番号 = 2 , 内容 = "DEF" } ,
new 行の定義() { 行番号 = 3 , 内容 = "GHI" } ,
};
dataGridView1.DataSource = データテーブル;
775デフォルトの名無しさん:2008/02/19(火) 11:16:41
>>774
それぐらいだともはやこれでいい気がするけどな。

dataGridView1.DataSource = new []
{
 new { 行番号 = 1 , 内容 = "ABC" } ,
 new { 行番号 = 2 , 内容 = "DEF" } ,
 new { 行番号 = 3 , 内容 = "GHI" } ,
};
776デフォルトの名無しさん:2008/02/19(火) 11:25:40
2008は、発売されてまだ日が経っていないので、まだ知らない人いるかなと思ってそう書いたんですが・・・
とふと気付くとプロパティーを省略形にしていたorz
C#3.0では、get; set; と書くと、自動的に中身が作られます。
777デフォルトの名無しさん:2008/02/19(火) 11:39:29
ああ駄目だ、配列の初期化までC#3.0になっているorz
もう戻れないな……
778766:2008/02/19(火) 11:54:56
>>767
御返事ありがとうございます。

> TCPに任せちゃうんじゃなくて,自分でソケットをラップした通信ライブラリを作ってそこでACKみたいなのをやりとりすれば
> 直ぐ確認できるはず
自分でそこまでできるスキルがありませんorz サンプルがあれば頑張って追いかけてみるんですが素で書くのは無理そうです。。。

サーバ側が自分でいじれればアプリ側でチェックかけるのですが、サーバ側は担当外なので変更不可です。。。
779デフォルトの名無しさん:2008/02/19(火) 12:48:55
となるとネットワークインタフェイスと会話する必要がありそうだね
こっちは門外漢なのでヒントだけおいておきますね
http://support.microsoft.com/kb/239924/ja
780766:2008/02/19(火) 13:38:53
>>779
ヒントありがとうございます。レジストリいじるですか。。。ちょっと気が引けますけど試してみます。
781デフォルトの名無しさん:2008/02/19(火) 15:11:44
>>776

おおお、そうなのか!
2008のpropスニペットで{get;set;}としか入らないから
なんじゃこりゃ…と思っていたところ。
782デフォルトの名無しさん:2008/02/19(火) 15:25:50
VS2005(C#2.0)です。
インスタンスを文字列で生成するには
Activator.CreateInstance(Type.GetType("クラス名"));
で生成するのは判ったんですが、"クラス名"が存在しているかどうか(生成可能かどうか)を
事前に判断するにはどうしたらいいでしょうか?

データを読んでいって、専用の派生クラスがあればそれで、
無ければ汎用の基底クラスで生成しようと思ってるんです。

ご教示よろしくお願いします。
783782:2008/02/19(火) 15:37:05
あ、GetTypeしたときにnullかどうか、
もしくはCreateInstanceして例外をキャッチすればいいのか。
784デフォルトの名無しさん:2008/02/19(火) 15:44:07
>>746
よくPGの人は、HogeとかHogehogeとかFooとかって書いてるけど、なんでへんてこりんな単語を使うの?
ホゲ、ホゲホゲ、ホゲ、フーーー!とかってカタカナで書くと、ぬこが喧嘩してるのかと思う
785デフォルトの名無しさん:2008/02/19(火) 15:48:04
>>760
最初からタブを用意しておいてHideにしておき、必要が出たらVisibleにするのはどうなの?
786デフォルトの名無しさん:2008/02/19(火) 16:27:27
すいません質問です。

列挙型の変数でToString使用しようとすると、『使用しないでください』、といったポップアップの説明が出ます。
代替としてSystem.Enum.Parseを使えと言ってますが、
現在の値の文字列を取得したいので、GetNameのような気がしますがどうでしょうか?
787デフォルトの名無しさん:2008/02/19(火) 17:07:01
すいません、質問です。

複数条件を確認する場合のif文の書き方について教えてください。
こんな感じで書きたいのですが、C#の場合はエラーとなってしまいます。
C#ではどのように書いたらよいのでしょうか。

if((a=="")or(b="")){

}else{

}

いくつか検索をしてみたのですが、かっこのなかの条件が一つの場合の
例しかヒットしませんでしたのでここで質問をしてみました。
どうぞよろしくお願いします。
788デフォルトの名無しさん:2008/02/19(火) 17:08:31
>>787
||
789デフォルトの名無しさん:2008/02/19(火) 17:12:09
>>788
ありがとうございました。
790デフォルトの名無しさん:2008/02/19(火) 17:46:22
791デフォルトの名無しさん:2008/02/19(火) 18:27:11
2008ってVistaから搭載されてるガジェット作れるようになった?
792デフォルトの名無しさん:2008/02/19(火) 18:48:46
>>784
メタ変数ってやつだよ
793デフォルトの名無しさん:2008/02/19(火) 19:23:06
>>790
日産フーガって・・・メタ構文変数だったのか
794デフォルトの名無しさん:2008/02/19(火) 21:27:36
質問です。DBにA列とB列があり

A   B
----------
1 日本
1   東京
1   大阪
2   アメリカ
2 ニューヨーク
3   中国
3 北京

のような形で格納されています。

これをGridに表示させる際に

1 日本   東京     大阪
2 アメリカ ニューヨーク
3 中国   北京

といった形で出力したいのですが、どのようにコードを組んだらいいのか
悩んでおります。

何か良い方法などありますでしょうか?
795デフォルトの名無しさん:2008/02/19(火) 21:32:27
while(Aカラムが存在するまで):
Aカラムに該当するレコードを配列に格納
while(配列が存在するまで):
配列からBカラムを抽出
end
end
796デフォルトの名無しさん:2008/02/19(火) 21:36:28
>>794
こんな感じ?
var table = new[]{
 new { A = 1, B = "日本" }, new { A = 1, B = "東京" },
 new { A = 1, B = "大阪" }, new { A = 2, B = "アメリカ" },
 new { A = 2, B = "ニューヨーク" }, new { A = 3, B = "中国" },
 new { A = 3, B = "北京" } };

var q = from x in table group x.B by x.A;

foreach (var x in q)
{
 Console.Write(x.Key);
 foreach (var y in x) Console.Write("\t{0}", y);
 Console.Write("\n");
}
797デフォルトの名無しさん:2008/02/19(火) 21:43:16
データの持ち方を間違ってる。
テーブル構造を見直すか、アプリ側で処理する。
798デフォルトの名無しさん:2008/02/19(火) 21:56:55
テーブル構造を指摘する人って・・・
799デフォルトの名無しさん:2008/02/19(火) 22:05:52
RDBの場合レコードの並びは保証されてないから国名をどうやって判定するのよ
前ブランクのあるなしかい?
800デフォルトの名無しさん:2008/02/19(火) 22:11:11
国コード 国名  地域名
1     日本   東京

普通こんな感じにしないか
801デフォルトの名無しさん:2008/02/19(火) 22:12:44
まあ、それ言い出したら >>800 のテーブルも正規化されてないでしょ。
そこはスルーでいいんじゃないかと。
802デフォルトの名無しさん:2008/02/19(火) 22:23:58
>>800
気持ちはわかるが、国コードと国名が冗長な気がする
803デフォルトの名無しさん:2008/02/19(火) 22:40:35
つか日本なら普通、国コードは81だろ
804デフォルトの名無しさん:2008/02/19(火) 22:43:17
+81
805デフォルトの名無しさん:2008/02/19(火) 23:38:27
42にすれば全て解決
806デフォルトの名無しさん:2008/02/19(火) 23:40:24
むしろカラム一枚で
81<>jp<>tokyo
みたいにすれば最強。
で、レコード一枚でケツに繋げていくの。
807デフォルトの名無しさん:2008/02/20(水) 09:59:09
.NET Frameworkのバージョンが異なるアセンブリ間で
StringやImage等のオブジェクトをやりとりするのは問題ないのでしょうか?
808デフォルトの名無しさん:2008/02/20(水) 14:43:16
意味ワカンネ
809デフォルトの名無しさん:2008/02/20(水) 14:45:03
具体的にどういう状態?
810807:2008/02/20(水) 15:05:03
// .NET Framework2.0で作ったアプリ
System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom(他の人が.NET Framework3.5で作ったDLL);
Hoge hoge = (Hoge)asm.CreateInstance(DLLが公開しているクラス名);
string str = hoge.Name;
Image img = hoge.GetImage();

と、違うバージョンで作られたStringやImageを使っても大丈夫なのかなと。
811デフォルトの名無しさん:2008/02/20(水) 15:08:38
そもそも同一プロセスに異なるバージョンのCLRはロードできないんじゃなかったっけ。
リモート使った場合は余計にシラネ。
812デフォルトの名無しさん:2008/02/20(水) 15:14:47
2.0-3.5はCLRが同じバージョンだから問題ないはず。
2.0/3.0にSP1を当てておけばより確実だと思う。
813デフォルトの名無しさん:2008/02/20(水) 19:34:41
>>797-802
分類基準は一番最初の数値じゃないのかな?
昔のコボラーさんたちが良く使うで、国番号でソートしておいて、国番号が変わったところで切り出すという常套手段。
C#でやるなら 796 だね、これなら番号がソートできないデータ型でもいける、データ構造を変えるなら二重テーブル、XMLを取り扱う気分で。
814デフォルトの名無しさん:2008/02/20(水) 19:40:18
C#2.0での質問ですが、
ジェネリックのコレクションにadd()メソッドで加えたデータを、データグリッドに表示させる方法を教えてください
815デフォルトの名無しさん:2008/02/20(水) 20:33:08
>>813
そういうレベルの話じゃなくてRDBの行に順序なんてない(ORDER BY
でも同順位内は不定)ので「初めに返ってくる」とか「一番上」とかは
不定。意味ないから同じ順で返ってくること多いが毎回ランダムで返って
来ても正しい動作。

つーわけで質問のテーブルだと格納する情報が足りないので不可能が
答えになってしまい >>797 みたいな答えしかできないと
816デフォルトの名無しさん:2008/02/20(水) 21:13:08
>>814
追加するデータのメンバーはフィールド?、それともプロパティー?
表示されるのはパブリックなプロパティーのみだよ 774 を参考にしてみて。
それでも解らなかったら詳細をどうぞ。

>>815
回答する側で勝手に必要条件やしてませんか?
……わかんないけど
817デフォルトの名無しさん:2008/02/20(水) 21:25:50
>>810
なんかこわいっすね、一旦シリアライザでシリアライズしてから渡したほうが無難そうな予感がする。
バイナリフォーマッタ辺りでやれば大きくパフォーマンスも落ちないだろうし、自分ならそっち方面を狙いたいですね。
もし使うなら、こいつです
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
818デフォルトの名無しさん:2008/02/21(木) 00:24:12
>>817
怖いって……
実行エンジンのバージョンとコンパイルされたアセンブリのバージョンと
ごっちゃにするなよ
つーかBinayFormatterこそめちゃくちゃバージョン依存だろう
xmlの方がまし
819デフォルトの名無しさん:2008/02/21(木) 00:42:08
じゃあbyte[]やchar[]に変換したら
820デフォルトの名無しさん:2008/02/21(木) 01:21:14
>>818
おぃおぃ(^^;
821814:2008/02/21(木) 01:40:00
>>816
C#2.0で、クラスを
class 行の定義
{
  int _行番号
  string _内容
  public int 行番号
  {
   get{ return _行番号;}
    set{ _行番号 = value;}
  }
  public string 内容
   {
   get{ return _内容;}
   set{ _内容 = value; }
}
とした場合、C#2.0で、行の定義クラスを配列として使う方法が分かりません。
この方法(クラスのインスタンスを配列として使う方法と、その場合の初期化)を教えてください

行の定義[] データテーブル = new 行の定義[]();
としてもエラーが出てしまうし、
行の定義[] データテーブル = new 行の定義();
としてもエラーが出てしまいます

822デフォルトの名無しさん:2008/02/21(木) 01:49:06
>>821
横やりだけど、()がいらない
行の定義[] データテーブル = new 行の定義[];

初期化をいれるなら
行の定義[] データテーブル = new 行の定義[]
{
new 行の定義( 初期化内容 ) ,
new 行の定義( 初期化内容 ) ,
...
};
"new 行の定義"でコンストラクタでメンバを初期化する機能は2.0には無いので、引数付きコンストラクタを作っておく必要がある。
823デフォルトの名無しさん:2008/02/21(木) 07:08:39
行の定義[] データテーブル = new 行の定義[要素数];
824デフォルトの名無しさん:2008/02/21(木) 13:34:30
話を通じさせる為にも3.0に移行がお勧めだな、VS2008はなぜかVS2005より軽量と出来が良いので買い替え時としては悪くないし
825デフォルトの名無しさん:2008/02/21(木) 14:24:46
でもお客に.Net3.5Frameworkを入れさせないといけないでしょ。OSも未だにXP止まりだし。
2.0でさえやっと普及した段階なのに、作りやすいからという理由だけで3.5を入れさせるわけにもいかず・・・。
826デフォルトの名無しさん:2008/02/21(木) 14:32:05
見積もり作り直してみたら?
その分時間かかるけどな!!
827デフォルトの名無しさん:2008/02/21(木) 14:38:42
>>825
じゃあしょうがないね。
ちなみにXPでも動く .Net3.5Framework はウインドウズアップデートでどうぞ。
客にやらせてもこの程度なら差し支えないかと、面倒ならインストーラーにぶち込んでもいいと思うけど。
これもClickOnceを使っているなら、意識する必要ないかもね。
インストーラーは開発前に吟味しておくとこういう時にいい結果を生むので手抜きはしないように。
828デフォルトの名無しさん:2008/02/21(木) 15:13:05
>>825
C# 3.0/.NET Framework 3.0/3.5を使うかどうかは別として、
VS 2008は.NET Framework 2.0用のアプリケーションも書ける。
829デフォルトの名無しさん:2008/02/21(木) 16:25:33
Form1の上にForm2を表示しようとしています。
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
form2.Show(this);
}
とすれば、一応表示されるのですが
タスクバーにForm2のアイコンが表示されるのです。
アイコン表示しなくするにはどうすればいいのでしょうか?
830デフォルトの名無しさん:2008/02/21(木) 16:27:20
Form のメンバ一覧をじっくり眺めてみるんだ
831デフォルトの名無しさん:2008/02/21(木) 16:30:01
>>830
ShowIconってあるじゃないっすか
ありがとうございます
832デフォルトの名無しさん:2008/02/21(木) 19:08:36
>>821
配列版は出ているので、ジェネリックのコレクション版で System.Collections.Generic.List 版でも作っておきます。
class 行の定義 {
 int f1;
 string f2;
 public int 行番号 { get { return f1; } set { f1 = value; } }
 public string 内容 { get { return f2; } set { f2 = value; } }
 public 行の定義(int a1, string a2) { 行番号 = a1; 内容 = a2; }
}
実行するコード
System.Collections.Generic.List<行の定義> table = new List<行の定義>();
table.Add(new 行の定義(1, "ABC"));
table.Add(new 行の定義(2, "DEF"));
table.Add(new 行の定義(3, "GHI"));
dataGridView1.DataSource = table;
これなら2.0でも大丈夫……だと思う
833814:2008/02/21(木) 19:43:48
>>822>>832
ありがとうございます。勉強になります

>>832のコードを試してみたところ、2.0でそのまま動きました。
配列よりジェネリックのコレクションの方が勝手がいいので、すごい参考になります。
834デフォルトの名無しさん:2008/02/21(木) 19:51:19
>>833
という事は、追加削除もしたいと?
ならDataSourceにtableを直接セットせずにBindingSourceでアダプタをかましてからセットすると追加なども可能になるよ、参考までに。
835デフォルトの名無しさん:2008/02/23(土) 00:18:56
基底クラスのコンストラクタを呼び出すときに,派生クラスのコンストラクタの引数をそのまま渡さずに
ちょっと処理をしてその結果を渡したいんだけど,一つの式で書けるなら
メソッド呼び出しも含めて実質何でもできると考えていいの?
836デフォルトの名無しさん:2008/02/23(土) 01:04:07
メソッド呼び出しは出来る
メソッド呼び出せばなんでも出来る
837デフォルトの名無しさん:2008/02/23(土) 13:09:27
画像を分割するのってどうやれば良いんだ?
パズル的なのを作りたいんだが…
838デフォルトの名無しさん:2008/02/23(土) 13:19:45
Bitmap作ってGraphics.DrawImage
839デフォルトの名無しさん:2008/02/23(土) 13:25:29
DrawImageか、dクス
840デフォルトの名無しさん:2008/02/23(土) 14:12:22
ColorをXmlSerializerからデシリアライズしたいです。
とりあえずひな形を作るためにシリアライズしたのですが、<PackedValue>4278848010</PackedValue>
というものが吐かれていました。
RGB+αとPackedValueの相互変換ができれば解決すると思うのですが、
ググってもよく分かりませんでした。
相互変換のやり方を教えていただけると助かります。
よろしくお願いいたします。
841デフォルトの名無しさん:2008/02/23(土) 14:17:33
FromArgbだろどうせ
842デフォルトの名無しさん:2008/02/23(土) 14:46:35
>>841
RGB=10,10,10のColorをデシリアライズして出てきたPackedValueが
4278848010で、
同じColorをToArgbして表示してみると、-16119286だったんですが…
843デフォルトの名無しさん:2008/02/23(土) 14:50:26
つFF0A0A0A = 4278848010
844デフォルトの名無しさん:2008/02/23(土) 14:52:20
各整数型の値域は把握しとくといいぜ
845デフォルトの名無しさん:2008/02/23(土) 14:55:07
16進数も分かってないバカがプログラム書くな
846デフォルトの名無しさん:2008/02/23(土) 15:03:54
ここ初心者用。
847デフォルトの名無しさん:2008/02/23(土) 15:11:58
初心者用はC#という意味だろw
848デフォルトの名無しさん:2008/02/23(土) 15:13:20
つか、なんでARGBはint扱いなんだと思う。
取り扱いが面倒くさすぎ。
Color.FromArgb(0xFF0a0a0a)とか書けないから、いちいち
Color.FromArgb(0x0a, 0x0a, 0x0a)って書いてる。

Cの書き方に慣れてないから知らないだけなのかな。
ひょっとしてもっといい書き方あるんですか?
849デフォルトの名無しさん:2008/02/23(土) 15:14:52
unchecked((int)0xXXXXXXXX))
うん余計面倒だな
850デフォルトの名無しさん:2008/02/23(土) 15:17:16
>>848
intの方が楽でええがな
ビット演算子だけで扱えるし
851デフォルトの名無しさん:2008/02/23(土) 15:17:48
uintはCLSに準拠しないからとかなんとか
852デフォルトの名無しさん:2008/02/23(土) 17:44:03
>>847
このスレではいじめ禁止
853デフォルトの名無しさん:2008/02/23(土) 17:50:04
>>848
WinAPIがそういう仕様だから、互換の関係しょうがないだろうと思う
最近HDR(輝度レンジの大きいRGB表現)が登場してRGBが浮動小数点表現になってきつつあるので、どこかの段階で作り変える必要はあるかもしれない。
854デフォルトの名無しさん:2008/02/23(土) 17:50:55
静的型チェックがしっかりしていて,なおかつ実務で使える機能がお多くて,さらにとっつきやすくて,その上曲がりなりにもネイティブで実行される
これだけ長所があるのに何を今更
855デフォルトの名無しさん:2008/02/23(土) 17:54:57
>>853
848の不満はAPIとは関係ないよ uintじゃ無いのが面倒ってだけだから
それにAPIとの互換を重視するならABGRじゃないと駄目だし
今更GDI+拡張するとも思えん
WPFならすでに各色floatで表現できる
856デフォルトの名無しさん:2008/02/23(土) 20:34:21
今はxvYCCとか色々あるからなぁ
857デフォルトの名無しさん:2008/02/23(土) 21:19:36
標準はRGBの方がいいよ、その他は特種扱いで
プログラムがややこしくなりすぎリる
858デフォルトの名無しさん:2008/02/23(土) 23:32:56
タブページへの描画について質問です(検索してもうまく答えが見つからないのでキーワードだけでもいいです)

private TabControl tabControl1;
private TabPage tabPage1;
private TabPage tabPage2;
以上のように宣言をし、定義しています。
tabPage1にはリストビューを使ってデータの一覧を表示しており、うまくいっています
(このようにして→this.tabPage1.Controls.Add(this.listView1);)
tabPage2には円グラフを描きたいのですがうまく行きません。

Graphics g = tabPage2.CreateGraphics();
g.DrawLine(new Pen(Color.AliceBlue), 30, 30, 100, 100);
まずは上記のようにして線を引いてみようと思ったのですが失敗してしまいます。
どういった方法があるのでしょうか?
859デフォルトの名無しさん:2008/02/23(土) 23:56:34
クラスライブラリのプロジェクトを作り、プロジェクトのプロパティから
署名→アセンブリの署名にチェック→キーファイルを新規作成(パスワード保護無し)してkeyfile.snkを作成
として署名しました。
このクラスライブラリの公開キートークンを知りたいのですが、IDE上から調べる方法はあるのでしょうか?
VC#2008Expressです。
860デフォルトの名無しさん:2008/02/24(日) 01:05:16
>>858
どこでDrawLineを呼んでるのかと
どのように失敗してるのかがよく分からないんだけど

多分、tabpage2のOnPaint()をoerrideするか、Paintイベントで書くかしてないんじゃないの?

例えば
tabPage2.Paint += new PaintEventHandler(tabPage2_Paint);

void tabPage2_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.DrawArc(Pens.Black, 10, 10, 100, 100, 0, 90);
}
861デフォルトの名無しさん:2008/02/24(日) 04:12:20
linqとかほとんど誰も使わないような構文を言語に組み込むくせに
何で正規表現リテラルが言語仕様に無いんだよ。

この言語設計者ってアホなの?
862デフォルトの名無しさん:2008/02/24(日) 05:59:55
Connector/NETの5.0だとパラメータのプレースホルダとしての接頭辞に「?」しか使えなかったけど
5.2にしてみたら「@」も使えるっぽくなっているんですが
一時変数として「@」を使っていたところまでプレースホルダと判定されちゃってエラーに;;
この対処法をご存知の方いませんでしょうか?
863デフォルトの名無しさん:2008/02/24(日) 06:22:28
>>861
俺はバリバリ使ってるが・・・
864デフォルトの名無しさん:2008/02/24(日) 06:34:11
スクリプト言語ではないから、正規表現をライブラリに投げるのは正しいと思う
865デフォルトの名無しさん:2008/02/24(日) 06:54:19
C#つかうより断然Bccのほうがいいだろ 過去のソースも使えるし ドットNetなしで動くし
あと開発環境が重すぎ
866デフォルトの名無しさん:2008/02/24(日) 07:01:57
BCCがいいのは認める
だけど.NET使ったら戻れないな
867デフォルトの名無しさん:2008/02/24(日) 07:08:46
C#は、デルファイ言語、ボーランドC++のパクリだろ それにC++言語の方が有名
868デフォルトの名無しさん:2008/02/24(日) 07:53:47
有名(笑)
869デフォルトの名無しさん:2008/02/24(日) 08:52:44
>>867
それを作ってた開発者が
C#を開発したんじゃなかったっけ
870デフォルトの名無しさん:2008/02/24(日) 09:09:15
定期的にその話題でてくるなぁ。

Anders Hejlsbergね。
元ボーランド社員のDelphi開発者。
現MS Technical Fellow。C#開発者で、.NET Frameworkの設計にも深く関わってる。
871デフォルトの名無しさん:2008/02/24(日) 10:06:22
.NET Remotingを使ってメッセージ通知をしあうプログラムを書いているのですが、
サーバーとなっている方の親クラスに通知する方法が思いつきません。

下記のようにやってみたのですが、これだと呼出毎にインスタンスが出来てしまって
イベントの意味がなくなってしまいます・・・

なにか良い方法はないでしょうか?

// server
class MsgServer : MarshalByRefObject
{
public event EventHandler CallRecv = null;
public string Recv(string message)
{
if (CallRecv != null) CallRecv(this, new EventArgs());
}
872デフォルトの名無しさん:2008/02/24(日) 10:34:48
俺の場合は、知らせたいクラスのオブジェクトはひとつしか作らなかったから
staticでインスタンスを持っておいて、それにアクセスした。
873デフォルトの名無しさん:2008/02/24(日) 18:06:06
>>861
stringの拡張メソッドにMatchでもつけてみたらどうだ
874デフォルトの名無しさん:2008/02/24(日) 18:09:40
LINQで正規表現を組み立てられないかな
875デフォルトの名無しさん:2008/02/24(日) 21:19:02
「デルファイ言語」
876デフォルトの名無しさん:2008/02/24(日) 23:32:24
むしろ正規表現はExpressionTreeに組み込める気がする
今の実装はどうなってるんだろうね
877デフォルトの名無しさん:2008/02/24(日) 23:46:27
>>876
正規表現のコンパイルオプション次第で、LCG使ってIL出力して高速化できた気がする。
あの部分のソースコードも公開されたのかな。後で見てみるか。
878デフォルトの名無しさん:2008/02/25(月) 00:22:54
質問です。

HttpRequestHeaderで既に定義されている環境変数(User-Agentなど)を
HttpWebRequest.Headersに直接指定したいのですが、

---
このヘッダーは、適切なプロパティを使用して変更しなければなりません。
パラメータ名: name
---

このようなエラーが出てしまって出来ない状況です。
WebClientでは可能なのですが、HttpWebRequestのほうが細かいことができる感じなので
どうにかして指定する方法はないものでしょうか?

具体的にはtextBoxにベタ書きしてある複数行のリクエストヘッダを直接指定しようとしています。

どうかご教示お願い致します。
879デフォルトの名無しさん:2008/02/25(月) 00:34:32
諦めれ
880デフォルトの名無しさん:2008/02/25(月) 01:25:15
Web認証してログインするクライアントソフトを作っているのですが、
HttpWebResponseで返されたHTMLに含まれているボタンを押すには
どうすればいいでしょうか?

具体的にはHTMLソース上で
<input type="submit" name="login" value="ログイン" accesskey="s" />
と書かれているボタンオブジェクトです。

よろしくお願いいたします。
881デフォルトの名無しさん:2008/02/25(月) 01:30:49
>>880
<input type="submit" name="login" value="ログイン" accesskey="s" />
を包んでる<form …>タグはどうなってるの?
そこに書いてあるmethodによって、actionに書いてあるURLへのデータの送り方が変わってくる。

「HTML フォーム cgi」とかで検索するともっと詳しく分かるかもね。
882デフォルトの名無しさん:2008/02/25(月) 01:33:06
>>881
ありがとうございます

<form action="http://xxxxxxxxx/index.php" method="post" style="margin-bottom:0px;">
と書いてあるのでPostメソッドでしょうか?
883デフォルトの名無しさん:2008/02/25(月) 01:37:19
@IT:.NET TIPS WebRequest/WebResponseクラスでPOSTメソッドによりデータを送信するには? - C# VB.NET
http://www.atmarkit.co.jp/fdotnet/dotnettips/318webpost/webpost.html
884デフォルトの名無しさん:2008/02/25(月) 02:23:42
なんでこういう所に出すのにusingすら使わないんかねぇ・・・
885デフォルトの名無しさん:2008/02/25(月) 02:44:19
>>883
それでやってみましたが、もとのログイン画面に戻ってきてしまいますね・・・
念のため、fiddlerでブラウザが送信しているPOSTメッセージをキャッチして
比較してみたのですが、同じものを送ってるんですが・・・・

Windowsアプリのように、Clickイベントを送ることはできないのでしょうか?
886デフォルトの名無しさん:2008/02/25(月) 02:55:50
普通にHTTP POSTで送れると思うのだが。
887デフォルトの名無しさん:2008/02/25(月) 03:09:27
すみません
送信文字列に「&」が含まれていたようで、
それを個別に%26に変えないといけないようでした
お騒がせしました
ありがとうございました
888デフォルトの名無しさん:2008/02/25(月) 10:27:06
フォームの上に表示される青いバー(最大化ボタンとかあるやつ)を
消すにはどうすればいいでしょうか?
889デフォルトの名無しさん:2008/02/25(月) 10:29:51
FormBorderStyle.Noneにするとか
ControlBoxとTextをなくすとか
Regionでクライアント領域だけにするとか
890デフォルトの名無しさん:2008/02/25(月) 13:53:00
>>889
ありがとうございます

FormBorderStyle.Noneが一番シンプルでよさそうです
891デフォルトの名無しさん:2008/02/25(月) 15:45:24
>>861
>何で正規表現リテラルが言語仕様に無い
・・・・
まず初心者用の本を買って読めよw
892デフォルトの名無しさん:2008/02/25(月) 16:02:09
あるのかYo
893デフォルトの名無しさん:2008/02/25(月) 16:03:12
無知をさらけ出している事実に気付いて欲しい
894デフォルトの名無しさん:2008/02/25(月) 16:05:38
895デフォルトの名無しさん:2008/02/25(月) 16:12:01
正規表現リテラルが言語仕様にあったとしても
Regexオブジェクトのシンタックスシュガーになるだけじゃね
896デフォルトの名無しさん:2008/02/25(月) 16:31:05
>>894 ないじゃんただの文字列じゃん死ね

>>895 世の中便利になると懐古厨は必ずそう騒ぐ
897デフォルトの名無しさん:2008/02/25(月) 16:33:43
>ないじゃんただの文字列じゃん死ね
?
898デフォルトの名無しさん:2008/02/25(月) 16:37:18
多分891はRegularExpressionの存在を知っていてしかも使っているから書いたんだと思われ
899デフォルトの名無しさん:2008/02/25(月) 16:39:34
わざわざ言語に組み込むコストとそれによる効果を考えれば明らか
900デフォルトの名無しさん:2008/02/25(月) 16:41:56
言語に組み込んでも、どうせプロはオーバーライドして使いたいでしょ
機能がクラスにあればそれで十分
901デフォルトの名無しさん:2008/02/25(月) 16:47:21
その機能としてですね・・ええ,はい・・・
902デフォルトの名無しさん:2008/02/25(月) 17:05:09
文字列演算の上位機能として正規表現があるといいな

文字列に対してたとえば / 演算を正規表現によるマッチングで
  foreach(var s in "abc123abc123"/"(a*123)"){
   ...
  }
とか出来たら,正規表現云々がコード上で一目でわかってくる気がする
もちろんこのまま実装したらキモくて使い物にならないけどな

C#も演算子の定義とか出来ればいいのに.
903デフォルトの名無しさん:2008/02/25(月) 17:17:06
foreach(var s in new RE("abc123abc123")/new RE("(a*123)"))
ぐらいでええやん?
904デフォルトの名無しさん:2008/02/25(月) 17:18:10
暗黒面に落ちるぞ。
905デフォルトの名無しさん:2008/02/25(月) 17:23:44
マッチ対象までreにする必要はふじこ
906デフォルトの名無しさん:2008/02/25(月) 18:33:59
正規表現リテラルとかいらねーよw
ライブラリにあんだろw
907デフォルトの名無しさん:2008/02/25(月) 18:39:50
よその言語だけど。

コンパイル時に文字列から正規表現オブジェクトを組み立てるD。
http://www.kmonos.net/alang/d/2.0/templates-revisited.html
コンパイル時に演算子多重定義で正規表現オブジェクトを組み立てるC++。
http://www.boost.org/doc/html/xpressive/user_s_guide.html
908デフォルトの名無しさん:2008/02/25(月) 18:45:46
>>907
BOOSTは言語仕様じゃなくてライブラリだが
君好みのライブラリが欲しいなら自分で作れば?w
909デフォルトの名無しさん:2008/02/25(月) 18:50:28
>>906
便利とか不便とかの問題だからあなたにいらなくてもほしい人はいるのです
910デフォルトの名無しさん:2008/02/25(月) 18:55:20
>>909
自分で作れよ
911デフォルトの名無しさん:2008/02/25(月) 19:14:31
そんなややこしいことせんでも
C#の正規表現はプリコンパイルすることも実行時コンパイルすることも
コンパイルせず普通に使うことも出来るぞ
912デフォルトの名無しさん:2008/02/25(月) 19:23:27
>>908
どっちもライブラリだけど、言語仕様に欲しいって言ったら、
簡単に書けることのほかの理由は
コンパイル時にどうにかしたいって話に向かうよなと思って振ってみただけ。
913デフォルトの名無しさん:2008/02/25(月) 19:24:59
なーんか真面目に熱くなって水掛論してこいつら楽しいのかなぁ
914デフォルトの名無しさん:2008/02/25(月) 19:25:46
熱を冷ます水かけ、地熱発電の応用がききそうだ
915デフォルトの名無しさん:2008/02/25(月) 19:37:35
boostの現状を見るとtemplateはただの完全に自由なテキスト生成規則にした方が
5000倍ぐらい良かった気がするな
916デフォルトの名無しさん:2008/02/25(月) 19:50:44
C++の型を認識しないで動くのは御免こうむる

正規表現のリテラルがあればテキスト処理が楽になるから実装よろ
917デフォルトの名無しさん:2008/02/25(月) 19:54:20
LINQ to Objectと違って用途が限定されすぎてるよ
918デフォルトの名無しさん:2008/02/25(月) 19:56:32
テキスト処理ってそんなに限定的なのか・・・
919デフォルトの名無しさん:2008/02/25(月) 19:58:43
限定的と言うより抽象性が低い、かな
920デフォルトの名無しさん:2008/02/25(月) 20:10:55
まぁテキスト処理すなわち正規表現ってわけでもねーし。
正規表現リテラルあってもいいけど、「linqなんて実装するくらいなら〜」てな
意見は単純に阿呆かと思う。
921デフォルトの名無しさん:2008/02/25(月) 20:17:26
拡張性が低いというのならそれは一面を見ているに過ぎないという感じ
そもそも正規表現が使われる範囲がそんなんだからなぁ

で,思いついた.
ユーザによるリテラルの実装をすればもっと幸せになれると思うんだ.

class complex{
  private r, i;
  public static literal `(literal L){
    // L はコンパイラによって取得されたソース中のリテラル
    MatchCollection mc=L.entity/RegExWrapper`\(([0-9]*)\s,\s([0-9]*)\`;
    r=new int(mc.Item[0].Value);
    i=new int(mc.Item[1].Value);
  }
  // その他の複素数の演算は割愛
}

public static class RegExWrapper{
  public static literal `(literal L){
    // 割愛
  }
  public static MatchCollection operator /(string lhs, RegExWrapper rhs){
    // rhsの正規表現を使ってlhsからMatchCollectionを生成
  }
}

たとえば complex`(1,2)`*complex`(3,4)` は(1+2i)(3+4i)と等しい,とかいうことができちゃったりすると楽しそう.
こうすれば可用性が格段にあがるな
922デフォルトの名無しさん:2008/02/25(月) 20:17:43
独自実装でもいいしライブラリなんて探せばあるだろうしコードだって転がってるだろうし
923デフォルトの名無しさん:2008/02/25(月) 20:17:58
文字に限らず一般のコレクションに対するパターンを表現する方法を考えてMSに送ってやれ
924デフォルトの名無しさん:2008/02/25(月) 20:22:40
Regexと書かなくて済むからといって生産性はかけらも上がらん
クエリ式はクエリ式がないとどうしても書きにくい処理があるから存在している
925デフォルトの名無しさん:2008/02/25(月) 20:25:18
と言いつつもregexやmatchでコードがどんどんグチャグチャになってしまってはいないかい?
926デフォルトの名無しさん:2008/02/25(月) 20:28:25
complex`(1,2)`*complex`(3,4)`

new Complex(1,2) * new Complex(3,4)と書けばいいだろう
たくさん出てくるなら関数作って
c(1,2) * c(3,4)でもいいし
927デフォルトの名無しさん:2008/02/25(月) 20:30:40
>>925
それは使い方が悪いとしか
仮に正規表現にリテラルがあったとしてもコードのあちこちにべたべた張り付けまくったらグチャグチャだろ?
928デフォルトの名無しさん:2008/02/25(月) 20:31:27
>>926
それは言っても詮無い話だ
929デフォルトの名無しさん:2008/02/25(月) 20:44:46
>>926
全くだ。
(1+2i) * (3+4i)と書けるようにしろという話のならまだ良かった。
930デフォルトの名無しさん:2008/02/25(月) 20:48:26
complexとかはただの例だからあんまりそれ自体に突っ込まないでね^p^;
931デフォルトの名無しさん:2008/02/25(月) 20:52:40
ユーザ定義リテラルっつーと C++0x か。
932デフォルトの名無しさん:2008/02/25(月) 20:53:36
正直@リテラルにIsMatchとかMatchとかReplaceとか名前キャプチャとか
Resultとかもろもろであまり困ったことないのだが異端なのか
933デフォルトの名無しさん:2008/02/25(月) 21:15:23
>>932
ものすごく普通
934デフォルトの名無しさん:2008/02/25(月) 21:16:02
正規表現リテラルよりも複素数リテラルの方が役に立つぞ。
http://www.kmonos.net/alang/d/2.0/cppcomplex.html
935デフォルトの名無しさん:2008/02/25(月) 21:16:24
適当にラップしつつ使うもんだと思ってたがここ見てるとそうでもないのか
936デフォルトの名無しさん:2008/02/25(月) 22:35:09
複素数なんざ滅多につかわん
汎用言語に何を求めているんだ
理想の複素数が欲しければちょっとした言語を作って
動的にILでも生成すりゃいいだろ
937デフォルトの名無しさん:2008/02/25(月) 22:40:28
そこで fortran.net ですよ。
938デフォルトの名無しさん:2008/02/25(月) 23:04:35
おまえらはすぐそうやって美しくわかりやすく書きたがる

Javaを見習え

地味にadd()やsub()メソッドでがんがるんだよ
一時オブジェクトなんかキニシナイ
939デフォルトの名無しさん:2008/02/26(火) 00:47:00
@"" が有るぐらいなら、正規表現リテラル R"" ぐらい作ってもいいかもと思うことも無くもない。
ただしただ実装するだけじゃ駄目だ、そんなのならライブラリでも構わない、C#コンパイル時にこれもコンパイルして
文法チェックした上でコンパイルエラーを出すぐらいやってくれれば入れてもらってもいい、そこまでやるなら十分有用。
それと、正規表現同士の結合演算子を実装するといいと思う、それは部分的な正規表現を結合して一つの正規表現ができるという正規表現の性質としてもいいし、
文法チェックした上で組み立て自在となれば大変便利。
とかとか考えていたら、いっそ LINQ 並に強化された Language INtegrated yacc&lex ぐらい作ってもらえるとユカイかもしれない。
boost::spirit 以上の能力を持たせてくれればグレイト。
LINQでは、Sql Xml と個別実装ができる汎用性をもつし、いっそ構文定義と解析手法を分解して簡単文法解析から超ヘビー級解析まで自在になったらいい。
やってくれヘジたん。
940デフォルトの名無しさん:2008/02/26(火) 00:49:37
>>939
そこまでいくと、C#である必要あるの?という気もするな。
せっかくCLRがあるわけで、Javaじゃあるまいし、pure C#な必要なくて。
941デフォルトの名無しさん:2008/02/26(火) 00:50:13
ヘジたん正規表現嫌いそうじゃね?
いや、なんとなくなんだけどさ
942デフォルトの名無しさん:2008/02/26(火) 00:50:53
正直正規表現はいらないというか嫌い
943デフォルトの名無しさん:2008/02/26(火) 00:53:41
ヘジは正規表現リテラルを作るくらいなら
テキスト処理の問題の9割を解決できる新たな枠組みを作ろうとするだろう
944デフォルトの名無しさん:2008/02/26(火) 02:28:36
適当な構文の構造はXMLでも表現できるし、テキスト解析 → XML → XML to LINQ
ならば間飛ばして、テキスト解析toLINQ
はいLINQの強化で決まり。
945デフォルトの名無しさん:2008/02/26(火) 03:48:25
木構造に適したコレクションって用意されてますかね?
あれば教えて欲しいです。

無ければないでList<T>等から拡張すればいいのですが、
最初からあるのならそれをと思ってググったのですが、
見あたんない。
欲しい機能は"root->node->subnode->leaf"の様な文字列で
leaf(にある)オブジェクトを取得できるとか、
leaf自身で自分のパス("root->node->subnode->leaf")を取得できるとか
等なんですが。後者はTreeViewのTreeNode.FullPath的な感じです。

あ、みなさん木構造ってどのように扱ってます。
上に書いたのは一種の多次元配列みないな物ですが、
他には直近の親もしくは子の識別子だけを
各オブジェクトに保持した隣接モデルもあります。
ケースバイケースって言われりゃそれまでのような気もしますが。
946デフォルトの名無しさん:2008/02/26(火) 06:42:42
>>945
自分で作れよTreeぐらいw

BinaryTreeとかBTreeとかKDTreeとか
用途によって使い分ける部分が多すぎるだろう
947945:2008/02/26(火) 14:43:53
>>946
レスどーも。

"Treeぐらい"自分で作れるよ。てか既に作ったんだよ。
んでも、ちょっとスマートさに欠けているというか、ちゃんと動くのは動くが、
経験がまだまだ少ないものだから、「これでいいのか?」と不安なんだよ。
TreeViewとかXMLとか木構造はいろいろ使われているので、
"Treeぐらい"最初から用意されているのかなと思ったんだよ。
"そこ"には自分で思いつかなかった有用なメソッドがあるかもしんない。
なんてね。

無いと判ったら自分で作り込むだけ、DOMみないな大げさなもんが必要じゃないしね。
948デフォルトの名無しさん:2008/02/26(火) 15:54:46
>>947
スレ違い
Introduction to Algorithms読め
949デフォルトの名無しさん:2008/02/26(火) 15:57:23
>>945
「C# Tree」でググッたら3つ目に出た。
A Tree Collection
ttp://www.codeproject.com/KB/recipes/treecollection.aspx

Treeぐらいっておっしゃいますが、コレクションに追加されるような汎用の木って、
利便性を高めようとすると「木の操作」って意味ではDOM以上に
複雑になりそうな気がしますが……。
950デフォルトの名無しさん:2008/02/26(火) 15:59:01
汎用性のある木なんていらんな
2分木で十分なのにm分木にされても非効率だったりするし
951デフォルトの名無しさん:2008/02/26(火) 16:20:50
C#の標準のFormって
レイヤードウィンドウ、リージョンウィンドウどっちですか?
952945:2008/02/26(火) 17:31:59
各位いろいろどーも。

>>948
ちょっとネタがそれてしまってスマソ。
もともとの「木構造に適したコレクションの有無」ならスレ違いじゃないよね。

>>949
おお、サンクス。日本語ページのみにしてたから気づかなかったよ。
てかcode projectには会員登録してるのにすっかり忘れてた。
使ってみるか、参考にしてみるよ。

そもそもList<T>等を入れ子にして、>>945に書いた程度の機能が欲しかった
だけなんだが、利便性とかも含めいろいろ考えると確かに複雑というか太る。
DOMまで行かなくてもどこかにベースになるような物があるんだろうよ。と思ったのが発端。

>>950
検索はしたいけどそれが主体な検索木が必要だと言うことではないんです。
953デフォルトの名無しさん:2008/02/26(火) 19:55:50
>>951
なんじゃその分類法
954デフォルトの名無しさん:2008/02/26(火) 19:58:49
>>953
フォームを透明にしたいのですが、
リージョンウィンドウは重いと聞いたので・・・
955デフォルトの名無しさん:2008/02/26(火) 20:04:06
聞いたのでってw
956デフォルトの名無しさん:2008/02/26(火) 22:43:04
ROK
957デフォルトの名無しさん:2008/02/26(火) 23:02:23
聞いたので、の何が悪いんだろうね>>955みたいなのはなんなんだろう?
958デフォルトの名無しさん:2008/02/26(火) 23:03:07
今時の子は人に聞いたりとかってもんを軽視してるしな
それしかなかった時代が存外身近なのにもかかわらず
959デフォルトの名無しさん:2008/02/26(火) 23:08:05
聞くのはいいが、その裏付けを取れよ。
マニュアルを見て、また実際にプログラム書いてみればすぐわかるんだから。
960デフォルトの名無しさん:2008/02/26(火) 23:24:06
パフォーマンス云々を気にするならまずやってみろってこったよ
961デフォルトの名無しさん:2008/02/27(水) 00:03:21
確かにFormを透明にすると重くなると思います。
ただスペックによると思いますので、自分のPCでいけるといって顧客環境ではいけるとは限らないでしょう。逆も然り
962デフォルトの名無しさん:2008/02/27(水) 03:16:08
backgroundWorkerについて質問です
以下定義
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);
backgroundWorker1.WorkerSupportsCancellation = true;

普通にバックグラウンド処理(backgroundWorker1_DoWork)の処理が終わり
backgroundWorker1_RunWorkerCompletedが呼び出され終了した場合は全く問題ないのですが
backgroundWorker1.CancelAsync();によりキャンセルをした場合に限り、次にまたbackgroundWorker1_DoWorkを
呼び出した場合正常に動作しません(バックグラウンド処理が全く始まらないです)

これは何か定義を忘れているのでしょうか?情報不足な場合申し訳ないです、言っていただきたいです

ボタンをクリック→バックグランド処理→終了→ボタンをクリック→バックグランド処理→…だと正常
ボタンをクリック→バックグランド処理→バックグランド処理中にキャンセルボタンでキャンセル→ボタンをクリック→バックグランド処理(始まらない)

こんな感じです
よろしくお願いします
963963:2008/02/27(水) 03:46:40
すみません、原因がわかったと同時に問題がorz
backgroundWorker_DoWork内で主要処理を別メソッドとして書いています
つまり別メソッドなのでbackgroundWorker1.CancellationPendingを参照出来ません

DoWork内に主要処理をしっかり書くしかないというのは不便な気もしますし、しょうがないところなのかなとも思うのですが
何か対応策ないでしょうか?

設計を見直すしかないでしょうか?
964963:2008/02/27(水) 03:47:02
名前欄間違えました963=962です
965デフォルトの名無しさん:2008/02/27(水) 03:51:17
backgroundWorker_DoWork(なんだったか引数)
{
 func();
}
こんな感じでfuncに主要処理が書かれてるってこと?
966962:2008/02/27(水) 03:54:13
>>965
そうです、正確にはbackground_DoWork内で状況に応じて呼び出すメソッドを変えています
backgroundWorker_DoWork(略)
{
 switch(type)
 {
  case 1: func1();
  case 2: func2();
  case 3: func3();
   :
  default: break;
 }
}
ニュアンスとしてはこんな感じです
967デフォルトの名無しさん:2008/02/27(水) 06:52:17
backgroundWorker1(オブジェクト)とbackgroundWorker1_DoWorkとfunc1,2,3が
同じスコープにあるなら、何も問題ないと思うが

デリゲートの概念はきちんと理解してるんだろう


推測するに、かなり省略したけどこんな感じじゃないのか

class Form1 {
 BackgoundWorker bgWorker1;

 void InitializeComponent() {
  this.bgWorker1.DoWork += new 〜(this.bgWork1_DoWork);
 }

 void bgWorker1_DoWork(〜) {
  func1();
  // this.bgWorker1にアクセス出来る
 }

 void func1() {
  // this.bgWorker1にアクセス出来る
 }
}
968デフォルトの名無しさん:2008/02/27(水) 07:20:35
C#の勉強をかねて非矩形のウインドウを作ろうと思ってとりあえず形にはなったんだけど
ウインドウサイズを変更する際に目に見えて遅くなるのは実装がまずいんだろうか?
今の実装は、枠消したFormにベースとなる画像を張りつけといて
その上で、張った画像の透過部分以外を囲むGraphicsPathを書いてそれでFormをくりぬく様にしてる
969デフォルトの名無しさん:2008/02/27(水) 08:06:43
1byteをintに変換するのにはどうすればよいですか?

int ret = BitConverter.ToInt16( value,0 ) ;

見たいにやると例外で落ちてしまいました。
970デフォルトの名無しさん:2008/02/27(水) 08:10:22
キャストでええやん
971デフォルトの名無しさん:2008/02/27(水) 08:18:49
そっか普通にキャストでよかったんですね
有難う御座います
972デフォルトの名無しさん:2008/02/27(水) 09:53:42
複数のスレッドが走っている際のTcpListenerの反応が鈍くて困ってます。

・コマンド受信用のThread x1(TcpListenerでテキスト1行のコマンドを待ち受け)
・データ処理用のThread x4(数字ごにょごにょしているだけ)
Main()
{
ListenerThread();
DataConvertThread();
}

となっているのですが、データ処理用のThreadが走っている間、TcpListenerの
AcceptSocketが発生してくれません。

処理すべきデータを切り替えたりするコマンドを受信した際に、イベントを発生させ、
データ処理用のThreadを止めて新たに作り直したいのですが、処理が終わるまで
反応してくれないのです。

どうしたらいいでしょうか?
973デフォルトの名無しさん:2008/02/27(水) 10:52:39
>>972
で,実際の中身はどうなってるの?
擬似コードは全く役に立たないよ
974デフォルトの名無しさん:2008/02/27(水) 11:19:56
Dictionary<string, string[]> list = new Dictionary<string, string[]>();
キーの一覧を取りたいのですがstring[] lists = list.Keysだと暗黙の変換が出来ないと怒られるのですが
どうしたら良いのでしょうか?
975デフォルトの名無しさん:2008/02/27(水) 11:35:14
Keysの型がなんでstring[]だと思ったのかkwsk
976デフォルトの名無しさん:2008/02/27(水) 11:38:27
>>975
これでキーが取れたから(^^;

foreach (string key in list)
{
}
977デフォルトの名無しさん:2008/02/27(水) 11:49:46
MSDN で Dictionary<TKey, TValue>.Keys プロパティ調べれ
978デフォルトの名無しさん:2008/02/27(水) 11:49:59
>>974
仕方ないから教えてやるけど、次からちゃんとMSDN読めよ。
MSDNが難しかったらオブジェクトブラウザでもいいし。

string str0 = list.Keys[0]
string str1 = list.Keys[1]

要するにそのまま取り出せばいい。
一度変数に格納したい場合は

Dictionary<string,string[]>.KeyCollection keyList = list.Keys;

このように書く。
コレクションの概念とクラスと型の概念の勉強からやり直しなさい。
979デフォルトの名無しさん:2008/02/27(水) 12:07:04
>>976
foreach()で列挙可能なのは配列型だけじゃないぞ
長いことやっててその状態なら慢性勉強不足気味
そうでなくとも原因を特定できないようじゃ結構キツイ

というわけでおれもMSDNをオメヌメ
980デフォルトの名無しさん:2008/02/27(水) 12:09:33
コレクションの概念おしえてください(^^;
981デフォルトの名無しさん:2008/02/27(水) 12:20:40
>>980
MethodInvoker inv;
は引数も戻り値も取らないデリゲート

Func<int,bool>
は引数にint、戻り値にboolをとるデリゲート

これは分かるのだが、

引数にint、戻り値なしというようなジェネリックデリゲートって用意されてない?
Func<int,void>
Func<MyClass,void>

みたいなものを使いたいんだが、見つけられないんだ。
今は仕方ないからboolを返すようにして、常にtrueを返すようにしてFunc<MyClass,bool>を使ってる。
戻り値いらないから、毎回boolを返さなきゃいけないのが面倒なんだよね。
982デフォルトの名無しさん:2008/02/27(水) 12:22:17
Action
983デフォルトの名無しさん:2008/02/27(水) 12:26:06
>>982
ありがd
984デフォルトの名無しさん:2008/02/27(水) 12:26:36
俺のコレクションは美少女物が少々
だが俺に何かあったときはこっそり処分して貰いたい
985デフォルトの名無しさん:2008/02/27(水) 12:30:19
ファイナライザを実装しとけばおk
986デフォルトの名無しさん:2008/02/27(水) 12:37:54
実行してくれるGCはどうするよ
987デフォルトの名無しさん:2008/02/27(水) 12:38:11
みなさん、ありがとうございます。
MSDNも見てきました。

>> Dictionary<string,string[]>.KeyCollection keyList = list.Keys;

単にコピーするというのではなくこの行がとてもわかりやすかったです。

988981:2008/02/27(水) 13:35:22
ついでにもう一つお願い。

Public Action<int[]> TestInvoker=TestMethod;
これがあって、このデリゲートをInvokeメソッドで呼びたい。
このときInvokeメソッドの第二引数にはObject[]を渡さなければいけないそうなんだけど、

int[] param = new int[] {0,1,2};

Invoke(TestInvoker,param);
これもダメ

Invoke(TestInvoker,new Object {param});
これもダメ

実行時エラーになってまう。
エラー内容はFormatExceptionの例外で、引数が不正っぽいニュアンス。

どこがダメだかご指摘くだされ。

>>987
お礼として次スレを建ててもらえるとありがたい
989デフォルトの名無しさん:2008/02/27(水) 13:44:07
他の人、立候補よろ

>>988
立てれなかった(^^;)残念
990988:2008/02/27(水) 14:18:24
自己解決しますた。
引数の渡し方の問題じゃなくて、呼び出し先のメソッドでポカやってたみたい。
渡し方は、
Invoke(TestInvoker,new Object[] {param});
で問題ないみたいだね。失礼しました。
991デフォルトの名無しさん:2008/02/27(水) 14:18:26
new object[]{...}
object[]が要求されてるなら素直にobject[]を渡せよと。
あと共変性って言葉を調べるといい。
992988:2008/02/27(水) 14:38:21
>>991
悪いけどそんなもんは当然分かってる。

>>988
>Invoke(TestInvoker,new Object {param});

と書いているのは単に[]を付け忘れただけだ。

問題だったのは呼び出し先デリゲート内の処理の方だったし、
それは自己解決したって言ってるだろ?

自己解決したっていうレスにわざわざ突っ込み入れるなんて、
いちいち追い打ちで人を貶して優越感に浸ることしかできないのか?

993デフォルトの名無しさん:2008/02/27(水) 14:41:18
3行以上よめません><
要するに「はいはい」ってことですか><; わかりません!
994デフォルトの名無しさん:2008/02/27(水) 14:41:55
くだらねえ
995デフォルトの名無しさん:2008/02/27(水) 14:42:20
日本語が不自由すぎる
996デフォルトの名無しさん:2008/02/27(水) 15:41:01
他の掲示板で質問をすると、大抵手ひどい対応をされるわけだが、このスレの人はなんで親切揃いばっかりなのは何故だぜ?
それに対して逆ギレするとはアホすぎるw
997デフォルトの名無しさん:2008/02/27(水) 15:47:47
>>992
あなたさまはどこのおぼっちゃまですか?
998デフォルトの名無しさん:2008/02/27(水) 15:53:00
ラムダ式について質問です。

Form OwnerForm = frm1
//frm1を表示させる
OwnerForm.Invoke((Action)delegate() { OwnerForm.Show(); });

この匿名メソッドをラムダ式を使って表記したい場合どのような感じになりますか?
999デフォルトの名無しさん:2008/02/27(水) 16:34:36
OwnerForm.Invoke(new Action(() => OwnerForm.Show()));
1000デフォルトの名無しさん:2008/02/27(水) 16:40:09
>>999
ありがとう。
なるほど普通に匿名メソッドで表記した方が可読性が良いですね。
今回は匿名メソッドで表記することにします。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。