zoukankan      html  css  js  c++  java
  • C#的子namespace中,可以直接访问和使用父namespace的成员

    新建一个.NET Core控制台项目,敲入下面代码进行测试:

    using System;
    
    //定义namespace A
    namespace A
    {
        public class MyClassInA
        {
    
        }
    }
    
    //定义namespace A.B.C,它是namespace A的子namespace
    namespace A.B.C
    {
        public class MyClassInABC
        {
            public MyClassInA myClassInA = new MyClassInA();//在子namespace A.B.C中可以直接使用父namespace A的类MyClassInA,不用写using A
        }
    }
    
    namespace NetCoreNamespace
    {
        using A.B.C;
        //using A;
    
        class Program
        {
            static void Main(string[] args)
            {
                MyClassInABC myClassInABC = new MyClassInABC();
                A.MyClassInA myClassInA = new A.MyClassInA();//由于namespace NetCoreNamespace和namespace A之间没有父子关系,所以要在类名MyClassInA前显式声明namespace A后,或者声明using A后,才能在namespace NetCoreNamespace中使用类MyClassInA
    
                Console.WriteLine("Press any key to end...");
                Console.ReadKey();
            }
        }
    }

    我们可以看到在子namespace A.B.C中,可以直接使用父namespace A的类MyClassInA,不用写using A,这说明C#中子namespace自动引用了父namespace。但是反过来是不行的,也就是父namespace不能直接访问子namespace的成员,需要在父namespace中使用using语句引用子namespace才行,详情可以查看:

    Namespace and Sub Namespaces

    Namespaces and subnamespaces in C# 

    参考文献:

    namespace (C# Reference)

    Namespaces (C# Programming Guide)

    using directive (C# Reference),注意这篇文章中,有这么一句话:

    A using directive does not give you access to any namespaces that are nested in the namespace you specify.

  • 相关阅读:
    表单
    表格
    浮动与定位实例中的问题
    浮动与定位
    BFC的布局规则以及触发条件
    发布为知笔记到博客
    处理为知笔记样式与博客园样式冲突
    文字处理
    块元素并行的问题
    标签嵌套规则
  • 原文地址:https://www.cnblogs.com/OpenCoder/p/13176950.html
Copyright © 2011-2022 走看看