为什么基元数据类型在不包含System命名空间的情况下工作?

我读过所有的原语属于System命名空间。 如果我using System注释掉,我期望在我的程序中出现构建错误。 但是,它正在成功运行。 为什么是这样?

附上了我的示例程序。


这是因为intSystem.Int32的别名,并且由于“Int32”已经以其名称空间作为前缀(即“完全限定”),所以该语法是合法的,而不必指定using System; 在代码的顶部。

下面的MSDN代码片段描述了这个概念 -

大多数C#应用程序都以一段使用指令开始。 本节列出应用程序将频繁使用的名称空间,并且每次使用包含的方法时,程序员都不用指定完全限定的名称。 例如,通过包含该行:

using System;

在程序开始时,程序员可以使用代码:

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

代替:

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

System.Int32 (又名“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;取消完全限定类型, 将需要注意错误消失。

其他参考 -

  • C#,int或Int32? 我应该在乎吗?

  • 内置类型表(C#参考)(列出所有内置类型及其.NET Framework等价物)


  • 如前所述, intSystem.Int32类型的别名。 C#语言隐式地知道原始类型的别名。 列表如下:

    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
    

    因此,对于这些别名(也称为简单类型),您不需要指定任何名称空间。


    当你使用int时,你基本上会放入System.Int32。 由于这是完全限定的类型名称,因此实际上并不需要using System;

    如果你这样做了,你的程序就可以运行

     System.Int32 num = 0;
    

    即使没有using

    链接地址: http://www.djcxy.com/p/21059.html

    上一篇: Why do primitive data types work without including the System namespace?

    下一篇: How do I get from a type to the TryParse method?