将null传递给默认值为null的可选参数

问题描述 投票:1回答:1

我有一个方法,它具有一个可选值,默认值为null。我观察到,那些使用该方法的人正在传递null作为可选参数的值

主要方法

public void MainMethod(int id, MyClass model = null)
{
  // Logic goes here
}

我可以看到两种类型的调用,

public void First()
{
  MainMethod(1, null);
}

public void Second()
{
  MainMethod(1);
}

他们两个将具有相同的表现吗?还是一个比另一个更好?

c# null optional-parameters
1个回答
6
投票

两者都将导致完全相同的IL。在Second中,编译器仅自动为您提供参数。

默认值总是由编译器在调用站点(调用该方法的代码段)应用。这有很多弊端-特别是在处理对默认值的更改方面-但这确实使人们很容易推断出性能等。

© www.soinside.com 2019 - 2024. All rights reserved.