2011-02-10 19 views
4

Iは、(SQLにLINQ)まず、この方法では戻り値

public List<aspnet_Roles> GetAllRoles() 
{ 
    var rolesList = _dbProfile.aspnet_Roles.ToList(); 
    return rolesList; 
} 

以下のような方法データベースからのすべての役割を有するタイプvarの可変rolesListに取り出され、割り当てられています。

私は、他の変数に最初に割り当ててから返すのではなく、直接値を返す方が良いかどうかを知りたいと思います。

public List<aspnet_Roles> GetAllRoles() 
     { 
      return _dbProfile.aspnet_Roles.ToList(); 
     } 

は、上記の2つの方法が同じまたは第二のバージョンが優れているとして、ILにコンパイルします:

は、以下の方法がバージョン上記よりも良いですか? 2番目のバージョンには不要な変数宣言はありません。

+1

どうして気になりますか? – BoltClock

+0

私は、変数を作成し、値を割り当てるのは追加のメモリ割り当てだと思います。代わりに私たちが直接戻ってきても、わからないのですが、このメモリ割り当てリストを減らすことができます。私はこれが私が知りたいと思っているか分からない。私はこの行を推測する_dbProfile.aspnet_Roles.ToList();返されたリストを格納するためにすでにメモリに割り当てられています。もう一度別の変数に格納して戻すと、2倍のメモリ割り当てがあると思います。私は確信していない、pleseガイド私。 – nccsbim071

答えて

2

これらは同じILにコンパイルされると確信しています(私は確認していませんが)。 C#コンパイラはスマートです。

最初のバージョンの利点は、戻す前にブレークポイントと値を確認しやすくすることです。

2番目のバージョンはもちろん、より簡潔です。

あなたが好むものはあなた次第ですが、ここでは「より良い」目的はありません。

+0

これらが同じにコンパイルされることを確認することは可能ですか?あなたが私を導くことができれば、私はそれを試みます。あなたのご意見ありがとうBTW。 – nccsbim071

+0

さて、両方のコンパイルを試して、[Reflector](http://www.red-gate.com/products/dotnet-development/reflector/)で見てみてください – Blorgbeard

+0

無料のリフレクターはありますか?私はIL生成コードを表示するために使用できるビジュアルスタジオのツールです。 – nccsbim071

6

最初の方法は、デバッグに役立ちます。今、AFAIK、デバッグ中にメソッドの戻り値を見る方法はありません。

それ以外は違いありません。