命名空间vs类声明

本文关键字:声明 vs 命名空间 | 更新日期: 2023-09-27 18:04:15

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

我理解对了吗?

命名空间vs类声明

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

同样适用于类。如果你定义了AClass类,你需要定义另一个AClass类,那就没有办法区分这两者。命名空间就是那个"姓"。一种虽有类,但仍能区分两个不同类,具有相同名称的方法。

回答你的问题,它与"not have To declare"无关。这样只会更容易编写代码。

例如:

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的命名空间

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

class BaseClass
{
}
class SubClass : global::BaseClass
{
}
但是,是非常的坏做法,您不应该在生产应用程序中这样做。