C#, C♯, C#相談室 P ..
855:デフォルトの名無しさん
09/08/14 14:42:25
ファイル数がきっと膨大なはず
ファイルの数があまりに多いと関連の処理がどんどん重くなる
確かWindowsのファイルテーブルてツリー構造してるの見た目だけで
実際はドライブごとに一つの表があるだけだから
ドライブ内のファイル/フォルダの数が多くなる度に
ファイル/フォルダ絡みのあらゆる動作が遅くなる
間違ってたらごめん
856:デフォルトの名無しさん
09/08/14 15:14:19
NTFSだったらB木使ってるからFAT32よりも格段に速いよ
857:デフォルトの名無しさん
09/08/14 15:22:48
>>856
フォルダの中身ごと削除の時点で全スキャンだし
858:837
09/08/14 15:58:22
>>853
すみません。。
フォルダ数:約9500
ファイル数:約52500
膨大な数ですよね。
>>855
毎回削除する"フォルダ数"/"ディレクトリ数"は
変わらないのですが
それでも段々遅くなるのでしょうか?
859:デフォルトの名無しさん
09/08/14 16:07:16
>>858
数日でそんなに溜まるログとか設計が狂ってる
860:デフォルトの名無しさん
09/08/14 16:10:39
いっその事DBにログ記録しろ
861:デフォルトの名無しさん
09/08/14 16:18:10
単純に一日のログを1ファイルにまとめるだけでも
相当マシになるはず
862:837
09/08/14 17:51:15
みなさん、ありがとうございます。
設計というよりも、そういう仕様なので
仕方ない部分もあるのですが・・・
アドバイスを参考にしたいと思います。
863:デフォルトの名無しさん
09/08/14 18:46:36
それ、プログラム終了させて新たに起動したらあきらかに速度が違う
というのなら、今まで消したファイルもスキャンしてるとかないか?
864:842
09/08/15 01:15:55
>ページファイルが1日で5MBずつ増えていますが
>そのせいで削除処理が約30秒も伸びるんでしょうか?
>削除処理だけで、他の処理は遅くなっていないのも
>気になっています。
その、今の所、日を追うごとに増えているデータってのが
ページファイルだけなら疑ってみる価値はあるかと。
ファイル削除とページングでハードディスクへのリクエストがかち合って
ガリガリ言ってる時間が長くなれば可能性はあるかと。
削除プログラムが常駐プログラムなら一度再起動してみて速度をみてみるのはどうだろう?
それ以前にgen2の値はどうなんだろう?これでリークか否かの答えは出ると思うんだけど。
毎回起動なら、そのページファイルを増やしている別のプログラムをつきとめた方がいいかも。
なんにせよ、そのサーバはリークを起こしているっぽいw
865:デフォルトの名無しさん
09/08/16 12:42:56
webbrowserに表示しているHTMLを画像として保存するには、
どのような方法が一番妥当ですか?
クライアントの隠れている部分も含めて画像変換したいので、
PrintScreenではだめです。
866:865
09/08/16 13:00:41
ネットで探してて最初は見つからなかったのですが、
書き込んでからいろいろ見つかってきました。
URLリンク(homepage1.nifty.com)
URLリンク(www.i-tribe.info)
すみませんでした。
867:865
09/08/16 13:04:11
ここが一番よさそうでした。
URLリンク(ufreyr.blog80.fc2.com)
868:837
09/08/17 14:29:39
>>864
遅くなりましたが、「Process Explorer」で見てみました。
削除しているプログラムの値です。
#Gen0 Collection 14,220
#Gen1 Collection 5,952
#Gen2 Collection 314
Gen0 Heap Size 3,145,728
Gen1 Heap Size 30,976
Gen2 Heap Size 64,076,116
これって、リークしているのでしょうか?
869:864
09/08/17 18:07:10
Gen2を知らないなら、今だけはプログラムを起動中に常に必要なメモリサイズだと思ってください。
削除プログラムに常に必要とされているメモリが64M弱が正しいならリークしてないです。
これが削除処理を実行する度に増えているなら、かなり怪しいです。
個人的な見解としてはファイルが何ギガあっても削除するだけに64Mは異常です。
CLR Profilerで何にメモリを使っているのか調べます。
更にいうと、64M程度で体感速度に差が出るとは考えづらいです。
他のヒープも合わせ削除処理中にムチャなメモリ確保がある可能性も視野に入れます。
ただし処理時間の原因がメモリリークであり、それが改善された場合、
これ以上削除時間が延びる事は無いはずなのでクレームが来るまで放置しますw
870:デフォルトの名無しさん
09/08/17 23:10:33
サーバーでPaythonスクリプトを実行し、
特定の命令が呼び出されたら割り込みが入るまで待機ということをしたい。
それを実現するために、スクリプトを実行するごとにスレッドを呼び出してイベント来るまで待機ということをしているんだが、
これだと多数のユーザーがスクリプトを実行したときにリソースが枯渇しそうなことに気付いた。
スレッドプールで書き直したいんだが、ブロックするような処理をするのはまずいとMSDNに書いてあった.
これってイベントが来るまで待機するような処理も含まれるの?
871:デフォルトの名無しさん
09/08/17 23:44:28
どの辺にC#がw
872:870
09/08/17 23:55:18
使用言語:C#3.0
873:デフォルトの名無しさん
09/08/18 00:22:37
>>870
そのまえにペイソンとかいう言語はC#とどの程度相互運用できるんだ
874:デフォルトの名無しさん
09/08/18 00:28:52
phython≠paython
875:デフォルトの名無しさん
09/08/18 00:59:19
また変なエサを投下して・・・
876:デフォルトの名無しさん
09/08/18 01:07:01
ふぁいそん?
877:デフォルトの名無しさん
09/08/18 01:46:04
北米的にはぺいずぅぁん。
878:デフォルトの名無しさん
09/08/18 10:24:41
SORPとかでWCF使うとか
879:870
09/08/18 16:49:05
>>873
ironpaythonを使えば、楽に相互運用ができる。
880:デフォルトの名無しさん
09/08/18 17:25:17
>>879
paythonって何だよ
ironpaythonって何だよ
881:デフォルトの名無しさん
09/08/18 17:36:43
試しにググったらここのPart42が引っかかったw
882:デフォルトの名無しさん
09/08/18 20:44:15
SORP?
883:デフォルトの名無しさん
09/08/18 20:46:14
>>879
アイロンペイソンってサーバーで動かすPaythonスクリプトにもなれるの?
884:デフォルトの名無しさん
09/08/18 21:22:55
おまえらペイトホンも知らねーのかよ。
>>870
マジレスしようと何度か読み直してみたがさっぱり意味が解らない。
とりあえず質問の内容は最後の2行のみ?
で、ブロックしそうなのはクライアント側?サーバ側?
っつか多分日本語でやりとりしてもらちがあかなそう。簡単なソース出して
これはおk?ってやった方が、キミとは上手くやっていけそうな気がする。
885:デフォルトの名無しさん
09/08/18 21:53:42
boid mein() {
}
とかってコード期待w
886:デフォルトの名無しさん
09/08/18 22:35:00
>>869
亀だが・・・
64M程度ならドトネトでは普通じゃないかと思う
結局メモリ量は予約領域でもあるはずだから純粋に使用しているメモリというわけではないだろうし
887:870
09/08/18 23:54:18
>>884
ソースをさらします。
サーバーがRunScriptというパケットを受け取ると実行される
void talk()
{
Thread t = new Thread(executeScript);
t.Start(this.remoteip);
}
private void executeScript(object data)
{
PythonEngine pe = new PythonEngine();
pe.deliverVarible("_self", this);
pe.deliverVarible("_target", target);
pe.deliverVarible("_remoteip", (string)data);
pe.execute("foo.py");
}
//リモートIPとManualResetEventが対になってる
static Dictionary<string, ManualResetEvent> ManualEvent = new Dictionary<string, ManualResetEvent>();
//foo.pyがwaitForSignalを実行すると呼び出させる
public void waitForSignal()
{
if (remoteip == null) return;
ManualEvent[remoteip].Reset();
ManualEvent[remoteip].WaitOne(Globals.script_wait_time);
}
//別スレッドから呼び出し
public void setSignal()
{
if (remoteip == null) return;
ManualEvent[remoteip].Set();
}
888:870
09/08/18 23:55:49
訂正
×//別スレッドから呼び出し
○//同じクライアントから特定のパケットを受け取ると呼び出される(パケットを受け取る部分は非同期ソケットを使ってます)
889:デフォルトの名無しさん
09/08/19 00:08:34
Directory.Delete("パス",true);
これに64Mはありえない。それからgen2は回収に何度か失敗している領域。
現在使用中かつ長い間確保されている可能性が高い。
とまぁ、レスの情報と自分の経験からの推測な訳です。はい。
本当に64Mが適正か否かは>>837氏のみが知る所でしょう。
890:デフォルトの名無しさん
09/08/19 19:00:23
質問です
今ちょっと頼まれて
テキストボックスとボタンのフォームだけがあります。
そしてそれに必須入力チェック、桁数チェック、書式チェックと言う条件を作らないといけないのですが
当方初心者でまるでわかりません。
まず、True,Falseの場合に出すメッセージボックスを作ります。
そしてIF文でどっちに行くかを条件付けるんですが
どのようにして記述していけばいいのでしょうか・・・・
891:デフォルトの名無しさん
09/08/19 21:30:38
ググれ
892:デフォルトの名無しさん
09/08/19 21:31:42
初心者向けの本でも買え。
893:デフォルトの名無しさん
09/08/19 21:53:52
カスどもありがとう助かったわ
894:デフォルトの名無しさん
09/08/19 22:19:58
タブコントロールのタブなしってあるの?
アクセスではあるらしいね。
895:デフォルトの名無しさん
09/08/19 22:34:11
フラットスタイルじゃなくて?
896:デフォルトの名しさん
09/08/19 22:46:10
ふらっとの方でもたずねたのですが、返事がないので
C#を始めて1年くらいで、2Dグラフィック周りを主にやってます。
最近、JAVAプログラムのオープンソフトでJDrafter(hhp://jdrafter.com/)とい
うソフトを発見したのですが、 このソフトは、イラレ感覚で2Dグラフィックを作成し、Javaの
オブジェクトとして保存できるため、Javaプログラムからの表示やアニメーションなどにも応
用できるようなのですが、 どなたか、C#でこんなプログラムをご存知の方いないでしょうか。
もしくは、オープンソフトなので、描画周りのクラスをC#に変換して利用できないか考え
ているところですが、どなたかその方法やこれに適したjava→C#変換ツールをご存知
の方があれば、ご教授をお願いします。
897:デフォルトの名無しさん
09/08/19 22:54:20
何文字目?
898:デフォルトの名無しさん
09/08/19 22:55:30
Java使えよ
899:デフォルトの名無しさん
09/08/19 22:56:59
つJ#
900:デフォルトの名無しさん
09/08/19 22:59:36
>>895
フラットスタイル…
C♯にあるの?
901:デフォルトの名しさん
09/08/19 22:59:48
>>898
javaに変えてもいいのですが、今までの資産や、C#の将来性を考えると簡単に
は決断できません。
ググってもみましたが、どうしてもわからないのでお尋ねしているところです。
902:デフォルトの名無しさん
09/08/19 23:01:03
つか xaml に変換できるもの、Expression とかがまさにそのまま
イラレ感覚がいいんならイラレ -> xaml のエクスポータ使えばー
903:デフォルトの名しさん
09/08/19 23:17:21
>>902
ありがとうございました。
xamlテクノロジーは始めて知りました。(勉強不足ですみません。)
xamlについて調べて、フリーの(金がないので) ツールなんかがない
かいググります。どうもありがとうございました。
904:デフォルトの名無しさん
09/08/19 23:36:49
イラレってxaml生成できんのか。おどろいた。
905:デフォルトの名無しさん
09/08/19 23:49:29
XPSじゃねーのと思って調べたらほんとにXAMLだった
906:デフォルトの名無しさん
09/08/20 00:11:20
イラレ10でも出力できますか?
907:デフォルトの名無しさん
09/08/20 00:59:00
プラグイン形式のやつはCS以降じゃないと無理なんじゃないかな?
Photoshop(.psd)やIllustrator(.ai)を直接取り込めるようになったBlend 3を使うのが楽だとは思うけど↓みたいなのもある。
XamlXporter for Illustrator
URLリンク(www.codeplex.com)
>>903
Inkscapeがオススメ。日本語化されてて標準でXAML出力に対応してる。
908:デフォルトの名無しさん
09/08/20 02:14:50
(´・∀・`)ヘー
909:デフォルトの名無しさん
09/08/20 06:44:32
イラレでコントロールを作成してWPFコントロールにすることは可能なの?
910:デフォルトの名無しさん
09/08/20 07:02:50
仮にCanvasしか吐けなくても好きなルート要素で囲んでやるだけで
ユーザーコントロールでもコントロールテンプレートでも作れるはず
911:デフォルトの名無しさん
09/08/20 08:27:03
へーへーへー
912:デフォルトの名無しさん
09/08/20 11:35:37
すいません。教えてくらはい。
VS2008のプロジェクトに*.iniファイルを含めて
プロジェクト出力として一緒に出力したいのですが、
クラスライブラリプロジェクトの場合うまくいきません。
これは仕様でなんでしょうか?
<<設定例>>
ファイルプロパティ
ビルドアクション:コンテンツ
出力ディレクトリにコピー:常にコピー
913:デフォルトの名無しさん
09/08/20 11:56:20
質問ですが、遅延バインディングにてExcelの単一セルの中に入っている情報を取り出すにはどうすればよいでしょうか?
遅延バインディング レイトバインディング 実行時バインディング いろんな呼び方がありますね。
URLリンク(www6.atwiki.jp) にありましたコードの一部を参照させていただいております。
// セルデータを2次元配列にいっぺんに読み込みます。
objRange_Late = objSheet_Late.GetType().InvokeMember("UsedRange", BindingFlags.GetProperty, null, objSheet_Late, null);
Object[,] tmpTable;
tmpTable = (System.Object[,])(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null));
↑上記コードはうまくいったのですが、
単一のセルを指定し(Rangeを使うのだと思います)そのセル内のデータを取得する方法がわかりません。
やりたいこと 例)
A1セル「hoge」 の文字列hogeを取得したいです。
試しに書いたコード(実行時にエラーが出たのでできませんでしたが)を乗せておきます。
parameters = new Object[] { "A1",Missing.Value };
objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, parameters);
Object tmpTable = new object[1];
tmpTable = (System.Object[,])(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null));
こういう雰囲気でいけそうな気がするのですが、わかりません。よろしくお願いします。
914:デフォルトの名無しさん
09/08/20 18:43:57
Webサーバ機能を、作ってるアプリに付けたいのですが、
単一ループ内でkeep-aliveを処理できるお手軽なアプローチ無いでしょうか?
// listner起動
while (true)
{
// Context取得 (ブロック)
// Request処理
// Response処理
if (Connection == close)
{
break;
}
}
と言う様な処理を行い、
要は、ソケットの接続〜切断のモデルと近似にしたいのです。
理由は、データ管理や前回のリクエスト/レスポンスに強く依存した処理の為、簡単に回したいと言う感じです。
アドバイスと慈悲を下さい。
915:デフォルトの名無しさん
09/08/20 18:52:23
>>912
プロジェクト出力ってセットアッププロジェクトの話?
セットアッププロジェクトでDLLだけ配布するの?
>>914
プロトコルに何使うのさ
>>913
Excelの質問には答えられないけど、エラーの内容ぐらい書いた方がいいんでないか
916:デフォルトの名無しさん
09/08/20 18:55:59
>>915
httpです
917:デフォルトの名無しさん
09/08/20 20:16:18
>>916
HTTP で keep-alive でのみセッションが維持されるなんて
仕様外の特殊な事考えたりしてるなら
独自プロトコルでやった方がいい
918:デフォルトの名無しさん
09/08/20 22:27:31
前回のリクエスト/レスポンスに強く依存した処理ってviewstateじゃだめなん?
919:デフォルトの名無しさん
09/08/20 22:37:11
>>914
つまりソケットの接続〜切断のモデルと同じなんじゃね?
ソケットつかえばおk
920:デフォルトの名無しさん
09/08/20 23:46:05
.net 3.5、 WinXP VS2008、C#で開発しています。
開発するアプリケーションの利用環境は、Win2003、Win2008、WinVistaなどを想定している開発です。
質問します。
C#でファイル名の整合性を確認する関数はあるでしょうか?
ファイル名に使えない文字を取得する、System.IO.GetInvalidFileNameChars()は知っていますが、これだと
CON, PRN, AUX, CLOCK$, NUL COM0, COM1, COM2, COM3……
のような文字列を調べることができません。
また、開発環境こそWinXP Proなんですけれども、開発するアプリケーションは
クライアント・サーバ方式のアプリケーションで、クライアントからサーバにファイルを作成する形式のものです。
サーバはWin2003かWin2008、クライアントはWinVistaかWinXPです。
そうなってくると、いったんクライアントでファイルを作成して、実際に有効なファイル名かどうかを
確認する手段もOSの差を吸収できるかどうかに疑問が生じます。
このような場合、一体どのようにしてファイル名として有効な文字列かどうか判断したらよいか
教えてください。
お願いいたします。
921:デフォルトの名無しさん
09/08/20 23:48:30
最近C#をはじめました。ワケあってちょっと急いで基本を学ばなければなりません。
質問させていただきたいのですが、sqrtやsinなどの数学系の関数を使うとき
Math.Sqrt(2.0)
といちいちMath.をつけるのが(複雑な式をコーディングするときにMathだらけになる)
嫌なのですがこれを書かないでいいようにするにはどうしたらいいのでしょうか。
多分Console.WriteをWriteだけにしたいというのと同じ意味だと思いますが。
よろしくお願いいたします。
922:920
09/08/20 23:54:54
ごめんなさい、よく考えたら権限の問題とかもあるので、サーバ側でディレクトリ作ってみて、失敗するかどうかで判断したほうがよさそうです。
質問を取り消します。
923:デフォルトの名無しさん
09/08/20 23:56:21
>>921
Math.Sinを呼び出すだけのローカル関数でも作っとけば
924:デフォルトの名無しさん
09/08/20 23:56:42
>>919
開発効率が悪いからもっと便利なクラスを使いたいです
925:デフォルトの名無しさん
09/08/20 23:58:21
便利なクラスを作れ
926:デフォルトの名無しさん
09/08/21 00:00:06
static import は?と思ってしまった・・・orz
927:デフォルトの名無しさん
09/08/21 00:16:18
>>923>>925
それはそういうものなのですか。VC#で開発してるとあまりそういうことは
みんな面倒とは思わないためでしょうか?
いずれにせよ、手軽にできるわけではないんですね。ありがとうございました。
928:デフォルトの名無しさん
09/08/21 00:18:17
>>927
Math って書くのが普通。とくに面倒じゃないよ。
929:デフォルトの名無しさん
09/08/21 00:36:50
>>927
オブジェクト指向というのはそういうもの。
930:デフォルトの名無しさん
09/08/21 00:52:29
>>927
Math.Sinをコンパクトに記述することを考えるより、
式そのものを簡単にすることをまず考えるべきだろうね。
数学の数式だって同じだと思うけど、式が複雑だっていうなら
いくつかの部分に分けて部分ごとに一時変数に入れるとかね。
まあ数式の場合と違って、数値計算の場合は演算誤差に対する配慮は
必要になるけど。
931:デフォルトの名無しさん
09/08/21 01:25:51
using使えば
932:デフォルトの名無しさん
09/08/21 01:29:53
Func<double, double> sin = Math.Sin;
とかできねーの?
933:デフォルトの名無しさん
09/08/21 01:30:22
>>927
VC#っていうか、フレームワークの関数がいくつあると思ってるん?
全部一発で書けるようトップレベルに置いたらとんでもないことになる。
Mathだけ特別扱いなんて出来ないよ。
934:デフォルトの名無しさん
09/08/21 01:37:07
>>927
そういうのは学生のうちに卒業しよう。
プロジェクトメンバーが迷惑するから。
935:デフォルトの名無しさん
09/08/21 01:41:10
>>932
できるよ
936:デフォルトの名無しさん
09/08/21 01:44:44
>927 うるせーよ
937:デフォルトの名無しさん
09/08/21 02:17:22
普段使わない関数がIntelliSenseでわらわら出られたらよっぽど面倒だわね
938:デフォルトの名無しさん
09/08/21 06:34:37
ExpressionTree使え
939:デフォルトの名無しさん
09/08/21 07:35:53
>>927
その書き方だと「面倒だなぁ……。よくみんな我慢してるよなw」って考えてるみたいだが、
こうやって分類されている方が、長い目で見れば便利なんだ。
このめんどくささはむしろ必要なめんどくささ。いずれわかるよ。
940:デフォルトの名無しさん
09/08/21 07:36:37
>>932
Math.を省略したくなるような状況でそんなことしたら遅くなるからやめれ
941:デフォルトの名無しさん
09/08/21 08:03:24
コードを書くときには面倒かもしれないけど
コードを読むときには何してるかわかるからいいと思うんだが。
というか実際のところたいした手間じゃないだろう。
942:デフォルトの名無しさん
09/08/21 08:07:18
>>939がもっともだと思う
943:デフォルトの名無しさん
09/08/21 08:47:45
F#でかけばMath.とか書かずにすむお
944:>>913
09/08/21 10:39:22
>>913です。
自己解決したので解決方法を。
parameters = new Object[] { "A1" };
objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, parameters);
Object tmpTable = new object[1];
→tmpTable = (System.Object[])(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null));
// 「→」行部分実行時に Error:型'System.String'オブジェクトを型'System.Object[]'にキャストできません のエラー
parameters = new Object[] { "A1" };
objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, parameters);
String str = string.Empty;
str = (System.String)(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null));
MessageBox.Show(str);
無事A1セルに入力されていたValueを取得することができました。
無駄にキャストしていたことが問題だったのですね。エラーみろよっていってくれた>>915さんどうもです。
945:デフォルトの名無しさん
09/08/21 16:47:03
Double型をString型に変換する方法を教えていただけませんか?
946:デフォルトの名無しさん
09/08/21 16:53:59
ToString
947:デフォルトの名無しさん
09/08/21 17:43:13
>>946
ありがとうございます。>>945です
doubleを無理やりstring型にキャストしようとしてました^^;
948:デフォルトの名無しさん
09/08/21 17:44:05
キャストの意味を勉強しなおそう
949:デフォルトの名無しさん
09/08/21 17:51:22
DataGrid へ適当なクラスリストのバインドを考えています。
ただ、表示対象は対象クラスが保持するプロパティの一つに限定したいです。
後々にDataGrid から SelectedItems として、バインドしたクラスのデータを取得を考えます。
ここで、クラスをそのまま ItemsSource へ突っ込むと、クラス名が表示されてしまいます。
こういった場合、特に二行目の部分ではどんな風にすれば対象プロパティのみ表示可能でしょうか。
よろしくおねがいします。
950:デフォルトの名無しさん
09/08/21 18:04:56
全体に意味が分からんが、まずそれはWPFか?
951:デフォルトの名無しさん
09/08/21 18:07:19
>>949
>ここで、クラスをそのまま ItemsSource へ突っ込むと、クラス名が表示されてしまいます。
ここで、クラスをそのまま ItemsSource へ突っ込むと、突っ込んだリスト中のクラスが保持するメンバクラスの名前、でした。
class hoge
{
public int m_hoge;
public foo m_foo;
}
class foo
{
で言う foo です。
m_hoge | m_foo
------+------
2 | m_foo
2 | m_foo
3 | m_foo
4 | m_foo
952:デフォルトの名無しさん
09/08/21 18:10:29
>>950
WPF というか、 Silverlight でやってます。
>>951 では途中で送信してしまったので、続きです。
class foo
{
public int m_x;
public int m_y;
}
ここで、 foo というクラス名ではなく、数字の x を出力したい。
953:デフォルトの名無しさん
09/08/21 18:10:59
パブリックプロパティ用意すりゃいい
954:デフォルトの名無しさん
09/08/21 18:18:24
XAML側でどのプロパティを表示するかの指定があったはず−。
それにしてもpublicなフィールドでm_って気持ち悪い命名規則だね。
955:デフォルトの名無しさん
09/08/21 18:27:16
>>954
ありがとうございますっ!
そういうのを探していました。
とても助かりました。
956:デフォルトの名無しさん
09/08/21 18:51:19
アクセサを使いましょう
957:デフォルトの名無しさん
09/08/21 18:53:43
XAMLのバインディングってわかりづらいよね
もとより人間が書くものじゃないんだろうけど
958:デフォルトの名無しさん
09/08/21 19:01:24
>>956
アクセサって get とか set ですよね?
XAML と合わせて検索しても、どうにも分らないです。
すみません。
バインディングの記述に利用する識別子でしょうか?
>>957
未だにクラス名やそのメンバ名を直接 XAML ファイルに記述するのが気持ち悪くて仕方ありません。
慣れの問題でしょうか……。
959:デフォルトの名無しさん
09/08/21 19:20:53
BindingのPathは . 使ってプロパティのプロパティを指すこともできる
つかフィールドってバインディングできたっけ? プロパティじゃないとダメな気が
> 未だにクラス名やそのメンバ名を直接 XAML ファイルに記述するのが気持ち悪くて仕方ありません。
XAMLに記述するのはViewModelのクラスのだから問題ない
960:デフォルトの名無しさん
09/08/21 19:23:48
>>942
>>927の考えは>>939やチミが勝手に心配しているような意味じゃないと思うぞw
別にクラスの中にしかメソッドが存在できないのがウザい、
というような意味のことは言ってないだろう。
っていうか、複雑な計算式をベタにコーディングしたら
>>927のように思うのはむしろ普通のこと。
実際見難くくてかなわんよ。
だから>>930のようにアドバイスするのが正しい。
しかし、今に始まったことじゃないけど本当シロートがシロートに講釈垂れる
図式が多すぎるなここ。
961:デフォルトの名無しさん
09/08/21 20:55:24
>> 未だにクラス名やそのメンバ名を直接 XAML ファイルに記述するのが気持ち悪くて仕方ありません。
>XAMLに記述するのはViewModelのクラスのだから問題ない
どうにもバインディングを勘違いしていました。
特に制約無く作ったデータでもバインディングは行えるものとして考えていました。
バインディングは特定のインタフェースを実装したクラスしか不可能なのですね。
962:デフォルトの名無しさん
09/08/21 21:01:05
>>961
>バインディングは特定のインタフェースを実装したクラスしか不可能なのですね。
違う。
設計の問題で、バインディング自体にそういう制限は無い。
963:デフォルトの名無しさん
09/08/22 00:13:55
>>960
このレベルの自分で頭使わないで文句言うタイプには「黙って書いとけ」が正しい。
964:デフォルトの名無しさん
09/08/22 00:39:36
""(空文字列)との比較は以下のどれがいいですか?
それぞれのメリット・デメリットを教えてください。
@str.Equals("")
AString.Equals(str, "")
Bstr == ""
Csrt.Length == 0
D"".Equals(str)
965:デフォルトの名無しさん
09/08/22 00:45:34
個人的には3
他は4以外objectで比較できちゃう
14はstrがnullのときを考慮しないといけない
でも大体はString.IsNullOrEmptyで片付けるかな
966:デフォルトの名無しさん
09/08/22 00:46:47
あくまで個人的な意見だけど。
俺は「str==""」が一番シンプルかつ直感的でいいと思うね。
1. 参照アドレスの比較と差別化するという意味合いはご尤もだが…。ここまでする必要あるかなぁ。
2. 冗長。
4. 使う場面による。文字列自体に着目した流れで来てるのか、
文字列の長さに着目した流れで来てるのか、というのが判断基準。
5. これは逆。どういう意図でこう書くんだろう。
967:デフォルトの名無しさん
09/08/22 00:58:15
5の書き方はJavaかなんかでこうするのがイイ
みたいなのがどっかに載ってた気がする(そして当然叩かれてた)
C#だと3かIsNullOrEmptyだよね。
968:デフォルトの名無しさん
09/08/22 01:05:59
fxcopにIsNullOrEmpty使えっていわれたような
969:デフォルトの名無しさん
09/08/22 01:14:50
C#の世界でも割と「==使うなEquals()使え」っていう教条主義的意見は
見かけるね。
というか、俺の見解では、そもそも==がデフォで参照等価の検査なのが直感的じゃない。
少なくともこれに関してはVBの方がまともに感じる。
つまり、参照等価の検査用には別の演算子を導入することにして、==の方は
値等価用にオーバーロードしないと使えない方が分かりやすい。
まあそれを言うと、そもそもC由来の=と==からして逆なんじゃないのかとも思うが…
970:デフォルトの名無しさん
09/08/22 01:34:35
しかし値の同一性ってのはデフォで定義できない
971:デフォルトの名無しさん
09/08/22 01:40:47
Estr == string.Empty
972:デフォルトの名無しさん
09/08/22 01:42:52
IsNullOrEmpty 派です。
973:デフォルトの名無しさん
09/08/22 02:14:56
>>966
>5. これは逆。どういう意図でこう書くんだろう。
これはリテラルのequals()呼び出しだから、コンパイラが最適化してくれる
可能性がある、という説明で自分は納得した。
実際のところ本当かは検証したわけじゃないけど、どう再定義してるかわか
んないstrのequals()を呼び出すよりは速い可能性があるというだけで充分
に意味はあると考えてる。
974:デフォルトの名無しさん
09/08/22 02:22:55
Javaでの話だけど、str.equals("")だとstrがnullのときにぬるぽの例外になるので、
"".equals(str)がいいんだって言っていた。
でも、まともな意見の人は"".equals(str)に否定的な人が多いという印象。
975:デフォルトの名無しさん
09/08/22 02:25:37
君の印象ではなく「まともな意見」でどう否定したかが重要。
976:デフォルトの名無しさん
09/08/22 02:29:39
つか str.Equals("") とほぼ等価でかつ str が null でも大丈夫だから
だろ。2 と 3 がほぼ同じ意味であることを除けば他は意味とか前提が
色々微妙に違う
977:デフォルトの名無しさん
09/08/22 02:57:02
class Tuple<T1,T2>{ T1 _t1,T2 _t2}(アクセッサとか省略)みたいな奴で
Tuple<Hoge,HogeHoge> tuple1,tuple2の比較したいときに、class でなくstructなら_t1,_t2が各々==でtrueの時tuple1==tuple2になるんだっけ?
classでEqualsとかoverrideするのめんどくさいよ(´д`)ママン…
属性とかの指定一発でやってくれ・・・
978:デフォルトの名無しさん
09/08/22 03:46:49
>>964
俺も>>971と同じ書き方するな。
でも null と空文字列で特別に違う意味がなければ IsNullOrEmpty を使う。
979:デフォルトの名無しさん
09/08/22 05:58:42
str.Equals(string.Empty)か
String.Equals(str,stringEmpty)
だな。
javaと違って参照でも'=='が使えるのは知ってるんだけどね。
980:デフォルトの名無しさん
09/08/22 06:46:21
String以外にも話を展開してみる。
Equalsはタイプセーフではない。
Equalsをoverrideするなら==、!=もoverrideしなければならない。
a.Equals(b)はnullチェックが面倒なので、Object.Equals(a,b)が有効。
981:デフォルトの名無しさん
09/08/22 06:50:49
タイプセーフでないというのは事実だけど、型を意識しないで比較するのは個人的にはなしだ。
ライブラリ製作者と使用者で意見が食い違うところか。
982:デフォルトの名無しさん
09/08/22 07:22:05
10.0と10は違うのか?→時と場合と人による
"a"と'a'は違うのか?→〃
10と10は違うのか?→〃
しかし”参照”としての比較はドメインが”参照”に固定されているので混乱しない
値の比較はドメインが固定できないので混乱する
値の比較であーだこーだ言っていてもはじまらね
983:デフォルトの名無しさん
09/08/22 07:35:17
>>968はこれか
URLリンク(msdn.microsoft.com)
それはそうと次スレは?
984:デフォルトの名無しさん
09/08/22 08:59:39
>>980
>タイプセーフではない。(
値型以外では使うことはまずないけど
IEquatable<T>.Equals(T o)
>Equalsをoverrideするなら==、!=もoverrideしなければならない。
Stringのようにimutableでない限りは==や!=演算子のoverrideはするべきではない。
985:デフォルトの名無しさん
09/08/22 11:02:53
なんで
986:デフォルトの名無しさん
09/08/22 12:31:41
次ぎたててくる
987:デフォルトの名無しさん
09/08/22 12:34:22
C#, C♯, C#相談室 Part54
スレリンク(tech板)
はい
988:デフォルトの名無しさん
09/08/22 12:44:02
>>987
^^
989:デフォルトの名無しさん
09/08/22 13:00:55
.NET 4では2.0の部分のパフォーマンスの向上とかあるのかな?
990:デフォルトの名無しさん
09/08/22 13:09:55
BCL部分はC#4.0などにあわせて確実に手が入るけど
WinFormsはどうせ放置だろ
991:デフォルトの名無しさん
09/08/22 13:36:55
>WinFormsはどうせ放置だろ
せっかく枯れてきたのに手を入れられてもねぇ…
992:デフォルトの名無しさん
09/08/22 13:40:42
2005以降に追加されたコントロールのバグはしっかり直してくれないと
困ると思うけど…
toolstrip関連はバグ多過ぎなんだよ本当。
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5022日前に更新/223 KB
担当:undef