1 名前:デフォルトの名無しさん [2010/05/16(日) 23:13:52 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 前スレ C#, C♯, C#相談室 Part58 pc12.2ch.net/test/read.cgi/tech/1269261310/ Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>1-5 くらい
331 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:35:07 ] >>328 試せよ 配列なら自動的に中身が表示される
332 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 03:09:17 ] なるほど
333 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 07:37:53 ] >>329 結構使う ブレイクさせて関数への引数変えて返り血みてみたいとか 変数の値直で変えたり、デバッグ用のテストコードにすりゃいいんだろうけど、その場限りの時はつかうかなぁ
334 名前:デフォルトの名無しさん [2010/06/05(土) 07:40:06 ] 痛そう
335 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 07:59:58 ] イミディエイトウィンドウでの実行の仕方がなかなかわからなくて 結構こまってた。 インテリセンスするためだけのウィンドウだと思ってたよ・・・
336 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 10:12:47 ] >>329 あそこでバグ修正用コードとか 半分コーディングしにかかるレベル
337 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 10:51:59 ] >>333 そのあたりはクイックウォッチからもできるから。 イミディエイトウィンドウじゃないとできないことって何だろう?
338 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 12:23:40 ] object o = null; (クイック)ウォッチでやるとこんなメッセージがでる > 宣言ステートメントは、イミディエイト ウィンドウでのみ許可されています
339 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 14:13:04 ] 当たり前だっ
340 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 14:42:48 ] なにおいっているのら・・・・
341 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 15:56:08 ] プロパティでクラスを返す時読み取り専用に する方法はありますか? class a : ICloneable { int value = 0; //以下略 } class b { private a = new _a(); public a REF { get{ return _a; } set{ _a = value; } } public a CLONE { get{ return _a.Clone(); } set{ _a = value; } } } b = new obj(); b.REF = new a(); //更新をこれだけにしたい(CLONEも) b.REF.value = 5 //禁止したい b.CLONE.value = 5 //意図しない動作なので禁止したい
342 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 16:05:00 ] ない 中身を変更できないようにクラスを作る あとICloneableを重視してらっしゃるようだけど今は非推奨になってるから実装しなくていいよ
343 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 16:06:44 ] aクラスに読み取り専用のValueプロパティを作る
344 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 16:18:37 ] aを変更不可にしてしまえばいいんだが一般にはそれよりも bにpublic int AValue { get { return a.value; } }を付けた方がいい もちろん場合によるけどbを利用する側がaを知らなくて済む
345 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 16:21:36 ] >>342 , 343 ありがとう 簡単にはいかなそうですね・・。 場所によっては変更が必要なのでprivate protectedを 駆使して試して見ます てか、ICloneableが非推奨というのは驚きました。
346 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 16:24:41 ] blogs.msdn.com/b/brada/archive/2004/05/03/125427.aspx これだな Cloneとだけ書かれてもどんなコピーが返ってくるのか全くわからん。 むしろわけのわからないネーミングを助長するだけ。DeepCopyとか自分で実装してくれ。ということらしい。
347 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:03:23 ] LabelのAutosizeをtrueにした時の伸びしろを最小限に抑えることってできないのかな? labelを密に横並びに配置しているのだけれど、どうも隣と被さって文字が見えなくなってしまう。 Autosizeをfalseにして文字を限界まで詰めると隣のラベルとかぶることはなくなるけどなぜか文字が途中までしか表示されなくなるし。
348 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:14:31 ] >>347 悪いけど全体的に何をいいたいのかよくわからん。 てか「なぜか」ってそれのどこが疑問なのか意味わからんし。
349 名前:デフォルトの名無しさん [2010/06/05(土) 20:46:00 ] 久しぶりに逆襲のシャアみてたのでニュータイプになったつもりで 回答してみるとだな・・・ >>347 適当なコンテナで制御するのが一番かもね
350 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 23:12:58 ] C井の質問もここでよろしいのでしょうか。
351 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 23:17:38 ] なにそのイニシャルトーク
352 名前:デフォルトの名無しさん [2010/06/05(土) 23:21:37 ] 逆シャアって最後のところでアムロとシャアって 死んだとされてるけどMSが弾き飛ばされてる はずなのに軌道がそれるのが確定したときに 二つ何かが飛び去るシーンがあるんだよね・・・ スレチ
353 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 23:42:28 ] 二人が自由になるための作戦 死んだ事にして別人を名乗って気楽に生きていくために
354 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 00:28:16 ] 嬉し恥ずかしボーイズラブですね
355 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 02:23:22 ] >>347 たぶんそこら辺面倒なくしたければテーブルを使うのが気楽でよいよ
356 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 04:01:34 ] Datagridviewの使い方が解りません。だからラベルをチマチマ貼ってます。 マウスで綺麗に配置した積りだけど、どうも隣と被さってる気がします。 とエスパーしてみる。
357 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 07:02:30 ] ほぼ正解
358 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 09:15:18 ] >>347 TableLayoutPanelコントロールを使えばOK
359 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 12:33:22 ] 入力チェックについて相談させてください。 フォーム内に登録されているコントール全ての Validating イベントを発生させるには どうしたらよいのでしょうか? 現在、それぞれの項目の入力チェックは Validating イベントの中で処理し、 内容が正しくない場合は ErrorProvider を使用してアイコンを表示するようにしています。 このままですと一度もフォーカスを得ないままのコントロールは入力チェックがなされないままになってしまいます。 なので、登録ボタンを押下したタイミングでも全ての項目の入力チェックを行なおうと考えたのですが うまい方法が思いつきませんでした。 ContainerControl の Validate メソッドで子コントロール全てを Validate できるのかと思ってためしたのですが だめでした・・・
360 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 14:06:01 ] つValidateGroup
361 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 14:37:35 ] >>360 ValidatingGroup ですね。 ASP.NET 用ですか・・・ Windows Form では使えなさそうですね。
362 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 14:46:57 ] ContainerControl.ValidateChildrenは?
363 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 15:20:58 ] >>362 おおお! まさしくそれです ありがとうございます 実装してみたところ期待通りの動作となりました しかし・・・ なぜか自分ところの環境(VSEE2008)だと ValidateChildren がインテリセンスにもオブジェクトブラウザにも出てこない・・・ ターゲットは .NET 2.0 にしてるしビルド自体は通るから問題なさそうなんだけどなんでなんだろう
364 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 15:24:10 ] Browsable(false)属性付きだから なんでそうしてるかは.NETの中の人に聞かないといけないが
365 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 15:34:56 ] なるほど。 Form の方では Browsable(true) になっていました。 メソッドの性質を考えるとなるべく上位で使って欲しいからとかそんなとこなんでしょうかね。 重ね重ねありがとうございます。
366 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:38:40 ] やるな
367 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 17:01:44 ] ADO.NETで質問なんですが、 DataRow一行だけを編集するような画面を作る場合でも TextBoxとかComboBoxにバインドするのが一般的な作り方なんでしょうか? それとも一々内容を移しかえるやり方が一般的なんでしょうか?
368 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 17:15:30 ] たった1行でも入力項目が多ければバインドする〜
369 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 19:02:49 ] ADOは見通しが悪いよね
370 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 19:07:50 ] 手書きのADO.NETはそう悪くないんだけど ウィザード生成の型付きデータセットが意外と解り辛くて不評。
371 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:06:03 ] WebRequestでのFTPPUTはたまにリモートサーバーに接続できないエラーになるけど、 やはり、ソケットで作らないとだめなのかしら?
372 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:11:05 ] んなことはない。
373 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:18:06 ] IEのHTTP/GETだってたまにリモートサーバーに接続できないエラーになるぜ
374 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 04:51:02 ] いやそれはルータが腐ってるw
375 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 09:11:05 ] ルーターも然り、相手の環境のせいも然りってことでしょ。 いろんな環境原因も含めてHTTPやFTP、その他の通信でも失敗することはある。
376 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 12:12:39 ] FFFTPとかのいい加減枯れてるツールでも結構なるしな そう言うモンだと思って回復手段作り込むしかあんめ
377 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 12:21:13 ] タイムアウト、リトライ、リジュームあたりを実装したら、 FTPはまともな動きになるだろう。
378 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 20:51:14 ] そこまで望む場合は自分で作ればいい。 FTPなんてチョー簡単だし。(PASV実装とかチョイ面倒くさい程度)
379 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:33:36 ] >>378 .net frameworkだけで手軽に実装できるだろ。
380 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:19:51 ] Windowsアプリケーションにて、画像の上に透過的な四角い枠線(色付き)を重ねたいのですが、 どのように実装したらよいでしょうか? 宜しくお願いします。
381 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:50:40 ] >>380 Panelでできないっけ。 今もPanelあるんだっけ。
382 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:02:47 ] >>380 現状ではコントロールは親コントロールに対してしか透過してくれないんだよね。 まぁ動かしたりするんなら糞重たくなるけど、その枠が乗る範囲が対象の画像のどこにあたるかを計算してその部分の画像データを枠を描画するコントロールの背景に描画とか。 まぁサクサク動いて透過もできてってなるといっそのことDirectXやOpenGLに2次元的な描画をするしかない。
383 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:58:16 ] PictureBoxの子に枠線のPictureBoxなり追加すりゃいんでね
384 名前:デフォルトの名無しさん [2010/06/08(火) 08:05:10 ] >>383 WinFormだと透過を扱うのは面倒だよ
385 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 08:31:38 ] OnPaintの内部で好きなように描けばいい。
386 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 10:13:32 ] PictureBoxをはみ出す可能性があるなら厄介 OnPaintだったら一切コントロール使わずに重なる可能性のあるもの全部 自分で描かないといけない
387 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 10:32:26 ] どのレベルの運用なんだろう? 例えばユーザーがドラッグドロップした部分に枠を描画してそれを消したりすることが出来なければいけないなら 自分でレイヤーみたいなデータを順番に記憶してクリックされたら枠線描画して移動できるようにする とかいろいろ考えられるけど
388 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 11:33:45 ] 透明なウィンドウを重ねるのが確実 そういうの多用するんだったら努力するだけ時間の無駄だからさっさとWPFへ
389 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 23:31:04 ] FtpWebRequestのAbort忘れかも。
390 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 02:02:52 ] 枠引くくらいなら枠線用のPictureBoxなどを配置して上に置いて Regionで内側を切り出すのがほどほど楽だと思うよ。
391 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 05:21:48 ] コントロールの重ね合わせは数が増えると重くなるからスピードが必要ならDirectX
392 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 09:55:17 ] C#2.0 マルチスレッドで質問です short型の変数Aがあるとします。 メインスレッドはある変数Aを読み込むだけ サブスレッドはある変数Aを書き換えるだけ 上記のような状態で通常 書き込み時に適当なオブジェクト等を使用してロック・読み込み時もロック するような気はするんですが 仮に 両方ロックしない場合で サブスレッドで 変数Aが 0(16bit全てOFF)の値になっている時に 変数Aを65535(16bit全てON)に変更したとします。 この場合変数Aは限りなく瞬間的に全てのビットを順番にONしていくと思うのですが、 その途中にメインスレッドが読み取りを行った場合に例えば8bitだけONになったりしている状態を読み取る場合ってあるのでしょうか? ちょっと質問の仕方が微妙かもしれませんがお願いいたします。
393 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 10:18:11 ] CPU命令の最小単位考えたらわかるべ
394 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 10:21:15 ] >>392 > この場合変数Aは限りなく瞬間的に全てのビットを順番にONしていくと思うのですが、 > その途中にメインスレッドが読み取りを行った場合に例えば8bitだけONになったりしている状態を読み取る場合ってあるのでしょうか? 32bitプロセスでは32bitまでならアトミック そんなの気にするよりvolatile
395 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 22:28:13 ] >>392 download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol3_i.pdf この資料のp.258に > インテルPentium 4 プロセッサ、インテルXeon プロセッサ、P6 ファミリ・プロセッサ、 > インテルPentium プロセッサ、Intel486 プロセッサでは、キャッシュ可能メモリへのア > クセスで、バス幅、キャッシュ・ライン、ページ境界をまたがっているものは、アト > ミック操作が保証されない。 とあるので、そういう状況が起こる可能性はゼロじゃない。 本当にアトミック操作が必要な場合は、あなたの言うとおり、ロックするなりアトミック操作 命令をつかうなりする。
396 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 23:29:37 ] shortの変数がそれらをまたがる可能性があるということか
397 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 23:46:29 ] C#の場合はアライメント境界整列は保証されるとどっかで読んだ記憶が まあ将来に渡って保証されてる訳でもないだろうけどな
398 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 00:46:26 ] MSDNのInterlocked.Readとか読んでると保証されるとも取れるようなことが書いてあるよ
399 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 01:13:01 ] StructLayoutした構造体でも適用されるのだろうか・・・ マーシャリング機構が魔法を使ってくれてるかもしれないから否定しているわけじゃない。
400 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 02:10:54 ] >>392 それやると大抵は読み込むだけのスレッド側の処理は最適化で消えて読み込まなくなるから 中途半端に読み込む状態を仮定する以前の動作になるよ。
401 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 02:52:11 ] volatileぐらいわかるよバカやろう
402 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 03:34:05 ] >>392 なんでそういう事をわざわざ考えるのかよくわからないけど ReaderWriterLockつかえば解決とか言う話でもないの?
403 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 03:38:57 ] アトミックな操作が本当にそうなのかについて疑問に思ったんじゃないの? いいことだと思うよ。
404 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 06:40:13 ] なんでそうなるのかとかは知っといた方がおもしろいよね。
405 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 12:34:40 ] GCが配置する時に8バイト境界にするってどこかで見た覚えがあるんだがどこだったかな
406 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 12:42:42 ] レジスタのビット書き換えフェーズ中に割り込みか同時読み込みできる そういうすごいCPUの話じゃないの?
407 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 13:36:17 ] >>392 short型ならすべてのビットが同時に書き換えられる。1ビットずつ順番ではない。 もちろんプログラムが1ビットずつ書き換えるように作ってあれば話は別だけど、単純に A = 0; A = 65535; のように代入するだけならすべてのビットが同時に変更される。 もし中途半端な状態が発生したら、それはメモリの故障。
408 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 13:51:19 ] >>406 物理コアが複数だと、そう言い切れなかったりする 上でも何回か出ているアライメント境界の問題で、 複数回フェッチが起こる可能性があるからだ ここらはキャッシュコヒーレンシとか色々関係しててややこしい
409 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 15:08:02 ] 横レスなんだけど >>407 いろいろ読む限り仮にこれが32bitOSでLongだったら書き換えは複数回に分割されてしまうということなんだろうか?
410 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 15:28:17 ] 仕様としてはどうなっているんだ?
411 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 15:50:08 ] 5.5 変数参照の分割不能性 bool、char、byte、sbyte、short、ushort、uint、int、float の 各データ型および参照型の読み取りと書き込みは分割不可能です。 また、上記の型を基になる型に持つ列挙型の読み取りと書き込みも 分割不可能です。long、ulong、double、decimal などのその他の データ型、およびユーザー定義型の読み取りと書き込みは、分割不可能 であることが保証されていません。この目的で設計されたライブラリ関数を 除いて、インクリメントやデクリメントの場合などでの分割不可能な 読み取り/変更/書き込みは保証されていません。
412 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 19:34:34 ] >>411 CPUレベルではともかく、CLRレベルでは保証されてるってことか。
413 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 20:38:48 ] 32bit以上での実装を事実上想定しているわけだ。
414 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:36:58 ] 16ビットCPUだったらintも16ビット長じゃね? .netが16ビットでも動くかは知らんけど
415 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:41:29 ] intは32bitと決められている。
416 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:50:44 ] intが可変な言語って数えるほどしかない
417 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:52:51 ] CLRは32ビットプロセスなら32ビット境界に、64ビットプロセスなら64ビット境界に整列することを保証してる。 もちろんライアウトを変えた場合は別。 だから、少なくとも32ビット以下のプリミティブ型の読み書きはアトミック保障。
418 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:53:06 ] そういう言語では組み込み型はそのまま使わずにtypedefしてサイズを固定するという アホらしいノウハウが定着してる事実
419 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:53:57 ] ああ書き方おかしかった。 ライアウト→レイアウト。 で、そういうことやってない限りは保障されてる。
420 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:56:44 ] >>402 何のためだよw
421 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:58:16 ] つうわけで現実的には、32ビット以下ならvolatil変数、 32ビットを超えるものはlockするのが簡単。
422 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 22:09:14 ] ところでlongはvolatileにできないけど IntPtrや参照型のvolatileは64bitプロセスでどうなってるんだろう?
423 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 23:33:39 ] 64bit環境なら普通に問題ないだろ。
424 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 23:38:28 ] 64ビット環境では当然64ビットの読み書きは分割不可能。
425 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 23:47:07 ] x64とia64で違ったりしないのかな
426 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 01:13:50 ] 分割「不可能」って表現はどうなんだろうねえ。
427 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 01:19:47 ] atomicの定訳がないからねえ。「不可分」で良さそうなもんだが。
428 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 01:40:34 ] 相談室の方だしアトミックとだけ言っとけば通じるんじゃないか?
429 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 02:33:51 ] 今更このスレでアトミックや分割不可能の意味がわからん奴もいないと思うんだが・・・ まぁMSDNにもそう書いてあるんだし、そのままでいいんじゃないか? というか、やっぱPGて細かく突き詰めると深いよなぁ と改めて思う
430 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 11:50:42 ] なぁ、紐づく・紐付ける・紐づいたXX って英語でなんていうんだ? てか、紐づくの語源はどっから?
431 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 12:00:03 ] そんなの 関係する とかに置き換えたらいかんの? 語源はググってくれ