Почему nameof(объект) не допускается?

В C# 6.0 вы можете написать это:

var instance = default(object);
var type = typeof(object);

Они имеют одинаковый результат:

var instance = default(System.Object);
var type = typeof(System.Object);

Но вы не можете написать это:

var name = nameof(object);

Генерирует следующую ошибку:

Неверный термин выражения "объект".

Но вы все еще можете написать это:

var name = nameof(System.Object);

Зачем nameof(object) не компилируется?

1 ответ

Решение

Разница в том, что object это синоним для класса Object а также nameof() не работает на синонимах.

То же относится и к nameof(int) против nameof(Int32)

Другие вопросы по тегам