2016-02-27 98 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:谢谢,我应该澄清一点。 –