В С#, откуда появляются ключевые слова, если прокомментировать "использование системы"?

Например, мы знаем, что тип "int" в С# - это не что иное, как структура, которая на самом деле является System.Int32. Если это так, то если "использовать систему"; комментируется в программе, тогда тип int не должен использоваться. Но может быть использован тип int. Мой вопрос: откуда происходят эти типы?

//using System;
class Program
{
    static void Main() {
         int x = 0;  // it still work, though int is under System namespace, why??
    }
}

Ответ 1

Введите псевдонимы типа, такие как int, string, object и т.д., встроенные в язык и не требующие директивы using в отличие от DateTime, например.

Однако, если это поможет вам подумать об этом, вы можете считать int коротким для global::System.Int32.

class Program
{
    static void Main() {
         int x = 0;
    }
}

Переводит на

class Program
{
    static void Main() {
         global::System.Int32 x = 0;
    }
}

Фактически, поскольку псевдонимы типов являются ключевыми словами, вы не можете даже переопределить их, как вы могли ожидать:

public class int { } // Compiler error: Identifier expected; 'int' is a keyword

Если по какой-то причине вы хотели это сделать, вам нужно было бы избежать идентификатора следующим образом:

public class @int { }

int x = 0;             // equivalent to global::System.Int32
@int y = new @int();   // equivalent to global::[email protected]