定义自定义Mono“using”指令,如Java“import”

时间:2012-08-27 09:40:34

标签: c# java mono

为避免重复定义,我尝试将internal function prototypes从类One移动到C#using My.Class.One指令(如Java中的import My.Class.One)。

在Java中,这会改变这段代码:

public class One {
   public static void func1();
   public static void func2();
   public static int main(String[] args) { ... }
}

...将该代码分成不同的文件:

import My.Include;

public class One {
   public static int Main(String[] args) { ... }
}
------------------------->8--------------------------------    
package Include;

public class My {
   public static void func1();
   public static void func2();
   ...
}

在得知C#中将'packages'命名为'namespaces'之后,我想出了以下C#代码,这些代码无法编译(mcs One.cs My_include.cs -out:One.exe)并出现错误:

> “错误CS0103:当前上下文中不存在名称`func1'”

using System;
using My.Include;

public class One {
   public static int Main(String[] args) { return funct1(); }
}
------------------------->8--------------------------------    
using System;

namespace My {
   namespace Include {
      public class functions {
      public static void func1();
      public static void func2();
      ...
      }
   }
}

我尝试了许多不同的命名约定,但我仍然得到同样的错误。你能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:1)

看起来你想要一个partial class,所以你的主类文件看起来像:

// File:  One.cs
using System;

public class One
{
    static void Main()
    {
        // Your Main method here
    }
}

你会得到第二个文件,如下所示:

// File:  One.Externs.cs
using System;

public partial class One
{
    extern static void func1();
    extern static void func2();
}

在编译时,编译器会自动将这两个(或更多)文件合并为一个类。这为您提供了您正在寻找的分离,但将相关定义保留在正确的范围内。

using指令只是java的import指令的部分同义词 - 在C#using中只提供namespace的快捷方式,而您习惯于指代具有import的班级或部分班级。