строка в C # и строка ^ в C ++ / CLI … Как передать & quot; null & quot ;?

У меня есть библиотека C ++. А также я получил оболочку C ++ / CLI, чтобы сделать возможным вызов методов из этой библиотеки в коде C #.

Допустим, я хотел бы использовать некоторые вызовы в C #, например:

string date = MyWrapper.GetValue("SystemSettings", "BuildDate", null);

которая будет вызывать следующую функцию на C ++ / CLI:

static String^ GetValue(String^ section, String^ key, String^ defaultValue)

Моя проблема: я получил следующее ArgumentNullException:

Значение не может быть пустым. \ R \ nПараметр имени: managedString.

Итак … Вопрос: как пройти null правильно?
Благодарю.

2

Решение

Ваш код с нулевым значением в порядке. Проблема в том, что ваш код-обертка должен обнаружить ноль и справиться с ним. Этот код предположительно написан в предположении, что третий параметр никогда не является нулевым. Если вы хотите разрешить null, вы должны явно обработать это условие:

static String^ GetValue(String^ section, String^ key, String^ defaultValue)
{
if (defaultValue == nullptr)
// special case handling
....
}
8

Другие решения

Существует аналогичное ограничение для Windows Runtime. Увидеть этот подробный ответ на аналогичный вопрос. Похоже, вы могли поймать в ловушку что-то очень близкое к этому.

1

Возможно, вам нужно передать пустую строку вместо нуля. Например

string date = MyWrapper.GetValue("SystemSettings", "BuildDate", "");
0
По вопросам рекламы [email protected]