【问题标题】:Namespace vs Class Declaration命名空间与类声明
【发布时间】:2013-03-05 23:59:58
【问题描述】:

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

我理解正确吗?

【问题讨论】:

  • 这可以更好地解释here。您应该记住的一件事是,如果您不声明命名空间,则会自动声明全局命名空间。
  • 您提供的两个代码示例中的任何一个中都没有提到命名空间。您实际上不是在指静态类和非静态类之间的区别吗?
  • 我不认为“声明”这个词意味着你认为它的意思。你认为“声明”是什么意思?

标签: c# class namespaces


【解决方案1】:

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

class BaseClass
{
}

class SubClass : global::BaseClass
{
}

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

【讨论】:

    【解决方案2】:

    命名空间只是一种明确类所在上下文的方法。想想你自己的名字,拉尔夫。这个世界上有很多拉尔夫,但其中之一就是你。消除歧义的另一种方法是添加您的姓氏。因此,如果我们有 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:

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

    更多信息请查看MSDN for namespace

    【讨论】:

    • 我实际上已经看到开发人员使用他们自己的名字,例如Ralph,作为其 C# 类的命名空间。
    • 感谢您的回复。 Writeline 不是 Console 类中的方法吗?然而,控制台不需要声明使用它。还是 Console 不是 System 中的一个类?
    • @Ralph,是的,它是 System 命名空间中的静态类,因此如果您的意思是这样,您可以在不实例化的情况下使用它。
    • @p.s.w.g 很棒的评论!我从未见过:p
    • @bas 感谢您为我解决这个问题,这就是我想知道的。
    猜你喜欢
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 2012-12-27
    相关资源
    最近更新 更多