我想知道这两种方法中哪一种实例化一个类/模型,并在C#中设置属性是最快的,并且使用的资源更少。
假设类TestClass
有一个名为Info
的字符串属性。
var instantiatedClass = new TestClass();
instantiatedClass.Info = "Information";
或
var instantiatedClass = new TestClass {
Info = "Information"
}
当然,我想知道哪个是最快的,当你必须设置10个以上的属性时。 以上只是为了说明。
谢谢
(如果这篇文章中的任何内容可能更好,请发表评论)
答案 0 :(得分:4)
第二个片段只是语法糖。在幕后,对于编译器而言,它几乎都生成相同的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
第二个代码段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