2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

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

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

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

■前スレ

ふらっとC#,C♯,C#(初心者用) Part78
http://hibari.2ch.net/test/read.cgi/tech/1312310658/

■関連スレ
C#, C♯, C#相談室 Part67
http://hibari.2ch.net/test/read.cgi/tech/1308128665/
ミスターサタンのC#相談室 
http://hibari.2ch.net/test/read.cgi/tech/1092656075/
VB.NET質問スレ(Part36)
http://hibari.2ch.net/test/read.cgi/tech/1301828549/
くだすれC++/CLI(初心者用)part2
http://hibari.2ch.net/test/read.cgi/tech/1268613679/

2 :デフォルトの名無しさん:2011/09/21(水) 21:36:10.55
■備考
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも
http://codepad.org/ ←遅い時間は重い事があります
http://ideone.com/
http://pastebin.com/ ←たまにテンポるので上の2つが混んでいる時以外はなるべく使わないで下さい
コードを貼り付けてrun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。

3 :デフォルトの名無しさん:2011/09/21(水) 21:39:02.63

codepadはC#に対応してないぞ

4 :デフォルトの名無しさん:2011/09/21(水) 22:47:32.26
そう思ってideoneしか貼らなかったのにな
おせっかいちゃん

5 :デフォルトの名無しさん:2011/09/22(木) 22:55:18.94
IEの全クッキーを削除したいのですが
どういうコードを書けば良いでしょうか?

出来れば、Windows API 的な物は使わずに .Net Framework 内の機能だけで実装したいと思います。

6 :デフォルトの名無しさん:2011/09/22(木) 22:57:44.48
XPならシステム情報からクッキーを置いてあるフォルダを調べて
ファイル削除でいいだろうけど、UAC関連でシステムフォルダに
対するアクセスが厳しくなってるアプリはどうだろう・・・

7 :デフォルトの名無しさん:2011/09/22(木) 22:57:45.47
API使わないといけないので諦めます

8 :デフォルトの名無しさん:2011/09/22(木) 23:43:45.47
なんでやねん
簡単にAPI呼び出せるやろ

9 :前スレ979:2011/09/22(木) 23:56:02.01
>>前スレ997
すいません、MouseDownの中身だけでいいので書いてもらえませんか?
ちょっとTabプロパティについてはわからないです。

10 :デフォルトの名無しさん:2011/09/23(金) 01:01:37.70
>>8
この際、全ユーザのクッキーを削除してもOKです。
嫌、寧ろクッキーをまるごと消し去るプログラムを作りたいです。

11 :デフォルトの名無しさん:2011/09/23(金) 01:04:02.59
エロい目的ならスキルアップに最適

12 :デフォルトの名無しさん:2011/09/23(金) 02:46:04.89
>>9
TabControl1_DrawItem()の
string text = tab.TabPages[e.Index].Text;
の前に
if(e.Index >= tab.TabPages.Count) return;
を入れればArgumentOutOfRangeExceptionは出なくなる
これで全部解決できるかは分からない

13 :前スレ979:2011/09/23(金) 04:51:08.08
>>12
ありがとうございます。それで解決しました

14 :デフォルトの名無しさん:2011/09/23(金) 14:11:22.55
BinaryReader.ReadInt32のstatic版みたいなものはありませんか?
一箇所だけ必要なのですが、その為だけにBinaryReaderをnewするのは無駄な気がするし
Stream.Readで読んでBitConverterで変換するのもごちゃごちゃして嫌だなぁ、と思いまして。

15 :デフォルトの名無しさん:2011/09/23(金) 14:42:11.49
いちいちそんなこと気にしてたら何も作れないでしょう
ループ内で秒間数千数万回呼ばれるようなもんでなければ
BinaryReaderのnewくらい全くどうでもいい

16 :たつろう:2011/09/23(金) 15:10:29.75
WindowsFormアプリケーションを作成しています。
そこで行き詰ってしまいました。

(1) DataGridViewのセルにImageListの画像を表示させることはできるでしょうか。
  該当セルのcolumnsのデータ型はイメージ型にしています。

(2) DataGridViewのセルにアニメーションGIFを表示させることは可能でしょうか。

すみませんが、よろしくおねがいいたします。

17 :デフォルトの名無しさん:2011/09/23(金) 15:16:06.41
起動するだけで数千だか数万のインスタンス作ってるのに今更よね

18 :デフォルトの名無しさん:2011/09/23(金) 19:52:40.40
>>13
コントロールの切り離しは最終的にユーザーの
操作が終わってからの方がいいんじゃね?
Firefoxなんかでもタブ移動できるけどユーザーの操作が
決定するまでタブは移動しないままだしな

掴んだらいきなり切り離すっていう危なっかしいのはいかがかと

19 :デフォルトの名無しさん:2011/09/23(金) 21:10:32.16
.Net Framework 上で動いている C# と VB.net ですが
いずれかの言語でしか実装(利用)出来ない機能とかってあるのでしょうか?


20 :デフォルトの名無しさん:2011/09/23(金) 21:16:03.55
ポインタ操作はC#のみ。
あとyieldもC#のみ。LINQ to XMLみたいなのをyieldのないVBで作ろうとすると死ねる。
ちょっと前まではExcel操作なんかはVBの独壇場だったけどC#4.0で差がなくなった。

21 :デフォルトの名無しさん:2011/09/23(金) 21:20:18.74
VBの言語レベルでのメリットならXMLリテラルとかクエリ構文のキーワードの多さとかか

まあある機能が言語限定って言うのはあるが
それはコードを書きやすくなるかどうかというレベルの話であって
最終的に実現可能な物に有意な差はない

22 :デフォルトの名無しさん:2011/09/23(金) 21:28:43.29
Myやフォームのデフォルトインスタンスを忘れてるぞ
On Error Resume Nextもあるし静的クラスのメンバをグローバル変数やグローバル関数のように使えるし

23 :デフォルトの名無しさん:2011/09/23(金) 22:39:54.65
3.5のラムダ式界隈だと
・VBではActionが作れない
・VBには3項演算子が無いので遅延評価の分岐が組めない
って酷い差があって、自分でクロージャ型を定義したりしないといけない

24 :デフォルトの名無しさん:2011/09/23(金) 22:50:03.46
If演算子はVB9で追加されたはずだが
SubとかステートメントとかはVB10からだけどさ

25 :デフォルトの名無しさん:2011/09/23(金) 23:09:56.51
トータルすると

C# が VB.net をリードしてる?

という判定でよいですか?

26 :デフォルトの名無しさん:2011/09/23(金) 23:14:35.57
何度も同じネタを繰り返して喜んでる奴はルーピー、でいいよ。

27 :デフォルトの名無しさん:2011/09/23(金) 23:19:22.07
元々はコンセプトが違っていてそれぞれのユーザー層のニーズに合わせていくはずだったけど
今はVBの開発チーム無くなって「C#と同じにする」方針になった

28 :デフォルトの名無しさん:2011/09/23(金) 23:20:24.81
好みでいいだろ
それにVB.net関連の機能もC#で使えるし

29 :デフォルトの名無しさん:2011/09/23(金) 23:24:59.70
>>25
良いと思う


30 :前スレ979:2011/09/23(金) 23:27:03.72
>>18
どうやってそれを実装するか、思いつかないんですよね。TabControlのD&Dも探して拾ってきたやつです
x軸とかy軸を取得してなんかがわからないんです。参考になるHPとかないでしょうか?


31 :デフォルトの名無しさん:2011/09/23(金) 23:28:50.89
>>29
サンキューC#厨

32 :デフォルトの名無しさん:2011/09/24(土) 00:55:04.84
byte a = 1;
byte b = 2;
byte c = a + b;

a + bの所でintからbyteに暗黙的に変換できないと出るのですが
intより小さい型は全てintに格上げされて演算されるという理解でいいですか?

33 :デフォルトの名無しさん:2011/09/24(土) 00:59:10.29
>>31
感謝された気がしない。。。


34 :デフォルトの名無しさん:2011/09/24(土) 01:06:03.50
>>32
そういう仕様のはず<int に格上げ。

35 :デフォルトの名無しさん:2011/09/24(土) 01:21:02.66
>>32
cだとintが一番早く実行出来る基本型だって本で読んだから、c#もそうなんじゃ無いか?


36 :デフォルトの名無しさん:2011/09/24(土) 01:22:31.38
>>32
格上げされるというよりbyte同士で四則演算できるようなってないってことじゃないの?

37 :デフォルトの名無しさん:2011/09/24(土) 01:25:50.20
>>36
流石に明治的にキャストすれば出来るだろ


38 :デフォルトの名無しさん:2011/09/24(土) 01:26:55.70
>>37
だからしてくださいねって話だろ

39 :デフォルトの名無しさん:2011/09/24(土) 01:27:47.38
格上げの話は明示しないでも勝手にやってくれる場合に言う

40 :デフォルトの名無しさん:2011/09/24(土) 01:28:26.39
バイトが格上げされて正社員になったと聞いて

41 :デフォルトの名無しさん:2011/09/24(土) 01:33:30.92
何でもいいけど、俺様用語や俺様言い回しで発言しておいて「〜だろ」とか、
俺の言った意味で理解するのが当然みたいな言い方は馬鹿っぽいしみっともない。

42 :デフォルトの名無しさん:2011/09/24(土) 01:39:34.35
個人的にはintに揃えるより2つのオペランドの大きい方の型にそろえる仕様の方が
直感的かなと思うけど、それだとshortとushortの演算のような場合には迷いが生じるのは確かだな

43 :デフォルトの名無しさん:2011/09/24(土) 01:42:44.64
>>32
ここを順に読むと疑問が解決するかと
http://www.atmarkit.co.jp/fdotnet/csharp_abc2/csabc2_007/cs2_007_01.html

44 :デフォルトの名無しさん:2011/09/24(土) 02:05:33.96
どうせ演算は32ビットか64ビットで行われるんだから、
結果がshortやbyteになる仕様ならその都度縮小しないといけないでしょわざわざオーバーフローの可能性を増やさなくても

45 :デフォルトの名無しさん:2011/09/24(土) 14:58:24.86
ストリームやSQLのクラスで、CloseとDisposeの両方があるクラスが多いと思いますが、
そのようなクラスの場合、使わなくなったら両方呼ぶべきですか?それとも片方だけでいいのでしょうか。

46 :デフォルトの名無しさん:2011/09/24(土) 15:21:44.10
>>45
http://msdn.microsoft.com/ja-jp/library/ms182334.aspx

47 :デフォルトの名無しさん:2011/09/24(土) 16:29:42.70
C#歴半年くらいなんですが、クラスの作り方とか、
コンストラクタとかインスタンスとか継承とか・・・
いわゆるオブジェクト指向な設計方法を実例を挙げて解説してる参考書でお勧めありませんか?
雑誌のバックナンバーでもいいです。
JAVAだとそういう記事をよく見かけますがC#で無いですかね?
JAVAの記事でも概念的には参考にはなるんだろうけど・・・
やっぱC#のほうが具体的なTipsも学べるからC#がいいな。

48 :デフォルトの名無しさん:2011/09/24(土) 16:43:24.78
@ITとかにあると予想
C#はデリゲートがあるせいかJavaほど語ることが無いんだよな・・・

49 :デフォルトの名無しさん:2011/09/24(土) 17:02:01.06
Javaで必要なデザインパターンがC#だと言語レベルで実装されてて必要無かったりするからね


50 :デフォルトの名無しさん:2011/09/24(土) 17:23:10.22
>>47
思い切り古い本だがこれとか?
http://www.amazon.co.jp/C-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9-%E7%9F%A2%E5%B6%8B-%E8%81%A1/dp/4897974070/ref=sr_1_1?ie=UTF8&qid=1316852287&sr=8-1

読んだことはないけど、MSDNで立ち読みできる部分と目次を見た感じでは
初心者がC#でOOPの基礎を学ぶには良さそうに思える。
http://msdn.microsoft.com/ja-jp/library/cc440970.aspx

51 :デフォルトの名無しさん:2011/09/24(土) 17:40:33.99
C#の道に入るならまずこれを読むと良い
http://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%83%95%E3%82%A7%E3%83%83%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%AB%E3%83%9E%E3%82%B9%
E3%82%BF%E3%83%BC-Visual-C-2010-MSDN%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/dp/4822294277

Java信者がおちいりがちなクラスベースのオブジェクト指向信仰の戒めが興味深い

52 :デフォルトの名無しさん:2011/09/24(土) 18:03:36.48
>>48-51
みなさん、ありがとうございます。
参考にさせて頂きます!

53 :デフォルトの名無しさん:2011/09/24(土) 18:54:46.15
URLなげーよ
http://www.amazon.co.jp/dp/4897974070
http://www.amazon.co.jp/dp/4822294277

