-2

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

在 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();
   ...
}

在得知 Java在 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();
      ...
      }
   }
}

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

4

1 回答 1

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指令只是 javaimport指令的部分同义词——在 C# 中,using只提供了进入 a 的快捷方式,namespace而您习惯于使用import.

于 2012-08-27T22:36:07.357 回答