セカンドスニペットは単なるシンタックスシュガーです(この記事では何が良いかもしれたら、コメントしてください)ありがとうございます。舞台裏では、ほぼ同じILコードを生成するので、コンパイラにとってはまったく同じです。
したがって、どのコードを使用するかは関係ありません。最終結果(パフォーマンスに関して)は同じままです。
まずスニペットILコード
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 20 (0x14)
.maxstack 2
.locals init ([0] class SO.TestClass instantiatedClass)
IL_0000: nop
IL_0001: newobj instance void SO.TestClass::.ctor()
IL_0006: stloc.0
IL_0007: ldloc.0
IL_0008: ldstr "Information"
IL_000d: callvirt instance void SO.TestClass::set_Info(string)
IL_0012: nop
IL_0013: ret
} // end of method Program::Main
何のために最速の2番目のコードスニペットILコード
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 20 (0x14)
.maxstack 3
.locals init ([0] class SO.TestClass instantiatedClass)
IL_0000: nop
IL_0001: newobj instance void SO.TestClass::.ctor()
IL_0006: dup
IL_0007: ldstr "Information"
IL_000c: callvirt instance void SO.TestClass::set_Info(string)
IL_0011: nop
IL_0012: stloc.0
IL_0013: ret
} // end of method Program::Main
?読む?コンパイラ?私はこれについて少し前にアセンブリのベンチマークを読んだと思いますが、どちらも本質的に同じです(違いは信じられないほど小さい)が、読みやすさの点で私はいつもオブジェクトイニシャライザを使用すると読みやすくなっています。 –
違いを測定できない限り、心配する必要はありません。第2の構文はより明確であるので、一般に好ましい。 – ClickRick
プロパティを新しい値に設定するのに最も速い@JayGould – Kristian