簡體   English   中英

命名空間和子命名空間

[英]Namespace and Sub Namespaces

有沒有辦法使用命名空間然后讓它自動使用所有子命名空間?

例子:

namespace Root.Account
{
//code goes here
}

namespace Root.Orders
{
//code goes here
}


//New File:
using Root;

為了讓我使用 Root.Account 中的代碼,我需要將 using Root.Account 添加到我的代碼中。

我希望能夠只說使用 Root 並讓它選擇任何子命名空間類以供使用。

如果這是有道理的,這可能嗎?

謝謝

沒有,沒有什么工作是一路下滑的樹。 但是,您不需要包含 using 指令來樹。 換句話說,如果您使用:

namespace Root.Orders
{
    // Code
}

那么Root中的任何類型都已經可見。

不,C#中的using指令不允許這樣做:

創建 using 指令以使用命名空間中的類型,而無需指定命名空間。 using 指令不允許您訪問嵌套在您指定的命名空間中的任何命名空間。

然而,VB.NET 通過Imports語句支持更接近的行為:

Imports 語句提供的元素范圍取決於您在使用 Imports 語句時的具體程度。 例如,如果只指定了一個命名空間,則該命名空間的所有唯一命名的成員以及該命名空間內的模塊成員都可以不加限定地使用。 如果同時指定了命名空間和該命名空間的元素名稱,則只有該元素的成員可用而無需限定。

也就是說,如果你說

Imports Root

那么你就可以只說Orders.Whatever

從您陳述原始問題的方式來看,聽起來您可能會或可能不會從僅使用以下內容中意識到這一點:

using Root;

稍后澄清代碼的方式是:

Account.Class obj = new Account.Class();
Orders.Class obj = new Orders.Class();

您不必使用 Root.Account 來訪問代碼,Root.Orders 也是如此。 除此之外,沒有辦法自動遞歸使用命名空間。 我認為這會導致濫用 System;

不,不是真的。 =)

.NET/C# 不支持這種形式的命名空間使用。

如果我理解正確,你的層次結構看起來像這樣

namespace Root
{
  namespace Root.Account
  {
     public class A{}
  }

  namespace Root.Orders
  {
    public class B{}
  }
}

你能做的是

using Root = Root;

然后訪問子命名空間中的類,如

var myClassA = Root.Account.A();

或者

var myClassB = Root.Orders.B();

有關更多信息,您可以閱讀Microsoft docs about namespaces

命名空間就像一個對象的容器。 它們可能包含聯合、結構、類、委托和接口。 命名空間在 Asp.net C# 中的主要重要性在於創建程序的分層組織。

了解更多博客... http://asp-net-by-parijat.blogspot.in/2015/08/what-is-namespace-in-c-need-of.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM