Потому что это ключевое слово, которое в языковой спецификации говорит, что вы используете для инициализации типа значения (с помощью пользовательского конструктора или просто обнуления памяти (использование без параметров new()
для типов значений) ), хотя есть крайний случай, когда даже это не нужно). Было бы странно добавить ключевое слово языка различного для той же концепции. Тем более, если учесть дженерики:
public static T Create<T>() where T : new() // not terribly helpful, but....
{
return new T();
}
Если бы существовали разные ключевые слова для ссылочных типов и типов значений, это было бы очень запутанным, скажем, для var zero = Create<int>()
. Опять же, пример глупый, но в этом есть смысл.