- 1 名前:デフォルトの名無しさん mailto:sage [2013/10/07(月) 17:28:14.71 ]
- 前スレ
C#, C♯, C#相談室 Part80 toro.2ch.net/test/read.cgi/tech/1373037260/ Visual Studio 2010 Express www.microsoft.com/japan/msdn/vstudio/express/default.aspx Visual Studio 2012 Express www.microsoft.com/visualstudio/jpn/products/visual-studio-express-products
- 7 名前:デフォルトの名無しさん mailto:sage [2013/10/09(水) 14:12:09.17 ]
- チョット質問です。foreach使うときに、パフォーマンス及び
可読性の両方の観点から良い方を教えてください。 Ex1) List<string> testList = GetTestList(); foreach(var str in testList) { 処理 } Ex2) foreach(var str in GetTestList()) { 処理 } Ex2の方が可読性が上がると思うのですが、 パフォーマンスが下がるのか、、変わらないのか・・・ それとも変数に入れる作業がない分早いのか・・・ よろしくお願いします。
- 8 名前:デフォルトの名無しさん mailto:sage [2013/10/09(水) 14:39:03.59 ]
- 変わらん
- 9 名前:デフォルトの名無しさん mailto:sage [2013/10/09(水) 16:17:02.84 ]
- 正確にはGetTestList()実装依存
LINQの解説してるとこの片っ端から嫁
- 10 名前:デフォルトの名無しさん mailto:sage [2013/10/09(水) 16:55:46.93 ]
- List<>で受けてるんだからそんな大層なもんじゃないっしょ
- 11 名前:デフォルトの名無しさん mailto:sage [2013/10/09(水) 23:21:42.82 ]
- List<T>でそのまま受けられるってことはGetTestListの戻り値の型はList<T>だから
全く完全に等価だよ
- 12 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 02:08:12.90 ]
- 上の書き方だと、testListをどっかで使うのかと思う
修正するときに上の方が気を使う パフォーマンスは、理論上はメモリもCPUも変数1個分だけ上が悪い気がするが まあ、誤差の範囲だろうけど
- 13 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 05:21:13.53 ]
- ildasmで調べてみると、testListの領域は取られてるが使ってないね。
最適化で同じになる。
- 14 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 06:45:20.72 ]
- testListのスコープが無駄に広すぎる
描き方はいただけない
- 15 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 07:01:30.76 ]
- スコープか、なるほど。
>>7じゃないけど、参考になる。 デバッグ用に一旦変数に入れてから使うやり方をしてたけど、 後々のことを考えるとこっちの方がいいのかな。
- 16 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 09:03:02.25 ]
- GetTestListの実装しだいだろうけど
他スレッドがGetTestList触ったときの挙動の違いとかもあるかな?
- 17 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 10:04:59.81 ]
- コーディングルール次第かなあ。
2の書き方が許されてるなら2でいいんじゃない?
- 18 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 14:27:21.47 ]
- 引数paramがdataを持っているか否かの真偽値を返すメソッドの命名で悩んでます
bool ValidateParamHasData(Param param); bool CheckParamHasData(Param param); bool HasParamData(Param param); validateもcheckもわかりづらいから使うなとよく言われてるけど 一番下のじゃちんぷんかんぷんだしどうすればいいでしょうか
- 19 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 14:29:54.59 ]
- 大抵はデータを持ってる結果HogeするからCanHoge
- 20 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 14:45:06.79 ]
- bool IsValid(Param param);
- 21 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 14:46:49.52 ]
- ごめんなさい、「Hogeする」の部分が「ParamがDataの場合の処理をする」としか言い様がない場合はどうすればいいでしょうか
- 22 名前:18 mailto:sage [2013/10/10(木) 14:54:48.82 ]
- ちなみにDataにはData1, Data2, Data3の3種類があってそれぞれを判別するメソッドを分ける予定です
なので>>20のお答えもちょっと無理そうです なんかややこしくて申し訳ないです
- 23 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 15:50:30.27 ]
- そのDataとやらはクラス名なのか値なのかはっきりしろ
具体的にはisなのかequalなのか
- 24 名前:18 mailto:sage [2013/10/10(木) 16:07:03.66 ]
- クラス名です
「ParamがDataを持っている場合」なので使うとしたらHasかContainsかなと >>21では「ParamがDataの場合の処理をする」と書きましたが 「ParamがDataを持っている場合の処理をする」の誤りです
- 25 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 16:50:02.71 ]
- ならHasDataでいいだろもう
- 26 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 20:25:28.53 ]
- DataAvailable
- 27 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 20:48:07.73 ]
- >>18
っていうか、何そのstaticおじさんみたいな手続き指向脳。 何でParamの状態をParam以外の奴に尋ねるんだよw
- 28 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 20:53:26.60 ]
- 全力で許した
- 29 名前:18 mailto:sage [2013/10/10(木) 20:58:47.53 ]
- 初心者すぎて申し訳ないです
Paramの拡張メソッドにHasDataを追加すれば良かった話ですね・・・
- 30 名前:デフォルトの名無しさん mailto:sage [2013/10/11(金) 02:56:46.18 ]
- なぜ拡張メソッド
普通にParamにプロパティ作れよ そのプロパティの名前で悩むなら、どっかに名前どうするか相談するスレがなかったっけ
- 31 名前:デフォルトの名無しさん mailto:sage [2013/10/11(金) 03:11:03.20 ]
- ParamはDLLで定義されてるんで直接いじれないんですよ・・・
|

|