Существует ли функция, чтобы проверить, является ли объект встроенным типом данных?

Планировщик , и OpenSched, в том порядке. Существуют некоторые достойные Gantt онлайн (это - корректное написание), инструменты диаграммы онлайн также, обычно интегрируемый в рамках веб-приложения управления проектами или отслеживания ошибок или пакета программного обеспечения.

5
задан SwDevMan81 11 July 2009 в 22:45
поделиться

2 ответа

Ну, один простой способ - просто явно перечислить их в наборе, например

static readonly HashSet<Type> BuiltInTypes = new HashSet<Type>
    (typeof(object), typeof(string), typeof(int) ... };

...


if (BuiltInTypes.Contains(typeOfFoo))
{
    ...
}

Я должен спросить, почему это ' Тем не менее, важно - я могу понять, как это может иметь значение, если это примитивный тип .NET , но не могли бы вы объяснить, почему вы хотите, чтобы ваше приложение вело себя иначе, если оно является одним из тех, которые предназначены для самого C #? Это средство разработки?

В зависимости от ответа на этот вопрос вы можете рассмотреть ситуацию с динамическим в C # 4 - который не является типом во время выполнения как таковой, но представляет собой System.Object + атрибут при применении к параметру метода и т. д.

5
ответ дан 18 December 2019 в 12:00
поделиться

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

public bool IsBulitin(object o) {
  var type = o.GetType();
  return (type.IsPrimitive && type != typeof(IntPtr) && type != typeof(UIntPtr))
        || type == typeof(string) 
        || type == typeof(object) 
        || type == typeof(Decimal);
}

Проверка IsPrimitive обнаружит все, кроме строки, объекта и десятичной дроби.

РЕДАКТИРОВАТЬ

Хотя этот метод работает, я бы предпочитаю решение Джона. Причина проста: проверьте количество правок, которые мне пришлось внести в свое решение из-за типов, которые я забыл, были или не были примитивами. Проще просто перечислить их все явно в наборе.

9
ответ дан 18 December 2019 в 12:00
поделиться
Другие вопросы по тегам:

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