Как проверить, nullable ли объект?

Предупреждение: действующее ограничение open_basedir

Это предупреждение может появляться с различными функциями, связанными с доступом к файлам и каталогам. Он предупреждает о проблеме с конфигурацией.

Когда он появляется, это означает, что доступ был запрещен для некоторых файлов.

Само предупреждение ничего не нарушает, но чаще всего скрипт не работает должным образом, если предотвращается доступ к файлу.

Исправление обычно изменяет конфигурацию PHP , связанная настройка называется open_basedir .

Иногда неправильный имена файлов или каталогов, тогда исправление должно использовать правильные.

Вопросы, относящиеся

191
задан Josh Lee 6 April 2010 в 22:53
поделиться

3 ответа

Существует два типа nullable - Nullable<T> и ссылочный тип.

Jon исправил меня, что трудно получить тип, если упаковано, но Вы можете с дженериками: - таким образом как насчет ниже. Это на самом деле тестирует тип T, но использует obj параметр просто для универсального вывода типа (чтобы помочь звонить) - он работал бы почти тождественно без obj параметрический усилитель, все же.

static bool IsNullable<T>(T obj)
{
    if (obj == null) return true; // obvious
    Type type = typeof(T);
    if (!type.IsValueType) return true; // ref-type
    if (Nullable.GetUnderlyingType(type) != null) return true; // Nullable<T>
    return false; // value-type
}

, Но это не будет работать так хорошо, если Вы уже упаковали значение к переменной объекта.

документация Microsoft: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/nullable-types/how-to-identify-a-nullable-type

257
ответ дан zendu 23 November 2019 в 05:34
поделиться

Будьте осторожны при упаковке nullable типа (Nullable<int> или интервал? например):

int? nullValue = null;
object boxedNullValue = (object)nullValue;
Debug.Assert(boxedNullValue == null);

int? value = 10;
object boxedValue = (object)value;
Debug.Assert( boxedValue.GetType() == typeof(int))

Это становится истинным ссылочным типом, таким образом, Вы теряете факт, это было nullable.

6
ответ дан thinkbeforecoding 23 November 2019 в 05:34
поделиться

Ну, Вы могли использовать:

return !(o is ValueType);

..., но сам объект не nullable или иначе - , тип . Как Вы были планированием использования этого?

20
ответ дан Jon Skeet 23 November 2019 в 05:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: