none
SDK中命名空间如何引用? RRS feed

  • 问题

  •  

     

    我初学.NET,我问的是一个关于SDK下的问题,虽然这里是"Visual"区,但是我想这里在应该能找到更好的答案。

     

    我下载并安装了.NET 2.0 的SDK,我做的程序文件是这样的:

     

    E:\ 分区两个文件夹,分别为 F1F2

    F1 中有文件 Class1.cs ——其中( namespce F1{……}  ),文件中定义了类 Class1

    F2 中有文件 Program.cs——其中( namespace F2{……} )。

    程序入口的 Main() 方法在 Program.cs 中。我想在 Main() 中使用 Class1.cs 这个文件中定义的类 Class1

    请问在不改变文件路径的情况下如何通过代码引用?

     

    2008年11月5日 14:52

答案

  • 经过测试,在VS2008里是完全可以的。不过,默认情况下,名称空间是项目名称.文件夹名称,但项目名称删除也是可以的。

    你说的是2两个独立的文件夹,不是在 VS 里吧,那也是可以的。编译的时候写法是这样的:


    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe /out:E:\F2\Test.exe E:\F1\Class1.cs E:\F2\Program.cs

    这样,运行
    Test.exe,就可以看到结果了,

    程序代码分别是:

    Class1.cs
    ===================

    using System;

    namespace F1
    {
      class Class1
      {
        public static void Hello()
        {
          System.Windows.Forms.MessageBox.Show("Hello 【孟子E章】");
        }
      }
    }


    Program.cs
    =================

    using System;

    namespace F2
    {
      class Program
      {
        static void Main()
        {
          F1.Class1.Hello();
        }
      }
    }



    2008年11月6日 1:02
    版主
  • 孟老师解释的已经比较清楚了,你在使用命令行编译的时候需要显示指明需要编译进可执行程序的所有源代码文件,这样就可以使用我上面的方法引用命名空间了。
    2008年11月6日 1:34
    版主

全部回复

  • 你好!
       一般有两种方法:
       第一种:
       F1.Class1 myClass1Object=new F1.Class1();
       第二种:
       Program.cs文件的开头添加using F1;,在代码中就可以直接使用Class1
      
    2008年11月5日 16:39
    版主
  • 你好,我说清楚了,现在两个类文件不在同一目录下,一个在文件夹F1下面,另外一个在文件夹F2下面,所以,上面两种方法我都试过了,不成功!

    2008年11月6日 0:38
  • 经过测试,在VS2008里是完全可以的。不过,默认情况下,名称空间是项目名称.文件夹名称,但项目名称删除也是可以的。

    你说的是2两个独立的文件夹,不是在 VS 里吧,那也是可以的。编译的时候写法是这样的:


    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe /out:E:\F2\Test.exe E:\F1\Class1.cs E:\F2\Program.cs

    这样,运行
    Test.exe,就可以看到结果了,

    程序代码分别是:

    Class1.cs
    ===================

    using System;

    namespace F1
    {
      class Class1
      {
        public static void Hello()
        {
          System.Windows.Forms.MessageBox.Show("Hello 【孟子E章】");
        }
      }
    }


    Program.cs
    =================

    using System;

    namespace F2
    {
      class Program
      {
        static void Main()
        {
          F1.Class1.Hello();
        }
      }
    }



    2008年11月6日 1:02
    版主
  • 孟老师解释的已经比较清楚了,你在使用命令行编译的时候需要显示指明需要编译进可执行程序的所有源代码文件,这样就可以使用我上面的方法引用命名空间了。
    2008年11月6日 1:34
    版主
  •  

    谢谢孟老师和周老师赐教,下次有问题了一定还请教你们!
    2008年11月6日 2:27
  • 很高兴我的解释能对你有帮助!
    现在用SDK学习编程的程序员似乎不多,个人认为这是一种好的学习方法,可以很好的了解VS生成解决方案的时候后台所做的工作,更好的锻炼自己写代码的能力,VS中那些方便的向导是给已经了解代码机理的程序员提高生产效率用的,可能不太适合初学者理解基本问题。
    2008年11月6日 3:16
    版主