namespace A
{
  public class A1
  {
    public int A11()
    {
     }
   }
}namespace B
{
 public class B1
 {
   public int B11()
   {
     A1.A11();
   }
 }
}如果在B中引用A11,以前能否不加A1类名,如何实现?在VB中Module是不是等于C#的namespace概念?

解决方案 »

  1.   

    namespace A
    {
        public class A1
        {
            public int A11()
            {
                return 0;
            }
        }
    }namespace B
    {
        public class B1
        {
            public int B11()
            {
               return new A.A1().A11();
            }
        }
    }
      

  2.   

    首先你要弄明白命名空间的作用。
    他是用来防止冲突的。
    就是在一个命名空间里每个类的名字必须是唯一的。而在不同的命名空间可有两个类名一样的
    例如
    namespace City
    {
       public class Home  //City命名空间里的类Home
      {  
         public void Thinking()
         { 
             Console.WriteLine("家里很幸福"); 
         }
      }
    }
     namespace Away
    {
       public classs Home        //Away命名空间里的Home
     {
        public void Thinking()
        {
            Console.WriteLine("我已经离开家一年了!我很想家.")
        }
     }
    }
    两个类的名字都叫Home如何使用它们呢?想下
    对了,就是靠命名空间来区分的。
    根据命名空间加与区分就很容易让编译器知道你用那个类了。
    City.Home myHome= new City.Home();
    myHome.Thinking();//这里输出 :家里很幸福
    Away.Home leaveHome=new Away.Home();
    leaveHome.Thinking();//这里输出:  我已经离开家一年了!我很想家如果你不加命名空间的话,编译器无法找到所要的类了。编译器只会跟着你所给的命名空间下去找类。如果你不提供的话,那么编译器到不到,就会报错。
      

  3.   

    类名是必须的。在vb.net中的module
    http://www.23book.net/SoftwareDev/VB/54877.htm
    2
    http://topic.csdn.net/t/20050810/10/4199931.html
      

  4.   

    在VB中Module是不是等于C#的namespace概念?不是,vb也有namespace关键词,一样的功能,vb的module其实是c#的静态封闭类,不过c#的静态封闭类要引用的话还要加类名称,module可以不加,看起来就像是全局函数一样,这个主要还是为了和以前的vb代码兼容
      

  5.   

    如果在B中引用A11,不能不加A1类名(因为你的方法不是statc的,所以应该是"Al对象.All()")module 是标准模块
    标准模块里盛的过程、函数、声明通常在全局范围有效;你不用加任何限定符就可以直接用标准模块里的东西。命名空间提供了一种组织相关类和其他类型的方式。与文件或组件不同,命名空间是一种逻辑组合,而不是物理组合。在C#文件中定义类时,可以把它包括在命名空间定义中。
      

  6.   

    1.如果在B中引用A11,以前能否不加A1类名,如何实现?
    答:是不可以的.因为你在不同的命名空间中,而且是不同类中的方法.
       参考实现: (使用静态方法,可以直接通过类去调用而不用创建它的实例)
       namespace A
    {
        public class A1
        {
            public static int A11()
            {
                return 1;
            }
        }
    }
    namespace B
    {
        public class B1
        {
            public int B11()
            {
                return A.A1.A11();
            }
        }
    }
    2.在VB中Module是不是等于C#的namespace概念
    VB我没用用,不能解答。
      

  7.   

    不行,必须要注明要调用哪个命名空间的方法。
    本题要A.A1().A11();
      

  8.   

    简单的说,命名空间就是访问路径。跟你访问文件夹下的文件一样A.A1().A11();