2016-02-27 529 views
0
namespace College 
{ 
    namespace Lib 
     { 
      class Book 
     { 
      public void Issue() 
      { 
       // Implementation code 
      } 
     } 
      class Journal 
     { 
      public void Issue() 
      { 
       // Implementation code 
      } 
     } 
    } 
} 

現在要在不同命名空間中使用類Book的Issue()方法,以下兩種方法可以工作。c中的命名空間#

  1. College.Lib.Book b = new College.Lib.Book(); b.Issue();

  2. using College.Lib; Book b = new Book(); b.Issue();

而下面的兩種方法不起作用。

i。 using College; Lib.Book b = new Lib.Book(); b.Issue();

II。 using College.Lib.Book; Book b = new Book(); b.Issue();

爲什麼不過去的兩個代碼工作?

回答

1

在第一種情況下,C#的最初設計者決定,使用指令應攜帶類型的命名空間到範圍,可以這麼說,但不能帶來的命名空間在一個給定的命名空間到範圍。有人覺得「使用」的意思是「我有一堆我想使用的類型」,而不是「我有一堆我想使用的子命名空間」。

在第二種情況下:「使用」的類型的特徵加入到C#6,它帶來的類型的靜態成員「到範圍」。也許你正在使用C#的舊版本?

+0

我與.NET框架4.5的C#工作5 – user3537260

+0

只是澄清第二種情況下,以「用」一個類型,你真正需要使用使用靜態的MyType聲明','以拉在靜態成員(見[這篇文章](https://stackoverflow.com/questions/31852389/how-do-i-use-the-c6-using-static-feature))。 在我看來,像第二個說法是行不通的,因爲你只能使用'using'語句來導入命名空間。 –

+0

@BenRandall:謝謝,我應該澄清一點。 –