我有一个方法,它具有一个可选值,默认值为null
。我观察到,那些使用该方法的人正在传递null
作为可选参数的值
主要方法
public void MainMethod(int id, MyClass model = null)
{
// Logic goes here
}
我可以看到两种类型的调用,
public void First()
{
MainMethod(1, null);
}
public void Second()
{
MainMethod(1);
}
他们两个将具有相同的表现吗?还是一个比另一个更好?
两者都将导致完全相同的IL。在Second
中,编译器仅自动为您提供参数。
默认值总是由编译器在调用站点(调用该方法的代码段)应用。这有很多弊端-特别是在处理对默认值的更改方面-但这确实使人们很容易推断出性能等。