命名空间与类声明

Ral*_*lph 3 c# namespaces class

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

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

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

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

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());
    }
}
Run Code Online (Sandbox Code Playgroud)

我理解正确吗?

bas*_*bas 7

命名空间只是一种方法,可以清楚地了解班级所处的环境.想想你自己的名字,拉尔夫.我们这个世界上有很多拉尔夫,但其中一个就是你.摆脱歧义的另一种方法是添加你的姓氏.因此,如果我们有2个Ralphs,我们就有更大的机会谈论你.

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

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

例如:

using System;

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

因为using System;你不必声明名称空间Console.只有一个Console可用,它位于System命名空间中.如果您不声明您的using System;命名空间,那么您需要解释Console可以找到的位置.像这样.

System.Console.WriteLine("blah");
Run Code Online (Sandbox Code Playgroud)

来自MSDN:

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

有关更多信息,请检查MSDN的命名空间.


p.s*_*w.g 5

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

class BaseClass
{
}

class SubClass : global::BaseClass
{
}
Run Code Online (Sandbox Code Playgroud)

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