54 :デフォルトの名無しさん:2011/09/24(土) 19:39:58.42
LinqのInsertOnSubmitってテーブルを自動的に作成してくれないのでしょうか?
ttp://d.hatena.ne.jp/griefworker/20090918/linq_create_delete_database
を参考にSystem.Data.SQLiteでやってみると例外が発生します(SQLite error no such table
DataContextのメソッドにテーブルを作成するようなものがないので自動的に作られるのだと思ったのですが。
CreateDatabaseはデータベース自体を作るメソッドのようですし
(CreateDatabaseも例外起こしますがコメントアウトしてもデータベースは作られるので一応何とかなっています
ちなみにSQLiteのコマンドでテーブルを先に作ると例外は起きません。

55 :デフォルトの名無しさん:2011/09/24(土) 19:42:06.86
>>51
URLの削り方ぐらい知っとけw

56 :デフォルトの名無しさん:2011/09/24(土) 19:47:31.46
>>54
>// テーブルも一緒に作成される
>context.CreateDatabase();
って書いてあるじゃん

一般論として通常の更新メソッドで勝手にテーブル作られたら困るでしょ

57 :デフォルトの名無しさん:2011/09/24(土) 19:57:22.56
久しぶりにLINQ to SQLやってる人見た
もう絶滅したと思ってた

58 :デフォルトの名無しさん:2011/09/24(土) 20:02:41.49
何度でも蘇るさ

59 :デフォルトの名無しさん:2011/09/24(土) 20:20:21.31
>>56
あorz
ということはCreateDatabaseで例外起こすからコメントアウトした所為ですね
"SQLite error
near "DATABASE": syntax error"という例外でイミフです…

>>57
最近データベースを使おうと思ってたどり着いたのがこれなのですけど
最近の主流はどんなやり方なのでしょうか?

60 :デフォルトの名無しさん:2011/09/24(土) 20:23:13.26
>>59
Entity Framework
つーかLINQ to SQLはSQL Server用

61 :デフォルトの名無しさん:2011/09/25(日) 00:04:26.10
デリゲートって何?

62 :デフォルトの名無しさん:2011/09/25(日) 00:05:19.69
型安全な関数ポインター。

63 :デフォルトの名無しさん:2011/09/25(日) 00:06:52.02
おなかがゆるいときにするデート

64 :デフォルトの名無しさん:2011/09/25(日) 00:13:04.53
ゲリデート…

65 :デフォルトの名無しさん:2011/09/25(日) 00:16:52.09
デリゲートゾーン

66 :デフォルトの名無しさん:2011/09/25(日) 00:47:19.00
クロコダイルを知っているか?
同じようなものだ。

67 :デフォルトの名無しさん:2011/09/25(日) 00:53:08.85
シーユーレイター、アリゲーター

68 :デフォルトの名無しさん:2011/09/25(日) 01:05:55.53
インナ・ホワイル、クロコダイル

69 :デフォルトの名無しさん:2011/09/25(日) 12:26:45.52
windowsプログラム作るのを勉強するのにいい本か何かありますか。

70 :デフォルトの名無しさん:2011/09/25(日) 13:58:46.63
ここはC#のスレだよ

71 :デフォルトの名無しさん:2011/09/25(日) 17:25:39.97
>>61
haraga \\\ iatakute
http://wisdom.sakura.ne.jp/programming/cs/cs54.html

72 :デフォルトの名無しさん:2011/09/25(日) 17:28:14.48
>>69
質問がザックリしすぎ。
上手な質問が出来る程度にまでは勉強しようぜ。
とりあえず雑誌買えば?アスキーとか日経ソフトウエアとか。
それの「今日から始める○○」みたいな記事読みなよ。
多分分からないことばかりだろうけど、何が分からないのかが見えてくる。
俺も最初は、CもC++もC#も区別が付かなかった。

73 :デフォルトの名無しさん:2011/09/25(日) 17:32:01.55
ペゾルド本薦めようかと思ったけどおまえら親切ですね

74 :デフォルトの名無しさん:2011/09/25(日) 21:52:53.55
自分でD&Dでタブ移動できるTabControlを作っているんですが、マウスのx座標とy座標から
その座標にTabPageが存在しているかどうか判別するメソッドか何かないんでしょうか?

75 :デフォルトの名無しさん:2011/09/25(日) 21:54:25.03
IntPtr.Zero と (IntPtr)0 は同じことですか?

76 :デフォルトの名無しさん:2011/09/25(日) 22:51:19.88
キャストすると方変換が生じるので意味は等価だが内容は等価ではない

77 :デフォルトの名無しさん:2011/09/25(日) 22:54:21.16
何のこっちゃ

78 :デフォルトの名無しさん:2011/09/25(日) 22:57:07.75
真っ直ぐ向かうか迂回するかくらいの違い

79 :デフォルトの名無しさん:2011/09/25(日) 23:00:50.47
定数を実行時にキャストするだと!

80 :デフォルトの名無しさん:2011/09/25(日) 23:08:27.84
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// コード サイズ 8 (0x8)
.maxstack 8
IL_0000: ldc.i4.0
IL_0001: call native int [mscorlib]System.IntPtr::op_Explicit(int32)
IL_0006: pop
IL_0007: ret
} // end of method Program::Main

ちなみにこんな感じになります

81 :デフォルトの名無しさん:2011/09/25(日) 23:10:37.23
そりゃプリミティブ型でないのに定数もクソもないわな
JIT後の扱いは知らんが

82 :デフォルトの名無しさん:2011/09/25(日) 23:29:47.95
でもこれ見るとnative intをそのままIntPtrと読み替えてるんだな
それなら実質Int32のようなプリミティブ型と扱い変わらないのにop_Explicitは必要なのね

83 :デフォルトの名無しさん:2011/09/25(日) 23:40:12.28
何言ってるのかわからん。

MSIL知らんけど、普通にSystem.IntPtr::op_Explicit(int32)というサブルーチンを
コールしてるだけに見えるけど....

84 :デフォルトの名無しさん:2011/09/26(月) 00:00:54.94
戻り値がnative intになってるだろ
コンパイラが特別に同一視してるんだよ
プリミティブ型と同格の扱いだ

85 :デフォルトの名無しさん:2011/09/26(月) 00:35:21.37
IntPtrをInt32に変換するルーチンなんだから当たり前でしょ。
本気で何言ってるのかわかんない

86 :デフォルトの名無しさん:2011/09/26(月) 00:36:36.10
C#仕様にないIntPtrをMSILの都合で追加したけど、必要以上の特別扱いはしないって事なんでしょ

ていうか言語仕様だけ見るとIntPtrはvolatileでだけ出てくる正体不明の型だな

>>85
普通の値型はvaluetypeってなるから

87 :デフォルトの名無しさん:2011/09/26(月) 01:01:11.08
>>85
native int=IntPtrと解釈されてるってこと。
native intは実行環境でのポインタと同じサイズをもつ整数で、CILの組み込み型。
Int32のようなプリミティブ型はコンパイラが特別にCILの組み込み型として扱う。

88 :デフォルトの名無しさん:2011/09/26(月) 01:03:38.61
>>86-87
ごめん、何か変なこと書いてるな俺。
疲れてるな....

89 :デフォルトの名無しさん:2011/09/26(月) 01:26:41.11
std::dequeのような先頭と末尾への挿入がO(1)になるようなコレクションってありませんでしたっけ?

90 :デフォルトの名無しさん:2011/09/26(月) 01:29:52.45
LinkedList

91 : 忍法帖【Lv=1,xxxP】 :2011/09/26(月) 01:39:55.33
どなたかご回答お願いします。
現在自作のソフトウェアで
1.「処理開始時にスリープを抑止」
2.「処理完了時にスリープ抑止を解除」
をしようとしています。

Vista・7ではSetThreadExecutionStateを使った方法で
1と2どちらも期待どおりに動作します。
しかし、XPでは1の「抑止」はできるものの、2の「抑止の解除」ができず、
OSを再起動するまでスタンバイにならなくなってしまいます。

基本的に下記のサイトの処理をコピペしています。

こちら解決策をご存じの方いらっしゃったらご教示ください。


92 : 忍法帖【Lv=1,xxxP】 :2011/09/26(月) 01:42:56.15
大事なところが抜け落ちてしまいました。
基本的に下記のサイトの処理をコピペしていて、
http://d.hatena.ne.jp/aont/20100121/1264089608
・1の時には
SetThreadExecutionState(ExecutionState.SystemRequired | ExecutionState.Continuous);
・2の時には
SetThreadExecutionState( ExecutionState.Continuous);
としています。

93 :デフォルトの名無しさん:2011/09/26(月) 01:46:48.00
>>90
すいません。
インデックスで各要素にO(1)でアクセスできる、という条件が抜けてました。

94 :デフォルトの名無しさん:2011/09/26(月) 01:49:42.34
それは無いと思う

95 :デフォルトの名無しさん:2011/09/26(月) 02:14:23.34
動的配列を配列の真ん中から始めて両端に伸ばすやつでしょ
それくらい自作すれば

96 :デフォルトの名無しさん:2011/09/26(月) 12:29:41.09
一昨日あたりからMSDNに繋がらない。なんで?

97 :デフォルトの名無しさん:2011/09/26(月) 14:38:24.58
毎時00分(3時00分とか、4時00分とか)に、ある処理を行いたいのですが、
Timerは間隔でしか指定できないので、どうやったらいいのでしょうか
UNIXのcronやタイムスケジューラようなものと考えてもらえば
分かりやすいかと思います

98 :デフォルトの名無しさん:2011/09/26(月) 15:06:33.79
タイマイベントが発生したときに何時何分かはわかるだろw

99 :デフォルトの名無しさん:2011/09/26(月) 15:19:40.56
そうです、そういう方法は考えました
しかし、たとえば1秒ごとにイベントを発生させて、時間を調べても
もし00分でなかったら、その処理は無駄なCPUを使ってることになります
だから毎時00分に呼び出してくれるような方法はないかと考えてるんです

100 :デフォルトの名無しさん:2011/09/26(月) 15:23:59.51
OSのタスクスケジューラに登録するってのは?

101 :デフォルトの名無しさん:2011/09/26(月) 15:24:21.69
>>99
試しにプログラム作って負荷みてみなよw
どんなマシンで運用するか知らんけど誤差のレベルだよ

102 :デフォルトの名無しさん:2011/09/26(月) 16:22:56.50
無駄なCPU・・・って
コンピュータの動作原理を勉強しろよ

103 :デフォルトの名無しさん:2011/09/26(月) 17:38:48.41
cronなんてcron deamonが代わりにタイマ刻んでるだけや

104 :デフォルトの名無しさん:2011/09/26(月) 17:40:57.23
   ヾ〃ゞ/ヾゝゞ'~ヾゝゞ
 ゞヾ〃ゞ- '、~         ┌┐
    _,ノノ_ヾゞ, -、ヾゝゞ| ̄・│
丿 ,.'_-ーヾゝゞヾゝゞ、...  ̄| .│
 iiii/   νゞυ   `-ヾ.  ││
 ./              ││  キリンで比較すると
 i|                ││  韓国の方がメシウマだということがわかる
 i|                ││
ii i|                ││
0)|.       ┌┐       ││
 i|     | ̄・│       ││
ii i|      ̄| .│       │└──┐
 ii|.      ││      ├┬─┐│
 ;ii|      │└─┐  ││  ││
iii0)|.     ├┬┐│  ││  ││
 iiii|.      ││││  ││  ││
 ,,_,ヽ,    ││││  ││  ││
"i´"=R─────────────
        1$=76円   1$=1192ウォン

105 :デフォルトの名無しさん:2011/09/26(月) 17:41:07.79
タイマー処理はしたいけど、待ってる間に1クロックの動作もさせたくないとか
そういう事?

106 :デフォルトの名無しさん:2011/09/26(月) 18:04:45.09
どうでもいいが、一日一回をチェックするのに一秒のタイマーはあり得ないだろ

107 :デフォルトの名無しさん:2011/09/26(月) 19:26:05.11
1時間間隔のタイマーではダメなの?

108 :デフォルトの名無しさん:2011/09/26(月) 19:49:18.53
そもそも1日一回のタイマーが、問題が起こるほどずれるとも思えん
今の時間と起動時間の差をIntervalにセットしたらOKな気もする(実験必要だが)
スリープなどが気になるならタスクスケジューラしかないが

109 :デフォルトの名無しさん:2011/09/26(月) 19:55:11.06
まあ起動時に時間取得してそこからタイマーにセットする時間を計算すれば
いいだけなんだけどな〜

110 :デフォルトの名無しさん:2011/09/26(月) 19:55:11.13
.NET Remotingというのは非同期で通信できないの?

111 :デフォルトの名無しさん:2011/09/26(月) 20:38:59.53
ラムダとかLINQとか勉強しようと前々から思ってるんですけど
実際どういう時に使うのかがわからず躊躇してます
LINQはXMLだとかSQLだとかデータ処理だと思うんですけど相変わらずSQL文ベタ書きなんですが
特にラムダは"これこれこういう処理する時はこれだよな!"みたいなのはあるんでしょうか

112 :デフォルトの名無しさん:2011/09/26(月) 20:59:49.08
在日同胞対象の移住集落建設へ

慶尚南道南海郡は26日、在日コリアンの移住者を対象にした「日本集落」の建設を推進すると明らかにした。
集落の説明会は10月5日に東京で、10月9日に大阪で開催する。

http://japanese.yonhapnews.co.kr/headline/2011/09/26/0200000000AJP20110926003100882.HTML


愛する祖国が在日の皆さんを待っています。 韓国が、在日韓国人の集落を建設することを決定。
http://hatsukari.2ch.net/test/read.cgi/news/1317035191/

愛する祖国が在日の皆さんを待っています。 韓国が、在日韓国人の集落を建設することを決定。 ★2
http://hatsukari.2ch.net/test/read.cgi/news/1317037569/

113 :デフォルトの名無しさん:2011/09/26(月) 21:12:40.92
>>110
どういうのを想像してるのか分からんけどできるよ

114 :デフォルトの名無しさん:2011/09/26(月) 21:17:47.79
>>111
LINQ使う時はラムダだよ

115 :デフォルトの名無しさん:2011/09/26(月) 22:33:37.23
このコードでちゃんと
Hoge.method()
が表示され続けるんですが、
デリゲートでメソッドを登録していれば、
ガベージコレクションの対象にはならない、というのは正しいですか?
ttp://ideone.com/KMUnH

116 :デフォルトの名無しさん:2011/09/26(月) 22:38:48.10
はい
actがhogeへの参照を持っています
イベントでメモリリークの原因になったりするので注意

117 :デフォルトの名無しさん:2011/09/26(月) 22:39:54.93
>>116
ありがとうございます。
なるほど、これはちょっと気をつけないと・・・

118 :デフォルトの名無しさん:2011/09/26(月) 22:57:08.50
>>111
まず、LINQ 全般でいうと、データベース問い合わせ以外でも、
「チェックボックスでチェック入れた項目だけ抜き出したい」とかいうときに
items.Where(x => x.IsChecked); とかやると便利。

データベースに関しては、型安全で静的チェック効くことが大事。
文字列で SQL べた書きだと実行してみるまでその SQL が正しいかわからないけど、
LINQ 使うとそれがビルド時チェックになる。

まあ、ビルド時チェックの価値がよくわからないってなら SQL べた書きでいいと思う。

119 :デフォルトの名無しさん:2011/09/26(月) 23:43:18.56
LINQの中でもOrderBy、ThenByを使ったソートは代替がないから覚えといたほうがいい

120 :デフォルトの名無しさん:2011/09/27(火) 00:12:20.44
>>113
ありがとう

121 :デフォルトの名無しさん:2011/09/27(火) 00:16:26.06
ttp://msdn.microsoft.com/ja-jp/library/bew39x2a%28v=vs.80%29.aspx
ここの
// Get the rest of the data.
client.BeginReceive(state.buffer,0,StateObject.BufferSize,0,
new AsyncCallback(ReceiveCallback), state);

これがわからないんですが、
StateObject内のBufferSizeを溢れた分はこのstateを引き継いで、

state.sb.Append(Encoding.ASCII.GetString(state.buffer,0,bytesRead));

これで継ぎ足されていくという認識で良いんですか?

122 :デフォルトの名無しさん:2011/09/27(火) 08:51:11.60
>>121
どういう認識なのかよく分からんが
bufferはBeginReceive毎の使い捨て、sbは受信結果全部ということ、
で回答になってるのかよく分からん

123 :デフォルトの名無しさん:2011/09/27(火) 10:14:53.82
DateTime.Nowプロパティで取得できる時間って、50mSまででしたっけ?
1mSまで取得するにはどうしたらいいのでしょうか?
MSDNがCGIエラーで表示されないので調べられないで困ってます。

124 :デフォルトの名無しさん:2011/09/27(火) 11:11:52.96
DateTime.Now自体は100ns単位で返ってくるけど
タイマ割り込み自体の間隔は10-15ms程度だな
ttp://d.hatena.ne.jp/NyaRuRu/20060910
この辺見てればいいよ

どうでもいいがS大文字にすると意味不明に見える
あとMSDNは一旦cookieと一時ファイル消してみれば

125 :デフォルトの名無しさん:2011/09/27(火) 11:30:44.48
Stopwatchクラス使えばDateTime.Nowよりはだいぶマシ
APIのQueryPerformanceCounterと同じ

126 :デフォルトの名無しさん:2011/09/27(火) 12:26:47.62
>>124
ありがとうございます。勉強してきます。
>>125
最終的には複数ポイントの累積経過時間(ラップタイム?)を取りたいのですが、
Stopwatchクラスって、1回1回止めないと取得できないようですが、
リスタート→加算を繰返すと誤差は生じないのでしょうか?


127 :デフォルトの名無しさん:2011/09/27(火) 12:40:49.69
コルーチンってどういうものなんでしょうか?

128 :デフォルトの名無しさん:2011/09/27(火) 12:44:09.43
>>126
もろにStopwatchの仕事じゃないか
Stop/Startで中断再開できるぞ

129 :デフォルトの名無しさん:2011/09/27(火) 12:45:47.86
>>127
通常の関数は一度実行したら最後まで実行するまで制御を戻さないが、
コルーチンは途中で止めて別の機会に中断点から再開したりできる。

130 :デフォルトの名無しさん:2011/09/27(火) 12:48:43.80
>>129
ありがとうございます。
よくわかりました。

131 :デフォルトの名無しさん:2011/09/27(火) 12:49:10.41
>>126
double timeSec = (double)Stopwatch.GetTimestamp() / Stopwatch.Frequency;

132 :131:2011/09/27(火) 12:55:47.05
doubleにしてから差を取るのはは精度的に良くないかも
long time1 = Stopwatch.GetTimestamp();
// 処理1
long time2 = Stopwatch.GetTimeStamp();
double elapsed = (double)(time2 - time1) / Stopwatch.Frequency;
こうかな

133 :デフォルトの名無しさん:2011/09/27(火) 14:03:35.21
>>124
クッキー、一時ファイル、IEのプロパティから選択できるものは全部削除してみたけど
MSDN表示できません・・・orzなんでだ・・・
>>128
RESETなんていうメソッドもあるんですね。
ということはRESETするまでは最初のスタートから時計は継続して動き続けてると言うことなんですかね。
>>131-132
GetTimeStampなんてのもあるんですね。これはストップしなくても取得できると言うことですか。

ありがとうございました。
まずMSDN復活に取り組みます・・・(~~;;;

134 :デフォルトの名無しさん:2011/09/27(火) 16:51:29.64
C#2010にてWindowsFormアプリケーションを作成しています。

ここで、Labelのフォントを「小塚ゴシック」にしたいのですが、Fontプロパティに「小塚」シリーズのフォントが出てきません。
AdobeのIllustlatorをインストールしており、PCには「小塚」シリーズのフォントが入っているはずです。
(EXCELなどのOfficeアプリケーションでは「小塚」シリーズのフォントを使用できます。)

(1)
なぜ、VS2010上で、「小塚」シリーズが出てこないのでしょうか。
フォントを追加する方法はあるのでしょうか。
(2)
この「小塚」シリーズのフォントをアプリケーションに埋め込む形で取り込み、
「小塚」シリーズのフォントが入っていないPCでも正常に表示させることができたらと思っています。

どうすれば良いのでしょうか。ご教示ください。

135 :デフォルトの名無しさん:2011/09/27(火) 17:02:36.35
OpenTypeフォントはGDI+じゃ使えないはずだが 小塚とやらがどうかは知らんけど

> この「小塚」シリーズのフォントをアプリケーションに埋め込む形で取り込み、
> 「小塚」シリーズのフォントが入っていないPCでも正常に表示させることができたら
ライセンス違反にならね?

136 :デフォルトの名無しさん:2011/09/27(火) 20:24:32.88
>>118
遅レスですが111です
>LINQ 使うとそれがビルド時チェックになる。
非常に有用だと感じます
ありがとうございました

137 :デフォルトの名無しさん:2011/09/27(火) 20:28:25.08
ならんでしょ
型付けるだけならTypedDataSetでも出来るし、LINQでも実行するまでスキーマが正しいかどうかは分からない

138 :デフォルトの名無しさん:2011/09/27(火) 21:12:15.90
Dictionaryみたいなかんじで?key=value&key2=value2の形式で取り出せるクラスがあったように思うんだけど
だれか知りませんか

139 :デフォルトの名無しさん:2011/09/27(火) 21:13:59.07
いっぱいあるからもっと具体的に

140 :デフォルトの名無しさん:2011/09/27(火) 21:21:02.23
えっ

具体的にはOAuthで使いたいです
oauth_consumer_key=1234&oauth_nonce=13345&oauth_signature=1234&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1234
みたいな文字列を得たいのですが、

hoge.Add("oauth_consumer_key", "1234");
hoge.Add("oauth_nonce", "12345");
...
string result = hoge.ToString();

といった使い方ができるクラスがあったようにおもうのです

141 :デフォルトの名無しさん:2011/09/27(火) 21:39:01.34
それ以前にOAuthのライブラリを使えば解決じゃないの?

142 :デフォルトの名無しさん:2011/09/27(火) 21:58:47.32
OAuth部分はほとんどサンプルソースからの流用でして
.netにクラスが用意されてるのならそっちに書き換えようと思った
OAuthのライブラリ使えば解決というのは


その通りです

143 :デフォルトの名無しさん:2011/09/27(火) 23:31:11.81
opencvSharp、WPFについてもこのスレでいいdすか?

144 :デフォルトの名無しさん:2011/09/27(火) 23:42:31.88
SortedList<T>の挙動がわからないんですが、
SortedList<key, value>で、UnionWithメソッドを呼び出す時、
ユニオン後にコピーされるのってkey及びvalueが共に異なる要素だけですか?

keyあるいはvalueの一方だけ同じ要素があった場合、どうなるかわかりません

145 :デフォルトの名無しさん:2011/09/27(火) 23:51:49.22
禁止ではないがWPFについては専用スレで聞くのが無難

146 :デフォルトの名無しさん:2011/09/27(火) 23:54:27.09
>>137
何のための LINQ to Entities だと…

147 :デフォルトの名無しさん:2011/09/28(水) 00:00:19.76
>>144 Unionの間違い?
SortedList<,>はIEnumerable<KeyValuePair<,>>を実装しているので
識別比較の挙動はKeyValuePair<,>の仕様に依存する。
KeyValuePair<,>はEqualsをオーバーライドしていないので、ValueTypeのEqualsの実装が使われる。
ValueType.Equalsはリフレクションを使ってすべてのフィールドの値を比較する。
基本的には、IDictionary<,>をはじめとするIEnumerable<KeyValuePair<,>>には
識別比較を行うようなクエリ演算子は使ってはいけない、でいいと思う。

148 :147:2011/09/28(水) 00:03:59.67
すまん識別比較じゃないな、等値比較の間違い

149 :デフォルトの名無しさん:2011/09/28(水) 00:11:22.86
急に作成してるアプリのMainFormまでの起動が遅くなったんだけどなんでだろう
特別そんな重くなるような処理を加えたわけではないのに

150 :デフォルトの名無しさん:2011/09/28(水) 00:32:12.94
>>147
ありがとう

151 :デフォルトの名無しさん:2011/09/28(水) 00:33:26.90
>>146
.edmxのメタデータが正しいかどうかは保証されてないだろ

152 :デフォルトの名無しさん:2011/09/28(水) 13:49:33.82
ASP.NETで以下のようなサイトをつくりたいと思ってます

ヘッダー
------------
メ|
ニ| コンテンツ
ュ|
ー|

メニューはWebユーザーコントロールを使って作ろうと思ってます。
ヘッダー、メニューとコンテンツの指定はマスタページで行って、コンテンツを子ページで作る予定です。

レイアウトの指定はどうやったらできますか?
divを使って、メニューの位置とコンテントプレイスホルダーの位置を指定すればいいでしょうか

153 :デフォルトの名無しさん:2011/09/28(水) 14:40:16.06
C#と何の関係があるんだ?

154 :デフォルトの名無しさん:2011/09/28(水) 16:54:59.06
>>152
phpとかで作った方が早いんじゃね

155 :デフォルトの名無しさん:2011/09/28(水) 17:00:02.81
>>152
その辺はC#関係ないな
htmlとかweb系の話

156 :デフォルトの名無しさん:2011/09/28(水) 17:23:38.29
webプログラミング板のASP.NETスレかなあ。ただASP叩きしかしてないけど。

157 :デフォルトの名無しさん:2011/09/28(水) 17:38:23.42
>>152
http://msdn.microsoft.com/ja-jp/library/cc671436.aspx
とりあずここを見ればいいんじゃね
違ったらすまんのう

158 :デフォルトの名無しさん:2011/09/28(水) 18:20:30.55
メニューとコンテンツを同じdivに置いてfloat left

159 :デフォルトの名無しさん:2011/09/28(水) 19:42:18.00
ああそういうことか
ほれ

/* --- コンテンツ ----------------------------------------------------------------------- */
#content {
width: 650px;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
float: left;
background-color: #ffffff;
}
/* --- メイン ----------------------------------------------------------------------- */
#main {
width: 500px;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
float: left;
background-color: #ffffff;
}
/* --- サイドナビ ----------------------------------------------------------------------- */
#sidenav {
width: 150px;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
float: left;
background-color: #ffffff;
}


160 :デフォルトの名無しさん:2011/09/28(水) 20:02:14.91
大抵floatだけどパディング指定じゃ駄目なんかね

#A{
position:relative;
padding-top:aaa;
padding-left:bbb;
}
#B{
position:absolute;
top:0;
left:0;
width:100%;
height:aaa;
}
#C{
position:absolute;
top:aaa;
left:0;
width:bbb;
}

<div id="A">
 <div id="B">ヘッダー</div>
 <div id="C">メニュー</div>
 <div id="D">コンテント</div>
</div>

161 :デフォルトの名無しさん:2011/09/28(水) 20:04:08.08
もうあと一桁レス以内で収めてくれよ

162 :デフォルトの名無しさん:2011/09/28(水) 21:14:23.91
Whileでループしてる子スレッドに、
メインスレッドから任意のメソッドを実行させたいんですが

ループ内に条件分岐つけてフィールド変数を条件にして実行させるくらいしか思いつかないんですが、
もっとスマートな方法ってありませんか?

このイベントを発生させるとこのスレッドの上で動く的な

163 :デフォルトの名無しさん:2011/09/28(水) 21:16:46.48
>>162
なんで「その」スレッドに拘る必要があるの?
何かスレッドのこと根本的に勘違いしてるんじゃないの?

164 :デフォルトの名無しさん:2011/09/28(水) 21:22:38.66
>>162
メインスレッドで他のスレッド立ち上げても次の瞬間にJoinしてたらほぼ意味が無い。
設計としては、スレッドにキューを持たせてそのキューに分岐変数をガシガシ突っ込みつつ、
スレッドは頑張って関数を処理するという感じだと思うんだが。。。

並列化したいんであれば、そういう処理を書いて、ワーカースレッドを増やすのがいいだろうね。

165 :デフォルトの名無しさん:2011/09/28(水) 21:28:55.30
>>162
待機はループ回したりしないでWaitHandle使う
.NET4ならBlockingCollection<T>使えば超簡単

166 :デフォルトの名無しさん:2011/09/28(水) 21:33:27.60
Dispatcherじゃ駄目なのか

167 :162:2011/09/28(水) 22:01:20.44
MSDN見てたら余計わからなくなってきた
整理して出直します

168 :164:2011/09/28(水) 22:03:47.06
>>166
ダメなことは全くない。
っていうか不勉強で知らなかった。申し訳ない。Orz

169 :デフォルトの名無しさん:2011/09/29(木) 10:04:33.58
物凄く基本的な質問ですいません。

C#における参照渡しは中身の場所を表し、中身をそのまま渡すのは値渡しになっていますが
http://ufcpp.net/study/csharp/oo_reference.html

C++の参照渡しは内容そのものを渡して、場所を表すのはポインタ渡しと考えてよろしいのでしょうか?
http://www.kab-studio.biz/Programing/Codian/Pointer/06.html

・C#の参照渡し=C++のポインタ渡し
・C#の値渡し=C++の参照渡し
と、いうように思えてきました。

ググっていたらちょっと混乱してきたので、すいませんがよろしくお願いします。

170 :デフォルトの名無しさん:2011/09/29(木) 10:23:52.00
C#では参照型・値型と参照渡し・値渡しは別概念
C++のポインタ付きとポインタなしが参照型と値型に大体重なる
参照渡しはC++にあった引数で(Hoge& hoge)って書く奴と大体同じ
C++だと参照&はローカル変数とかでも使えたがC#では引数のref/out限定

171 :デフォルトの名無しさん:2011/09/29(木) 10:26:54.64
>>169
C#で参照型を引数に渡すのは参照渡しじゃないよ。上のサイトにも参照渡しとは書いてないだろ。
変数の場所を渡すのがC#やC++でいう参照渡し。
変数の中身をコピーして渡すのがC#やC++でいう値渡し。
で、値型と参照型の違いは、値型は変数の中身そのものがオブジェクトなのに対して
参照型はヒープ上にあるオブジェクトの識別番号(ハンドル)が変数の中身になる。

172 :デフォルトの名無しさん:2011/09/29(木) 11:35:29.54
>>170-171
ああっ、参照型と参照渡しは全くの別物なのですか。
ところどころ「参照」「ポインタ」とだけ出てくるので混乱していました。
・変数のアドレスを渡す:参照渡し(参照型=アドレス=ポインタの位置のコピー)
・変数の中身を渡す:ポインタ渡し(ポインタが指定した場所の値を渡す)=値型の渡し
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1320144958
で、大体良いのですね。
ありがとうございました。


>C++ の参照型(&がつくやつ)は、本当に参照です。
>元の値をそっくりそのまま渡すというのが一番しっくりくるイメージです。まさに「参照」。
>#実際は、ポインタの特殊系と言うべき代物ですがw<怒られそうだw
>ちなみに、.NET の参照型と、Native C++ の参照型は、日本語にすれば同じですけど、意味(実装)はまったく違いますw
>#で、こういうこと言うと知らない人は頭抱えてしまうんだwww

>まず、C++でいうと、関数呼び出し時の渡し方って3パターンなることになってる(コーディングスタイル上)。
>・値渡し
>・ポインタ渡し
>・参照渡し
>で、イメージで言うと黒龍さんの言う通り、値渡しとポインタ渡しは結局はものをコピーで渡しているので、「渡し方」において違いはない。
>でも、参照渡しはそれでは説明がつかないので、私の場合は「同じ領域に別名がつくんだよ」と説明します。
http://blogs.wankuma.com/kokuryu/archive/2007/07/25/87015.aspx

173 :デフォルトの名無しさん:2011/09/29(木) 11:56:16.89
ポインタと考えるからややこしくなるんだよ。
参照型の変数にはオブジェクトのIDが入っている。渡すときにはその値が渡る。それだけ。

174 :デフォルトの名無しさん:2011/09/29(木) 14:22:50.58
クリックしたつもりがダブルクリックになった時にウインドウが切り離されてしまい困ってます
ソースのタブのフローティングを切る設定はどこですればいいですか?

175 :デフォルトの名無しさん:2011/09/29(木) 15:17:17.26
値型・参照型の話になると、すぐC++やCと比較して説明する奴多いけど、
余計ややこしいだけだなwww

176 :デフォルトの名無しさん:2011/09/29(木) 15:24:41.20
まあ質問がそういう感じだったからな
C#やるならC++の記憶は消した方が楽かもね

177 :169:2011/09/29(木) 15:51:41.42
すいません、ちょっとC++のライブラリを使うことになったので、
ポインタ渡しを直接使えるかC++/CLIでクロスライブラリを作るか考えてみたとこだったんです

178 :デフォルトの名無しさん:2011/09/29(木) 15:57:42.58
横槍ですまんが

>参照型はヒープ上にあるオブジェクトの識別番号(ハンドル)が変数の中身になる。
って事実上は参照渡しじゃないの?
アドレスじゃないから厳密には違うんだろうけど

179 :デフォルトの名無しさん:2011/09/29(木) 16:04:11.34
参照渡しというのはC#において別機能として存在してるのでその表現は不正

180 :デフォルトの名無しさん:2011/09/29(木) 16:06:47.83
無理やり「○○言語で言うところの●●」と考えるの止めようよ

181 :デフォルトの名無しさん:2011/09/29(木) 18:27:29.97
>>178
ポインタや参照渡しの引数が指してるのは場所。
.netのハンドルが指してるのは場所じゃなくてオブジェクトそのもの。全然違う。

182 :デフォルトの名無しさん:2011/09/29(木) 21:48:25.42
用語がめちゃくちゃw

183 :デフォルトの名無しさん:2011/09/29(木) 21:53:18.82
オブジェクト参照のトラッキングハンドルの値渡しとでも言って欲しいのか?

184 :デフォルトの名無しさん:2011/09/29(木) 22:06:16.83
ref StringはString^%だからStringオブジェクトのハンドルの追跡参照の値渡しになるのかな

185 :デフォルトの名無しさん:2011/09/29(木) 22:44:41.27
>>172
C++で、「ポインター変数の参照渡し」って言われてちゃんと理解できる?

186 :デフォルトの名無しさん:2011/09/29(木) 22:45:48.55
>>169
http://ufcpp.net/study/csharp/sp_ref.html
こっちも合わせて読んで。
図を特に。

187 :デフォルトの名無しさん:2011/09/29(木) 22:50:55.56
>>185
C++には参照はあるけど参照渡しなんて用語はないでしょ。
何が「ちゃんと理解できる?」だよ。
後ろ向きに鏡指差してるAA貼られるぞw

188 :デフォルトの名無しさん:2011/09/29(木) 22:52:35.76
暇だから以下のようなコードを書いてみた。ポインタ変数の参照渡し。
あくまでジョークだからな。

#include <iostream>

void f(int *(&p)){
    *p = 100;
}

int main(){
    int i=0;
    int *p = &i;

    f(p);

    return 0;
}

189 :デフォルトの名無しさん:2011/09/29(木) 23:00:26.91
>>187
それはでも、「C++ には抽象メソッドはない」(やってることは純粋仮想関数と一緒)という程度の話では。

190 : ◆QZaw55cn4c :2011/09/29(木) 23:05:00.20
>>188
ジョークどころか、わりあいに書きやすい印象を受けました。二重ポインタよりも受け入れやすい、と考える人もいるかも。
http://hibari.2ch.net/test/read.cgi/tech/1277860967/504
http://codepad.org/nHqWWH51

191 :デフォルトの名無しさん:2011/09/29(木) 23:10:15.48
>>190
C++、書きやすいのは確実に参照渡しの方だけど、
呼び出し側が値渡し(& なし)と区別つかないから、
呼び出し側が気づかずに関数内で値書き換わって嫌だって話も多々ある。
それが結局、関数の引数に参照使わない文化生んでた。

192 :デフォルトの名無しさん:2011/09/29(木) 23:10:41.14
もうC++のことは忘れろよ

193 :デフォルトの名無しさん:2011/09/29(木) 23:14:24.28
>>191
呼び出し側が気づかない、っていうのは普通はないでしょ。
そんなことが起こるとしたら、関数の命名もしくは仕様そのものが腐ってる場合だけ。

194 :デフォルトの名無しさん:2011/09/29(木) 23:16:03.53
っていうか、参照で渡すことを「参照渡し」って言うか?
聞いたことないけど

195 :188:2011/09/29(木) 23:18:48.94
>>190
あらあらあら、実用してる人いるのか。へぇー。

書き換えないときは参照で書き換えるときはポインタ。っていう感じでしか考えたこと無いな。
まー、引数でやってきたポインタを書き換えるのあんまりスキじゃないのだけどね。

196 : ◆QZaw55cn4c :2011/09/29(木) 23:49:12.35
>>191
んー、値渡しの対象がオブジェクトだったりすると、コンストラクタが裏でうごめくのが嫌、というのと、でもポインタを渡すのも嫌、というのとで
int &f(const someclass &a, const someclass &b);
というなんだかよくわからない(わけでもないけれども)やりかたがスタンダードなんですね。最近知りました。

197 :デフォルトの名無しさん:2011/09/30(金) 00:59:25.29
>>194
C++では変数参照をポインタの値のように扱えるから事情が複雑だけど
参照渡しはごく一般的な言葉だろ
VBのByRefとかまんま

198 :デフォルトの名無しさん:2011/09/30(金) 05:15:03.06
>>193
ライブラリ使う側はほんと底辺だと思って作ったうえで、
さらにその斜め下をいかれるものよ。

でなきゃ、気づかないなんて心配しない。

199 :デフォルトの名無しさん:2011/09/30(金) 05:17:53.19
>>196
そうそう、const 付きなら何の問題もない。

それはそれで、const に対応するようにクラス書くのが大変なんだけど。

あと、その const& な引数を COM Interop とかで C# から見ると、
ref だらけになって悲惨なことに。

200 :デフォルトの名無しさん:2011/09/30(金) 21:52:55.16
VB2005の本を5冊くらい読んで結構理解したつもりの人が
C#を勉強するのにお勧めの本は何?

201 :デフォルトの名無しさん:2011/09/30(金) 22:16:15.76
VB.NETを完全に理解しているなら勉強する必要なし
MSDNを見ながらいきなり作れるはず

202 :デフォルトの名無しさん:2011/09/30(金) 22:27:46.68
まっさらな人がC#理解するよりハードル上げたね
ご愁傷様

203 :デフォルトの名無しさん:2011/09/30(金) 22:42:38.88
細かい文法の違いと、VBにあってC#に無い機能(=VBでも使ってはいけない機能)を知るだけだな
本とかいらん

204 :デフォルトの名無しさん:2011/09/30(金) 22:53:12.49
C++とかJava、phpなんかのC言語系ランゲージ触っているなら大丈夫だけど
VBのみだとどんなもんなのかな?

205 :デフォルトの名無しさん:2011/09/30(金) 23:10:55.21
BUILDのアンダースのセッション面白かったな
一応C#とVBの新機能の紹介のはずなのにVB完全無視どころかdisってた

206 :デフォルトの名無しさん:2011/09/30(金) 23:13:20.34
http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-816T
なんか老けたなw

207 :デフォルトの名無しさん:2011/09/30(金) 23:19:00.38
LINQ to Objects好きでとにかく使いまくるんだけど、なぜか急にパフォーマンスが気になった。
例えば↓みたいなLINQと2重ループで地道に探すロジックとどっちが処理早いんでしょう?

var ret =
from a in hogeAList
join b in hogeBList on a.Id == b.Id
select a.Name

208 :デフォルトの名無しさん:2011/09/30(金) 23:19:40.07
2重ループに決まってるでしょう

209 :デフォルトの名無しさん:2011/09/30(金) 23:20:24.90
C#がいくら進化したって要件がいつまでも2.0だもんげ

210 :デフォルトの名無しさん:2011/09/30(金) 23:25:48.91
>>207
1・2割、LINQ の方が遅い。

けども、ループで回す方が早いからって、一時配列作ってそれにコピーを作ったりしたら、
今度はメモリ効率悪くなるし、データ量多いと性能も落とす。

211 :デフォルトの名無しさん:2011/09/30(金) 23:26:17.17
繰り返し頻繁に呼ぶ処理ならループとLINQとか小手先の最適化じゃなくて
ToLookup使うとか考えるべき

212 :デフォルトの名無しさん:2011/09/30(金) 23:36:08.03
>>207
俺の感覚ではほとんど変わらないと思うけど
微妙に興味があるんで実際に測ってみてくれ

213 :デフォルトの名無しさん:2011/09/30(金) 23:43:58.23
やっぱりLINQのほうが遅いのか。
でも>>210の言うようにループだと、結果を溜めるための一時配列が必要なんですよね。
結局はLINQは万能ではなく場合によって使い分けろということですか。

だがFindAllメソッドだけはクソ便利すぎるのでどんな時でも使うのをやめない!
JavaもLINQパクって標準仕様にすればいいのに。

214 :デフォルトの名無しさん:2011/09/30(金) 23:44:08.68
ASP.netとか巨大アプリじゃない限り
メモリ効率や速度より読みやすさが一番大事だったりするよな

215 :デフォルトの名無しさん:2011/09/30(金) 23:50:22.69
FindAllってLINQ導入で要らなくなってSilverlightで削除された遺物だよ

216 :デフォルトの名無しさん:2011/09/30(金) 23:54:41.77
>>215
へ?
Listクラスからなくなったことですか?

217 :デフォルトの名無しさん:2011/10/01(土) 00:11:12.77
Silverlightは必要な機能までごっそり削除してるから比較にならん

218 :デフォルトの名無しさん:2011/10/01(土) 00:15:15.23
設計ミスだから削除したっていうのもあるよ
ICloneableとか

219 :デフォルトの名無しさん:2011/10/01(土) 00:48:47.34
オブジェクトのコピーはJavaでも失敗機能の槍玉に挙がってるが
どう設計するのが正しかったんだろうか

220 :デフォルトの名無しさん:2011/10/01(土) 00:50:04.52
コンストラクタに渡すのが正解

221 :デフォルトの名無しさん:2011/10/01(土) 00:53:12.46
>>212
1000件のリスト2つでの結果。Stopwatchクラスで計測。
LINQ:00:00:00.0002997
ループ:00:00:10.4558394

LINQのほうが圧倒的に早いんだけど、何か間違ってるのかな・・・。

必要ならソースはりますが。

222 :デフォルトの名無しさん:2011/10/01(土) 00:58:32.82
>>221
LINQの方、多分クエリ作っただけでクエリを実行してないだろ

223 :デフォルトの名無しさん:2011/10/01(土) 01:13:55.71
>>222
うあ。その通りです。しにたい。
LINQの結果のToList()メソッド呼べばクエリ実行されますよね?
でもLINQのほうが早い。謎です。

LINQ:00:00:00.0027321
ループ:00:00:00.1062660


224 :デフォルトの名無しさん:2011/10/01(土) 01:18:26.81
Joinは辞書使って二重ループにならないようにしてる

要するに馬鹿の考え休むに似たり、ある物はどんどん使うべきということだな

225 :デフォルトの名無しさん:2011/10/01(土) 01:25:11.87
なんか変だと思ったら a.Id equals b.Id だろ
それなら最適化されるのはわかる
==と普通の式みたいに書いてあると素直にラムダ式に変換されてしまって最適化されなそうに見える

226 :デフォルトの名無しさん:2011/10/01(土) 01:29:49.35
>>224
へ〜。なるほど。ありがとうございます。
>>208,210は嘘ってことですか。
やっと寝れる。

227 :デフォルトの名無しさん:2011/10/01(土) 01:31:46.91
>>225
あ、そうです。equalsです。
勢いで書いたので == って書いちゃった。

なんかぐだぐだになってすみません。

228 :デフォルトの名無しさん:2011/10/01(土) 16:27:38.10
>>226
嘘じゃあなくてさ、Joinのやっているようなことをちゃんと再現すれば、
余計なオーバーヘッドがなくて速い。
でも、ちゃんと色々考慮して正しく書ける人って存外少ないんだろうね、
だから、色々考慮してメソッド化されたLINQ to Objectsを使うのが大体正しい。

229 :デフォルトの名無しさん:2011/10/01(土) 16:33:09.73
このスレIDが出ると面白いのにな
同一人物が連投してるだろう

230 :デフォルトの名無しさん:2011/10/01(土) 16:37:22.78
>>228
ちゃんと色々考慮したものとLINQを実際に測定してみてくれ

231 :デフォルトの名無しさん:2011/10/01(土) 17:36:01.67
>>230
http://ideone.com/HkAaw
先行が若干不利なので正しく計るならもっと丁寧にやらなきゃだけど。
あと、結局、要になるのはToLookupなのでそこも自前で書けば、だけどまぁ面倒なので。

232 :デフォルトの名無しさん:2011/10/01(土) 18:20:16.93

つか両方とも十分な速さだから、これが律速になることは無さそうですね・・・

233 :デフォルトの名無しさん:2011/10/01(土) 18:22:21.62
IDなら一意だろうからLookupよりDictionaryの方が速いんじゃないの

234 :デフォルトの名無しさん:2011/10/01(土) 20:06:19.64
あるスレッドが終了の指示がくるまで
whileし続けるありふれた挙動をさせたいとき、
bool is_thread_must_running = true;
と用意して
while(is_thread_must_running)
{
}
というスレッドを外部からis_thread_must_running = false
で終了させるコードをネットで見つけましたが、
単一の変数への読み出しのみ、
書き出しのみはアトミックであると保障されていますか?
(javaはたしかそうだったような気がしますが)

また、is_thread_must_running はここを見る限り、
http://msdn.microsoft.com/ja-jp/library/x13ttww7.aspx
volatile にすべきですよね?

235 :デフォルトの名無しさん:2011/10/01(土) 20:21:04.88
参照型と32ビット未満のサイズのプリミティブ型の変数の読み出しと書き込みはアトミック
volatileは必要

236 :235:2011/10/01(土) 20:21:54.60
32ビット以下に訂正

237 :デフォルトの名無しさん:2011/10/01(土) 20:25:18.95
>>235-236
なるほど、ありがとうございました!

238 :デフォルトの名無しさん:2011/10/01(土) 20:51:45.29
Javaのcomparaterに該当するメソッドってなに?

239 :デフォルトの名無しさん:2011/10/01(土) 20:54:46.51
IComparer<T>インターフェイスかComparison<T>デリゲート

240 :デフォルトの名無しさん:2011/10/01(土) 22:36:28.75
非同期ソケット通信でタイムアウトを実装したいんですが
Timerなんかで定期的に監視して、指定の時間経ったらSocket.shutdown()とClose()したら良いんですかね
それとも同期ソケットを別のスレッドで実行する形が定石なんでしょうか

241 :デフォルトの名無しさん:2011/10/01(土) 23:42:45.25
後者だろうなー

242 :デフォルトの名無しさん:2011/10/02(日) 19:47:52.17
namespace N1 { namespace N2 { class C {} } }

という名前空間の中のクラスを、N1だけ省略して N2.C と書いて使いたいです。
ソースコードの先頭に using N1; を書いたのですが、ダメでした。
完全に N1.N2.C と書くか、using N1.N2; として C と書くしかないですか?

243 :デフォルトの名無しさん:2011/10/02(日) 19:56:29.29
using n2 = n1.n2;

244 :デフォルトの名無しさん:2011/10/03(月) 00:05:43.24
ランダムで+1か−1を返すメソッドってない?

245 :デフォルトの名無しさん:2011/10/03(月) 00:09:01.36
>>244
ランダムで数値作って奇数は-1偶数は+1とかやれば?

246 :デフォルトの名無しさん:2011/10/03(月) 00:11:21.11
random.Next(2) == 0 ? -1 : 1とか
スクリプト言語っぽく(new[]{-1,1})[random.Next(2)]とか

247 :デフォルトの名無しさん:2011/10/03(月) 00:17:03.93
>>246
==0と!=0は半々の確率なの?

248 :デフォルトの名無しさん:2011/10/03(月) 00:20:54.68
引数が2なら0か1の一様分布

249 :デフォルトの名無しさん:2011/10/03(月) 01:09:11.50
>>240 ttp://hibari.2ch.net/test/read.cgi/tech/1293284816/540
の人?まだ困ってたんだw


250 :デフォルトの名無しさん:2011/10/03(月) 18:51:44.80
EventArgsオブジェクトとかのイベントオブジェクトあるじゃん
たとえば、イベントオブジェクトを大量に発行するプログラム(ゲームとか)動かすときにメモリ使いすぎてボトルネックになるってことはないの?
メモリ食って動きが鈍くなるとか、ガベージコレクションが頻繁に起こって動きがカクカクするとかしないのかな?




251 :デフォルトの名無しさん:2011/10/03(月) 19:12:05.75
そういうオブジェクトは一瞬で不要になるので0世代GCで回収される
第0世代のGCは頻繁に動くけど非常に高速
重いのは中途半端に長生きするオブジェクトが引き起こす上の世代のGC

252 :デフォルトの名無しさん:2011/10/03(月) 19:45:02.09
へ〜 知らんかった


253 :デフォルトの名無しさん:2011/10/03(月) 20:43:15.87
Visual Studio 2008 にて、Click Once マニフェストを使用して、
Windows Form アプリケーションを配布していました。
その際、必須コンポーネントに
Visual Vasic Power Packs 1.2
を加えていました。

そして、Visual Studio 2010 が登場し、
そのアプリケーションもVS2010用に変換して改修を行っていたのですが、
いざClick Once マニフェストで発行しようとすると、
必須コンポーネントに
Visual Vasic Power Packs 1.2
がなく、
Visual Vasic Power Packs 10.0
しか列挙されていません。

これだと、ユーザがClick Once マニフェストの利点を享受できず、
結局、サイトからVisual Vasic Power Packs 10.0
を落としてもらうしかなくなってしまいます。

この回避方法はありますでしょうか。
VS2010でも、VS2008時代の
Visual Vasic Power Packs 1.2
をコンポーネントに加えることはできないのでしょうか。

よろしくお願いします。

254 :デフォルトの名無しさん:2011/10/03(月) 20:48:58.77
VV.Net

255 :デフォルトの名無しさん:2011/10/03(月) 20:50:45.23
ハートも.netで動いてるのか。
ミッションクリティカルすぎて怖いんだが。

256 :デフォルトの名無しさん:2011/10/03(月) 20:54:10.31
>>255さん
>>253ですが、やはりVS2008で開発したものはVS2008を使用し続ける方がよいのでしょうか…。

257 :デフォルトの名無しさん:2011/10/03(月) 21:04:15.30
その結果が今のVB6

258 :255:2011/10/03(月) 21:07:26.57
>>256
ボケが通じないとはヤルナ!!というのは置いておいて。

有る考え方だが、
開発スイートってお作法が有るわけよ。バージョン変わるとお作法も変わるわけだ。
それをよしとするならバージョンアップすればいいと思うし、嫌ならそのまま使うしか無い。
しかし、古いお作法はどこかで淘汰されるので適度に切り替える必要はあるが、君にとって今はその時かな?
どうだい??

っていう詭弁・・・。

正直、クリックワンスを発行したことが無いのでわからん。
ただ、プロジェクトの開発環境をアップデートするなら、根本から治すくらいでやらないと割りに合わないと思う。
小手先でやるなら、保守大変だよ。

259 :デフォルトの名無しさん:2011/10/03(月) 21:20:07.25
>>258さん
ありがとうございます。
何とか、Power Packs 1.2 をVS2010に連れてきたかったのですが、
Microsoft社は、それを許してくれないのでしょうか…。

ただ、おっしゃるとおり、新しいバージョンと世代交代して衰退するバージョンを
いつまでも抱きかかえても、いずれ行き止まりがくるでしょうね。

260 :255:2011/10/03(月) 21:36:57.73
軽く検索した感じだとこのへんかな??
ttp://msdn.microsoft.com/ja-jp/library/ms165429(v=VS.100).aspx

俺、ド素人だから外してるかもしれんけど。

261 :デフォルトの名無しさん:2011/10/03(月) 22:29:29.63
静的な型ってcでいうポインタ変数の型、動的な型は実態の型みたいな認識でおk?

262 :デフォルトの名無しさん:2011/10/03(月) 22:36:54.15
静的ってstaticのことじゃないの?
動的な型はヒープに確保される型じゃないの?C#だとClass型??

263 :デフォルトの名無しさん:2011/10/03(月) 22:36:54.88
2010で「リソースの追加と編集」の使い方についてですが・・・
リソースとしてZIPを登録してみました。
そのZIPの取り出しをしたいのですが・・・ネット上に圧縮ファイルの取り出しなんかやっている人はいないですね・・・

リソースファイルを取り出して指定した場所にコピーする方法はありますか?

264 :デフォルトの名無しさん:2011/10/03(月) 22:38:18.26
>>263
プロパティでバイト配列だったか、ストリームがとれたと思うのでそれをコピーするっていう話かな?

265 :デフォルトの名無しさん:2011/10/03(月) 22:45:46.90
ココらへんかな??
ttp://dobon.net/vb/dotnet/programing/vsresource.html

266 :261:2011/10/03(月) 23:11:40.59
>>262
解決した、ここでいう静的てのはインスタンスの入れ物を指すみたい
動的ってのは262のいったとおり
説明不足だったwエスパーさんくす

267 :デフォルトの名無しさん:2011/10/03(月) 23:32:53.44
大昔、スタティックはプログラムをロードしたメモリー上とかに確保されていたこともあったけど
今はヒープに確保されるけどね

268 :デフォルトの名無しさん:2011/10/04(火) 01:46:48.53
Thread.Sleep(5)入れただけでぴたっとソケットエラー出なくなった
いままで悩んでたのがあほらしくなった

269 :デフォルトの名無しさん:2011/10/04(火) 09:16:45.43
>>268
なにそれ

270 :デフォルトの名無しさん:2011/10/04(火) 18:22:51.54
iTextSharpを使えばPDFファイルに書き込んだり1からPDFファイルを作ったり出来ますが、
既存のPrintDocumentをPDFに出力することはできませんか?
出来れば無償で。

271 :デフォルトの名無しさん:2011/10/04(火) 18:33:00.02
PrintDocumentで何にプリントするかはユーザーが判断する部分だと思うけど…
出力をPDF出力したければPDFプリンタ入れるだろ

素直にPDFとして保存するでいいじゃねえか

272 :デフォルトの名無しさん:2011/10/04(火) 19:12:43.92
WindowsFormアプリケーションを作成しておりますが、
下記のアクションを経た時にエラーとなってしまいます。

@ メインフォームから、モーダルで別のフォーム(フォームA)を呼ぶ
A フォームAが前面に立ち上がっている状態で、フォームA内にコードを記述しテキストファイルの読み込みを行う
B テキストファイルの読み込みが終わった時点で、フォームA内のコードでフォームAをCloseする
C メインフォームにてフォームAのDisposeを行う。ここで次のようなエラーが出ます。
  ↓
「コレクションは変更されました。列挙操作は実行されない可能性があります。」

上記のエラーについてGoogleで検索しましたが、
Foreach文で回しているときに起こりうるエラーであると記述しているサイトを多く見かけました。
しかし、メインフォームでもフォームAでも Foreach文 は使用していません。

なぜDispose時にエラーとなってしまうのでしょうか。
ご存知の方、教えてください。よろしくお願いします。

273 :デフォルトの名無しさん:2011/10/04(火) 19:17:01.93
>>272ですが(連投すみません)、
VS2008で動作していた頃からこのロジックの部分を変更していないのですが、
CS2010に変換してから起きるようになりました。
コンポーネントの問題もあるのかなと感じてもいます。


274 :デフォルトの名無しさん:2011/10/04(火) 20:07:34.91
>>271
現在印刷出来る帳票を特定の場所にボタン一つで保存したい

PDFプリンタだとダイアログが出てそのフォルダまで自分で移動しないといけない。
また、それがAcrobatのようなものなら、たぶんAPIが公開されてるので
細かい指定も出来るだろうけど、安っぽいやつだとそこまで出来ない。

iTextSharp.NETを使えばPDFを作成して書き込むことが出来るけど、
現在ある帳票をiTextSharp用に作り直さないといけない。
そして、新規帳票も2種類作らないといけない。

じゃ、PrintDocumentからPDF出力する方法があればいいんじゃね?

という流れで上の質問に行き着きました。

Accessの時は標準の機能でPDF化が出来たのですが、Accessには戻りたくない・・・。

275 :デフォルトの名無しさん:2011/10/04(火) 20:22:23.94
>>264
>>265
ありがとうございます。
とりあえず動くものは出来ました。でも、開発環境と別マシンでテストしたら
「UnauthorizedAccessExceptionは、ハンドルされませんでした。」
と蹴られました。
ソースはこんなソース
Byte[] data = Properties.Resources.Z;

using (System.IO.Stream srm = System.IO.File.Open(@"D:\\Z.zip", System.IO.FileMode.Create) )


276 :デフォルトの名無しさん:2011/10/04(火) 20:24:04.73
まずDに書き込む権限あるんかい

277 :デフォルトの名無しさん:2011/10/04(火) 20:25:49.27
>>275
他のマシンでプログラムに読み込み権限か書き込み権限がない、または両方だとおもう。

278 :デフォルトの名無しさん:2011/10/04(火) 20:34:04.95
>>276
>>277
早速ありがとうございます。
お二方に頂いている内容は、プログラムを動かしているOSのドライブの
フォルダにそもそも権限が無いのではないか?
という意味で捉えてよろしいでしょうか?

ドライブのプロパティを確認したのですが、フルコントロール状態にしてみても
同じエラー出ました・・・

仮に権限がない場合は、プログラムで対策しなくてはいけないのですか?



279 :デフォルトの名無しさん:2011/10/04(火) 21:27:22.46
>>272です。、
ご存知の方、教えていただけないでしょうか(>_<)。

280 :デフォルトの名無しさん:2011/10/04(火) 21:48:49.95
>>279
問題が再現できるコードをイデオンに貼らないのは何故?
例外と関係あるかどうか不明なプログラムの動作を書いても意味ないでしょ。
世の中にエスパーは存在しないこと分かってる?

281 :デフォルトの名無しさん:2011/10/04(火) 21:51:53.94
>>279
フォームをCloseしたらDisposeしなくていいんだけどな
Disposeメソッドとかで余計なことしてるんじゃない?
関係なかったらごめんね

282 :デフォルトの名無しさん:2011/10/04(火) 21:54:04.77
>>279
デバッグの仕方は分かるけど原因は分からんな

とりあえず例外の型(InvalidOperationException?)を調べて、エラーの出る直前までデバッグで実行
そしたら「デバッグ」の「例外」でCLR例外かから問題の型を探して「スローされるとき」にチェック
んで例外を発生させて、呼び出し履歴をチェックすればどのインスタンスが問題なのか分かるはず
どう直すべきかは判断できないので自分で考えて

283 :デフォルトの名無しさん:2011/10/05(水) 00:56:09.59
passという配列にリソースファイルのファイル名(mona.jpg)が入っており、
それをpictureBox1に表示させたいのですが、下記のように記述してみたもののエラーが出ます。
どのように記述すれば良いのかご指導頂けませんでしょうか?

pictureBox1.Image = pass[0];

型 'object' を 'System.Drawing.Image' に暗黙的に変換できません。
明示的な変換が存在します。(cast が不足していないかどうかを確認してください)

284 :デフォルトの名無しさん:2011/10/05(水) 00:56:49.39
ttp://journal.mycom.co.jp/articles/2008/06/23/sharpmap/index.html
地図表示をさせようと上記のサイトを参考に作りました
2ページ目の中央黒色のプログラムを書き、デバッグは通ったのですが
フォームに地図が表示されません
Visual C# 2008を使用しています
よろしくおねがいします

285 :デフォルトの名無しさん:2011/10/05(水) 02:17:04.14
地図ファイルは用意した?

286 :デフォルトの名無しさん:2011/10/05(水) 02:30:25.06
>>283
>pass[0];
配列なのはわかるけど何の配列なのよ
Bitmap?

287 :284:2011/10/05(水) 02:32:27.82
お返事ありがとうございます。
ページに書いてあるサンプル「みんなの地球地図プロジェクト」から
「bnda.zip」と「hydrol.zip」を入手しました。

プロジェクトのShapeFilesフォルダに配置すると書いてありますが
ソリューションエクスプローラーに「ShapeFiles」フォルダーを作り
デスクトップに解凍したbnda.zipとhydrol.zipの中身をドラッグ&ドロップで
持っていったのですがこの方法で合ってますか?
あと、2ページ目のプログラム部分で(省略)って書いてあるのも気になります

288 :デフォルトの名無しさん:2011/10/05(水) 02:37:52.73
プロジェクトがローカルのどこにおいてあるかしらんけど
プロジェクト一式が入ってるフォルダの中に配布用とデバッグ用の
exeが入ってるところがあるのでその辺に実行に必要なファイルを置くしかないよ

289 :デフォルトの名無しさん:2011/10/05(水) 02:44:10.43
>>283
本質的な事じゃないけどファイル名ならpassじゃなくてpathじゃないのか?

290 :デフォルトの名無しさん:2011/10/05(水) 07:16:42.49
PictureBoxのImageプロパティに関するよくある勘違い
http://dobon.net/vb/dotnet/graphics/pictureboximageanddrawimage.html

291 :デフォルトの名無しさん:2011/10/05(水) 09:08:01.92
>>281
ダイアログの場合は呼んでね、Dispose

292 :デフォルトの名無しさん:2011/10/05(水) 20:07:52.01
>>272です。
皆様、回答くださりありがとうございます。

>>281さん
ShowDialogにてFormを呼び、そのForm内でClose()を実行し、呼び出し元のFormでDispose()をしています。
いくつかのPCで試してみた結果、
VisualStudio2008(または2010)がインストールされているPCではエラーとならず、
インストールされていないPCのみ、Dispose()時にエラーとなることが分かりました。
また、Dispose()の記述を外したら、エラーとなっていたPCもエラーとならなくなりました。

パソコンの環境によってエラーとなる場合とならない場合があります。
VSが入っているPCではエラーとならないことを考えると、
何かコンポーネントが足りないのかなとも思いました。

また、Dispose()を外したらエラーとならなくなったのですが、
本当にDispose()しなくて良いのかどうか不安です。

何が原因なのか分からなくなってきました。

293 :デフォルトの名無しさん:2011/10/05(水) 20:12:37.63
PanelコントロールのAutoScroll=trueでスクロールが実現するのはいいのだけど
スクロールバーをドラッグしてる間はPanelの内容が全く動かず
ドロップ時にスクロール先に瞬間移動する

ちょっとなにいってるかわからんがもしれんが
普通のスクロールバーの挙動と違う
解決策教えてください

294 :デフォルトの名無しさん:2011/10/05(水) 20:13:47.58
ListViewに動画ファイル一覧があり、それを選択すると
Process.Startで動画ファイルに関連付けられたプレイヤーを起動するようにしているのですが
フォームはアクティブな状態を保ちたいのに、プレイヤーの方がアクティブになってしまいます
TopMostをtrueにしたり、this.Activate();にしてもアクティブ状態を維持できませんでした
どうすればいいでしょうか

295 :デフォルトの名無しさん:2011/10/05(水) 20:28:39.66
ProcessStartInfoとかでどうにかならんの
知らんけど

296 :デフォルトの名無しさん:2011/10/05(水) 20:35:31.84
乱数を10個選んで昇順(小→大)に並び替えるプログラムを組みましたが、実行するとエラーになります。
数字は選べているのですが、どうも並び替えるほうが問題のようです。どこが悪いのでしょうか。

for( i = 0; i < 10; i++){
for( j = i+1; j < 10; j++){
if(a[i]>a[j]){
min = j;
}
tmp=a[i];
a[i]=a[min];
a[min]=tmp;
}
}
for( i = 0; i < 10; i++){
printf("%d\n", a[i]);
}
return 0;
}


297 :デフォルトの名無しさん:2011/10/05(水) 20:38:14.28
エラーはなんてでてるの?
あとa[]の宣言は?

298 :デフォルトの名無しさん:2011/10/05(水) 20:41:16.97
a[10]で初めのほうに宣言しています。

エラーというか、乱数を選んだあと、プログラムが停止してしまいます。

299 :デフォルトの名無しさん:2011/10/05(水) 20:42:17.75
いやだからそのエラーコードは何って聞いてるのw

300 :デフォルトの名無しさん:2011/10/05(水) 20:43:26.84
minが初期化されない場合があるんで、tmp云々はifの中に入れないと

…と思ったがprintf?

301 :デフォルトの名無しさん:2011/10/05(水) 20:45:22.96
>>296
printf?質問するスレ間違えてないか?

302 :デフォルトの名無しさん:2011/10/05(水) 20:45:36.39
不慣れですいません。
エラーコードといいますか、
実行すると、「問題があるので解決策を探しています」→「問題が発生したため、プログラムが正しく動作しなくなりました。」としか表示されません。

ちなみにさっきの前のコードはこうなっています。
#include<stdio.h>
#include<time.h>
int main (){
int a[10];
int i;
int j = 0;
int min;
int tmp;
srand((unsigned)time(NULL));
for( i = 0; i < 10; i++){
a[i] = rand () % 10;
printf("%d\n", a[i]);
}
printf("\n");

303 :デフォルトの名無しさん:2011/10/05(水) 20:46:03.64
スレチ

304 :デフォルトの名無しさん:2011/10/05(水) 20:46:36.88
C言語スレでどぞう

305 :デフォルトの名無しさん:2011/10/05(水) 20:46:55.05
C#じゃないじゃんw

306 :デフォルトの名無しさん:2011/10/05(水) 20:47:57.68
釣れた釣れた

307 :デフォルトの名無しさん:2011/10/05(水) 20:48:02.00
わ、Cはこちらだと思って書き込んでいました。
お邪魔しましたすいません

308 :デフォルトの名無しさん:2011/10/05(水) 20:54:48.92
>>294
無理

309 :デフォルトの名無しさん:2011/10/05(水) 20:57:49.73
>>294
ShellExecute/ShellExecuteExでなんとかなるかも

310 :デフォルトの名無しさん:2011/10/05(水) 21:06:53.90
>>309
WinAPIを使ってやるしかないみたいですね
ありがとうございました

311 :デフォルトの名無しさん:2011/10/05(水) 21:13:17.58
>>292
ですが、お心当たりのある方、どなたか教えていただけないでしょうか(>_<)。

312 :デフォルトの名無しさん:2011/10/05(水) 21:26:43.94
>>282は試したのか?
ソース一式とスタックトレースを見られる人間にしか原因調査できないと思うよ

313 :デフォルトの名無しさん:2011/10/05(水) 23:22:44.05
ふらっとC#,C♯,C#、C井、C丼

314 :デフォルトの名無しさん:2011/10/05(水) 23:31:29.08
>>311
だから、問題を再現できるコード出せよ馬鹿

315 :デフォルトの名無しさん:2011/10/05(水) 23:34:40.13
バチーンバチーンしてやりたい><

316 :デフォルトの名無しさん:2011/10/06(木) 00:35:02.43
インで草がどうたらこうたら

317 :デフォルトの名無しさん:2011/10/06(木) 16:09:15.55
Dllimportでアンマネージコードの呼び出しをしますが
そのアンマネージコードからコールバックされる関数の引数にポインタが渡されてくる場合
C#側ではどうやって参照すればいいんでしょう?

318 :デフォルトの名無しさん:2011/10/06(木) 17:43:50.82
>>313
マジで腹減ってくるし

319 :デフォルトの名無しさん:2011/10/06(木) 18:11:06.76
>>317
PtrToStructureとかなんかそんな名前の奴

320 :デフォルトの名無しさん:2011/10/06(木) 18:22:30.44
>>317
コールバック?

321 :デフォルトの名無しさん:2011/10/06(木) 18:49:12.33
>>317
GetFunctionPointerForDelegateとかじゃないの?
初心者だから詳しくは知らないけど、ググればサンプルはたくさんありそうだよ。
マーシャリングは難しいねぇ。

322 :デフォルトの名無しさん:2011/10/06(木) 23:30:33.05
>>317
渡されてくるポインタが構造体なら
それと同じ構造体を作ってやってPtrToStructure

323 :デフォルトの名無しさん:2011/10/07(金) 14:47:35.64
string型に"を入れたいときってどうすればいいんだっけ?
"""とか3つ重ねてみてもうまくいかなかったんだが

324 :デフォルトの名無しさん:2011/10/07(金) 14:49:38.93
"\""
または
@""""

325 :デフォルトの名無しさん:2011/10/07(金) 14:52:54.92
>>323
文字リテラルっていうので覚えておきましょう
http://msdn.microsoft.com/ja-jp/library/aa691087%28v=vs.71%29.aspx

326 :デフォルトの名無しさん:2011/10/07(金) 15:31:52.63
>>324-325
さんくす

327 :デフォルトの名無しさん:2011/10/07(金) 21:14:27.88
Flowlayout内に動的に並べたボタンの順序をユーザーがD&Dで変えられるようにしようと思っています

一応、それぞれのボタンにマウスイベントを追加して、マウスの移動量に合わせて
ボタンのインデックスを変更して移動させるようにはできたのですが
これでよかったのでしょうか
ぐぐってもD&Dで順序を変える方法が見つからなかったので不安です

328 :デフォルトの名無しさん:2011/10/07(金) 21:23:42.59
>>291 それどっかに注意書きあります?

329 :デフォルトの名無しさん:2011/10/07(金) 22:23:30.00
もろShowDialogにある

330 :デフォルトの名無しさん:2011/10/08(土) 17:29:56.04
インターフェースについてよくわからないので教えてください
・publicな抽象メソッドだけを持つクラスのようなもの
これについてですが、実際publicな抽象メソッドだけを持つクラスではだめなのですか?いまいちメリットがわかりません
あとIDisposableインターフェースなんですが、自作クラスに実装しただけでusing文が使えるようになるんですか?
class MyClass : IDisposable
{
 〜略〜
}
こんな感じに書いて他のクラスからこんなことをやってみたんですが、うまくいきません
using(MyClass myclass = new MyClass())
{
}
どうすればIDisposableインターフェースを実装してusing文を使えるようになるでしょうか?
例としてソースを貼ってもらえると助かります

331 :デフォルトの名無しさん:2011/10/08(土) 17:39:12.96
継承だけしてDisposeを実装してないんじゃなかろうな

332 :デフォルトの名無しさん:2011/10/08(土) 17:39:49.75
>publicな抽象メソッドだけを持つクラスではだめなのですか?いまいちメリットがわかりません

クラスは多重継承できない
どこからか継承してきたクラスにIDisposableを追加したい場合を考えてみる

>あとIDisposableインターフェースなんですが、自作クラスに実装しただけでusing文が使えるようになるんですか?

使えるようになるよ
どうせVSが古いか、: IDisposableと書いただけで中身を実装してないか、どちらかだろ

333 :デフォルトの名無しさん:2011/10/08(土) 17:42:11.39
むしろお前の「実装」を出すのが筋やろ

何が下さいだ

334 :デフォルトの名無しさん:2011/10/08(土) 17:42:11.79
・IDisposableがSystem.IDisposableではない
・MyClassにpublic void Dispose(){}またはvoid IDisposable.Dispose(){}が定義されていない

335 :デフォルトの名無しさん:2011/10/08(土) 17:45:41.07
>>330
1について、
インターフェースの宣言は何も実装してないことが美徳なのですよ。
あるフレームの手続がこんな感じ。ということを示せればそれでいいからです。

実装の際には未実装があるとコンパイルエラーになりますし、
半端な初期実装を持つよりも、奇妙な動作をしなくなります。

336 :デフォルトの名無しさん:2011/10/08(土) 17:45:43.18
class MyClass : System.IDisposable
{
public void Dispose(){}
}

これで動かなければ、誰も分からん

337 :デフォルトの名無しさん:2011/10/08(土) 17:47:37.95
ただし、マーカーインターフェース使うくらいなら素直にAttribute使ってください
今はね

338 :デフォルトの名無しさん:2011/10/08(土) 22:25:42.38
Bitmapオブジェクトをピクセル単位でなく、
メモリのかたまりとして一気に、高速に比較できないでしょうか

339 :デフォルトの名無しさん:2011/10/08(土) 22:31:16.71
.NET Framework 4から追加された
めもりまっぷとまっぷ
ttp://msdn.microsoft.com/ja-jp/library/dd997372.aspx
開発の基本だ

340 :デフォルトの名無しさん:2011/10/08(土) 22:36:10.86
LockBits

341 :デフォルトの名無しさん:2011/10/08(土) 22:37:15.10
Bitmap.LockBits

342 :デフォルトの名無しさん:2011/10/08(土) 22:38:14.15
Mapped
これってマップトになるの?w

343 :デフォルトの名無しさん:2011/10/08(土) 22:44:31.98
>>342
http://www.clear-english.com/db/mapped.html

344 :デフォルトの名無しさん:2011/10/08(土) 22:49:44.64
>>343
IT業界ってまあ日本人が発音したのだろうけどマップドが多かった気がするんだよな

345 :デフォルトの名無しさん:2011/10/08(土) 23:11:39.48
俺はマップトと読んでたなあ
AdvancedWindowsの目次が確かマップトになってたせいで

346 :デフォルトの名無しさん:2011/10/08(土) 23:14:24.15
Steve Jobsは?
ジョブス? ジョブズ

347 :デフォルトの名無しさん:2011/10/08(土) 23:15:33.79
アイアムノージョブズ

348 :デフォルトの名無しさん:2011/10/08(土) 23:31:29.96
アウトー!!

349 :デフォルトの名無しさん:2011/10/09(日) 00:11:18.45
I'm know Jobs now

350 :デフォルトの名無しさん:2011/10/09(日) 00:16:06.54
すぐこういう馬鹿みたいのが湧くな。

どうせスレと無関係のこと書くならせめて他人の心を動かすこと書けよ。
面白いとか、いい事教えてもらったとか思えるようなこと。

そんなオッサンのオヤジギャグ以下の1行レス書いて何が楽しいの?

351 :デフォルトの名無しさん:2011/10/09(日) 00:22:31.62
駄目なオマイラにモノ申す!
駄目駄目言ってるだけじゃ駄目なんだぜ?!
ってくらい駄目なレスだな

352 :デフォルトの名無しさん:2011/10/09(日) 01:42:39.71
だめなやつは なにをやっても だめ

353 :デフォルトの名無しさん:2011/10/09(日) 14:29:30.67
strにはUnicode文字が入っているんですが
this.label1.Text =str;
this.toolStripStatusLabel1.Text = str;
labelには表示されてけどもう一方には表示されない
何か制約があるんでしょうか?

354 :デフォルトの名無しさん:2011/10/09(日) 14:32:53.41
Unicode文字なんて.NETが扱えるすべての文字じゃねーか
フォント違いとかどうよ

355 :デフォルトの名無しさん:2011/10/09(日) 14:52:10.10
>>353です

先頭からいくつかの文字を抜き出して表示したらちゃんと行けました
どうやら末尾に何かの文字列?があってそれが表示されない原因のようです
labelの表示で見た感じでは普通に英文字なだけなんですが
何か調べる方法はありますか?

\r\n\tこれらはついていませんでした。

356 :デフォルトの名無しさん:2011/10/09(日) 15:00:33.21
>>353です

なんとなく原因がわかってきました
dllを利用してそこから返してくるバイト文字列をbytes[512]を
Encoding.Defaultで変換しているんですが
文字数を調べたら見た目はは10文字程度なんですが、str.Lengthは512文字になっていました

357 :デフォルトの名無しさん:2011/10/09(日) 15:08:07.95
ああそらそうよ
dllの方はnull終端文字列のつもりで返してるんだろうけど
C#の文字列にはその概念が無いから\0にしてしまう

358 :デフォルトの名無しさん:2011/10/09(日) 15:09:58.80
dllにバイトで渡すのやめて、new StringBuilder(512)を使え

359 :デフォルトの名無しさん:2011/10/09(日) 15:16:30.32
>>357
そういうのがあったんですね

str=str.TrimEnd(new char[]{'\0'});

とすることでいけました
ありがとうございました

360 :デフォルトの名無しさん:2011/10/09(日) 15:17:34.35
humm...

361 :デフォルトの名無しさん:2011/10/09(日) 15:35:23.33
DataGridViewにボタンの列を追加したのですが、
行の値に応じてボタンの可視・不可視を制御することはできますか?

362 :デフォルトの名無しさん:2011/10/09(日) 18:30:28.37
自分でそういう処理書かないとできませんね
WPFはそういうの得意だけどね

363 :デフォルトの名無しさん:2011/10/09(日) 23:01:20.94
C#でマルチメディアプレイヤーを作りたいと考えているのですが、シークバーやボリュームコントロールの方法、また、曲情報の読み込みなどその他具体的に必要になってくる処理の書き方に悩んでいます!
サンプルや、Webサイト、書籍ご存知のかた教えて下さい。


364 :デフォルトの名無しさん:2011/10/09(日) 23:08:38.43
そんな貴方のために誂えたような本があると本気で考えているか

365 :デフォルトの名無しさん:2011/10/09(日) 23:21:56.93
つまりマルチメディアプレイヤーに必要なものが何もわかっていないと

366 :デフォルトの名無しさん:2011/10/09(日) 23:40:31.43
>>353です

あれから>>358のやり方をやってみようと
格闘しているのですが、マーシャルエラーばかりでてうまくいきません

やろうとしているのは
"Sinku.dll を使う"でぐぐった一番上にあるサイトのソースと同じなんですけど

367 :デフォルトの名無しさん:2011/10/10(月) 00:00:03.01
作ったことのある人のブログを見るか,オープンソースのソフトを探してみるとか

368 :デフォルトの名無しさん:2011/10/10(月) 00:26:27.14
wfpでやるなら、MediaElement使えば割と簡単にできるしサンプルも見つけられる
winformなら、wmpを使うのが簡単で、他にはDirectShow.netやVLCのライブラリが使える
tagはtaglib-sharpが割と使えた

369 :デフォルトの名無しさん:2011/10/10(月) 00:31:40.59
世界食糧計画

370 :デフォルトの名無しさん:2011/10/10(月) 00:35:17.31
あと、逆再生とか、倍速とか、ピッチを変えない倍速とかもやりたいんです!><;

371 :デフォルトの名無しさん:2011/10/10(月) 01:07:48.06
分かるよ。自分もVC#風に使えるテキストエディタ作りたい。

372 :デフォルトの名無しさん:2011/10/10(月) 01:35:20.84
小生も作業用BGM動画を分割してタグ付けアートワーク割り当てまでこなせるツール作りたい。

373 :デフォルトの名無しさん:2011/10/10(月) 02:54:30.61
>>366
[ StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
public struct StrParam
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
public byte[] str;
};

これを


[ StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
public struct StrParam
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
public String str;
};

こう

374 :366:2011/10/10(月) 03:10:25.81
>>373
ずっと悩んでました
public StringBuilder name;
とやっていてもマーシャルエラーが出て
どうやってsbを渡せばいいのかと悩んでました

それで試してみます
ありがとうございます

375 :デフォルトの名無しさん:2011/10/10(月) 03:15:56.46
Niceguy 俺 = new Niceguy();

ナンパしまくる;

俺.Dispose();

376 :デフォルトの名無しさん:2011/10/10(月) 03:25:30.48
俺はnewされてDisposeしかしてないな

377 :366:2011/10/10(月) 04:06:05.77
>>373
Uni版でやってため最初うまくいきませんでしたが
Ansi版でできました!ありがとうございます

378 :デフォルトの名無しさん:2011/10/10(月) 20:42:38.21
Windowsのファイルやフォルダの名前を変更する際、英大文字を英小文字に
変更したい場合、System.IO の Move()メソッドやMy.Computer.FileSystem の
Rename〜()メソッドではできないようです。これはどう解決していますか?

379 :デフォルトの名無しさん:2011/10/10(月) 20:44:47.65
そもそもMS製のOSってファイルネームで大文字小文字の識別ってしたっけ?
DOSのころから大文字だろうか小文字だろうが同じファイル名称とみなすはず

なのでAPIも・・・

380 :デフォルトの名無しさん:2011/10/10(月) 20:47:03.96
地味に不愉快な仕様だよなぁ〜

381 :デフォルトの名無しさん:2011/10/10(月) 20:49:12.77
>>379
a123.txt→A123.Txtなどの変更は、Explorerでは可能でした。
できれば同じようにならないものでしょうか。


382 :デフォルトの名無しさん:2011/10/10(月) 20:51:58.87
>>381
それはあくまで表示が違うだけだからなあ・・・
細かい話になるとファイルシステムの仕様を理解しないとできないかもしれない

383 :デフォルトの名無しさん:2011/10/10(月) 20:54:07.27
>>382
ということは、Explorerでは個々のファイル名を個別に覚えている、ということ
でしょうか。

384 :デフォルトの名無しさん:2011/10/10(月) 20:58:08.79
何らかの方法で可能だとしてもその方方が一般に公開されているとは限らないしね

385 :デフォルトの名無しさん:2011/10/10(月) 21:02:36.52
>>383
いや
DOSのころのファイル名称っていうのは8.3形式なんだよね
ファイル名称8文字と拡張子3文字

でwindowsのいつごろからか忘れたけどロングファイルネームっていう
拡張が行われてて大文字小文字を覚えてくれてるのはおそらく
8.3で収まるファイル名称であってもExplorerがロングファイルネーム扱いで
やってるんだと思う

なのでこの辺のファイルシステムにアクセスする方法もしくは
アクセスしてる関数もしくはアクセスさせるためのパラメーターが
わかればできないこともない

ただC#のファイル関連でそこまで気にしたことないのでC#の中で
できるのかわからん
APIを呼び出せば確実にできるだろうけど(OSやOSに関連するExplorerがやってるんだし

386 :デフォルトの名無しさん:2011/10/10(月) 21:04:01.50
一旦別のファイル名付けてリネームし直せばいける気がする

387 :デフォルトの名無しさん:2011/10/10(月) 21:06:21.05
行けるよ
前作った時はそうした

388 :デフォルトの名無しさん:2011/10/10(月) 21:12:24.38
なるほど
すでに管理情報はあるしそこにファイル名称はあるから
(windowsにおいてはa123.txtもA123.Txt同じファイルとして扱われる)
ロングネーム(ロングファイルネームというのは一般的ではないようだスマソ)の
方は書き換えされないんだな

389 :デフォルトの名無しさん:2011/10/10(月) 21:14:45.49
ちなみにこういうネタがある
http://www.itmedia.co.jp/help/tips/windows/w0490.html

ファイル属性の中にロングネーム使うかどうかとかあったはずなんだよな
もう忘れちゃった

390 :デフォルトの名無しさん:2011/10/10(月) 21:14:53.73
おお、なんか知らんがWin7だとFile.Moveで大文字小文字のリネームができた

391 :デフォルトの名無しさん:2011/10/10(月) 21:24:17.31
>>385
そうですか、APIで可能なものがありそうか調べてみます。

>>386>>387
その手がありましたか、なるほど。

392 :デフォルトの名無しさん:2011/10/10(月) 21:28:13.68
>>391
ごめん
もしかするとAPIでどうにかなるものではなく>>390の発言から察するに
OS依存かもしれないw

393 :デフォルトの名無しさん:2011/10/10(月) 21:35:49.98
おまいら適当な推測でレスしすぎ

394 :デフォルトの名無しさん:2011/10/10(月) 21:38:20.86
放置されるよりマシだろw




395 :378:2011/10/10(月) 23:36:21.47
やってみましたら、
ttp://www.serpress.co.jp/winapi/no007.html
このAPIで出来ることがわかりましたが、これでやれるということは、
.NETは単純にラッピングすればいいのに、グレードダウンしていたことになる
んでしょうか。これってどうなんでしょね。

396 :デフォルトの名無しさん:2011/10/11(火) 00:21:27.97
その辺はわからん
日本のこんな偏狭スレの人間が知ってるとも思えないしw

397 :デフォルトの名無しさん:2011/10/11(火) 00:56:41.84
ダウングレードかどうかは立場の問題でしょ。

ドトネトは、恐らくパフォーマンスのために元の名前とファイルシステム上
等価の名前が与えられた時は無視する仕様になってるんだろう。

これは低レベルの操作をしたい場合には余計なお世話だけど、
ライブラリとしてはまあ妥当な仕様じゃない?

398 :デフォルトの名無しさん:2011/10/11(火) 01:05:48.80
先日プログラミングを学び始めた初心者です。
再帰関数を用いて二分探索を作ろうと思うのですが、
再帰関数をうまく用いる方法が思いつかず困っています。
用いなければ以下のように作ったらうまく作動すてくれたのですが・・・
優しい人教えてください。
Int nibuntansaku (int x, int v[], int n)
{
int p, q, m;
p = 0;
q = n – 1;
while (p <= q) {
m = (p + q)/2;
if (x < v[m])
q = m – 1;
else if (x > v[m])
p = m + 1;
else
return m;



399 :デフォルトの名無しさん:2011/10/11(火) 01:17:05.29
>>398
再起関数はスタックを食いつぶすので深い再起は避けるべき。
むしろ、ループでどうにかなるならソッチの方がベターだな。

400 :デフォルトの名無しさん:2011/10/11(火) 01:19:43.10
大昔のポケコンでもあるまいし、スタック食い潰すて

401 :デフォルトの名無しさん:2011/10/11(火) 01:23:31.22
いやー、穴掘り法で迷路作ったときに、128*128位のマップ作ったらスタックオーバーフローでプログラムが死んでた。
ネスト数は大体200くらいだったような気がする。

402 :デフォルトの名無しさん:2011/10/11(火) 01:40:46.84
>>399
>>400
レスありがとうございます。
使っている資料の演習に
再帰を用いて作ってみろ
とあるので解いてみたいので、よろしければご教授お願いします。
資料は昔兄が大学で貰った資料なので答えがないです。

403 :398:2011/10/11(火) 01:46:59.05
この程度の問題も解けないのかよks
お前らに聞いたのが間違いだったわww

404 :デフォルトの名無しさん:2011/10/11(火) 02:10:02.09
>>403>>398
カッコワルw

405 :デフォルトの名無しさん:2011/10/11(火) 02:16:05.03
>>403
’この程度の問題’をなぜ質問したのか・・・。
数分で音を上げて勝利宣言とかどうなんだろうね。

406 :デフォルトの名無しさん:2011/10/11(火) 02:18:16.94
なりすましですし・・・

407 :デフォルトの名無しさん:2011/10/11(火) 03:09:49.85
どう見てもなりすめしてまきずし・・・

408 :デフォルトの名無しさん:2011/10/11(火) 04:16:04.33
半角英数でないところがアホさをより一層際立たせている

409 :デフォルトの名無しさん:2011/10/11(火) 07:37:43.23
おすし

410 :デフォルトの名無しさん:2011/10/11(火) 07:38:51.04
IDは付かないもんかねえ

411 : ◆QZaw55cn4c :2011/10/11(火) 07:50:50.17
ほんと。IDがつけばノイズが減るのにね。

412 :デフォルトの名無しさん:2011/10/11(火) 08:57:48.03
ID付きで見たいな
管理者うらやましす

413 :412:2011/10/11(火) 09:13:24.73
なりすましや自演なんてみんなやってんだろ?
全然バレないしな

414 :デフォルトの名無しさん:2011/10/11(火) 10:29:16.23
ム板は他より悪意少な目な人が書き込んでると思ってた。

415 :デフォルトの名無しさん:2011/10/11(火) 12:30:05.81
>>395
自動化厨御用達のSendInputすら無いんだぞ
期待するだけ無駄

416 :デフォルトの名無しさん:2011/10/11(火) 13:07:20.94
自動化厨初めて聞いたw

417 :398:2011/10/11(火) 13:11:00.67
はやく自動化プログラムさせろよ

418 :デフォルトの名無しさん:2011/10/11(火) 13:24:24.21
LabVIEWでも使ってろ

419 :デフォルトの名無しさん:2011/10/11(火) 17:08:13.33
フラットした気持ちがシャープに

420 :デフォルトの名無しさん:2011/10/11(火) 22:39:16.87
c#でexcelのシートを操作してるんだけど
結合セルの動作がよくわかんない。
3×3の結合セルから3行ってのを取りたくて
mergearea.rows.countってやっても
1が帰って来ちゃう。

どうやったら3行って取れるの?

421 :デフォルトの名無しさん:2011/10/11(火) 22:41:54.04
>>420
あんたの質問こそよくわかんない。
日本語でお書きください。

422 :デフォルトの名無しさん:2011/10/11(火) 22:42:50.83
ボタンを押すたびにコントロールを動的に作成しているんですが
描画がちらつきます。
ちらつかないようにするにはどうしたらいいでしょうか?
private void button1_Click(object sender, EventArgs e)
{

while (true)
{
foreach (Control con in panel1.Controls)
{
panel1.Controls.Remove(con);
}
if (panel1.Controls.Count == 0) break;
}

for (int i = 0; i < 10; i++)
{
TextBox tb = new TextBox();
tb.Top = i * 20;
tb.Left = 10;
panel1.Controls.Add(tb);
}
}


423 :デフォルトの名無しさん:2011/10/11(火) 22:46:27.81
とりあえずSuspendLayoutとResumeLayoutを試してみれば

424 :デフォルトの名無しさん:2011/10/11(火) 22:46:42.33
>>422
フォームのチラつき制御で調べるとでてくるとけど
winformの場合完全にチラつきを排除できないよ

425 :デフォルトの名無しさん:2011/10/11(火) 22:46:46.66
もしかして:ダブルバッファリング

426 :デフォルトの名無しさん:2011/10/11(火) 22:49:35.51
ちらついたっていいじゃないか
Windows Formだもの

427 :デフォルトの名無しさん:2011/10/11(火) 22:55:21.56
やはりチラツキはしかたないですよね。
XNAで作り直します。

428 :デフォルトの名無しさん:2011/10/11(火) 23:04:32.11
>>420
cell.MergeArea[cell.MergeArea.Count].Row - cell.Row + 1ってな感じかな?

429 :デフォルトの名無しさん:2011/10/11(火) 23:08:16.91
>>428
意味はよく飲み込めないけど
明日試してみるわ。
ありがとう。

430 :デフォルトの名無しさん:2011/10/12(水) 02:06:24.70
メソッドのコードが20行40行ってどんどん増える
他の人のコードみると驚くほど短い
何がいけないんだ・・・

431 :デフォルトの名無しさん:2011/10/12(水) 02:10:41.85
クラスに分離したりとね・・・・
というかそれなりの処理してればコードは増えるよ

気になるならMSのSystem.xxxのソースコード見てきなよ

432 :デフォルトの名無しさん:2011/10/12(水) 08:14:14.48
マーチン ファウラーのリファクタリングの本を読むといいよ

433 :デフォルトの名無しさん:2011/10/12(水) 08:28:42.90
System.Xml.Serialization.XmlSerializer ser = new
こうするのと、usingディレクティブを使用して
XmlSerializer ser= new
こうするのだとコストが違ったりするの?
開設サイトは分かりやすくするために修飾子つけているだけ?

434 :デフォルトの名無しさん:2011/10/12(水) 08:33:52.63
>コストが違ったり

しないよ

435 :デフォルトの名無しさん:2011/10/12(水) 08:48:20.99
>こうするのだとコストが違ったりするの?
ビルドして出来上がる物はかわらない
コードの見た目の問題とか入力の問題とか
usingで使うところを指定しておけば
XmlSerializer ser= new・・・
ではじめれるからねえ
usingを書いてなければその都度
System.Xml.Serialization.XmlSerializer ser = new・・・
と書いていかなきゃいけなくなる
いくら支援があるとはいえね・・・

>開設サイトは分かりやすくするために修飾子つけているだけ?
そうだと思う
using ・・・・

XmlSerializer ser= new・・・
ってコピペする場合は書く位置が違うからね
そんなの説明するくらいなら解説サイトは
System.Xml.Serialization.XmlSerializer ser = new・・・
とusingで分離しない方が簡単だし

436 :デフォルトの名無しさん:2011/10/12(水) 13:07:00.76
ずっと疑問だったのですっきりしました
usingをどんどん使っていきます

437 :デフォルトの名無しさん:2011/10/12(水) 13:12:53.67
DataGridViewに入れられている数値を元に折れ線グラフを画像出力ってのをやりたいんですが
どういったものを使えばできるようになるでしょうか?

438 :デフォルトの名無しさん:2011/10/12(水) 13:15:03.12
.NETを4.0にしてChartコントロール使え
もしくは3.5でChartコントロールをインストール

439 :デフォルトの名無しさん:2011/10/12(水) 14:26:16.57
>>430
オレもそうだ。
条件分岐なんかしてると、それぞれにメソッド作って分けて書けばいいんだろうけど、
ついつい、そのままifとeise ifの間にズルズル書いちゃう。
こういうのスパゲッティっていうのだろうな。

440 :デフォルトの名無しさん:2011/10/12(水) 14:28:55.57
そういうのはスパゲティーコードじゃないよw

441 :デフォルトの名無しさん:2011/10/12(水) 15:24:24.04
3層以上ネストする様なら別の方法を考える

442 :デフォルトの名無しさん:2011/10/12(水) 15:25:07.03
4層以上だた

443 :デフォルトの名無しさん:2011/10/12(水) 16:24:44.50
速度考えるとスパゲティコードになるw

444 :デフォルトの名無しさん:2011/10/12(水) 17:20:29.78
??

445 :デフォルトの名無しさん:2011/10/12(水) 18:24:02.18
設計段階での発想と言うか、アルゴリズムというか、
いいプログラムって出発点から違うんだろうな。
おれなんか逐次的な処理のコードしか書けん。情けないorz

446 :デフォルトの名無しさん:2011/10/12(水) 18:26:03.01
>>443
その考えは改めたほうがいい

447 :デフォルトの名無しさん:2011/10/12(水) 18:26:44.33
慣れですよ
それにオブジェクトだってそれほど大きく逸脱した物でもないし

448 :デフォルトの名無しさん:2011/10/12(水) 19:00:35.71
長いからなんて理由でクラス分割されると、
役割りの不明瞭なクラスが量産されて大変な事になりそう


449 :デフォルトの名無しさん:2011/10/12(水) 19:07:19.93
クラスは分割しないけどメソッドは分割することある。
privateなメソッドが増えていく

450 :デフォルトの名無しさん:2011/10/12(水) 19:17:27.45
csファイルが長くなりすぎて、何処に何があるのか探すのが大変なので、
機能別にまとめてpartial classをいくつか作ることが多い。
1ファイル500行くらいが限界?みんなどう?

451 :デフォルトの名無しさん:2011/10/12(水) 19:21:56.92
>>450
そんなもんで大体収まるから、
収まらないのも例外として認めてるかな

452 :デフォルトの名無しさん:2011/10/12(水) 19:53:25.95
>>450
メソッドは全部畳んでおく。
あとエディタじゃなくて一覧から探す。

453 :デフォルトの名無しさん:2011/10/12(水) 19:54:07.14
regionだっけ?
あれも使えばいい

454 :デフォルトの名無しさん:2011/10/12(水) 20:00:46.27
どうせクラスビュー使うし

455 :デフォルトの名無しさん:2011/10/12(水) 20:05:36.65
そういう便利技、まだ知らないんだよな。
VS2010EEかなり力技で作ってるからwww
誰か教えてよ。

456 :デフォルトの名無しさん:2011/10/12(水) 20:17:55.81
クラスビューって無料版についてない機能だろ

457 :デフォルトの名無しさん:2011/10/12(水) 20:55:27.71
>>456
あんたの目は節穴ですかw

458 :デフォルトの名無しさん:2011/10/12(水) 21:00:18.98
クラスビューすらなかったら他のソフト使うわw

459 :デフォルトの名無しさん:2011/10/12(水) 21:11:48.89
C#はエディタの上のリスト使うことのほうが多いかなあ
VC++ではクラスビュー使いまくるんだけど

460 :デフォルトの名無しさん:2011/10/12(水) 21:14:37.16
クラスビューはアクティブなファイルに同期する機能があればもう少し使いやすいと思うんだが、
なぜかないのが謎。

461 :437:2011/10/12(水) 21:26:21.28
>>438
thxです


462 :デフォルトの名無しさん:2011/10/13(木) 01:35:05.63
Form1を継承したクラスで、Form1のbuttonやpictureboxを変更することは出来ますか?
変更しても、反映されない

463 :デフォルトの名無しさん:2011/10/13(木) 01:36:44.11
意味がわかりません

464 :デフォルトの名無しさん:2011/10/13(木) 01:41:22.70
コード見ないと分からん

465 :デフォルトの名無しさん:2011/10/13(木) 01:52:03.83
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

static class Program
{
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());

Draw draw = new Draw();
draw.change();
}
}

class Draw:Form1
{
public void change()
{
button1.Enabled = false;
}
}

実行すると、button1はfalseになるはずなのですが、実際にはtrueです。


466 :デフォルトの名無しさん:2011/10/13(木) 01:54:43.02
アプリが動いてる間は
Application.Run(new Form1());
のところでずっと処理してるんじゃないの?

467 :デフォルトの名無しさん:2011/10/13(木) 01:56:43.53
初心者の割に変なコードに手を出したもんだな

468 :デフォルトの名無しさん:2011/10/13(木) 01:59:04.11
pictureboxを継承したクラスで、管理したかったのです。
Form1上でやれば済む話なのですが


469 :デフォルトの名無しさん:2011/10/13(木) 01:59:33.63
Form1≠Drawってのも説明しなければならんのだろうけど面倒だな。

470 :デフォルトの名無しさん:2011/10/13(木) 01:59:58.00
>>443
.netはほとんどが参照渡しだから
メソッドやクラスを作りまくってもいけるんだけど
VBとか昔のに慣れているから、おれもついそういう感じにしちゃう

471 :デフォルトの名無しさん:2011/10/13(木) 02:00:26.91
といかどういうものを作ろうとして何でそんなロジックにいたったのかがわからん

472 :デフォルトの名無しさん:2011/10/13(木) 02:01:58.49
とりあえずそこに書いてもどうにもならないから
Form1の中に書くように

473 :デフォルトの名無しさん:2011/10/13(木) 02:04:27.52
private void Form1_Load(object sender, EventArgs e)
{
Draw draw = new Draw();
draw.change();
}
こうですか?できません

474 :デフォルトの名無しさん:2011/10/13(木) 02:06:14.50
やっぱり何か勘違いしてるねw


475 :デフォルトの名無しさん:2011/10/13(木) 02:07:56.81
Form1の中にbutton1あるんだろ?

private void Form1_Load(object sender, EventArgs e)
{
button1.Enabled = false;
}

あとその場合の尋ね方は
「こうですか?わかりません><」
が正しい

476 :デフォルトの名無しさん:2011/10/13(木) 02:09:45.97
buttonをform1を継承したクラスで、管理したいのです。
無理なようなので、諦めます


477 :デフォルトの名無しさん:2011/10/13(木) 02:12:09.62
まぁ好きなようにするといいよ
飽きるだろうし

478 :デフォルトの名無しさん:2011/10/13(木) 02:13:32.38
それは実装のレベルの話で本当はどういうことをやろうとして
そういう実装をしようと思ったのかとか説明できない時点であれなんだな・・・


Application.Run(new Form1());

Draw draw = new Draw();
draw.change();

これを

Draw draw = new Draw();
Application.Run(draw);

draw.change();

ってやればいいよ
でもそれで本当に正しいかどうかは何をやりたいのかという
本筋が説明されてないのでわからんけどw

479 :デフォルトの名無しさん:2011/10/13(木) 02:15:59.07
見やすいようにボタンのインスタンスだけ集めたクラスを作りたかったとか

480 :デフォルトの名無しさん:2011/10/13(木) 02:16:42.51
Fromはデータの受け渡し処理だけ書くようにしている
ListViewで項目が削除されたイベントが起きたら
データを管理しているクラスにイベント内容を送り
それを元にデータ管理クラスが項目を削除して
Formに削除実行したとイベントを発行する
それを元にListViewの項目を削除する

物凄く遠回りな感じだけど、Formでデータ管理も削除判定も
全部やってた頃より、見た目がすっきりした気がする

481 :デフォルトの名無しさん:2011/10/13(木) 02:18:29.70
>>479
そういう最終的な仕様を想定した中でこの部分はこうしたいっていうのは
あるのはわかるがそのなんで>>465になったのかがわからないと
対処療法的な回答しかできないだよな

本当はそんなことしなくてもいいことなのかもしれないのに

でも過程を答えてくれない以上は対処的は話しかできない

しかも教える側としても気持ちの悪い対処方w

482 :デフォルトの名無しさん:2011/10/13(木) 02:19:13.48
完全にV-コードビハインド-VM(M)ですね

ハンドメイドとは恐れ入る

483 :デフォルトの名無しさん:2011/10/13(木) 02:21:46.47
>>465
コントロールを直接いじるクラスを別に作りたいなら
継承じゃなくて、Form1のインスタンスを管理するクラスに丸ごと渡すしかないんじゃないかな
継承してもそれはform1とは別のボタンだよ

こういうことじゃなくて?

484 :デフォルトの名無しさん:2011/10/13(木) 02:23:08.84
これ以上は周りがあれこれ説明してもムダでしょ
仕様の説明を聞くことで本人の理解度もわかるかなあと思ったけどそれすら
しないってことは・・・・

485 :デフォルトの名無しさん:2011/10/13(木) 02:29:19.42
>>482
ハンドメイドじゃないやり方となると
やっぱりWPFになるのかな?

486 :デフォルトの名無しさん:2011/10/13(木) 02:30:18.52
DataGridViewについてなんですが、ユーザーに入力させその値を配列として取り出したいんですが
for文使ってDataGridView.Rows[i].Cells[i].Valueでループさせて取り出していくしかないんでしょうか?
何かいい方法があったら教えて下さい

487 :デフォルトの名無しさん:2011/10/13(木) 02:31:54.03
つーかFormなんて扱いにくい物で管理しなくても
Panelとかのコンテナで管理させてもいいのにね
でもやりたいことの大枠を教えてくれないことにはアドバイスのしようもない

488 :デフォルトの名無しさん:2011/10/13(木) 02:33:08.69
WinFormsならイベント使うよりフォームがインターフェース実装して
そのインターフェースを通して操作する方が楽だよ
MVPてやつ

489 :デフォルトの名無しさん:2011/10/13(木) 02:38:49.44
>>486
配列っていうかDataGridView自体[row,column]のインデクサ持ってなかったか

490 :デフォルトの名無しさん:2011/10/13(木) 02:43:55.91
BackgroundWorkerを使って、高解像度画像を読み込むとき時間のかかる処理を非同期化したんだけど、
BitmapFrameを生成中に(bf = BitmapFrame.Create...の行)他の画像を読み込ませたくて、中断したいときどうすればいい?
CancellationPendingプロパティで判断したくともできないし。
あと、高解像度画像を扱う場合の定石みたいなのある?MemoryStream使うと良いとか。

ds = Dispatcher.CurrentDispatcher;
bw.DoWork += (s, e) =>
{
  BitmapFrame bf;
  using (var st = File.OpenRead(((string[])e.Argument)[0]))
  {
    bf = BitmapFrame.Create(st, BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
    bf.Freeze();
  }
  ds.BeginInvoke(new Action<BitmapSource>((bs) => ImageData = bs), bf);
};

491 :デフォルトの名無しさん:2011/10/13(木) 02:45:56.50
>>488
今ある程度アプリが出来て
よりわかりやすいようにコードを修正している段階なんだけど
インターフェースってものを今まで使ったことが無かった
この機会に調べてみます、MVPについても
ありがとう

492 :デフォルトの名無しさん:2011/10/13(木) 03:02:10.45
Streamのラッパー用意して中で失敗させたれ

493 :デフォルトの名無しさん:2011/10/13(木) 04:26:30.53
ツール>拡張機能マネージャーって便利だなぁ
入れてない人のためにオススメ書いとく

タブの表示状態をいろいろ変更できる
productivity power tools
プロジェクトが保存されているフォルダを開くことができる
powercomands
インデントのラインをひいてくれる
Indent Guides
左にコード全体を簡略化して表示
VS10x Code Map v2

494 :デフォルトの名無しさん:2011/10/13(木) 09:58:59.00
中断可能ストリームを>>492の方法で作った

コンストラクタでコールバック食わせて
Readメソッドをオーバーライドして
バッファサイズ×100読んだら1回くらいの割合で問い合わせる感じ

495 :デフォルトの名無しさん:2011/10/13(木) 17:18:39.85
WinFormでのデータとListViewの同期はどうすればできますか
データがソートされるとListViewもソートされるようにしたいんですが

496 :デフォルトの名無しさん:2011/10/13(木) 17:32:05.17
そもそもListViewがバインディングサポートしてない
相手がDataViewならListChangedイベントで再構成するぐらい?

497 :486:2011/10/13(木) 18:50:27.65
>>489
DataGridViewってインデクサ持ってたんですね。
でもやっぱりfor文でループさせて1個ずつ取り出すしかないんですね。ありがとうございました

498 :デフォルトの名無しさん:2011/10/13(木) 19:30:45.79
>>495
データのポインタをListViewItemのTagにセットしておけば・・・

499 :デフォルトの名無しさん:2011/10/13(木) 20:51:38.66
newとoverrideの違いがよくわかりません
どうやって使い分ければいいんでしょうか?

500 :デフォルトの名無しさん:2011/10/13(木) 20:54:41.42
>>499
new -> メモリを確保して機能を使えるようにする。
override -> すでに定義されているメソッドを上書きして機能を変更する。でも元機能がoverride可能でないと不可能。

なぜそこをまとめて質問するのかちょっとわからん。

501 :デフォルトの名無しさん:2011/10/13(木) 20:56:16.63
>>500
おいおいw
C#のnewには、他の言語でいうシャドウイングの機能もある。

502 :デフォルトの名無しさん:2011/10/13(木) 20:56:43.69
newはオーバーロード(オーバーライドではない)。
ちゃんとした開発でのバージョン管理のための機能なのでわかんないなら使わなくていい。

503 :デフォルトの名無しさん:2011/10/13(木) 21:02:20.37
>>500
>>502
初心者が初心者にデタラメ教えてどうすんの

504 :500:2011/10/13(木) 21:04:32.69
すまん。不勉強だった。シャドウイングって暗黙的っていうか副作用的な意味の再定義なのかな?

>>502の言葉を信じるなら、すでに使われてる名前の別の機能のメソッド定義って感じか。
この別定義は継承元のオブジェクトの機能とは全く関係がない。

ってことだよね??

505 :デフォルトの名無しさん:2011/10/13(木) 21:05:53.71
シャドウイングは、派生クラスを作った後で派生クラスで定義したのと同名のメソッドが
基底クラスに追加されたときに、前からその派生クラスを使ってたコードが誤動作しないようにするのが目的
最初から使うもんじゃない
そういうのをC#の言語仕様の中ではバージョン管理と呼ぶんだよ

506 :500:2011/10/13(木) 21:12:16.19
>>505
すでに継承済みの実装があるときに、根っこを変えた時の副作用を抑制する感じか。
でも、なるべくそういう機能は使わないで基底は最初からスーパーセットにしておくのが理想だよな。

なるほど。一個賢くなったよ!=D

507 :505:2011/10/13(木) 21:14:01.39
誤動作しないように、ではなくて修正が必要にならないようにするのが目的と言うべきか
>>505の状況になる→派生クラスをコンパイルしたときに警告が出る→問題ないことを確認したらnewで警告抑制
という流れになる

508 :デフォルトの名無しさん:2011/10/13(木) 21:20:32.14
自前のToString()を作るとき、元のToString()に無関係につくるなら、
overrideではなくnewすべきなのかな?

509 :デフォルトの名無しさん:2011/10/13(木) 21:23:02.15
名前を変えるのが親切かと

510 :デフォルトの名無しさん:2011/10/13(木) 21:27:14.33
全く新しくメソッドを定義するときにはnewは基本禁止でいいよ
インターフェイスを実装する場合に必要になることはあるけど

511 :デフォルトの名無しさん:2011/10/13(木) 21:37:17.14
>>505が胡散臭かったんで言語仕様を確認したが、
書いてあるのは「new修飾子を付けずに同名のメソッドを定義してもエラーとならない理由」だな

512 :デフォルトの名無しさん:2011/10/13(木) 21:43:01.28
http://msdn.microsoft.com/ja-jp/library/6fawty39%28v=VS.100%29.aspx
http://msdn.microsoft.com/ja-jp/library/ms173153.aspx
意図がとてもよくわかる

513 :500:2011/10/13(木) 22:11:06.17
>>512
その文章を読んでバージョン管理という命名の意図が読めたきがする。
継承の世代管理と互換性の切り分けがうまく仕組みに入ってるんだな。

まだモヤっとしてるから、実験してみるよ。うむ〜。


514 :デフォルトの名無しさん:2011/10/13(木) 22:16:51.53
あんまり難しく考えなくても
「newだとポリモーフィズムできないよ」
でいいんじゃないの?

515 :500:2011/10/14(金) 00:04:50.35
次のようなコードをかきながら実験して納得した。が、変なキャラ付けしたからはじめてこのコードみたらわからん気がする。
http://ideone.com/1Exdn

しかし、納得しても説明するのが難しいな。
newはnewで宣言したとある継承世代以降の同名の実装を切り替える。基底には触れないし実装後の名前をしらないと基底から呼べない。
overrideは基底にあるvirtualを上書きするから、基底世代が構築したフレームワークを書き換えるまたは上書きする。
世代の概念があるからバージョン管理。かなぁ。。。

newは>>502が正解のような気がする。気がする・・・。

さて、そろそろ名無しに戻るよ。戻るよ!!ノシ

516 :デフォルトの名無しさん:2011/10/14(金) 00:24:04.70
継承の問題点を念頭に置いておかないとわかりにくいんじゃないかな。
Javaでは、派生クラスが存在する可能性のあるクラスに対して、既存のコードが絶対に誤動作しないように
パブリックメソッドを追加するということはできないの。
派生クラスに同名のメソッドがあったら勝手にオーバーライドされてしまって、派生クラス作成者が意図しない動作になるから。
C#ではそうならないようにするためにシャドウイングをデフォルトの動作にしたりoverrideを明示的に書かせたりしてるわけ。

517 :デフォルトの名無しさん:2011/10/14(金) 00:35:21.72
コーディングルールとかクラスとかメソッドの
命名ルールの観点で参考になるc#の
オープンソースなんかない?

518 :デフォルトの名無しさん:2011/10/14(金) 00:37:26.67
>>517
.NET Framework

519 :デフォルトの名無しさん:2011/10/14(金) 01:55:43.79
Freameworkのソースってどこで見れるの?

520 :デフォルトの名無しさん:2011/10/14(金) 02:05:02.66
Express版より上位のVSで見るか、NetMassDownloader辺りのツールを使ってDLする。

521 :デフォルトの名無しさん:2011/10/14(金) 02:26:44.52
>>518-519
public な部分に関しては、ソースなくても見れるじゃん。
private な部分はあんまりとやかく言わないってのは MS ガイドライン。

522 :デフォルトの名無しさん:2011/10/14(金) 04:30:04.90
定めると不満が出るからね
定めなくても枠に嵌りたい人から不満が出るけど

523 :デフォルトの名無しさん:2011/10/14(金) 04:32:54.82
なんかアナーキーな人みたいだ

(MSみたいな所が)規約を定めると
です
集団に規約が存在することは大事だと思いますよ

524 :デフォルトの名無しさん:2011/10/14(金) 04:36:59.33
>>496
>>498
大変そうなのでDataGridViewでやったら簡単にできました
ありがとうございます

525 :デフォルトの名無しさん:2011/10/14(金) 06:41:45.83
gotoを使ったら周りから文句を言われるかな?

526 :デフォルトの名無しさん:2011/10/14(金) 08:31:05.17
周りの人によるでしょう

527 :デフォルトの名無しさん:2011/10/14(金) 08:36:40.55
氏ねや

528 :デフォルトの名無しさん:2011/10/14(金) 09:52:12.24
実装したいものにもよる
状態遷移図とか、gotoの方が書きやすい場合もある


529 :デフォルトの名無しさん:2011/10/14(金) 10:30:30.90
http://ideone.com/X4RvM

DataGridViewにバインドしたList<自作クラス>をソートしようと
いろいろ調べた結果ラムダ式が簡潔みたいなのでやってみたんですが
こんな感じになっちゃいました、項目が増えると同じようなコードが・・・
普通はどういうことをするんでしょうか?

自作クラスをIComaparableにしたり、IComparerインターフェースを作る方法が思うのですが。
データの量は10列の一万行ぐらいです

530 :デフォルトの名無しさん:2011/10/14(金) 10:39:53.26
普通は表示に合わせて元のデータをソートしたりはしない
違ってていい

531 :デフォルトの名無しさん:2011/10/14(金) 11:29:06.47
>>523
その場合、MS のソースコードを参照するってあんまり役に立たないのよ。
private フィールドはおおむね _hoge なんだけど、規約違反も多いというか。

MS は最大で10人程度のチームが最小単位で、その中で自由にやっていい(テストさえ通れば)。
その外側でレビューされるのは public メンバーだけなんじゃないかな。

532 :デフォルトの名無しさん:2011/10/14(金) 12:54:05.90
panelのautoscrollをtrueにしてマウスホイールでスクロールするように
したんですが、パネルがフォーカスを得られないのでいまいちです。
マウスがパネルの上にいるときにマウスホイールが効くように
するにはどうしたらいいでしょうか?

533 :デフォルトの名無しさん:2011/10/14(金) 13:03:06.17
コンテナをPanelからLabelに変える

534 :529:2011/10/14(金) 13:03:10.21
>>530
表示に合わせてというのがどういう意味かよくわからないんですが
バインドしないとなると、データの受け渡しと、DataGridViewに追加削除する
作業などを自前でやらなくてはいけなくなると思うんだすが
それにDGVでソートされたアイテムと同じものをDBから削除する場合
idxが変わってしまっていてどれを削除すればいいか、項目と一致するものを
探さないといけなくなると思うんですが

535 :デフォルトの名無しさん:2011/10/14(金) 13:05:58.17
>>534
インデックスでやらないでデータの中でキーに使えそうな物で検索すればよくね?

536 :デフォルトの名無しさん:2011/10/14(金) 13:47:35.91
>>532
面倒くさいから親フォームでWM_MOUSEWHEELが来たら
メッセージをリダイレクトしたら



537 :529:2011/10/14(金) 15:44:22.88
>>535
なぜバンドじゃなだめなんですか?

538 :デフォルトの名無しさん:2011/10/14(金) 15:49:47.87
なぜっていうか追加したり削除したりするってことはすでにインデックスなんてあてに
ならないって言ってるような物だろw


539 :529:2011/10/14(金) 16:07:14.34
>>538
バインドじゃだめな理由になってないですけど

540 :529:2011/10/14(金) 16:09:46.81
ソートについて聞いているのに何で誰もそこから逸れた事ばっかりいうんだ?
ソートについて教えてくれよ

541 :529:2011/10/14(金) 16:11:31.03
ちょっとここは、ラムダ式もバインドも理解してない人しかいなさそうですね
529の質問は取り下げます

542 :デフォルトの名無しさん:2011/10/14(金) 17:46:39.95
久々に池沼を見た気がする
仕事の合間に和ませてもらったよ

543 :デフォルトの名無しさん:2011/10/14(金) 18:52:15.08
ロジックとコントロールの分離とかそういったオブジェクト指向を勉強したい

javascriptならjQuery読んどけ!ってなるけどC#にコールドリーディングの定番はないかな

ないならTwintailを読む
作りたいものがTwintailに近いからなんだけど

544 :デフォルトの名無しさん:2011/10/14(金) 18:54:52.77
読めばいいじゃん・・・

545 :デフォルトの名無しさん:2011/10/14(金) 18:56:25.59
前に読んだけどあれはお世辞にも綺麗でないな
他に薦めるものもないから止めないけどね

546 :デフォルトの名無しさん:2011/10/14(金) 19:53:16.00
綺麗じゃないのかー
今気づいたけど設計の勉強と割りきってしまえばJavaでもいいんだよな。。。

547 :デフォルトの名無しさん:2011/10/14(金) 20:24:26.93
Javaは、ただ、サーバー側のコードばっかりで。
いわゆる MVC 的なものって、HTML アプリを想定するか、クライアントアプリを想定するかで全然パターン違うんで、あんまり参考にならないかも。

548 :デフォルトの名無しさん:2011/10/14(金) 20:25:39.83
.NET で何か参考になるコードっていうと、
アプリケーションアーキテクチャガイドで出してるやつか、
Code Recipe で MS が公式提供してるサンプルかかなぁ。

549 :デフォルトの名無しさん:2011/10/14(金) 21:26:12.23
アプリケーションアーキテクチャガイドよさそう!ありがとう

550 :490:2011/10/15(土) 03:10:07.35
>>492-494
ありがとう。
しかし実際に試してみたけどストリームの読み込み自体は時間かからず、
ネックになるのはデコードとImage.Sourceへの適用だった。
デコードはBackgroundWorker上で可能だけど、Image.Sourceへの適用は
どうしてもUIスレッド上で行わなければならず、UIのフリーズが避けられない状況。
中断自体も困難ぽいのでまたほかの方法模索してみる。

551 :デフォルトの名無しさん:2011/10/15(土) 04:27:38.83
public int Number { get; set; }
このようなC#の自動プロパティってどんな時に使うんですか?クラス継承した時とかですか?


552 :デフォルトの名無しさん:2011/10/15(土) 06:20:50.23
インターフェイスっていいね
Publicだとどのクラスからでもアクセスできる可能性があるけど
インターフェースを利用することで特定のクラスに向けてトンネルを作るような感じ
必要ないPublicなメソッドやプロパティを見えなく出来るのはわかりやすい

553 :デフォルトの名無しさん:2011/10/15(土) 07:07:30.72
>>522
あのー、そのアクセスレベルについて便乗質問なんですが、
時々「公開するつもり無いからpublicは使いたくない。てことでintarnal使ってる」
とか、「公開」にこだわってる人見かけますが、どういうことなんでしょ?
privateで無理なアクセスならpublicでいいじゃん?と初心者なオレは思ってしまうんだけど、
publicにすることでどんなデメリットがあるんですか?
初心者にも分かるよう、具体的に教えていただけるとうれしいです。

554 :デフォルトの名無しさん:2011/10/15(土) 07:43:36.58
publicだらけだと、別のクラスから触っちゃいけないメソッドを使ったりして
データを書き換えられちゃったら困る場合がある
だからインターフェース使うなりinternalにするなりして見えなくしてしまう
全体像を覚えているうちはいいけど、規模が大きくなっていくと忘れてしまう
忘れててもいいように、もしくは複数で開発してもいいように作ってる

555 :デフォルトの名無しさん:2011/10/15(土) 07:51:10.59
>>553
理由の一つは、非公開の変数は内部でどのように使おうが自由だって事もある
拘束される部分が出来るだけ少ない方が作るのもメンテナンスも簡単になるでしょ

556 :デフォルトの名無しさん:2011/10/15(土) 08:26:35.90
>>554-555
ありがとうございます。
外部アプリからいじられちゃうんですか?
それって、namespace名やclass名、変数名をオリナリティなものにしたら、
ほとんど回避できませんか?
それでも可能性はゼロじゃないということですか?
それとも意図的に解析して進入してくることに対するセキュリティってことですか?
いずれにしても、すごーく確率の小さいことを言ってるわけですね?
でも大きなプロジェクトになるとそういう配慮が必要なんだろうなあ。

557 :デフォルトの名無しさん:2011/10/15(土) 08:30:52.23
オリナリティ →オリジナリティ
進入 →侵入

558 :デフォルトの名無しさん:2011/10/15(土) 08:41:59.05
publicだろうがprivateだろうが外から調べようと思えば簡単にわかる。
名前が独自のものだとか、そういうものは関係ない。
わざとわかりづらい名前に変える難読化というのもあるが、それは別のお話。

誤って操作しなくていいものを容易に操作できないようにするというのは、
例えば非常用ベルを誤って操作しないようにガラスの中に入れておくとかそういうイメージ。

559 :デフォルトの名無しさん:2011/10/15(土) 08:49:24.09
独自な名前付けても関係無いのですか・・・すみませんでした。
複数の人間が一緒に作ってるときは効果的かなと思ったのですが。

560 :デフォルトの名無しさん:2011/10/15(土) 08:57:58.06
あ、独自の名前付けても関係無いというのは、逆コンパイルに対して
「そんなことしても無駄だ」ということか。

561 :デフォルトの名無しさん:2011/10/15(土) 09:05:01.33
>>559
一人でやっていても作りこんでいくと
どのクラスが何をしているかを忘れるでしょ
そんなことはないって思うのは1000行未満の小規模だから

例えばform1にファイルへのアクセス、Viewの応答、データの処理など
1つのクラスのコード書いているときにあらゆる可能性を意識しながら
書くなんて疲れると思わない?
ファイルに安全にアクセスできるクラス、データに安全にアクセスできるクラスを作るなどして
クラスが増えてくると、ありがたみがわかってくる

562 :デフォルトの名無しさん:2011/10/15(土) 09:12:47.33
>クラスが増えてくると、ありがたみがわかってくる

なるほどー。まだそういうレベルじゃないから実感できないんだな。
大きな規模になったときの保険みたいなもんですかね?
ありがとうございました。

563 :デフォルトの名無しさん:2011/10/15(土) 09:22:47.55
とりあえずすべてpublicで作っていくといいよ
そしたら確実にどの変数は弄ったらだめなのかなど
わからなくなるから
そういうことに実際に出会わないといくら説明しても納得いかないもんなんだよ

564 :デフォルトの名無しさん:2011/10/15(土) 09:32:06.63

public int hyakkai=100;
public int tasizan()
{
for(int i=0;i<hyakkai;i++)
{
count++;
}
return count;
}

上のようなクラスAがあったとして
別のクラスCでやっぱり1000回ぐらいがいいと思って
面倒だから同じメソッドを利用したいと思い、hyakaiに1000を代入して利用する
その後、別のクラスBが100回の足し算をさせるために同じクラスA利用する
クラスBは戻り値が100以外はエラーを吐くようになっている

565 :デフォルトの名無しさん:2011/10/15(土) 09:33:26.02
具体的には
namespace Foo{
[DataContract]
 class Hoge{ (略) }
}
↑を DataContractSerializer でファイルに保存して、
↓(ネームスペースだけ変わったデータ構造はかわらず)に読み出す方法ってありますか?

namespace Bar{
[DataContract]
 class Hoge{ (略) }
}

DataContractResolver を実装すればいけるかと思ったのですが、
なぜか、DataContractResolver は呼び出されませんでした。

566 :デフォルトの名無しさん:2011/10/15(土) 09:38:05.30
この場合、クラスAのhyakkaiの変数はいじってはだめだということを忘れていたために起こった
分かりやすくエラーがでるならいいけど、エラーが出ない場合気づかなかったりする
ここは絶対触られたくないところならprivateにしたり
一部のクラスだけが使えるようにしたいならinternalや明示的にインターフェイスにしたり
事前にしておけば、変な事をしなくて済むし、エラーも出てくれる
実行後よりコードを書いているときにエラーが出る方がいいんだよ

567 :デフォルトの名無しさん:2011/10/15(土) 09:46:38.04
ひとつのクラス(もしくはひとつのファイル)で使うusingの数って
目安みたいなのある? usingだけで10行超えたら多いだろ、とか。

568 :デフォルトの名無しさん:2011/10/15(土) 09:54:55.88
privateにする意味は他から弄られたくない、が主体だろうけど
インテリセンスで候補としてあがらなくなる点も大きいと思う。
インテリセンス便利すぎる。

569 :デフォルトの名無しさん:2011/10/15(土) 09:55:26.08
3行以内に収めないとスパゲッテー

570 :デフォルトの名無しさん:2011/10/15(土) 10:08:42.96
>>551
ほぼ常時それ使う。

あとから自動実装じゃないプロパティに書き換えても、
利用側の再コンパイル必要ないから。

571 :デフォルトの名無しさん:2011/10/15(土) 10:09:16.52
>>566
privateのありがたみは非常に良く分かるんだけど、
それより上、intarnal、protect、publicの使い分けとかがよく分からない。

572 :デフォルトの名無しさん:2011/10/15(土) 10:13:58.93
動けばいいの

573 :デフォルトの名無しさん:2011/10/15(土) 10:17:09.63
>それより上、intarnal、protect、publicの使い分けとかがよく分からない。

だから、private以外は全部publicになっちゃうw

574 :デフォルトの名無しさん:2011/10/15(土) 10:25:23.17
>>569
mjd
いま平均7〜8個+別名using2〜3個くらいあるわ 見直そう…

575 :デフォルトの名無しさん:2011/10/15(土) 10:27:01.91
usingなんて使わずフルパスで書けばおk

576 :デフォルトの名無しさん:2011/10/15(土) 10:28:11.94
>>571
internal はわかりやすいと思うけど。
ライブラリを作る側と使う側分けたときに使えるわけで。

protected はそれこそ継承時限定機能で、継承自体そんなめったに使うものじゃないんで。

577 :デフォルトの名無しさん:2011/10/15(土) 10:38:26.16
勉強に集中したくてカウントダウンするソフトが作りたいんですけど
ヒントをください

578 :デフォルトの名無しさん:2011/10/15(土) 10:50:45.95
ヒント: カウント減らして表示

579 :デフォルトの名無しさん:2011/10/15(土) 11:00:33.39
>>565
[DataContract(Namespace="http://schemas.datacontract.org/2004/07/Foo")] class Hoge
厳密に同じじゃないかもしれないのでNamespaceのところは自分でXML見てxmlnsを確認してくれ
XML名前空間は最初から明示的に付けとくようにしたほうがいいと思う

580 :デフォルトの名無しさん:2011/10/15(土) 19:54:17.20
Itemsってプロパティですよね?
なのにItems.AddやItems.Removeができるのはなじぇ?
自分でこういうもの作ろうとするにはどうすればいいの?

581 :デフォルトの名無しさん:2011/10/15(土) 19:58:31.60
プロパティ化したものにも大元の型があるのでその型を参照してメソッドなどを引っ張ってくる。

582 :デフォルトの名無しさん:2011/10/15(土) 19:59:07.90
obj.GetItems().Add
もしくは
var items = obj.Items;
items.Add();
こう書けばわかるか?

583 :デフォルトの名無しさん:2011/10/15(土) 19:59:48.36
ちょいと端的すぎたか。
まー、プロパティ書くときにIntとかListとかの型を指定するのでそれを参照してる。

584 :デフォルトの名無しさん:2011/10/15(土) 20:01:08.12
あらら、>>581 == >>583

585 :デフォルトの名無しさん:2011/10/15(土) 20:08:11.72
Setはできないプロパティで
List<T>を返しているようなものと思っていたけど
Getメソッドなんですね
そしてそのGetメソッドはPrivateで公開はしていないという感じですか?

586 :デフォルトの名無しさん:2011/10/15(土) 20:13:09.74
二重起動を禁止するのはできたんですけど、二重起動を禁止したあと既に起動している同じアプリケーションをアクティブ化する方法ってないですか?


587 :デフォルトの名無しさん:2011/10/15(土) 20:14:48.97
プロパティでgetをprivateにする意味はあんまりないと思うけど、
getが参照を返すのでそういうことができるんだわな。

588 :デフォルトの名無しさん:2011/10/15(土) 20:15:21.47
同じようなのを実装するとなると

public List<Item> Items
{
get{return getItems();}
private set{ _items=value;}
}

こんな感じですか?

Setできないのか型チェックに問題があるからかな?
コレクションなどにはAddメソッド通して設定するって仕様があるのかな
自分ではよく itemsA=itemsB的なことをクラス間でやっちゃったりするんだけど

589 :デフォルトの名無しさん:2011/10/15(土) 20:16:06.57
>>587 -> >>585

590 :586:2011/10/15(土) 20:25:11.78
すいません今調べたらそれらしいものが出てきたので586は取り下げます

591 :デフォルトの名無しさん:2011/10/15(土) 20:25:29.13
>>588
自分だったらこういう感じで書くかな。
http://ideone.com/y3XpI

592 :デフォルトの名無しさん:2011/10/15(土) 20:26:32.31
>>590
おっと、ま〜、頑張ってくれ。

593 :デフォルトの名無しさん:2011/10/15(土) 20:33:15.53
>>588
private List<T> _Items;
public List<T> Items { get{ return _Items ?? (_Items = new List<T>()); } }

594 :デフォルトの名無しさん:2011/10/15(土) 20:36:26.81
private List<T> _Items = new List<T>();でいいよ
List<T>は最初に要素を追加したときに内部の配列が確保されるからnewはほとんどコストない

595 :デフォルトの名無しさん:2011/10/15(土) 20:46:34.24
>>591
これ見てるとAddで追加させるためだけに
プロパティを作ったような印象がする
ListBox.Add()だと変なのかな

596 :デフォルトの名無しさん:2011/10/15(土) 20:53:47.78
コレクション返せばItems[i]とかforeachとかできるでしょ
直交性が良くなる
List<int>返すのはあんまり良くないからIList<int>にするべきだけど

597 :デフォルトの名無しさん:2011/10/15(土) 20:53:53.18
いちいち、自前でADDやRemove作るの面倒だから
ライブラリにあるList<T>を公開してこれを使わせようって感じか
今までAddを自前で作ってたから参考になった
でも、型が違うデータをクラス間でやりとりする場合
コンバーター作らないといけないんだよね

598 :デフォルトの名無しさん:2011/10/15(土) 20:59:37.68
>>596
なるほどーインターフェイスを明示的にすることで
使用制限するのかー勉強になるなー

599 :デフォルトの名無しさん:2011/10/15(土) 22:17:50.29
Control.Invalidateメソッドはスレッドセーフですか?
それともちゃんとControl.Invokeを通して呼ばなければなりませんか?

600 :デフォルトの名無しさん:2011/10/15(土) 22:20:16.29
基本的に、スレッドセーフなメソッドは明示的にそう書いてある

601 :デフォルトの名無しさん:2011/10/15(土) 22:24:33.18
>>600
ありがとうございます
ということはこれはスレッドセーフではないということですね?
あるSDKサンプルに別スレッドからInvalidateしている
サンプルがあったので疑問に思いまして

602 :デフォルトの名無しさん:2011/10/15(土) 22:55:32.66
スレッドセーフであることとコントロールに触れるか否かは同義じゃないし
SendMessageでやってる奴は呼べるよ

603 :デフォルトの名無しさん:2011/10/15(土) 23:01:52.92
>>602
>SendMessageでやってる奴は呼べるよ
SendMessageは分かりますがこれはどういう意味ですか?


604 :デフォルトの名無しさん:2011/10/15(土) 23:03:31.29
VisualC#でビルド時に自分のコンパイラ環境を書き込ませないようにするにはどうすればいいの?

605 :デフォルトの名無しさん:2011/10/15(土) 23:15:48.22
>>603
メッセージキューを使った処理なら安全って意味じゃない?

606 :デフォルトの名無しさん:2011/10/15(土) 23:17:09.70
>>603
SendMessageはAPIの方で勝手に同期してるからどこからでも呼べる

607 :デフォルトの名無しさん:2011/10/15(土) 23:29:56.97
>>606
ということは結局Invalidateはmsdnには明記されてはいないが、
スレッドセーフであるということですか?
SendMessageとInvalidate()が等価である保障はないですよね?

608 :デフォルトの名無しさん:2011/10/15(土) 23:34:18.41
その点においてスレッドセーフにこだわっても無意味だといっているんだろう

スレッドセーフのファンなの?

609 :デフォルトの名無しさん:2011/10/15(土) 23:40:54.88
>>608
スレッドに痛い思い出もあるので注意深くなっているだけです
ひとまずスレッドセーフであるということで使っていきます。
ありがとうございました

610 :デフォルトの名無しさん:2011/10/15(土) 23:43:18.36
スレッドセーフではないだろ

611 :デフォルトの名無しさん:2011/10/15(土) 23:56:16.95
>>610
ならやはり他スレッドからはInvokeを通してInvalidateすべきですか?

612 :デフォルトの名無しさん:2011/10/15(土) 23:59:19.93
うん
頭悪そうだし、それが賢明だと思うよ

613 :デフォルトの名無しさん:2011/10/16(日) 00:03:37.17
>>612
自分は頭が悪くてかまわないので、
頭のそこそこいい、自分以外の人のためにも、
私が勘違いしているところを説明してもらえますか?

614 :デフォルトの名無しさん:2011/10/16(日) 00:06:28.72
Invalidateの実装調べるかMSに聞くしかないんじゃね

615 :デフォルトの名無しさん:2011/10/16(日) 00:25:49.75
>>613
.NETのスレッドセーフとWin32のコントロールが要求している同一スレッドの制限を混同しているところ

616 :デフォルトの名無しさん:2011/10/16(日) 00:26:11.96
.netのバージョンによってtimerの精度に違いはありますか?

617 :デフォルトの名無しさん:2011/10/16(日) 00:36:36.71
FormsのタイマはAPIで実装されてるからそっちが変更されなければない

System.Timersの方は「より精度がいい」らしいけど、分解能が書かれていないので保証できない

618 :デフォルトの名無しさん:2011/10/16(日) 00:39:10.89
Stopwatがいいよ

619 :デフォルトの名無しさん:2011/10/16(日) 00:41:51.60
Stopwatchの中身はパフォーマンスカウンタだろう

620 :デフォルトの名無しさん:2011/10/16(日) 00:50:23.86
.NETのバージョンではなく、タイマーの種類によって精度が違う


621 :デフォルトの名無しさん:2011/10/16(日) 04:45:26.73
>>591
あと気になるのが、リストを丸ごと渡したいんだけど
内容は変えられたくないから、setはできないようにしているわけだけど
.Addでできちゃうのがねぇ・・・
こういう場合はcloneでも作ってコピーして渡すのかな?

622 :デフォルトの名無しさん:2011/10/16(日) 06:21:27.33
その発想が怖いわ。

623 :デフォルトの名無しさん:2011/10/16(日) 06:45:31.88
ReadOnlyCollectionを使います

624 :デフォルトの名無しさん:2011/10/16(日) 10:03:06.01
一番精度が悪いのと一番精度がいいのは何でしょうか?
あとDOBONを見ると直接APIを利用する方法も紹介されてますが.NETのライブラリから利用するより直接APIを利用するほうが安定しているものでしょうか?

625 :デフォルトの名無しさん:2011/10/16(日) 12:47:50.28
MSDNて読みづらいなと思って英語でみたら
すげーわかりやすい
訳さなくてもいい単語まで無理やり訳しているから
あんな分けのわからない説明になっているんだな

626 :デフォルトの名無しさん:2011/10/16(日) 13:37:58.31
MSDNの翻訳は利用者が採点できるようにすればいいのに
点数が低いページは修正して、翻訳者はクビで

627 :デフォルトの名無しさん:2011/10/16(日) 13:45:28.24
機械翻訳じゃないの

628 :デフォルトの名無しさん:2011/10/16(日) 13:57:32.66
機械翻訳の記事なら何も言わんでも自動で原文が出てくるはず

629 :デフォルトの名無しさん:2011/10/16(日) 14:11:23.68
MSDN のページなら、自動翻訳の場合はそう書いてなかったっけ?

630 :デフォルトの名無しさん:2011/10/16(日) 14:14:39.99
日本語ってほんと難しいなって思うよ
英語だと一つの単語で表すのに
日本語だと複数の言葉に訳せるからな
constraintを制約と訳したり整合性と訳したり
ただでさえプログラムは直観的にイメージしにくいのにのに
統一した言い回しをしないで訳すから余計にわけがわからなくなる

631 :デフォルトの名無しさん:2011/10/16(日) 14:19:45.07
それは書く場合の話ね。
豊富な語彙の中から適切なものを選択する必要があるから。

読む場合は日本語の方が簡単。
文脈に依存する単語が少ないから

632 :デフォルトの名無しさん:2011/10/16(日) 14:22:19.84
確かにそれはあるな、日本語の方が的確に言葉で表現できる
でも、できる可能性があるのと理解できる、理解させられるは違うからな
やっぱり日本語は難しいよ

633 :デフォルトの名無しさん:2011/10/16(日) 14:22:20.65
児童翻訳

634 :デフォルトの名無しさん:2011/10/16(日) 14:32:27.66
例えばさこれ

テーブルに新しいデータ行を追加できます

初心者プログラマはテーブルって机のテーブル?
それとも何かの比喩?
データ行って何?データ行じゃない行はなんなの?
こういうのは別に機械語じゃなくても普通にあるじゃない

you can add new rows of data to the table.

原文だとこれ、めちゃくちゃわかりやすい
プログラムは英語で書かれているし説明が直観的に理解しやすい
できるだけ英語交じりで訳してほしいよな

DataTableのnew rowsにDataをAddできます

こんな感じ

635 :デフォルトの名無しさん:2011/10/16(日) 14:37:42.25
それは流石に知能が低過ぎだろw

636 :デフォルトの名無しさん:2011/10/16(日) 14:39:21.94
プログラミングでもなんでもそうだけど、専門分野における日本語は本当に混乱の素
"Class"は一般的に使われている意味とはかけ離れているのに、
わざわざ、"クラス"と訳すんだよなー

初心者からしたら、クラスって学校の?そういえば学校の喩えよくあるね、ちがうのかな?
みたいにさ、わかりやすく訳せば訳すほどプログラムから遠ざかって行く感じがするんだよ

637 :デフォルトの名無しさん:2011/10/16(日) 14:42:46.81
英語で読めばおk

638 :デフォルトの名無しさん:2011/10/16(日) 14:43:18.92
>>634
>DataTableのnew rowsにDataをAddできます
結局理解してないじゃん

639 :デフォルトの名無しさん:2011/10/16(日) 14:46:41.75
言いたいことわかるだろ?
専門用語は専門用語に準じて書いてほしいんだよ
一般的な用語に訳すなってこと

640 :デフォルトの名無しさん:2011/10/16(日) 14:55:17.74
日本語でもクラスを種類とか階級の意味で使う場面もあるじゃん?
文脈を読めない人は多分日本語でも英語でもダメじゃないかなー

641 :デフォルトの名無しさん:2011/10/16(日) 15:02:53.45
プログラミングにはある程度の英語力は必要だね
同僚に仕様書が英語で読めませんとか言われても困るし・・・

642 :デフォルトの名無しさん:2011/10/16(日) 15:06:11.79
>>640
> 日本語でもクラスを種類とか階級の意味で使う場面もあるじゃん?
だから訳すとどうとでも取れるって言ってるんじゃないか。自分で書いててわからないのか?
> 文脈を読めない人は多分日本語でも英語でもダメじゃないかなー
プログラムの説明の文脈を理解できるのはそれこそプログラム理解しているからだろw
日常会話が理解できないから英語が無理だって言うならまだわかるが
専門用語だらけで初心者からした文脈も糞もあるかよw
お前自信が俺が言っている文脈を理解できずに見当違いなこと言ってることに気づけよ

643 :デフォルトの名無しさん:2011/10/16(日) 15:09:19.21
そこらにいる奴に”クラス”って言って、階級や種類を連想する奴がどれだけいると思っているんだ?
そういう幼稚な屁理屈言っているようじゃ友達もいないんだろ
揚げ足取ってはネットでご満悦ですか?

644 :デフォルトの名無しさん:2011/10/16(日) 15:09:46.00
読者がアホの子設定ってこと?

645 :デフォルトの名無しさん:2011/10/16(日) 15:11:55.59
>DataTableのnew rowsにDataをAddできます

これで分かる気がしないんだけど何が言いたいの?

646 :デフォルトの名無しさん:2011/10/16(日) 15:12:44.87
こういう当たり前なことがわからないバカが
初心者向けのプログラムの解説サイト作ったりして
全く理解できないような説明ばかりするんだろうなw

初心者にもわかりやすく伝える能力って一種の才能だよなあれは
今ここにいる奴らですら俺が言っていることが理解できていない
もう初心なんてとっくに忘れちゃったおっさんばかりなのか?

647 :デフォルトの名無しさん:2011/10/16(日) 15:14:01.02
>>644
プログラミングの知識がないのとアホとは別ですが?
そういうこともわからないあなたみたいなのをアフォといいます

>>645
低学歴は問題外です

648 :デフォルトの名無しさん:2011/10/16(日) 15:16:32.87
まあ落ち着けよw
初心者ならまず初心者向けの本でも読めよ。無理して自分の無知を晒すなw

649 :デフォルトの名無しさん:2011/10/16(日) 15:17:47.85
new rowsはtableじゃなくてdataにかかってることも分からん奴が学歴云々言うなよ

650 :デフォルトの名無しさん:2011/10/16(日) 15:20:36.47
rows of dataが固まりなんすよ

651 :デフォルトの名無しさん:2011/10/16(日) 15:25:57.15
一つ勉強になって良かったね☆

652 :デフォルトの名無しさん:2011/10/16(日) 15:28:08.79
>>649
分かった上で書いているんですけどねw
そういうこともわからないバカが偉そうなことを言わないでね
あとその指摘はただの揚げ足だからw、論点ズレてます
文脈理解してくださいね^^

653 :デフォルトの名無しさん:2011/10/16(日) 15:30:11.67
アラアラ

654 :デフォルトの名無しさん:2011/10/16(日) 15:32:40.12
ばかなお前らにちょっと教えてやろうかなw

あのDataっていうのは別の追加するオブジェクトって意味で書いているわけじゃないんだよ(少なくとも原文は)
お前ら英語もわからない低学歴バカは機械語翻訳に翻弄されているようだなw
もちろん直訳したら、データの新しい行ってことだろうけど
あの原文はテーブルの新しいデータ領域という意味で書いているんだよ
データの新しい行を追加って日本語でもおかしいだろアホw

655 :デフォルトの名無しさん:2011/10/16(日) 15:34:34.46
つまり日本語でわかりやすく伝えるとしたら

データの新しい行?ww空のデータでも追加でもするんですか?w

656 :デフォルトの名無しさん:2011/10/16(日) 15:52:13.59
まだ微妙に理解できてなさそう
ofの使い方について調べましょう

つか家庭教師じゃないんだからいい加減にしてくれ

657 :デフォルトの名無しさん:2011/10/16(日) 15:57:25.83
>>656
おい厨病、訳してみろよww

658 :デフォルトの名無しさん:2011/10/16(日) 16:00:46.53
>>656
英語できそうですね、>>656の発言を英語で書いてくれませんか?
もちろん直訳や中学生英語は抜きでお願いしますよww
外人が書いたようにお願いします

1分でできますよね?w

659 :デフォルトの名無しさん:2011/10/16(日) 16:01:54.53
それが人にものを頼む態度ですか?

全裸で四つん這いになって尻を突き出しおねだりして見せなさい
おっと、靴下は履いたままですよー

660 :デフォルトの名無しさん:2011/10/16(日) 16:02:30.71
>>656
まだですか?あの程度の英語も訳せないバカにはやっぱり無理でしたかwwwww
文脈も理解できないんですねww
だから日本語も理解できないクズPGなんですよwww

揚げ足しか取らないところをみると、友達もいなさそうですねww
だから一般的な価値観が理解できないんですね
かわいそwww

661 :デフォルトの名無しさん:2011/10/16(日) 16:03:06.48
>>659
はいにげたーwwwwwwwwwwwwwwwww
バーーーーーーーーーーーーカwwwwwwwwwwww

662 :デフォルトの名無しさん:2011/10/16(日) 16:05:08.38
>>659
こんな先生いやだwww

663 :デフォルトの名無しさん:2011/10/16(日) 16:05:28.22
>>652
「分かった上で書いている」のに「その指摘はただの揚げ足」って矛盾してるように見えるんだけどどういう文脈?

664 :デフォルトの名無しさん:2011/10/16(日) 16:08:15.66
>>654
俺アメリカ人だけどnew rows of dataは新しいデータ行だよ。
データの新しい行?バカじゃね?


665 :デフォルトの名無しさん:2011/10/16(日) 16:08:40.17
逃げたってどういうこと?
無作法な子に何も教えないのは普通ですよね?
私はあなたにまずは礼儀を汁人間になって欲しいのです

666 :デフォルトの名無しさん:2011/10/16(日) 16:09:12.67
バカなお前らのためにおれが訳してやるよwwww

>>656
u couldnt understand that using about "of" search for u

u know im not tutor! knock it off!

667 :デフォルトの名無しさん:2011/10/16(日) 16:10:55.50
IDないとこであばれんなよ

668 :デフォルトの名無しさん:2011/10/16(日) 16:15:14.70
>>666
やるじゃんwwwwすげぇえええええ

669 :デフォルトの名無しさん:2011/10/16(日) 16:16:47.78
>>666
さすが日ごろから外人とスカイプやってるだけのことはあるわwwwww

670 :デフォルトの名無しさん:2011/10/16(日) 16:17:31.99
>>666
汚い尻だなぁ

671 :デフォルトの名無しさん:2011/10/16(日) 16:18:30.19
>>666
ごめん、俺が悪かった
お前がそんなにできる奴とは思わなかった
本当は俺は低学歴の日曜プログラマなんだ
許してくれ

672 :デフォルトの名無しさん:2011/10/16(日) 16:20:38.57
>>671
低学歴なら仕方ない。靴を舐めて綺麗にしたら許してやろう

673 :デフォルトの名無しさん:2011/10/16(日) 16:21:59.35
は?何が起きてるの?

674 :デフォルトの名無しさん:2011/10/16(日) 16:24:06.20
shut the fuck upでもいいし
shut the motha fuckin upでもいいよw

675 :デフォルトの名無しさん:2011/10/16(日) 16:24:34.90
今日のハイライトはここだったな

>>634
「new rowsにDataを」

676 :デフォルトの名無しさん:2011/10/16(日) 16:26:05.71
新しい行にデータをつっこむ
別に間違ってないが?

677 :デフォルトの名無しさん:2011/10/16(日) 16:40:13.76
codezineに書いていることってMSDNのコピペ多いな

678 :デフォルトの名無しさん:2011/10/16(日) 16:40:30.08
本当人気のある言語はガキがよってくるから荒れるよなw

679 :デフォルトの名無しさん:2011/10/16(日) 16:43:58.61
>>676
通常の行追加シーケンスはこう

Detached状態のDataRowを作成(NewRowメソッド)

DataRowに値を設定(set_Itemインデクサ―)

DataTableのRowsにDataRowを追加(Addメソッド)

行が主語なら動詞はsetになるから
あとDataTableの未使用領域は「スロット」って内部呼称だった覚えがある

680 :デフォルトの名無しさん:2011/10/16(日) 16:51:35.26
そんなことはどうでもよくて、
原文の方がわかりやすいって騒いでるヤツが
こんな簡単な原文すら読めてないのが
なんというかもうね

681 :デフォルトの名無しさん:2011/10/16(日) 17:02:14.89
どうでもいい。ツマランことでスレ消費すんな。

682 :デフォルトの名無しさん:2011/10/16(日) 17:38:01.47
昔の嫌われ者、ブイビー厨
今の嫌われ者、シーシャー厨

683 :デフォルトの名無しさん:2011/10/16(日) 17:42:21.38
>>682
嫌われてるかは知らんがC#の包容力は半端ないぞ。

684 :デフォルトの名無しさん:2011/10/16(日) 18:17:35.07
>>634が言ってる
>you can add new rows of data to the table.
>原文だとこれ、めちゃくちゃわかりやすい

と言っているのがよくわからないんだけど、
なんで原文だと初心者プログラマは「tableって机のテーブル?」ってならないんんだ?

685 :デフォルトの名無しさん:2011/10/16(日) 18:25:02.95
和洋折衷だねぇ。
データテーブルに新しい行を追加できます。でいいような気がするけど。

MSの翻訳は多分もっと粒の大きな単位でやってるだろうから、細部にてがまわらんのだろうね。
量産されるDocumentについていかないといけないし。

686 :デフォルトの名無しさん:2011/10/16(日) 18:26:24.12
別に読めるからああだこうだと揉めないでくださいよ
大丈夫
母国語と合わないだの何だの抜かす奴は遠からず止めるから

687 :デフォルトの名無しさん:2011/10/16(日) 18:30:51.00
プログラムは止めるだろうけど、ぽんこつアンチとして居着きそうで嫌w

688 :デフォルトの名無しさん:2011/10/16(日) 18:32:03.24
それはあるかもしれないが
煽らなければその危険は少ないはずだ

689 :デフォルトの名無しさん:2011/10/16(日) 19:24:51.22
ここまで読んで分かったことは、同僚と技術的な会話をしたことがないんだろうってことだけだな。w
文章がすべてではなかろうに。

690 :デフォルトの名無しさん:2011/10/16(日) 19:47:08.48
コーディングについて質問
とあるサイトだとこういう順序で書くのがいいって書いてたけど問題ないですか?
* Fields
* Static Fields
* Properties
* Static Properties
* Events
* Constructors
* Destructor
* Methods
* Static Methods
* Operators
* Event Handlers
* Classes

691 :デフォルトの名無しさん:2011/10/16(日) 19:51:41.55
どうでもいい
縛られてないと不安ならStyleCopでも使ったら

692 :デフォルトの名無しさん:2011/10/16(日) 19:52:35.59
問題ない
「良い」ってのは共通認識を持ってる人間の中で見やすいってだけだから
それ以外の人間にとってはどうでもいい

フィールド1、メソッド1、プロパティ1、メソッド2、フィールド2…とか並んでるとキモイけどな

693 :デフォルトの名無しさん:2011/10/16(日) 20:06:51.77
>>690
プロジェクトによっては、コーディング規約といふものがありけるらしいので、そっちが優先。
後は、縛られるのがお好きならその方法を次点で採用すればいい。
読みやすいのが正義だと思うんだがね。

694 :デフォルトの名無しさん:2011/10/16(日) 20:30:48.02
>>690
自分はそもそも、そういう単位でならべないなぁ。

プロパティのバックフィールドはプロパティの直下に書くとか、
特定のいくつかのメソッドからしか参照しないフィールドはそのメソッドと固めて書くとか。

695 :デフォルトの名無しさん:2011/10/16(日) 20:51:57.40
>>624
.NETから使えるタイマーは、以下の3つ

System.Windows.Forms.Timer // 精度は荒い
System.Timers.Timer // 一般向け
System.Threading.Timer // 基本API

あとマーシャリングが必要だが、マルチメディアタイマーが使える
精度は最も高い

timeSetEvent


696 :デフォルトの名無しさん:2011/10/16(日) 22:14:17.75
・Aクラスを継承してBクラスを作る
・Aクラスはpublicメソッドを100個持っている
・そのうち90個だけをBクラスでも使いたい(残り10個は呼び出せないようにしたい)
って場合、それをスマートにやる方法を教えてください

697 :デフォルトの名無しさん:2011/10/16(日) 22:18:07.63
またスマートやら簡潔やらうるさくなってまいりました
ハァー

698 :デフォルトの名無しさん:2011/10/16(日) 22:18:54.53
ちょっと間違った
誤:そのうち90個だけをBクラスでも使いたい(残り10個は呼び出せないようにしたい)
正:そのうち90個だけをBクラスでも公開したい(残り10個は隠蔽したい)

699 :デフォルトの名無しさん:2011/10/16(日) 22:19:38.69
動けばいいんだよ


700 :デフォルトの名無しさん:2011/10/16(日) 22:19:51.28
やる方法がありませんのでスマートも糞もありません
お引取りを

701 :デフォルトの名無しさん:2011/10/16(日) 22:21:31.37
>>698
90個のメソッドだけインターフェースに抽出して委譲パターンで書けよ

702 :デフォルトの名無しさん:2011/10/16(日) 22:21:37.41
一手毎にアレやれコレやれで進み、どういう意味や効能があるのかが解らず挫折してたんですけど
ttp://msdn.microsoft.com/ja-jp/library/cakx2hdw.aspx
手順18で詰んだ。
InformationForm の分離コード ページで、InformationForm クラスに次のコードを入力して、UserInformation プロパティを追加します。
以降を噛み砕いた日本語で教えてください。なにをすればいいのかが解らなくなってしまいました。

つか、チュートリアルの例題なのに、なんですか!この難易度。
一般的手法なんでしょうか?これ。知恵熱出そうです。

703 :デフォルトの名無しさん:2011/10/16(日) 22:23:16.59
やっぱ無理っすか
C++みたいにprivate継承もないし、newを使えば偽物と書き換えられるけど隠蔽は出来ない
継承ではなく包含にして公開するメソッドを90個書き直してスーパークラスへリダイレクトするしかないか

704 :デフォルトの名無しさん:2011/10/16(日) 22:24:25.79
>>701
ですな・・・めんどくせえええええ
1個だけ隠蔽したいのに99個書き直しとかめんどくせえええええええ
しねしにさらせ

705 :デフォルトの名無しさん:2011/10/16(日) 22:25:32.48
>>702
挙がってるコードをInformationForm.csに書けばいい

706 :デフォルトの名無しさん:2011/10/16(日) 22:26:12.82
スーパークラスに90個メソッドの実装書いて
AとBそれぞれに継承させれば

707 :デフォルトの名無しさん:2011/10/16(日) 22:27:09.54
A、Bが絶対親子じゃないといけないってんなら無理だけど
インターフェースで包含に書きなおせるなら抽象クラスが親でもいいだろ

708 :デフォルトの名無しさん:2011/10/16(日) 22:27:28.24
スーパークラスを自分で弄れる仕様ならいいけどね
みんなお仕事だからいろいろ大変なんだよ

709 :デフォルトの名無しさん:2011/10/16(日) 22:28:06.05
>>702
そもそも何を作ろうとしているチュートリアルなのか分かってっか?

710 :デフォルトの名無しさん:2011/10/16(日) 22:29:01.46
え、お仕事なんて居るのこのスレ?
さっきまで低レベルなエングリッシュ談義してたのに

711 :デフォルトの名無しさん:2011/10/16(日) 22:29:50.23
newで上書きして例外放り投げたら宜し

712 :デフォルトの名無しさん:2011/10/16(日) 22:30:27.51
>>711
呼べるのに呼ぶと例外投げるメソッド公開しているクラスって馬鹿っぽくね?

713 :デフォルトの名無しさん:2011/10/16(日) 22:31:48.11
>>712
エレガントじゃないけど被害は出ないぜ

714 :デフォルトの名無しさん:2011/10/16(日) 22:32:08.48
そんなことないよ
NotSupportedExceptionの立場を奪わないで!

715 :デフォルトの名無しさん:2011/10/16(日) 22:32:53.65
うーん・・・理屈は分かるが腑に落ちない

716 :デフォルトの名無しさん:2011/10/16(日) 22:34:37.81
100個のメソッドとか、最高に使いづらそうなクラスだ

717 :デフォルトの名無しさん:2011/10/16(日) 22:36:27.05
BindingListなんかソートをサポートしたい時は継承してください
って言ってNotSupportedExceptionを平気で投げる

一応ソートするような枠組みだけは用意してある
でも一般的には不要だったり、コストが大きかったりってこともある

718 :デフォルトの名無しさん:2011/10/16(日) 22:37:04.43
>>712
配列がAdd呼べるとか、継承階層がうまく作れない(作ると複雑になりすぎる)場合によくある手。

719 :デフォルトの名無しさん:2011/10/16(日) 22:37:33.56
ありがとうございます、NotSupportedExceptionでいくことにしました

720 :デフォルトの名無しさん:2011/10/16(日) 22:38:29.32
Obsolete以外に呼び出されたらコンパイル時に警告/エラー吐く属性ってまだないっけ?
そろそろ追加されても良いと思うんだが

721 :デフォルトの名無しさん:2011/10/16(日) 22:55:17.96
>>702
初心者はWinFormよりまず文法からだと思うけど

722 :デフォルトの名無しさん:2011/10/16(日) 23:11:03.24
インテリセンスに表示されないようにできたよね?それやっとけば使われにくい

723 :デフォルトの名無しさん:2011/10/16(日) 23:26:56.60
[EditorBrowsable(〜.Never)]だな

724 :デフォルトの名無しさん:2011/10/17(月) 00:21:24.95
なんで、List<T> にしか、ForEach がないのかだれか教えてくれ。

725 :デフォルトの名無しさん:2011/10/17(月) 00:24:03.98
ラムダは1次元配列にしか対応できないから

726 :デフォルトの名無しさん:2011/10/17(月) 00:31:39.07
IEnumerable<T>の拡張メソッドにならなかったのは副作用だかららしい
いくら実用主義と言っても関数型的なLINQの中にForEach入れるのはどうしても許せなかったんだろ

727 :デフォルトの名無しさん:2011/10/17(月) 00:32:46.00
>>724
今では賛否両論だけど、LINQ に ForEach たさなかったのは、
メソッドチェーンで副作用のあるコード書くのを嫌ったから。

じゃあ、逆に、なんで List にだけあるかというと、
List の場合は foreach ステートメント(外部列挙)するより、
内部列挙(ForEachにラムダ式渡す)の方が実行効率ちょっとだけいいから。

ちなみに、配列に対する foreach ステートメントは for(var i... 相当のコードに最適化されるので、ほっといても効率いい。

728 :デフォルトの名無しさん:2011/10/17(月) 00:34:17.90
>>702 あぁ それってば、きっと
public UserInformation
エラー1クラス、デリゲート、列挙型、インターフェイス または構造体が必要です。
のエラーだろ?

プロパティの記憶用の変数を設置する部分が飛んでいるようです
とyahooでググレばあなたに幸せが訪れるかも。知らんけど。

729 :デフォルトの名無しさん:2011/10/17(月) 00:40:25.96
関数型の思想がどうっていうより、クエリとその結果の利用ははっきり区別しないと
ものすごいわかりにくいコードになると思う
ForEachが使えたら全部ForEachになってしまうだろうし

730 :デフォルトの名無しさん:2011/10/17(月) 00:48:52.30
LinqのAggregateは一般的な集計関数と言うことで、
ForEachでやりたいことの一部をやってくれるよ。


731 :デフォルトの名無しさん:2011/10/17(月) 01:06:13.17
HashSet<T> で独自クラスを重複なく管理させたいんだが、
どうすりゃいいの?


732 :デフォルトの名無しさん:2011/10/17(月) 01:10:11.23
GetHashCodeとEqualsをオーバーライドする
構造体ならIEquatable<T>も実装する

733 :702:2011/10/17(月) 01:16:53.83
サンクス なんだか同じところで躓いてた人を見つけました。もう視力と気力が衰えてきたので明日頑張る。

734 :デフォルトの名無しさん:2011/10/17(月) 01:40:02.15
>>702
超絶技巧上級者向けだから、そんなの初心者は理解出来なくても問題無いな。
演習の中に解説と指示が入り乱れてるから、凄く読みにくい。
ある程度解っている人がさらっと復習に読めば流れとしては解るって内容。
初心者とか中級コピペマンがそのまま使おうとすると端折った部分があって使えない。

735 :デフォルトの名無しさん:2011/10/17(月) 06:28:14.68
物凄く初歩的かもしれないんですが
WindowsフォームアプリでConsole.WriteLineで出力した文字列は
どうやってみればいいんでしょうか

736 :デフォルトの名無しさん:2011/10/17(月) 06:50:28.41
>>735
OSのstdoutに出力されてるはずだから、テキストファイルにリダイレクトするとかかな??

検索したら以下を見つけた。
ttp://dobon.net/vb/dotnet/programing/consoleinout.html

737 :デフォルトの名無しさん:2011/10/17(月) 06:54:47.63
出力ウィンドウがいつの間にか閉じていました
リダイレクトも良さそうですね
合わせて感謝します
ありがとうございました

738 :デフォルトの名無しさん:2011/10/17(月) 08:07:59.49
>>734
でも人のコーディング見せてもらうのは勉強になるよね。
直接的なロジックだけじゃなく、エラー処理の部分とか変数の名前の付け方とか。
そこに分かりやすい日本語で解説が付けば言うこと無い。

739 :デフォルトの名無しさん:2011/10/17(月) 08:58:49.77
カスタムコントロールを使っていてエラーが起きたりを繰り返していると
気づいたらデザイナーのところにDataGridViewのカラムは500個作られていたんだが
こうい症状になった人いる?
あと、カスタムコントロールを削除したのに、見た目上削除されただけで
デイザイナーのときにはしっかり残ってたり
SP1にしてからこういうことが頻発しているんだが・・・

740 :デフォルトの名無しさん:2011/10/17(月) 09:05:35.61
一つのカラムが500個で10列あるから5000個無意味に作成されてる

741 :デフォルトの名無しさん:2011/10/17(月) 09:07:16.80
>>739
カスタムコントロールだけじゃなく普通のコントロールでもあるよ。
それ以来、時々デザイナはチェックしてる。
それと削除するときはDelキーは使わず、コンテキストメニューからするようにしてる。

742 :デフォルトの名無しさん:2011/10/17(月) 09:29:48.78
アドオンのProductivity Power Toolsこれだ・・・
これが入っててカスタムコントロールがあると
削除とかしなくてもデバッグするたびにコードが増えていく

使い勝手のいいソフトなのになー仕方がないか

743 :デフォルトの名無しさん:2011/10/17(月) 10:23:44.59
あ、だめだProductivity Power Toolsがなくても
コードが増えてる、もうほんと面倒くさい

744 :デフォルトの名無しさん:2011/10/17(月) 10:36:11.37
カラムがどんどんふえりゅうぅううううううううっぉおおおお
とまらにゃいのぉおおおおおおっぉおお
おほぉぉおおおほぉおおおおおおおおおおおおおお

745 :デフォルトの名無しさん:2011/10/17(月) 20:01:50.67
コードが増えて良かったねせつこ

746 :デフォルトの名無しさん:2011/10/17(月) 21:02:05.31
もしかしてDataGridViewを継承したクラス側で
事前にカラム設定しているのがだめなのかな

747 :デフォルトの名無しさん:2011/10/17(月) 21:17:28.22
事前にって何のイベントよ
コンストラクタなら何べんも実行されたりしねえし

748 :デフォルトの名無しさん:2011/10/18(火) 00:08:08.63
MathクラスにintやdoubleのMinやMaxメソッドがありますが、ジェネリクス版はないんですか?
あと、DelphiにあったInRangeやEnsureRangeと同じメソッドがあったら教えて下さい。

749 :デフォルトの名無しさん:2011/10/18(火) 00:14:22.01
どれもない
上の方は(T)((dynamic)x > (dynamic)y ? x : y)とかで実装できないこともないけど遅いのでお勧めはしない

750 :デフォルトの名無しさん:2011/10/18(火) 00:32:03.36
IComparableとか制約つければいいんじゃね
綴りの自信ないけど

751 :デフォルトの名無しさん:2011/10/18(火) 01:08:40.54
>>747
イベントとかコードは何も書いていない
ただ、デザイナー画面でカラムを作っているだけ

そして、カスタムクラスのデザイナーでDataGridViewのプロパティいじったり
フォーム側のデザイナーでDataGridViewの設定をいじったりして
ビルドするとカラム生成のコードが複製される
それが実際にForm側のDataGridViewにデザイン時点でも表示される
ほっとくと何百個のカラムができる

752 :デフォルトの名無しさん:2011/10/18(火) 12:02:19.24
TabPage下にあるTextBoxコントロールにアクセスする方法ってないですか?
並び替えできるようにしてあるのでTabPageのインスタンスだけ並び替えてもTabPage下にあるTextBoxコントロールはそのままなんです

753 :デフォルトの名無しさん:2011/10/18(火) 14:06:35.21
しらんけどtabpages[2].textBoxみたいな感じでできるんじゃないの

754 :デフォルトの名無しさん:2011/10/18(火) 15:26:05.76
SortedListとか使ってキーの重複とか苦労してたんだけど
ふとLinq使ったらあっさり解決した、
いままで何この構文ゴミだとか言っててすみませんでした
Linq始まりすぎ

755 :デフォルトの名無しさん:2011/10/18(火) 15:38:15.52
childとかなかったっけ?
というかMSDNのクラスの説明とか読めよ

あとインスタンスを管理してる変数の後ろに.つけて上からすべて説明見ていけば・・・

756 :デフォルトの名無しさん:2011/10/18(火) 15:47:10.94
>>755>>752へだったけどchildじゃなかった

サンプルプロジェクト作ってtabControlを配置して最初から付いてる2ページのうちの
片方にTextBoxを置いた上でShownイベントに以下のコード書いたらOKだった
TextBox t1 = (TextBox)tabControl1.TabPages[0].Controls[0];

あとは自分でやってくれ


757 :デフォルトの名無しさん:2011/10/18(火) 16:15:52.96
>>756
ありがとうございます。まさしくこれです
Controlsでアクセスできるんですね。今までAddメソッドしか使ったことしかありませんでした

758 :デフォルトの名無しさん:2011/10/18(火) 18:22:01.08
取扱説明書を読まずにコールセンターに文句を垂れるチュプみたいだ

759 :731:2011/10/18(火) 18:45:33.07
>>732
おかしい・・・GetHashCode も Equals もオーバーライドしてるのに・・・と
思ったら、 Equals がバグってた。

恥ずかしいよ、ママン。

サンキュー

760 :デフォルトの名無しさん:2011/10/19(水) 09:12:04.73
一般的に日本語の変数名ってあり?
動作的には問題ないと思うけど、
文化的には見ないよね。

今やってるので、コンスタントの定義で
日本語使うほうが下手に英語にするより
わかりやすいとこがあるんだけど。
あんまり見たことないなと思いまして。

761 :デフォルトの名無しさん:2011/10/19(水) 09:16:33.10
普通にあるじゃん列挙とか

762 :デフォルトの名無しさん:2011/10/19(水) 09:53:14.88
>>760
IntelliSenseめんどくない?

763 :デフォルトの名無しさん:2011/10/19(水) 10:01:18.79
>>762
日本語変数だとインテリセンスがらくになるかと。

764 :デフォルトの名無しさん:2011/10/19(水) 10:22:37.53
日本語変数なんてどんな誤動作するかわからなくて使えねぇ

765 :デフォルトの名無しさん:2011/10/19(水) 10:23:50.02
インテリセンスを楽にしたいなら、ハンガリアン使いまくれよ

766 :デフォルトの名無しさん:2011/10/19(水) 11:41:35.03
種類毎に頭に何かアルファベットをつけるといい感じになる

767 :デフォルトの名無しさん:2011/10/19(水) 12:01:58.34
右下からにょきってでるのんどうすりゃいいん

768 :デフォルトの名無しさん:2011/10/19(水) 12:04:40.16
>>760
10年も前だと、日本語使うといろいろ不具合でたからねぇ。

C# と SQL Server 使ってる限りには日本語変数/日本語テーブル使って不具合出てる人見たことがなく、
C# なら普通に日本語変数使うよ。

ただ、インテリセンスとの相性悪い(いちいち IME オンにしないと補完候補にたどりつけない)んで、
ローカル変数とかだといまいち使いにくい。
定数とか列挙型のメンバーで使われるのは、どうせ 型名. を打って、その後一覧から選ぶだけだから。

769 :デフォルトの名無しさん:2011/10/19(水) 12:06:34.19
>>764
C# は Unicode 策定後にできた言語だから大丈夫。
O/R マッパーとか使ってない限り(あるいは相手が最近の SQL Server な限り)まず誤動作ない。

770 :デフォルトの名無しさん:2011/10/19(水) 15:08:46.80
TabControl的な切り替えをボタンとかComboBox使ってやりたいんですが、
どこかにサンプルとかありませんか?

771 :デフォルトの名無しさん:2011/10/19(水) 16:03:34.33
サンプルも何も、ClickイベントやSelectedIndexChengedイベントでも使えば良いじゃね?

772 :デフォルトの名無しさん:2011/10/19(水) 16:51:47.35
>>770
フォームやる前に覚えなきゃならないことあるんじゃないか?
一歩進むたびに質問してるだろw

773 :デフォルトの名無しさん:2011/10/19(水) 16:55:41.21
>>770
2chブラウザの作り方をブログで公開してた人がそれっぽいことをやってたな

774 :デフォルトの名無しさん:2011/10/19(水) 17:08:40.81
Win7のイベントログにレベル重大のイベントを出力したいのですが、以下のコードで出ません。

# レベルをクリティカルでイベントログに出力するコード
TraceSource source = new TraceSource("MySource", SourceLevels.All);
source.TraceEvent(TraceEventType.Critical, 7743, DateTime.Now.ToString());

# App.configに以下のXMLを追加
<system.diagnostics> <sources> <source name="MySource">
<listeners>
<add name="EventLog" type="System.Diagnostics.EventLogTraceListener"
initializeData="TmpEventSource" />
</listeners> </source> </sources> </system.diagnostics>

# 管理者権限のPowerShellで、イベントソースを登録
PS > New-EventLog -Logname Application -Source TmpEventSource

上記だと、CriticalでもErrorでも同じ「エラー」イベントになります……

775 :デフォルトの名無しさん:2011/10/19(水) 21:04:35.08
List<Hoge> foo = list;
int idx = hoo.FindIndex(n=>n.value == (Hoge)hoge.value);

で取ったインデックスに、
if (idx > -1 && idx < hoo.Count)
 hoo.RemoveAt(idx);
ってするとたまにOutOfRangeExceptionが起こるんですが、
一体どういう事なんでしょうか
存在するインデックスをとって、範囲内か再度チェックしてるのに、
なおダメってイミフ

500回に一回くらいの割合で起こるので再現性がとても低いです・・・

776 :デフォルトの名無しさん:2011/10/19(水) 21:12:46.83
fooとかhooとかhogeとか何だよ

777 :デフォルトの名無しさん:2011/10/19(水) 21:16:47.28
>>775
考えられるのは、
Idx==(List.Count-1)の時に、なにか一個を削除したらIdxを更新しなければ、
そのIdxでインデックサ使うとOutOfRangeじゃないかな。

778 :デフォルトの名無しさん:2011/10/19(水) 21:18:27.18
if (idx > -1 && idx < hoo.Count)
 hoo.RemoveAt(idx);

これがループの中にあったりして

779 :デフォルトの名無しさん:2011/10/19(水) 21:26:38.65
別のスレッドからもいじってたりはしてないよね?

780 :デフォルトの名無しさん:2011/10/19(水) 21:34:27.37
本当にその行で落ちているかを検証してみるのも乙
偶に思い込みってのもあるからね

781 :デフォルトの名無しさん:2011/10/19(水) 21:37:31.11
removeAtしたら一回ループ抜けないとねー
下から消していくのもあり

782 :デフォルトの名無しさん:2011/10/19(水) 21:40:02.04
インデックス取ったらすぐRemoveなんです
他のスレッドからのアクセスが邪魔してるのかと思って、
lock (lockObject) {}
で囲んだりした結果がこれで・・・

もしかしてlock(foo)じゃないとだめだったり?

783 :デフォルトの名無しさん:2011/10/19(水) 21:44:23.76
そういう場合はremoveatしないで
もう一個Listをつくってそっちに削除したいの以外をadd
していったものを使うようにすればいいぞ
富豪的プログラミングだ

784 :デフォルトの名無しさん:2011/10/19(水) 21:51:21.34
いや複数のスレッドからアクセスしてるのかしてないのかどっちだ
それでおかしくなるってことは他のスレッドからコレクションを変更してるんだから
取得だけでもロックしないと死亡

785 :デフォルトの名無しさん:2011/10/19(水) 21:54:56.63
>>783
リムーブ候補のインスタンスを並べたリスト作って
後でまとめてリムーブすればいいだけちゃうの?

786 :デフォルトの名無しさん:2011/10/19(水) 21:56:11.82
あといろいろ気になるのがfooがでてきたのにhooになってるんだがこの辺大丈夫?

787 :デフォルトの名無しさん:2011/10/19(水) 22:04:55.79
>>780
デバッガさんはRemoveAtでコケるって言ってる

>>783,785
なるほど、試してみます

>>784
2スレッドくらいで同時にやってるはずです
lockステートメントで囲んだだけですが一応・・・

>>786
それは大丈夫です、コピペしたわけではないので

788 :デフォルトの名無しさん:2011/10/19(水) 22:09:54.12
だったら排他制御がちゃんとできてないのが問題なんだろ
別のList使うのは直接の解決にはならん
他にもコレクションを変更してる箇所があるならそこもロックする

789 :デフォルトの名無しさん:2011/10/19(水) 22:10:47.12
ソース全部貼れ

790 :デフォルトの名無しさん:2011/10/19(水) 22:10:52.70
もうちょっと全体像が見えないと局所的な対応してもなあ

791 :デフォルトの名無しさん:2011/10/19(水) 22:18:44.30
lockはアクセスする全ての箇所でやらないと無意味ってこと分かってる?

792 :デフォルトの名無しさん:2011/10/19(水) 22:26:23.97
そんなのわかってるよ

793 :デフォルトの名無しさん:2011/10/19(水) 23:33:44.92
うん

794 :デフォルトの名無しさん:2011/10/19(水) 23:45:12.38
スレッド間で操作するなら、C#4.0から追加された、
System.Collections.Concurrent;にある、BlockingCollection とか使えばいいんじゃないの?


795 :デフォルトの名無しさん:2011/10/20(木) 00:28:09.16
別にブロッキングは必要ないはずだからConcurrentBag<T>かな

796 :795:2011/10/20(木) 00:32:21.92
いや特定の条件に一致する要素を削除するんだからSystem.Collections.Concurrentでは無理か
やっぱり普通のコレクションで普通にロックだな

797 :デフォルトの名無しさん:2011/10/20(木) 06:55:21.13
>>751だけど、いい加減うざいのでカスタムコントロールも
削除して、フォームのカスタムDataGridViewも削除して
元のDataGridViewを張り付けてやったら
今度はあらゆる自作クラスが競合してるとか大量に出るようになったwww
ここ数日まともにプログラム打てず、自動生成のバグ修正ばっかりやってるわ
これはもう一から作り直したほうが早いのかww

798 :デフォルトの名無しさん:2011/10/20(木) 08:13:43.42
MVP勉強しているんだけど
modelクラスがVIEWに対して
データ変更通知をするっていうのがどうも納得できない
変更通知はPresenterクラスにするべきじゃない?
Viewを意識するのは一つのクラスにしたいんだけど

799 :デフォルトの名無しさん:2011/10/20(木) 09:19:59.40
>>788
それはネットワークプログラミング板がいいんじゃね。
ここはC#言語だから、ASPの中のC#部分の質問ならOKだけど。

800 :デフォルトの名無しさん:2011/10/20(木) 09:38:48.05
↑アンカーミス>>798だった

801 :774:2011/10/20(木) 10:04:59.64
仕方がないので、EventLogTraceListenerをReflectorで追ったら

if ((severity == TraceEventType.Error) || (severity == TraceEventType.Critical))
{
 instance.EntryType = EventLogEntryType.Error;
 return instance;
}

ってなっていたので、TraceSourceでCriticalにしても、.NET FrameworkのEventLogTraceListener
の中でErrorに丸められてイベントログに出るという落ちでした。
ウワワァン、俺の数時間が……

802 :デフォルトの名無しさん:2011/10/20(木) 11:42:49.39
>>798
ビューとモデルの間に直接の関連を持たせない流儀もある
本来のMVPはモデルがビューに通知する形で、その方がよりMVCに近い
>>799
MVPはクライアントだけでも完結するパターンだよ

803 :デフォルトの名無しさん:2011/10/20(木) 12:12:18.03
C#というより、.NET Frameworkの質問なんですが、
System.XML.XMLDocument を、System.Xml.XmlWriter で保存する際に、
テキストノードの\n改行も、 などとエンティティ化して
保存することは出来ませんか?

804 :デフォルトの名無しさん:2011/10/20(木) 12:18:10.39
System.Xml.XmlWriterでいきなりファイルに出力するのではなく
メモリストリームに出力して、出力結果の中の任意の文字を置換した後
ファイルに出力すればいいかも

805 :デフォルトの名無しさん:2011/10/20(木) 14:42:59.47
最近勉強しはじめたんですが
メインウィンドウのフォームと
設定を保持するプロパティクラスと
設定を変えるセッティングフォームの3つを作成して
メインフォームでプロパティクラスとセッティングフォームのオブジェクトを生成し
メインフォームでプロパティの値を使って処理している場合

メインフォームからセッティングフォームを開いてセッティングフォームからプロパティの値を利用したい場合どうやったら扱えるのでしょうか?

806 :デフォルトの名無しさん:2011/10/20(木) 14:46:25.02
ぷろぱちいクラスのインスタンスを共有すれば?

807 :デフォルトの名無しさん:2011/10/20(木) 15:18:00.58
インスタンスを共有というのはプロパティクラスをstaticで宣言すると言うことでしょうか?

808 :デフォルトの名無しさん:2011/10/20(木) 15:19:18.26
違います

809 :デフォルトの名無しさん:2011/10/20(木) 15:25:16.87
C# インスタンス 共有
でググって見たのですがstaticに関するものが多く出てくるのですが
インスタンスの共有というのはどういったものなのでしょうか?

810 :デフォルトの名無しさん:2011/10/20(木) 15:27:45.14
セッティングフォームにインスタンスの受け渡し用メソッドでも作って
セッティングフォームを開く前にでもいいのでメソッドから渡すでもいいんじゃね?

811 :デフォルトの名無しさん:2011/10/20(木) 15:30:44.12
だからまずコンソールアプリで文法理解しろよ
いきなりフォームアプリ作ろうとするなドアホ

812 :デフォルトの名無しさん:2011/10/20(木) 15:36:45.85
いやここで文法は関係ないだろ
設計の問題なんだから

813 :デフォルトの名無しさん:2011/10/20(木) 15:40:19.04
あの感じだとインスタンスが何かっていうのもわかってなさそうだぞw

814 :デフォルトの名無しさん:2011/10/20(木) 15:49:58.85
インスタンスラーメン

815 :デフォルトの名無しさん:2011/10/20(木) 15:53:58.42
まあこのスレは初心者用なんだけどな・・・
他人にアホ言って精神安定を計る奴はどこか行けよ

816 :デフォルトの名無しさん:2011/10/20(木) 15:56:17.49
>>815
まず正しい日本語を学べ

817 :デフォルトの名無しさん:2011/10/20(木) 15:57:08.23
インスタンスはわかってます
フォームとか言うとアレみたいなんで
Aで作成したBとCのオブジェクトで
Bの処理の中でAで作成したCにアクセスするにはどうしたらいいのかわからないもので・・・
Bを開く時にAで作成したCのオブジェクトを引数として渡してみたんですがうまく行かなくて・・・

818 :デフォルトの名無しさん:2011/10/20(木) 15:59:52.47
>>817
だからーAのオブジェクトをBで使えばいいだけだろバカ

819 :デフォルトの名無しさん:2011/10/20(木) 16:01:45.43
>>816
キチガイ乙

820 :デフォルトの名無しさん:2011/10/20(木) 16:01:54.18
ほんとばかだなー具体的にわだなー

class A
{
this.b.a=this;
}

こういうことだよバカ

821 :デフォルトの名無しさん:2011/10/20(木) 16:02:37.53
>>819
しょうがくちぇいでちゅかぁ〜〜?www

822 :デフォルトの名無しさん:2011/10/20(木) 16:03:04.39
>>818
BでAのオブジェクトを使う方法がわからないって書いてるのに
BでAのオブジェクトを使えばいいだけだろバカって
お前もバカだろw

823 :デフォルトの名無しさん:2011/10/20(木) 16:06:09.78
>>821
>>821

824 :デフォルトの名無しさん:2011/10/20(木) 16:06:21.44
>>822
間違ってませんが?

825 :デフォルトの名無しさん:2011/10/20(木) 16:06:33.12
>>823
>>819

826 :デフォルトの名無しさん:2011/10/20(木) 16:08:03.59
>>824
バ〜カw

827 :デフォルトの名無しさん:2011/10/20(木) 16:08:38.87
>>824
そうか・・・バカならしょうがないな・・・

828 :デフォルトの名無しさん:2011/10/20(木) 16:09:47.42
回答する側が初心者のスレwww

829 :デフォルトの名無しさん:2011/10/20(木) 16:11:52.47
間違ってませんが?

830 :デフォルトの名無しさん:2011/10/20(木) 16:12:56.94
定期的にバカが沸くスレ

831 :デフォルトの名無しさん:2011/10/20(木) 16:16:00.93
不毛な言い合いはおしまいと

http://ideone.com/WtZ3H

832 :デフォルトの名無しさん:2011/10/20(木) 16:16:26.05
しまった
ガンダムにちなんでageないとww

833 :デフォルトの名無しさん:2011/10/20(木) 16:18:52.98
>>831
まあ、こういうことする奴いたらブチ切れるけどなw

834 :デフォルトの名無しさん:2011/10/20(木) 16:19:49.28
>>833
まあとりあえずだよww
ガンダム

835 :デフォルトの名無しさん:2011/10/20(木) 16:23:39.71
>>820
class A
{
B b = new B();
C c = new C();
this.b.ab=this;
}

class B
{
public object ab;
}

class C
{
public int cd = 5;
}

という状態で
classB内のメソッドで
ab.c.cd
と使おうとしても使えないのですが
どう使ったらいいのでしょうか?

836 :デフォルトの名無しさん:2011/10/20(木) 16:30:39.17
>>835
classをpublicにしろよボケナス
お前は先に文法学べっていってるだろチンカス野郎

837 :デフォルトの名無しさん:2011/10/20(木) 16:32:41.21
単純に参照したいものが、パブリックになっていないだけじゃないの?

838 :デフォルトの名無しさん:2011/10/20(木) 16:33:40.14
>>835
全部publicで宣言して干されろ

839 :デフォルトの名無しさん:2011/10/20(木) 16:35:03.09
>>836
classは3つともpublicです。
>>820のコピペそのままで手抜きしてゴメンナサイ

840 :デフォルトの名無しさん:2011/10/20(木) 16:39:04.98
>>817
Form1からForm2やForm3にコンストラクタやプロパティで共有するインスタンスを渡してやるか、
あるいはアプリの設定みたに一個しかインスタンス必要ないのなら、
どっかのクラスにpublic staticで置いてやればいいんじゃないか?

求めてる事と違ってたらごめんね

841 :デフォルトの名無しさん:2011/10/20(木) 16:40:06.13
ttp://social.msdn.microsoft.com/Forums/en-US/wpf/thread/3ae3f6a2-d29f-49cd-9b3f-ccc1422d0ca8/

これコピペして動かしてみたんですが、
値の更新がコントロールのフォーカスが移った時にしか行われないようです
入力中にもリアルタイムにテキストボックスとリストの値を同期させたいのですが、
どのように書き換えたら良いでしょうか

842 :デフォルトの名無しさん:2011/10/20(木) 16:44:03.73
>>817
ファイルに書き出せば?w

843 :デフォルトの名無しさん:2011/10/20(木) 16:44:07.74
>>841
UpdateSourceTrigger

844 :デフォルトの名無しさん:2011/10/20(木) 16:45:57.61
>>840
設定ファイルに保存されたプロパティの値を持ったインスタンス1つを全てのクラスで利用したいので
アプリの設定みたいに1個しかインスタンス必要ないものと同じですね
プロパティを保持するクラスの変数をpublic static にしてやってみます

845 :デフォルトの名無しさん:2011/10/20(木) 16:47:29.95
ID欲しいお・・・

846 :デフォルトの名無しさん:2011/10/20(木) 16:48:12.52
>>844
セーブデータ直接弄りまくるのか?バカじゃねーの?

847 :デフォルトの名無しさん:2011/10/20(木) 16:50:55.44
>>835
abがobject型だからそれを変えるかキャストするとか?

848 :デフォルトの名無しさん:2011/10/20(木) 16:52:18.56
>>846
プロパティクラスがxmlから値を取得して
基本は設定変更用のフォームからのみプロパティの値を変更して保存
他のクラスからはプロパティから値を取得するだけ
っていう状態です。

849 :デフォルトの名無しさん:2011/10/20(木) 17:01:02.66
>>848
プロはどうしてるかっていうと
そういうデータはフォームには持たせない
フォームを表示させる別のクラスでデータを保持する
この方が簡単なわけだが、今のお前には無理だろう

850 :デフォルトの名無しさん:2011/10/20(木) 17:04:38.26
別にプロじゃなくてもそれが普通だろ

851 :デフォルトの名無しさん:2011/10/20(木) 17:07:36.44
>>847
abをオブジェクト型以外にすることは可能なのでしょうか?
クラスのインスタンスが入っているのでobject以外でできないものだとばかり・・・

>>849
フォームではなくプロパティクラスに持たせてフォームはそこから値をgetアクセサで取得するのですが
そういうことではなくてですか?

852 :デフォルトの名無しさん:2011/10/20(木) 17:13:20.73
>>851
フォームで設定するんじゃなくて別クラスで設定するんだよ

class A
{
Form form1=new Form();
form1.Propaty=obj.Form1Propaty;
form1.Show();
}

853 :デフォルトの名無しさん:2011/10/20(木) 17:16:00.80
よくブログでC++とC#の速度比較みたいなことやってるとこあるけど
C#に無理やりポインタ使って同じ処理させてるよな
C#は下手にポインタ使うよりライブラリ使った方が高速なのに

854 :デフォルトの名無しさん:2011/10/20(木) 17:17:46.79
>>849
なるほど
今までエントリポイントで作ったFormインスタンスから、
別のクラスを実体化させて弄ってたけど
メインクラスを作ってそこでApplication.Run()すればすっきりするんか・・・

いい事聞いた

855 :デフォルトの名無しさん:2011/10/20(木) 17:22:07.18
HoNToKaNa-??

856 :デフォルトの名無しさん:2011/10/20(木) 17:26:57.46
>>854
フォームもセーブデータを入出力するクラスもすべて
支配下におく親クラスを作る
その親クラスで仕事を各クラスに分担させる

857 :デフォルトの名無しさん:2011/10/20(木) 17:27:24.66
>>843
出来ました
ありがとうございます

858 :デフォルトの名無しさん:2011/10/20(木) 17:27:49.70
Application.Run() わろす。その発想なかった。

859 :デフォルトの名無しさん:2011/10/20(木) 17:29:14.70
>>854
全体のコード量は増えるがその方がわかりやすい
データの受け渡しも直接渡す必要はない
参照を渡すだけなんだから極端に速度が落ちるわけでもないからな
間にいくつか挟んでもいいんだよ

860 :デフォルトの名無しさん:2011/10/20(木) 17:29:59.69
>>854
staticなProgram.csの存在を忘れていないか?

861 :デフォルトの名無しさん:2011/10/20(木) 17:37:03.48
WPFの場合もプロジェクトのデフォルト設定じゃなくて
public class Program
{
[STAThread()]
public static void Main(string[] args)
{
Application app = new Application();
Window win = new Window();
app.Run(win);
}
}

みたいにするの?
だったら自動生成機能いみないやん・・・

862 :デフォルトの名無しさん:2011/10/20(木) 17:41:57.24
>>861
バカ

863 :デフォルトの名無しさん:2011/10/20(木) 17:44:20.87
釣りだろ……
マジなら恐怖すら感じるわ

864 :デフォルトの名無しさん:2011/10/20(木) 17:44:24.12
そういうテンプレを作ればいいだけじゃん。テンプレ作るの簡単だよ。

865 :デフォルトの名無しさん:2011/10/20(木) 17:46:54.03
Invokeって、デバッグ中と実際のexeでは随分挙動が違うよね?
デバッグ中は変なエラーが出てるのに、exeでは出ない。
そういうもんなの?

866 :デフォルトの名無しさん:2011/10/20(木) 17:56:12.72
ちょっと不安になってきたから質問させてくれ
規模の大きなアプリケーションを作ったことないんだけど(プロの人なら1時間程で組めると思うもの)

Program.cs - エントリポイントと各クラスで共通しているもの(テンポラリファイルパスとかカレントディレクトリパス)を書く
Form1.cs - メインフォーム、各コントロールのイベントハンドラや外部から触らないといけないインスタンスを返すプロパティとか書く
Class1.cs - 文字列やファイル処理処理したり、Formから呼び出されるのを前提で書く

こんな感じでいつも書いてるんだけど、これでいいの?

867 :デフォルトの名無しさん:2011/10/20(木) 18:22:54.80
コード量によるけどFormの中に全部書いちゃうかも
好みだと思うよ

もう少し大きいなら分離する意味もあるだろうが

868 :デフォルトの名無しさん:2011/10/20(木) 18:35:25.35
>>867
こういう質問しちゃうようなひとは汎用的な自作クラスを持ってないはず
初めから機能別にクラス分けを学んでいった方がいい

869 :デフォルトの名無しさん:2011/10/20(木) 18:37:17.14
SoueceForgeにあるような比較的経験豊富な人が書いてそうなソースも、
エントリポイントはフォーム作ってるだけみたいなの多いけど、
ホントに親クラスでごちゃごちゃやるもんなの?

でもC#で飯食ってる人の方が正しいか・・・

870 :デフォルトの名無しさん:2011/10/20(木) 18:41:12.10
>>867
好みだけどそれはあまりにも酷い

871 :デフォルトの名無しさん:2011/10/20(木) 18:43:45.16
>>869
VSがそういう御作法だから

872 :デフォルトの名無しさん:2011/10/20(木) 18:48:44.35
>>869
ごちゃごちゃしないために親クラスで処理を仕分けするんだが?
フォームにごちゃごちゃ書きたいならそうしろよw

上級者があえてそうしているのは意図が違う
お前と一緒にするな

873 :デフォルトの名無しさん:2011/10/20(木) 18:50:41.10
上級者気取りの間違いだと思うけどなあ

874 :デフォルトの名無しさん:2011/10/20(木) 18:56:10.55
今は静的クラスが便利すぎるから、その辺の管理は静的クラスでやるのも手。
どこからでも呼び出せるから楽。
後からの変更で、状態を複数持つ必要性がでると、やっちまったぜ!感があるけどw

875 :デフォルトの名無しさん:2011/10/20(木) 19:00:03.25
静的クラスはコスパが悪い
できるだけやらない方がいい

876 :デフォルトの名無しさん:2011/10/20(木) 19:02:48.55
コスパってw

877 :デフォルトの名無しさん:2011/10/20(木) 19:17:11.82
(´・ω・`)

