TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.75K subscribers
Post #2413 2.64K
День 1994. #ЗаметкиНаПолях
Activator.CreateInstance(Type) Может Возвращать Null

Activator.CreateInstance(Type) позволяет создать экземпляр типа, не зная тип во время компиляции. Например, вы можете захотеть создать экземпляр типа на основе файла конфигурации или ввода пользователя. Всегда, когда вы не можете использовать ключевое слово new, вы можете использовать Activator.CreateInstance(Type).

Большинство людей ожидают, что этот метод вернет не-null объект, поскольку вы явно запрашиваете создание нового экземпляра, но это не всегда так. Для типов Nullable<T> Activator.CreateInstance(Type) возвращает значение null.
object? value = Activator.CreateInstance(typeof(int?));
Console.WriteLine(value is null); // true

Заметьте, что такое же поведение наблюдается при использовании ключевого слова new:
object? value = new int?();
Console.WriteLine(value is null); // true


Вы можете использовать null-снисходительный оператор (!), чтобы подавить предупреждение о том, что значение может быть null, если вы уверены, что тип не может быть Nullable<T>:
object? value = Activator.CreateInstance(typeof(object))!;
Console.WriteLine(value.GetHashCode());
Console.WriteLine(value is null); // всегда false

Источник:
https://www.meziantou.net/activator-createinstance-type-may-return-null.htm
  • 👍 16
More from @netdeveloperdiary
  1. Oct 7, 2026День 2807. #ЗаметкиНаПолях Типы Коллекций в .NET, Которые Стоит Попробовать. Окончание Нач…
  2. Oct 6, 2026🦈 Открытое собеседование на Middle C# | 6 октября, 19:00 МСК Приглашаем на открытое собес…
  3. Oct 6, 2026День 2806. #ЗаметкиНаПолях Типы Коллекций в .NET, Которые Стоит Попробовать. Начало Больши…
  4. Oct 5, 2026День 2805. #ЧтоНовенького #NET11 Аргументы в Выражениях Коллекций в C#15 В C#15 реализован…
  5. Oct 4, 2026День 2804. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
  6. Oct 3, 2026Post #3360
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →