C#嵌套命名空间的一点理解
在学习 CNBlogs_Dottext10_Beta2 时,起初看到如:namespace Dottext.Web.UI.WebControls之类的命名空间的定义,还以为Dottext.Web.UI.WebControls是一个命名空间的名称,后来看书才明白其实是嵌套命名空间的定义,以上的定义其实可以分解为:
namespace Dottext
{
namespace Web
{
namespace UI
{
namespace WebControls
{
//...
}
}
}
}
如果命名空间WebControls里定义了函数如:
namespace Dottext.Web.UI.WebControls
{
class MyFirstClass
{
//...
}
}
那类MyFirstClass只属于命名空间WebControls所了,也就是要引用MyFirstClass时,得用以下语句:
Dottext.Web.UI.WebControls.MyFirstClass = new Dottext.Web.UI.WebControls.MyFirstClass();
而
Dottext.Web.UI.MyFirstClass = new Dottext.Web.UI.MyFirstClass()
将会出现编译错误。而要使以上语句成立,需要在UI的命名空间里再定义MyFirstClass函数。
namespace Dottext.Web.UI
{
class MyFirstClass
{
//...
}
}
这样就形成了不同命名空间、相同函数(可以是不同实现)了。
引用方法也不同:
Dottext.Web.UI.WebControls.MyFirstClass = new Dottext.Web.UI.WebControls.MyFirstClass();
Dottext.Web.UI.MyFirstClass = new Dottext.Web.UI.MyFirstClass();
namespace Dottext
{
namespace Web
{
namespace UI
{
namespace WebControls
{
//...
}
}
}
}
如果命名空间WebControls里定义了函数如:
namespace Dottext.Web.UI.WebControls
{
class MyFirstClass
{
//...
}
}
那类MyFirstClass只属于命名空间WebControls所了,也就是要引用MyFirstClass时,得用以下语句:
Dottext.Web.UI.WebControls.MyFirstClass = new Dottext.Web.UI.WebControls.MyFirstClass();
而
Dottext.Web.UI.MyFirstClass = new Dottext.Web.UI.MyFirstClass()
将会出现编译错误。而要使以上语句成立,需要在UI的命名空间里再定义MyFirstClass函数。
namespace Dottext.Web.UI
{
class MyFirstClass
{
//...
}
}
这样就形成了不同命名空间、相同函数(可以是不同实现)了。
引用方法也不同:
Dottext.Web.UI.WebControls.MyFirstClass = new Dottext.Web.UI.WebControls.MyFirstClass();
Dottext.Web.UI.MyFirstClass = new Dottext.Web.UI.MyFirstClass();
浙公网安备 33010602011771号