使用 Optional
和 DefaultParameterValue
属性与不使用它们有什么区别吗?
public void Test1([Optional, DefaultParameterValue("param1")] string p1, [Optional, DefaultParameterValue("param2")] string p2)
{
}
public void Test2(string p1= "param1", string p2= "param2")
{
}
两者都有效:
Test1(p2: "aaa");
Test2(p2: "aaa");
最佳答案
它们的编译方式相同,并且编译器都可以正常工作。唯一的区别是缺少 using System.Runtime.InteropServices;
,并且更易于阅读代码。
作为引用,IL 是:
.method public hidebysig instance void TheName([opt] string p1,
[opt] string p2) cil managed
{
.param [1] = string('param1')
.param [2] = string('param2')
.maxstack 8
L_0000: ret
}
TheName
是唯一发生变化的地方。
关于c# - 是否使用 "Optional, DefaultParameterValue"属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40171095/