878 :デフォルトの名無しさん:2011/10/20(木) 19:24:29.26
そろそろボロが出てきたから去るわw

879 :デフォルトの名無しさん:2011/10/20(木) 19:28:04.87
去れ去れ

880 :デフォルトの名無しさん:2011/10/20(木) 19:28:27.91
コスパ最強のクラスを教えてください

881 :デフォルトの名無しさん:2011/10/20(木) 19:29:30.82
Class A{}

882 :デフォルトの名無しさん:2011/10/20(木) 19:29:46.60
一回作れば次からコスト0だなw

883 :866:2011/10/20(木) 19:30:24.73
みんなありがとう。
>>868さんの言う通り汎用な自作クラスは持ってないんだよね

みんなが言ってる親クラスってMainメソッドがあるクラスのこと?

884 :デフォルトの名無しさん:2011/10/20(木) 19:32:25.01
静的なメソッドで静的なフィールドを処理すると、動作効率がいいんじゃなかったけ?
静的クラスは知らん。

885 :デフォルトの名無しさん:2011/10/20(木) 19:32:26.65
staticはほとんど使わない。

staticおじさん


886 :デフォルトの名無しさん:2011/10/20(木) 19:52:04.66
>>884
用途次第。場合によっては、参照局所性落とすだけ。

