[表示 : 全て 最新50 1-99 2chのread.cgiへ]
Update time : 10/11 04:36 / Filesize : 7 KB / Number-of Response : 32
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

C#, C♯, C#相談室 Part81



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で定義されてるんで直接いじれないんですよ・・・






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

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

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