Почему 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)