ということで、あんまりパフォーマンスに焦点あてて考えちゃダメで、
要件として、シングルトンであるべきかどうかで、静的にするかどうか決めなきゃダメ。

887 :デフォルトの名無しさん:2011/10/20(木) 19:52:50.18
テメェもstaticにしてやるぜ

888 :デフォルトの名無しさん:2011/10/20(木) 19:56:14.74
個人的にはシングルトンを静的であることで保証するやり方は何か違う気がする。

889 :デフォルトの名無しさん:2011/10/20(木) 19:59:45.80
静的ないたずら

890 :デフォルトの名無しさん:2011/10/20(木) 20:04:17.25
ここがデザインパターンスレですか?

891 :デフォルトの名無しさん:2011/10/20(木) 20:05:58.88
staticの使い分けがよくワカンネ。
誰か教えてケロ

892 :デフォルトの名無しさん:2011/10/20(木) 20:11:06.50
お前らイエス・キリストは韓国人だって知ってたか?

497:<丶`∀´>(´・ω・`)(`ハ´  )さんsage2011/03/01(火) 23:33:52.34 ID:oiOm2MzJ
ttp://www.ltchurch.com/main/ltc0406/35199/page/files/attach/images/529/199/035/%EC%98%88%EC%88%98%EC%9D%98%ED%83%84%EC%83%9D.jpg
ttp://www.ltchurch.com/main/ltc0406/35199/page/files/attach/images/529/199/035/%EC%9A%94%ED%95%9C%EC%84%B8%EB%A1%80%EB%B0%9B%EC%9D%8C.jpg
ttp://www.ltchurch.com/main/ltc0406/35199/page/files/attach/images/529/199/035/%ED%94%BC%EB%94%A9%EC%98%A4%EC%B2%9C.jpg
ttp://www.ltchurch.com/main/ltc0406/35199/page/files/attach/images/529/199/035/%EC%8B%AD%EC%9E%90%EA%B0%80%EC%A7%80%EA%B3%A0.jpg
ttp://www.ltchurch.com/main/ltc0406/35199/page/files/attach/images/529/199/035/%EB%AA%BB%EB%B0%95%EC%8B%AD%EC%9E%90.jpg
ttp://www.ltchurch.com/main/ltc0406/35199/page/files/attach/images/529/199/035/%EC%8A%B9%EC%B2%9C.jpg


893 :デフォルトの名無しさん:2011/10/20(木) 20:19:49.64
ネトウヨ王に、俺はなる!まで読んだ。

894 :デフォルトの名無しさん:2011/10/20(木) 20:28:13.34
WindowsForm アプリケーションを作成しています。
そこで、フォームの画面イメージを簡単に印刷できるようにしたいのですが可能でしょうか。
(カラーorモノクロ、かつ用紙の向きの縦横を選択できるようにしたいのでボタンを押したらプリントダイアログを出すようにしたい)

よろしくお願いします。

895 :デフォルトの名無しさん:2011/10/20(木) 20:30:02.16
いいえ、MonkeyMagicです

896 :デフォルトの名無しさん:2011/10/20(木) 20:44:46.33
>>891
FileとFileInfoの違いとか
ごめん、見当違いでしたね

897 :デフォルトの名無しさん:2011/10/20(木) 20:55:22.68
>>891
使い分けつうか大半のケースではstatic使わないでしょ
ゲームなんかでたくさんのオブジェクトの回収するのに共通の状態遷移を
通知したりするとものすごいコストになるかもしれないのでそういう場合は
staticで確保したエリアに次この状態ねってセットしてオブジェクトレベルで
処理させたりするけどなあ・・・

898 :デフォルトの名無しさん:2011/10/20(木) 20:59:44.11
まあ弾幕ゲーのような大量のオブジェクトを扱うロジックとかやると
必要と感じるかも?

899 :デフォルトの名無しさん:2011/10/20(木) 21:01:55.28
そんなのstatic使わなくても管理できるだろ
むしろstatic使ったほうがややこしいわ

900 :デフォルトの名無しさん:2011/10/20(木) 21:04:17.24
>>899
アニメーションパターンや弾幕の軌道その他の制御をするために
共通でみるカウンター

とかさ

1:nの当たり判定とかさ

一部はstaticであった方がいいケースが多い

901 :デフォルトの名無しさん:2011/10/20(木) 21:10:16.45
ゲーム全体で一つやステージごとに一つならいいんであって
別にstaticじゃなくてもいいでしょ
当たり判定でステージごとにstaticメンバを初期化するんなら
ステージオブジェクトに管理させたほうがスマート

902 :デフォルトの名無しさん:2011/10/20(木) 21:11:44.14
俺の例の否定はいらんよ
もっといいのがあるなら実例踏まえた代案だしてやれよ

日本人ってけなすのはやるけど提案はしないよな

903 :デフォルトの名無しさん:2011/10/20(木) 21:13:18.77
いろいろまとめたインスタンス渡すとか必要なものだけ渡すとか
DI使うとかいろいろあるよ

904 :デフォルトの名無しさん:2011/10/20(木) 21:22:08.76
俺はエラー・進行通知に静的クラス+静的イベントを使っているけどなぁ・・・。
静的メソッドを叩くとイベントが発動する奴。
気軽にどこでも呼べて、簡単なのなら十分だよ。

905 :デフォルトの名無しさん:2011/10/20(木) 21:24:53.98
ゲームはそれ自体ループさせてやるものなんだから
その中でstatic使うとか正気の沙汰とは思えないな
コスパ悪すぎる

906 :デフォルトの名無しさん:2011/10/20(木) 21:25:10.70
>>904
それいちいち全部-=しないとメモリリークするよ

907 :デフォルトの名無しさん:2011/10/20(木) 21:26:30.92
staticなんてたまに使うもので処理速度関係ない場合しか使わない
処理速度を必要とするループの中にstaticなんてありえないな

908 :デフォルトの名無しさん:2011/10/20(木) 21:31:31.49
char* hoge() {
static char ret[100];
strcpy(hoge, "hoge");
return ret;
}

909 :デフォルトの名無しさん:2011/10/20(木) 21:33:50.75
否定だけはいらないって否定するのなら改良ロジックも提案しろって

910 :デフォルトの名無しさん:2011/10/20(木) 21:35:37.00
インスタンス化しなくても問題無いメソッドをstaticにすること有るな

911 :デフォルトの名無しさん:2011/10/20(木) 21:52:52.20
staticは基本的に使うべきでないと思う。特にフラグ類。
状態を管理するクラスのインスタンスで管理すればいい。

912 :デフォルトの名無しさん:2011/10/20(木) 21:54:56.31
だからそのクラスのインスタンスを数千も作るオブジェクト全部に渡すのって話

913 :デフォルトの名無しさん:2011/10/20(木) 21:56:58.64
インスタンスの生成はstatic使う

914 :デフォルトの名無しさん:2011/10/20(木) 21:57:41.81
それくらい渡せよ
そんなとんでもなく大量に作って高速に処理するなら
それぞれのオブジェクトに振る舞い持たせたりしないでCのように作ればいい

915 :デフォルトの名無しさん:2011/10/20(木) 21:59:51.14
http://ja.wikipedia.org/wiki/Phalanger

916 :デフォルトの名無しさん:2011/10/20(木) 22:21:43.21
構造体使えばいいだけの話

917 :デフォルトの名無しさん:2011/10/21(金) 00:29:12.16
毎秒100回くらいSoket繋いだり閉じたりすると1分くらいでコケちゃうんですが、
何が悪いんでしょうか

sock.connect()
sock.send()
sock.recieve()
sock.close()
sock = null

してるだけです
netstatで見てもFIN_WAITもCLOSE_WAITもありません
TIME_WAITが何百個かある感じです

918 :デフォルトの名無しさん:2011/10/21(金) 00:31:04.27
disposeはないんだっけ?

919 :デフォルトの名無しさん:2011/10/21(金) 03:44:49.04
いまいち抽象的だがこの辺だろうか
http://msdn.microsoft.com/ja-jp/library/wahsac9k.aspx
http://msdn.microsoft.com/ja-jp/library/system.net.sockets.socket.lingerstate.aspx
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/debugging-tcp.html

920 :デフォルトの名無しさん:2011/10/21(金) 12:06:18.81
>>797
この原因やっとわかった
フォルダプロパティでインデックス検索にしているのが問題だった
ファイルを消しても前のファイルを参照しているようでそれで変になってた
あと、なぜか自分自身を参照設定に加えてたw

921 :デフォルトの名無しさん:2011/10/21(金) 12:11:37.56
>>917
ソケットの方じゃなくて、スレッド数多すぎてスタック用のメモリ不足で死んでるとかは?
recieve じゃなくて非同期版のメソッド使うとどう?

922 :デフォルトの名無しさん:2011/10/21(金) 17:36:56.13
staticってよく分からず素通りしてきたが、
改めて調べてみたら、「静的」と言うから分かりにくかったんだな。
「クラス変数」「クラスメソッド」って説明に出会って、やっと理解できたような気がする。


923 :デフォルトの名無しさん:2011/10/21(金) 17:51:50.90
インスタンスメンバの方が分かりにくくね
staticなんてMyClassクラスのMyStaticMethodなら
クラスとか関係なく単にMyClass.MyStaticMethodという名前の関数だと思えばいい

924 :デフォルトの名無しさん:2011/10/21(金) 17:58:36.70
staticって昔から効能はそれほどかわってないでしょ
関数が呼ばれる際前回呼ばれた際も考慮に入れて動く場合とかさ

925 :デフォルトの名無しさん:2011/10/21(金) 18:15:01.69
その昔、スタック変数を動的、グローバル変数やモジュール変数を静的
と呼び習わしていたころの名残り

926 :デフォルトの名無しさん:2011/10/21(金) 19:03:57.92
デリゲートと比べれば屁みたいなもん

927 :デフォルトの名無しさん:2011/10/21(金) 19:17:45.06
グローバル変数って何だっけ?一番ルートで宣言した変数だっけ?
C#でもそういう言い方するのかな?
C#でグローバル変数にはstatic付けるべき?
初心者?攻撃スマソ

928 :デフォルトの名無しさん:2011/10/21(金) 19:19:43.48
C#でグローバル変数はないんじゃないの?

929 :デフォルトの名無しさん:2011/10/21(金) 19:24:42.06
public staticな変数

930 :デフォルトの名無しさん:2011/10/21(金) 19:26:40.91
スコープの関係でどこに置くかもあるんじゃないの?

931 :デフォルトの名無しさん:2011/10/21(金) 19:47:03.41
コレクションにFindを実装したいんですが、どのインターフェイス継承したら使えますか?

932 :デフォルトの名無しさん:2011/10/21(金) 19:59:34.07
>>931
自分で実装しなくても、
using System.Linq; して、Where とか First とか FirstOrDefault で終わり。


933 :デフォルトの名無しさん:2011/10/21(金) 20:09:46.96
IEnumerable<T>って答えるべきなんじゃないの?

934 :デフォルトの名無しさん:2011/10/21(金) 20:16:18.64
そう答えるべきならそう答えればいいだろ
疑問形にしなくてよろしい

935 :デフォルトの名無しさん:2011/10/21(金) 20:21:50.77
なんだこいつ

936 :デフォルトの名無しさん:2011/10/21(金) 21:01:06.19
どこかのJavaのサイトに「staticはオブジェクト指向的には逆行するから、
なるべく使わないほうがいい」なんて書いてたが、
なんでもありのC#ではそんな野暮なこと言わないよな?


937 :デフォルトの名無しさん:2011/10/21(金) 21:02:42.58
拡張メソッドとラムダ式のお陰で、むしろstatic中心に回帰してしまった……。

938 :デフォルトの名無しさん:2011/10/21(金) 21:16:06.35
>>936
そういう教条的な問題じゃなくて、テストが面倒なんだよ
ダメなのは変化する状態をstaticフィールドに持たせることで、
それをしないなら静的メソッド使いまくっても全然構わない

939 :デフォルトの名無しさん:2011/10/21(金) 21:19:49.88
>>937
もともと、内部状態変更せず、かつ、public なメンバーにしかアクセスしないようなものは
OOP であっても static にすべきだったと思う。

問題になるのは、static 変数の状態をそこら中から書き換えること。
内部状態持たない、pure(同じ入力与えたら必ず同じ出力得る)な static メソッドは無害。

940 :デフォルトの名無しさん:2011/10/21(金) 21:24:14.29
メソッドにもconst付けれるようにしようぜ

941 :デフォルトの名無しさん:2011/10/21(金) 21:25:39.14
C#のラムダやデリゲートはあくまでオブジェクト指向の補助でしかない
基本的にはちゃんとオブジェクト指向で設計しないと

942 :デフォルトの名無しさん:2011/10/21(金) 21:29:32.27
C#は関数型を取り入れているというなら尚更staticフィールドを変更するのはいかん
オブジェクト指向より関数型の方がずっとそういうのに厳しい

943 :デフォルトの名無しさん:2011/10/21(金) 22:01:44.55
>>939
>public なメンバーにしかアクセスしないようなものは

ではなく、「メンバを使用しないメソッドの場合」 (=内部状態変更されない)ですよね。

実際、VS で メソッドスタブ作らせたり、リファクタで メソッドの抽出をすると
上記の場合には static が付与されたメソッドが生成されるし
FXCop でも そういうメソッドの場合 "static なメソッドに変更しましょう"という警告を出してくる。
ReShaerper や CodeRush もソレに倣ってるので 同様の注意勧告をしてくる。

944 :デフォルトの名無しさん:2011/10/21(金) 23:41:13.34
通信関係の処理で、

非同期関数を用意して
AsyncFunction( delegate() {
//hogehoge
});
みたいにするか
スレッドを用意して同期関数を呼ぶか で迷ってる

javascriptの経験から言うと前者で気持ち悪くないんだけど
C#だとスレッド用意するのが普通なの?

945 :デフォルトの名無しさん:2011/10/21(金) 23:49:17.78
前者が今風
Taskとか最近追加されたAPIはほとんど継続使うようになってる
次のバージョンのC#では非同期関数を同期関数のように呼べる機能が追加される

946 :デフォルトの名無しさん:2011/10/22(土) 00:32:11.29
>>943
それはもちろんのこと、追加で。

LINQ がらみの操作なんかがまさにそうだけど、
全部インターフェイスに対する静的メソッドで実装されてる。
ああいうのは、静的メソッド使うほうが向いてる。

947 :デフォルトの名無しさん:2011/10/22(土) 00:33:50.98
>>944
JavaScript 的な感覚で言うと、
Promise に相当するもの(Task クラス)を返すメソッド書いて、
こいつ使って継続処理するのが今後の主流。

948 :デフォルトの名無しさん:2011/10/22(土) 11:36:40.51
質問です。
ラベルのBackColorをTransparentにしたのに、
ラベルに隠れた部分が隠れたままです。
どうすればラベルの下が透けて見えるのでしょうか?


949 :デフォルトの名無しさん:2011/10/22(土) 11:43:07.24
Parentを下にあるコントロールに設定する
WinFormsの背景透過は無理矢理それっぽく見せてるだけで、どうしてもおかしくなるところはある
本当に透過させたいならWPFへ

950 :デフォルトの名無しさん:2011/10/22(土) 12:22:48.00
>>949
ありがとうございます。でも駄目だった。
Parent設定したほうのコントロールが消えちゃう。
やり方悪いのかな?コンテナつーのもよく分からないし・・・
重ならないように、デザイン考えたほうが速そうだwww

951 :デフォルトの名無しさん:2011/10/22(土) 14:12:25.85
winformならあなたの所望することはたぶん無理と思いますよ
winformそこまで考えられてないので
やるとすればgraphicsを駆使して自分で書くしかないかも

でどういうことをしようとしてたの?

952 :デフォルトの名無しさん:2011/10/22(土) 15:19:08.99
何をするかわからないのに無理とか言っちゃうおまえの脳みそが・・・w

953 :デフォルトの名無しさん:2011/10/22(土) 16:14:04.34
>>951
pictureBoxの画の上にラベルを重ねて動的に文字を出したかったんだけど、
画を隠さずフォントだけ重ねたかったんだけど。
WPF勉強してみるかなあ。
WPFってデザイナ部分がXAMLになっただけ?
C#のプログラム的にはWindowsフォームと同じですか?

954 :デフォルトの名無しさん:2011/10/22(土) 16:21:50.87
これをConsoleじゃなくて、System.Windows.Forms.Textbox.Textに書きたいんですが
http://ideone.com/XWFmK

これそのまま移植した感じで大丈夫でしょうか
それともStrategyがFormクラスから直接見えるのは不味いですか?

955 :デフォルトの名無しさん:2011/10/22(土) 16:24:54.66
>>953
それならPaintで画像に文字だけ書くことをやるだけで十分じゃね?
まぁ、WPFの方がスマートに出来るけど。

WPFはレイアウトの仕方の考え方など様々な考え方が違うから気をつけて。
なれると、Windowsフォームで作りたくなくなるよ。Windowsフォームは自由度が低いので。

956 :デフォルトの名無しさん:2011/10/22(土) 16:24:59.63
>>953
GUI周りはかなり違う
pictureboxならなんとかなるかも


957 :デフォルトの名無しさん:2011/10/22(土) 16:26:30.76
>>954
何がしたいのかよく分からん設計
AddedLogかMethodのどっちかだけでよくね
イベント使うならストラテジの差し替えは要らんし

958 :デフォルトの名無しさん:2011/10/22(土) 16:47:11.70
>>953
どうぞ
http://ideone.com/C6yNB

959 :デフォルトの名無しさん:2011/10/22(土) 16:47:18.36
>>954
Textbox.Textに書きに行くのはいいけれど、たぶんやりたいはずの、
異なるスレッドからアクセスだと、動かなくなる。
こんな感じするといい。

TaskScheduler UISyncContext = TaskScheduler.FromCurrentSynchronizationContext();

void AddMessage(string text)
{
Task reportTask = Task.Factory.StartNew(() =>
{
textBox2.Text += text;
},
CancellationToken.None,
TaskCreationOptions.None,
UISyncContext);
reportTask.Wait();
}



960 :デフォルトの名無しさん:2011/10/22(土) 18:16:35.12
ちょっと宣伝するよー
http://studiokingyo.fc2web.com/

961 :デフォルトの名無しさん:2011/10/22(土) 19:09:04.80
コピペマン参上!まで読んだ。

962 :デフォルトの名無しさん:2011/10/22(土) 20:06:55.27
C#関係ないし・・・

963 :デフォルトの名無しさん:2011/10/22(土) 21:57:55.89
正規表現について質問します
C#の正規表現を使うには
Regex r = new Regex(@"正規表現");
Match m = r.Match(検索対象);
という風にインスタンス化してヒットさせる方法と
Match m = Regex.Match(検索対象, @"正規表現");
と2つあるみたいなんですが、
前者と後者の違いってなんでしょう?スタティックであるかないかだけですか?

964 :デフォルトの名無しさん:2011/10/22(土) 22:03:45.17
>>963
http://smdn.jp/programming/netfx/regex/1_operations/

965 :デフォルトの名無しさん:2011/10/22(土) 23:46:49.12
>>963
正規表現って、与えられたパターン文字列をコンパイルして、
内部的な状態遷移マシンに変換してるんだけど、
インスタンスだとそのコンパイルは1回きり(インスタンスを保持し続ける限り)だけど、
static な方だと毎回コンパイル必要になるんじゃないかな。
内部的にキャッシュとかしてくれてるかもしれないけども。

966 :デフォルトの名無しさん:2011/10/23(日) 01:49:13.28
>>953
http://dobon.net/vb/dotnet/control/labelonpicturebox.html
の方法で重ねられないの?
デザイナだとpictureboxには子コントロールを追加できない
直接コード書かないと

967 :デフォルトの名無しさん:2011/10/23(日) 03:26:11.30
>>953
普通にできるじゃん

http://www.dotup.org/uploda/www.dotup.org2171289.png
http://www.dotup.org/uploda/www.dotup.org2171290.png

968 :デフォルトの名無しさん:2011/10/23(日) 10:53:41.65
画像のチョイスが渋い

969 :デフォルトの名無しさん:2011/10/23(日) 11:31:38.54
>>967
2010 Expressなんだけど、ドキュメントアウトラインってどうやって表示するの?
表示−その他のウィンドウ にないし、カスタマイズでも見当たらない

970 :デフォルトの名無しさん:2011/10/23(日) 12:20:57.50
>>966
ほう
そんなのでいいのか

>>967
後だしよくない

971 :デフォルトの名無しさん:2011/10/23(日) 13:12:52.95
センスないやつはほんとセンスないよな
何年経ってもくっそみたいなUIwwww

972 :デフォルトの名無しさん:2011/10/23(日) 13:16:23.11
WinFormsは見た目にこだわらず一切余計なことしないのが一番綺麗だよね
背景に画像入れたりしたときの醜さといったら

973 :デフォルトの名無しさん:2011/10/23(日) 13:20:45.97
美的感覚も重要だよな
ホームページとかで背景に鮮やかな柄にしている奴とか
文字がチカチカして見えにくい
色盲なのかといいたくなる

974 :デフォルトの名無しさん:2011/10/23(日) 13:23:41.59
WinFormsって背景色ちょっと変えただけでひっどい見た目になるよな

975 :デフォルトの名無しさん:2011/10/23(日) 15:39:26.46
なんだってそうだろ

976 :デフォルトの名無しさん:2011/10/23(日) 15:46:38.36
お前らの見た目も性格もひっどいよな

977 :デフォルトの名無しさん:2011/10/23(日) 18:00:07.22
おうよ

978 :デフォルトの名無しさん:2011/10/23(日) 18:43:12.47
WPFはスマホのUI真似ればいい感じ。

979 :デフォルトの名無しさん:2011/10/23(日) 19:10:31.33
WebBrowserコントロールについて疑問なんですが、これってInternetExplorerベースで動いてるの?
もしかしてInternetExplorerが入ってないと動かないの?



980 :デフォルトの名無しさん:2011/10/23(日) 19:14:12.03
IEというかTrident
Monoで動かすってんでもない限り入ってないことはないだろ

981 :デフォルトの名無しさん:2011/10/23(日) 19:22:42.90
ふらっとC#,C♯,C#(初心者用) Part80
http://hibari.2ch.net/test/read.cgi/tech/1319365302/

982 :デフォルトの名無しさん:2011/10/23(日) 19:45:03.67
>>978
そうだな糞重いのもアイコンでっかくして
一度に表示するデータ量を減らせば
重いのも誤魔化せるな

逆に数万行のデータを表示するようなアプリはこれでは無理

983 :デフォルトの名無しさん:2011/10/23(日) 19:48:15.86
数万行のデータを一度に目に入れられる能力者なんてこの世におりませんので本来は気にしなくていい部分
Googleの検索に何件表示されてる?
プレゼンする時に何行データ出す?
よ〜く考えた方がいいぞ

それでも「10万件表示できること」って押し通されたこともあるが

984 :デフォルトの名無しさん:2011/10/23(日) 19:48:32.19
>>982
数万行表示させるのは、設計的に問題有るだろw

985 :デフォルトの名無しさん:2011/10/23(日) 19:51:26.99
自分用だけどマルチディスプレイで表は平面ではなく奥行きのある立体で表示しているから
余裕で10万超えてるわ

986 :デフォルトの名無しさん:2011/10/23(日) 19:57:49.78
グラフは縮小すりゃいいだけだし比較にならねえな

987 :デフォルトの名無しさん:2011/10/23(日) 20:02:22.25
アスペだからリストやグリッドの話をしているって分からないの…。

988 :デフォルトの名無しさん:2011/10/23(日) 21:28:26.07
>>981
おつうめ

989 :デフォルトの名無しさん:2011/10/23(日) 22:49:28.02
>>969
お金払えば使えるよ^^

990 :デフォルトの名無しさん:2011/10/23(日) 22:50:39.00
最近の学生は金払わんでも使えるんだよなあ

991 :デフォルトの名無しさん:2011/10/23(日) 22:51:24.21
if (_socket == null || ar == null)
return;
else
len = this._socket.EndReceive(ar);

これでぬるぽ言われるんだけど、どうやったら回避できますか、
アドバイスください@ReceiveCallbackメソッドです

992 :デフォルトの名無しさん:2011/10/23(日) 22:52:30.84
学生ならVL版借りてきてインスコすりゃあるてぃめっとだと思うんです

993 :デフォルトの名無しさん:2011/10/23(日) 22:53:08.72
>>991
orだと両方チェックするから右側がnullの時アクセスできない代物なんじゃない?
普通は&&すべき

994 :デフォルトの名無しさん:2011/10/23(日) 23:00:02.02
>>993
ちょっと何言ってるか分からない

>>991
ブレイクポイントで止めて自動変数ウィンドウ辺りで何がnullなのか確認

995 :デフォルトの名無しさん:2011/10/23(日) 23:01:57.01
>>994
Close()した後なので_soketがnullなんですが、
_soket == nullがfalseを返すのかどうなのか、
else側が実行されちゃうんです

996 :デフォルトの名無しさん:2011/10/23(日) 23:04:52.40
if (list == null || list.Count == 0) return; これだとエラー
if (list == null && list.Count == 0l) return; これだとノーエラー

997 :デフォルトの名無しさん:2011/10/23(日) 23:08:34.66
Close() で null になるのを確認してる?
中身がなくなるのと、参照元変数が初期化されるのとは別のお話じゃなかったっけ。
それなら Close() というかインスタンスを破棄した後で自分で null 入れなきゃならないんだけど。

998 :デフォルトの名無しさん:2011/10/23(日) 23:08:38.51
||を|にすればおk

999 :デフォルトの名無しさん:2011/10/23(日) 23:18:24.64
>>996
今回は二つ目の条件判断で一つ目で判断したオブジェクトのメンバ見てるわけじゃないだろ…

1000 :デフォルトの名無しさん:2011/10/23(日) 23:20:03.51
||と&&使いこなせないやつはif文分けて書け

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

227 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)