У меня есть этот код:
//Return null if the extension doesn't have the value, returns the value if it does.
private T? getValue<T>(IEnumerable<Extension> extension, string attributeName)
{
IEnumerable<Extension> ext = extension.Where(e => e.attributeName == attributeName);
if (ext.Count() > 0)
{
return (T)ext.First().Attribute;
}
return null;
}
Я звоню так:
//This works:
retVal.byteValue= getValueFromExtension<byte>(u, "ByteToGet") ?? 0;
//This doesn't work:
getValueFromExtension<string>(u, "Text") ?? "";
Я получаю ошибку компиляции: «Сообщение об ошибке:« Не удается преобразовать строку типа »?'to 'string' "
Как эффективно реализовать идею, описанную в приведенном выше коде, без создания нового метода?
Мне кажется, что я проверяю, является ли оно пустым с помощью оператора ??,Итак, если строка имеет значение NULL, она всегда будет установлена на пустую строку. Она обрабатывается так, как я ожидаю для байта и int, а почему не для строки?
FYI, указанное выше byteValue, имеет тип byteне байт?