Ответ 1
Это позволяет создать экземпляр объекта, тип которого известен только во время выполнения. Предположим, что у вас есть класс
public class MyClass
{
public void SomeMethod()
{
}
}
и вы хотели создать его экземпляр. Стандартный способ - сделать это:
MyClass instance = new MyClass();
но, как вы видите, это означает, что тип должен быть известен во время компиляции. Что делать, если вы хотите, чтобы ваш пользователь вводил имя класса в некотором текстовом поле. В этом случае вы можете использовать Activator.CreateInstance:
// this could come from anywhere and it known only at runtime
string someType = "MyClass";
object instance = Activator.CreateInstance(Type.GetType(someType));
Недостатком является то, что, поскольку фактический тип не известен во время компиляции, вам нужно использовать отражение, чтобы манипулировать экземплярами, созданными с помощью Activator.CreateInstance.