C# 命名空间 Namespace (学习心得 23)
命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式。
一、定义命名空间
关键字 namespace 开始,后跟命名空间的名称。
声明方法:
namespace namespace_name
{
// 代码声明
}
跨命名空间调用方式:
namespace_name.item_name;
例:
using System;
namespace first_space
{
class namespace_cl
{
public void func()
{
Console.WriteLine("Inside first_space");
}
}
}
namespace second_space
{
class namespace_cl // 与第一个命名空间的类名相同
{
public void func()
{
Console.WriteLine("Inside second_space");
}
}
}
class TestClass
{
static void Main(string[] args)
{
first_space.namespace_cl fc = new first_space.namespace_cl(); // 第一个空间下的类进行实例化
second_space.namespace_cl sc = new second_space.namespace_cl(); // 第二个空间下的类进行实例化
fc.func(); //调用类的函数
sc.func(); //调用类的函数
Console.ReadKey();
}
}
运行结果:
Inside first_space
Inside second_space
二、using 关键字
using 关键字表明程序使用的是给定命名空间中的名称。
例如,我们在程序中使用 System 命名空间,其中定义了类 Console。
所以 using System 之后,可以只写:
Console.WriteLine ("Hello there");
否则需要写完整:
System.Console.WriteLine("Hello there");
例:
using System;
using first_space;
using second_space;
namespace first_space
{
class abc
{
public void func()
{
Console.WriteLine("Inside first_space");
}
}
}
namespace second_space
{
class efg
{
public void func()
{
Console.WriteLine("Inside second_space");
}
}
}
class TestClass
{
static void Main(string[] args)
{
abc fc = new abc();
efg sc = new efg();
fc.func();
sc.func();
Console.ReadKey();
}
}
运行结果:
Inside first_space
Inside second_space
三、嵌套命名空间
声明方式:
namespace namespace_name1
{
// 代码声明
namespace namespace_name2
{
// 代码声明
}
}
使用 点 运算符,访问嵌套的命名空间成员。
例:
using System;
using SomeNameSpace;
using SomeNameSpace.Nested;
namespace SomeNameSpace
{
public class MyClass
{
static void Main()
{
Console.WriteLine("In SomeNameSpace");
Nested.NestedNameSpaceClass.SayHello(); // 访问 Nested 命名空间中的类 的 方法
}
}
// 内嵌命名空间
namespace Nested
{
public class NestedNameSpaceClass
{
public static void SayHello()
{
Console.WriteLine("In Nested");
}
}
}
}
运行结果:
In SomeNameSpace
In Nested