[英]Absolute/outer and inner namespace confusion in C#
using Foo.Uber;
namespace MyStuff.Foo
{
class SomeClass{
void DoStuff(){
// I want to reference the outer "absolute" Foo.Uber
// but the compiler thinks I'm refering to MyStuff.Foo.Uber
var x = Foo.Uber.Bar();
}
}
}
我該怎么解決這個問題? 只是在我的命名空間中移動using語句也無濟於事。
您實際上可以通過根命名空間指定完整路徑
var x = global::Foo.Uber.Bar();
命名空間概述
命名空間具有以下屬性:
他們組織大型代碼項目。
他們與。分開。 運營商。
using指令意味着您不需要為每個類指定命名空間的名稱。
全局命名空間是“根”命名空間: global :: system將始終引用.NET Framework命名空間System 。
我喜歡這個而不是別名,因為當你閱讀它時,你確切地知道發生了什么。 如果跳過定義,別名很容易被誤解。
別名為using語句中的命名空間:
using ThatOuterFoo = Foo.Uber;
...
...
//Some time later...
var x = ThatOuterFoo.Bar();
您可以使用別名指令
using Outer = Foo.Uber;
namespace MyStuff.Foo
{
class SomeClass{
void DoStuff(){
var x = new Outer.Bar(); //outer class
}
}
}
使用Aliaseseseseseses
using Foo.Uber;
using FooUberBar = Foo.Uber.Bar
namespace MyStuff.Foo
{
class SomeClass{
void DoStuff(){
// I want to reference the outer "absolute" Foo.Uber
// but the compiler thinks I'm refering to MyStuff.Foo.Uber
var x = FooUberBar();
}
}
}
您可以在MSDN中描述的using指令中指定別名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.