Вы не можете, не напрямую.Значения по умолчанию для параметров должны быть константами времени компиляции.
У вас есть несколько вариантов.
Первый - использовать значение по умолчанию для часового типа, например null
:
public void findPath(string start, string end,
Dictionary<string, object[]> nodeInfo = null)
{
if (nodeInfo == null)
nodeInfo = new Dictionary<string, object[]>();
}
Вторым является использование перегрузки метода:
public void findPath(string start, string end)
{
findPath(start, end, new Dictionary<string, object[]>();
}
public void findPath(string start, string end,
Dictionary<string, object[]> nodeInfo)
{
}
Они должны быть константами времени компиляции, потому что они запекаются в местах, где вызывается метод.Например, если вы использовали null
в качестве значения для дозорного и написали это:
findPath("start", "end");
Это скомпилируется следующим образом:
findPath("start", "end", null);
См. Документацию MSDN на то, что разрешено в качестве значения параметра по умолчанию:
- константное выражение;
- выражение формы new ValType (), где ValType - тип значения,например, enum или struct;
- выражение формы по умолчанию (ValType), где ValType - тип значения.
выражения констант :
Константами могут быть числа, логические значения, строки или нулевая ссылка