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


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

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



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

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

前スレ
ふらっとC#,C♯,C#(初心者用) Part42
pc12.2ch.net/test/read.cgi/tech/1245836827/


862 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 17:44:18 ]
>>861
よくねえよ。C++/CLIスレがあるからそっちいけ

String^で受けてmarshal_as<std::string>

863 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 17:58:19 ]
>>860
DataViewでFilterとToTable使った方が楽だと思うけど
なぜあえてLINQ?

864 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 18:47:38 ]
>>863
LINQを使う(覚える)のが目的でした。
LINQ使えばこの手の処理がかなり簡素にできるのかなと。
構造体のlistならサンプルでなんとなくわかった(ような気がする)
のですがDataTableの場合、項目名をどう書けばよいのかわか
りませんでした。


865 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 20:00:44 ]
>>859
StreamはCloseだけでも大丈夫だよ。
正確には大丈夫ではないが、今回の現象に関しては。
※もちろんusingなどを使って確実にDisposeするのが正しい。

DBアクセス用のクラスの方の、接続とかの管理(Close)は大丈夫なのか?


866 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 20:02:16 ]
ただ、普通に考えて2G使うってのはちょっとおかしいな。
Disposeとかだけの問題でもなさそうな気がするな。


867 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 20:12:57 ]
>>864
型付きかどうかで変わるけど、
var table = (from row in table.AsEnumerable()
             where row.Field<int>("ColName") > 15
             select row).CopyToDataTable();
ただのDataTableならこんな感じ
AllowDBNullならnullチェックが必要になるが

868 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 20:41:19 ]
>865-866
レスありがとうございます

プロジェクト全体に「Stream」で検索掛けて関係ありそうなのは全部Close Disposeかけました
(StreamReaderなども)
DBに関しては
DbConnection,DbTransactionのClose Dispose
DbCommandのDispose
を徹底しました

でもまだ使用率が上がってます
現在1G使用率を上げるのに2時間かかるかんじです
(ファイルサイズがバラバラなので変化には誤差があるのでしょうが)

もうちょいでしょうか...w

869 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 21:02:09 ]
>>862
ツンデレどうもw
とりあえず文字はいけました

870 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 21:06:28 ]
>>868
んー、usingの使い方知ってる?



871 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 21:48:32 ]
あちこち弄る前にプロファイラで現状を把握すべき

872 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 23:01:02 ]
まあ多分プロファイラよりもコードレビューしてもらうのが先なレベルの気もする。
別にプロファイラで見るのもいいんだけど。


873 名前:デフォルトの名無しさん [2009/08/25(火) 23:21:10 ]
SQLでビューを作成し、できたSQLをC♯内にコーディングしました。
これって、linqだと簡単にできるの?

874 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 23:28:29 ]
いや特に

875 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 23:46:01 ]
LINQに対して夢を抱きすぎじゃねえのか

876 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 00:12:20 ]
LINQ悪くないんだけど遅いんだよな。

877 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 00:31:17 ]
鯖で使うんでなければ大した問題にはならないでしょ
鯖で使うのは微妙

878 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 01:02:57 ]
LINQって糖衣構文なだけじゃないの?
展開すると最適化のきかない冗長なコードになるのかな?

879 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 01:14:19 ]
>>878
デリゲート呼び出し分のコストはかかるんで、全部インライン展開した場合と比べると5%くらい遅いことはある。
まあ、あと、変なクエリを ToArray() せずに使うと毎回クエリしなおしで遅くなることもあるけど。


880 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 01:39:12 ]
5%が「鯖で使うのは微妙」なくらい遅いの?

一部の人はどこかのブログとかををうのみにして先入観持ってる気がする



881 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 09:48:01 ]
>>870-872

usingの使い方は知っていますが、接続を切るタイミングは動的にしないといけない事情がありましたので使ってません。

