首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命名空间和子命名空间

命名空间和子命名空间
EN

Stack Overflow用户
提问于 2009-04-20 15:59:38
回答 7查看 14.9K关注 0票数 21

有没有办法使用一个名称空间,然后让它自动使用所有子名称空间?

示例:

代码语言:javascript
复制
namespace Root.Account
{
//code goes here
}

namespace Root.Orders
{
//code goes here
}


//New File:
using Root;

为了使用Root.Account中的代码,我需要将使用Root.Account添加到我的代码中。

我只想说使用Root,并让它拾取任何子命名空间类以供使用。

如果这是合理的,这是可能的吗?

谢谢

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-04-20 16:04:10

不,从树上下来就没什么用了。但是,您不需要包括使用指令来向上爬树。换句话说,如果您使用:

代码语言:javascript
复制
namespace Root.Orders
{
    // Code
}

那么Root中的任何类型都是可见的。

票数 28
EN

Stack Overflow用户

发布于 2009-04-20 16:07:27

不,C# does not allow中的using指令如下:

创建一个using指令来使用命名空间中的类型,而不必指定命名空间。using指令不提供对嵌套在指定命名空间中的任何命名空间的访问权限。

然而,VB.NET与Imports语句的行为更接近:

Imports语句提供的元素的作用域取决于使用Imports语句时的具体程度。例如,如果只指定了一个命名空间,则该命名空间的所有唯一命名成员以及该命名空间中模块的成员都不受限制地可用。如果同时指定了命名空间和该命名空间的元素的名称,则只有该元素的成员不受限制地可用。

也就是说,如果你说

代码语言:javascript
复制
Imports Root

然后你就可以直接说Orders.Whatever了。

票数 9
EN

Stack Overflow用户

发布于 2009-04-20 17:15:52

从你陈述原始问题的方式来看,听起来你可能意识到了,也可能没有意识到,仅仅使用:

代码语言:javascript
复制
using Root;

稍后澄清代码的方法是:

代码语言:javascript
复制
Account.Class obj = new Account.Class();
Orders.Class obj = new Orders.Class();

您不必使用Root.Account来访问代码,Root.Orders也是如此。除此之外,没有办法自动递归地使用名称空间。我认为这会导致使用系统的滥用;

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/768905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档