2017-04-10 22 views
0

先週、私はコードインタビューを行いました。var ByteArray VSバイト[]配列:ガベージコレクタの動作

私のインタビュアーは言った: は「あなたは私が行は同じ結果を与える学位論文、一度コンパイルし、答え

var byteArray = myFunction(); 
    and 
    byte[] Array = myFunction();" ? 

の間では何を好むか

そして、私のインタビュアーは言った:」はい、しかし、彼らは同じ方法でgarbagedされません:var byteArrayは、GCが変数を素早くgarbagesするので、より良いです。 "

コンパイルした同じ結果を与える2行のコードは同じ方法でガレージされませんが、間違っている。

So:彼らは同じ方法でかわいそうですか?そうでなければ、理由を説明できますか?

+1

必須[TryRoslyn(https://tryroslyn.azurewebsites.net/#f:> ILR/K4Zwlgdg5gBAygTxAFwKYFsDcBYAUAB2ACMAbMAYxnJIEMQQYBhGAbzxg5kNIpgCEEaANoBdGAFkEAMWARyyMAHsIACgCU7Tm1yddMAE6pkwfRBgRUAdxhFBqIQEYADE5E4dnAL6aOPrsTJKADdFMAATCXVWP10gmn0bOwYAXglpWXklVTV3PU4YzjAAMxgVWzQQIVcYAEJUpw0PPO08vOQAC31FawtrAFEAD3JUfAVldVzW7yaYad0/bkCYEPCYADkoltby + zEdlLSZOTHsydbWgo5i0v2qsTqYBsvomfOOrp6rGEHh0ayJ55zLx4TxAA ==)(同じILアセンブリコードを生成し、両方のコードは同じ – xanatos

+0

を生成することを示し... 。あなただけ(http://stackoverflow.com/help/accepted-answer)緑のチェックマーク付き(1)[1つの答えを受け入れる]することができますが、他のすべてをupvoteすることができます:文が:-() – xanatos

答えて

6

はい、同じ方法でガベージコレクションされます。同じタイプ、同じ動作。これはコンパイラの機能です:コンパイルされた後、他とは異なる一つのコードを作るものは何もありません。

+0

@Christophe切り捨てられてしまいました。申し訳ありませんが、確かに。 –

+0

を最もあなたに助けた答えを受け入れず、あなたに感謝します。 – Christophe

+0

問題ありませんが。SO理解しにくい場所でもよいが、Yかつてそれは楽しいです。 –

4

暗黙のうちにbyte[]に変換されていないと仮定すると、まったく同じです。 varは、正しいタイプに置き換えられた文法的な砂糖であるため、それらが異なる方法はありません。

4

あなたのインタビュー担当者は間違っていました。

具体的なケースでは、varbyte[]です。コードは同等です。

おそらく、あなたの面接は意味での最初のケースは、一つのオブジェクトを作成しますが、後者の場合は、いくつか作成していること、エラーで、考えていました。もちろん、ホグワッシュ。