【问题标题】:Namespace scope in C#C# 中的命名空间范围
【发布时间】:2015-05-29 00:18:11
【问题描述】:

命名空间的名称是否也定义了类中的范围?

  1. 例如,我有默认由解决方案命名的命名空间。假设在 Program.cs 中命名空间的名称是“MySolution”。
  2. 在我创建的下一个文件接口中,命名空间的名称是“Interfaces”

当我回到课堂时,要实现这个接口,它不在范围内(我在智能感知中找不到它)。因此,如果类有一个命名空间,而接口有第二个命名空间,那么我不能在我的类中使用它。 我认为命名空间仅用于组织类(如姓氏),但我想它也定义了一个范围。

【问题讨论】:

  • 这是关于什么语言或平台的?
  • 它确实定义了一个范围,逻辑上在 C# 中,尽管在逻辑上和物理上都在 Java ( packages ) 中。为了让您将在另一个namespace 中定义的interface 使用到另一个命名空间中的另一个类中,那么您必须在Program.cs 类的顶部使用using Interfaces
  • 好的,这就是答案。谢谢

标签: c# namespaces scope


【解决方案1】:

“命名空间关键字用于声明包含一组相关对象的范围。您可以使用命名空间来组织代码元素并创建全局唯一类型。” https://msdn.microsoft.com/en-us/library/z2kcy19k.aspx

要使用来自另一个命名空间的类、接口、结构、枚举、委托,您需要使用类型的完全限定名称,或者在类的顶部使用 using Interface; 声明对该命名空间的引用。即:

using Interfaces;  //can reference namespaces here

namespace MySolution
{
    public class Program 
    {
        //or you can use the fully qualified name of the type
        public Program(Interfaces.MyInterface example) 
        {

        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 2018-05-31
    • 2011-08-28
    • 2020-01-17
    相关资源
    最近更新 更多