5

我是 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());
    }
}

我是否正确理解这一点?

4

2 回答 2

9

命名空间只是一种明确类在哪个上下文中存在的方法。想想你自己的名字,Ralph。这个世界上有很多拉尔夫,但其中之一就是你。消除歧义的另一种方法是添加您的姓氏。所以如果我们有 2 个拉尔夫,我们就有更大的机会谈论你。

同样适用于类。如果定义类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 的命名空间

于 2013-03-17T16:57:29.727 回答
5

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

class BaseClass
{
}

class SubClass : global::BaseClass
{
}

但是,这是非常糟糕的做法,您永远不应该在生产应用程序中这样做。

于 2013-03-17T16:56:26.983 回答