Подтвердить что ты не робот

Почему примитивные типы данных работают без включения пространства имен System?

Я читал, что все примитивы попадают под пространство имен System. Если я прокомментирую using System, я ожидаю, что в моей программе будет ошибка сборки. Однако он работает успешно. Почему это?

Прикреплено оснастку моей программы-образца.

4b9b3361

Ответ 1

Это потому, что int является псевдонимом для System.Int32, а поскольку "Int32" уже имеет префикс своего пространства имен (т.е. "полностью соответствует" ), синтаксис легален, не указывая using System; на вверху вашего кода.

Ниже описывается этот фрагмент MSDN ниже -

Большинство приложений С# начинаются с раздела с использованием директив. В этом разделе перечислены пространства имен, которые будут использоваться приложением часто и сохраняет программиста от указания полностью квалифицированного каждый раз, когда используется метод, содержащийся внутри. Для например, включив строку:

using System;

В начале программы программист может использовать код:

Console.WriteLine("Hello, World!");

Вместо:

System.Console.WriteLine("Hello, World!");

System.Int32 (aka "int" ) будет последним. Вот пример этого в коде -

//using System;

namespace Ns
{
    public class Program
    {
        static void Main(string[] args)
        {
            System.Int32 i = 2;    //OK, since we explicitly specify the System namespace
            int j = 2;             //alias for System.Int32, so this is OK too
            Int32 k = 2;           //Error, because we commented out "using System"
        }
    }
}

Так как строка 11 не полностью квалифицирована/сглаживает полностью квалифицированный тип, using System; нужно будет раскупить, чтобы ошибка исчезла.

Дополнительные ссылки -

Ответ 2

Как упоминалось ранее, int является псевдонимом типа System.Int32. Псевдоним примитивных типов неявно известен на языке С#. Вот список:

object:  System.Object
string:  System.String
bool:    System.Boolean
byte:    System.Byte
sbyte:   System.SByte
short:   System.Int16
ushort:  System.UInt16
int:     System.Int32
uint:    System.UInt32
long:    System.Int64
ulong:   System.UInt64
float:   System.Single
double:  System.Double
decimal: System.Decimal
char:    System.Char

Итак, для этих псевдонимов, также известных как простые типы, вам не нужно указывать какое-либо пространство имен.

Ответ 3

Когда вы используете int, вы в основном вставляете System.Int32. Поскольку это полное имя типа, вам действительно не нужно using System;

Ваша программа будет работать, если вы сделали

 System.Int32 num = 0;

даже без using