命名空间与类声明

时间:2013-03-17 16:53:36

标签: c# class namespaces

我是C#的新手,我似乎无法找到任何关于此的信息,所以我会在这里问。

是否必须声明命名空间中的类?

using System;
public class myprogram
{
    void main()
    {
        // The console class does not have to be declared?
        Console.WriteLine("Hello World");
    }
}

如果我没有使用命名空间,那么我必须声明一个类

class mathstuff
{
    private int numberone = 2;
    private int numbertwo = 3;
    public int addhere()
    {
        return numberone + numbertwo;
    }


using System;
public class myprogram
{
    void main()
    {
        // the class here needs to be declared.
        mathstuff mymath = new mathstuff();
        Console.WriteLine(mymath.addhere());
    }
}

我是否正确理解了这一点?

2 个答案:

答案 0 :(得分:6)

命名空间只是一种表明课程所在环境的方法。想想你自己的名字,拉尔夫。我们这个世界上有很多拉尔夫,但其中一个就是你。摆脱歧义的另一种方法是添加你的姓氏。因此,如果我们有2个Ralphs,我们就有更大的机会谈论你。

同样适用于班级。如果您定义了类AClass,并且您需要定义另一个类AClass,则无法区分这两个类。命名空间就是'姓'。一种拥有类的方法,但仍然能够区分具有相同名称的两个不同的类。

要回答你的问题,它与“不必申报”无关。编写代码会更容易。

例如:

using System;

public class myprogram
{
    void main()
    {
        // the class here needs to be declared.
        Console.WriteLine("blah");
    }
}

由于using System;,您不必声明Console的命名空间。只有一个Console可用,它位于System命名空间中。如果您不声明using System;命名空间,则需要说明可以找到Console的位置。像这样。

System.Console.WriteLine("blah");

来自MSDN:

  
    

namespace关键字用于声明范围。此命名空间范围允许您组织代码并为您提供创建全局唯一类型的方法。

  

有关详细信息,请查看MSDN for namespace

答案 1 :(得分:4)

我认为你的意思是“你可以声明一个没有命名空间的类吗?”。是的,你可以,它被称为global命名空间。

class BaseClass
{
}

class SubClass : global::BaseClass
{
}

但是,这是非常不良做法,您应该从不在生产应用程序中执行此操作。