あとメモリリークの原因分かりました
support.microsoft.com/kb/418376/ja
ファイルがXMLでかつ
XSL、DTDの指定があったとき
WebBrowserで読み込んでInnerTextを拾ってくる使用でした.
プロファイラで見たときにWebBrowserのメモリがガンガン上昇していったので気付きました。
XMLDocumentで同じようなことができないか試してみます。


882 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 09:57:26 ]
| 回避策
| WebBrowser コントロールを利用しているアプリケーションを定期的に終了させて下さい。

うわお
>>881

883 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 10:18:14 ]
844からWebBrowserは想像できねーよw

884 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 10:53:13 ]
>>883
たぶん、紙にでもならない限りむりだろうなw。

885 名前:844 mailto:sage [2009/08/26(水) 10:54:27 ]
>883-884
すみませんw
まさかここで引っかかってると思いもしなかったので

886 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 12:32:13 ]
>>885
>すみませんw

なんだよ最後の草はバカにしてるのか

887 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 13:01:17 ]
牛乳飲め

888 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 14:01:37 ]
C++みたいに、引数で渡したオブジェクトの中身は触らないよ!みたいな指定って出来ませんか?


889 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 14:02:11 ]
void FuncA() { Console.WriteLine("A"); }
void FuncB() { Console.WriteLine("B"); }
void FuncC() { Console.WriteLine("C"); }

Action x;
Action y;

x += FuncA;
x += FuncB;
x += FuncC;
y = x;

x -= FuncB; // FuncAとFuncCが残る
y -= x; // FuncBだけ残るはず
y();

Bだけ表示されると思ったのですが、A, B, C全て表示されました。
x -= FuncAやx -= FuncCにした場合は、ちゃんとAだけCだけ表示されます。
なぜでしょうか?

890 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 14:34:38 ]
delegate の -= はコンパイル時に Delegate.Remove に解決される。
で、Delegate.Remove の解説はこれ。
> value の呼び出しリストが source 呼び出しリスト内の隣接している一連の要素と一致する場合は、
> source の呼び出しリスト内に value の呼び出しリストが含まれていると見なされます。
> value の呼び出しリストが source の呼び出しリスト内に複数回出現する場合は、
> 最後に出現した呼び出しリストが削除されます。

x -= FuncB すると x には FuncA, FuncC というリストが残る。
y は FuncA, FuncB, FuncC というリストだから、
「リスト内の隣接している一連の要素」に一致しなくなる。



891 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 14:47:11 ]
>>888
必要とされる理由がないので無い

892 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 15:00:03 ]
>>888
俺もそれ欲しいんだけどなあ。
Dictionaryとか参照だけさせたいときは読み取り専用ラッパで包むしかないんだろうか。

893 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 16:28:23 ]
>>867
ありがとう。参考にさせてもらいます。
思ったより長くなるんですね

894 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 17:22:34 ]
>>891
このメソッドに渡すこのインスタンスは中身が変更されるんだろうか?
って気になることあるじゃんか

サマリーに明記するしかないのかね
例外なんかはサマリーにかけるよね

895 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 17:39:42 ]
そういう場合インスタンス渡さないから気にならないなあ。

896 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 17:59:29 ]
何でもかんでもListとか要求する関数とか書いてそうだな>>892>>894

897 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 18:33:51 ]
C++でconstを活用してない人は疑問に思わないんだろうな

898 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 18:39:25 ]
次はフレンドクラス作れるようにしろとでも言い出すのかよ
バカか

899 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 18:42:19 ]
馬鹿ですけど何か文句あるか?

900 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 18:45:45 ]
>>896
で、こういう場合C#ではどうするの?



901 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 18:46:37 ]
>>897
学習能力衰えた脳筋はC++から出てくんなハゲ。

902 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 18:49:24 ]
>>900
例となるメソッドとクラスを提示してくれよ。

903 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 19:05:34 ]
C#でやるならIReadOnlyHogeとその派生のIHoge(クラスでもいいけど)を作るのが自然だと思う。
C++のconstの概念は、実質的にそういう2つのクラスを作っているも同然だって。

まあ、IList<T>とその周辺はそういう風になっていないけどさ。






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

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

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