0

C/C++ では、ファイルを作成し、すべての関数をこのファイルに入れることができます。

lib.h

void plus(int i, int j);

lib.cpp

#include "lib.h"

void plus(int i, int j)
{
    printf("%d\n", i+j);
}

main.cpp

#include "lib.h"
main()
{
    plus(1, 2);
}

しかし、C# では、関数を他のcsファイルに配置して に含めるにはどうすればよいmain.csですか?

4

3 に答える 3

2

まず、これを実際に行うべきではありません。C/C++ の世界では、プログラムで後で宣言された関数を使用できないため、これが行われます。

また、ヘッダー ファイルは、OS または一部のベンダーの共有ライブラリへのインターフェイスとして機能します。

したがって、@Tigran の発言は、C# の同じプリンシパルに相当します。iterface を宣言します。

文字通りの意味で求めていることを本当にやりたい場合は、部分関数を使用できます。興味のある方のためにここに置いておきます。これが設計された目的は C/C++ とは異なるため、本当にこれを行うかどうかを評価する必要がありますが、そうではないと思います。

これを行うことができます。詳細については msdn を参照してください

namespace PM
{
    partial class A
    {
        partial void OnSomethingHappened(string s);
    }

    // This part can be in a separate file. 
    partial class A
    {
        // Comment out this method and the program 
        // will still compile. 
        partial void OnSomethingHappened(String s)
        {
            Console.WriteLine("Something happened: {0}", s);
        }
    }
}
于 2013-10-14T07:23:44.043 に答える
1

C# ではそのようにはしません。

C# では、まずすべての関数 (C# ではメソッドと呼ばれる) がクラスに含まれている必要があることに注意してください。C++ のように裸で浮かんではいけません。

次に、別の ".cs" ファイルで定義されている C# クラスにアクセスするには:

  • クラスが別のアセンブリで定義されている場合 (つまり、別の DLL 内にある場合)、そのアセンブリへの参照をプロジェクトに追加する必要があります。
  • そのクラスを含む名前空間が、メソッドを使用する必要があるクラスの名前空間と同じである場合は、それ以上何もする必要はありません。
  • それ以外の場合は、ソース コード ファイルの先頭に、必要なクラスを含む名前空間を指定するusingディレクティブを配置する必要があります。または、メソッド呼び出し自体で完全な名前空間を指定できます。

メソッドを使用するには、含まれているクラスのインスタンスをインスタンス化するか、そのメソッドが静的で、ClassName.MethodName()構文を使用してアクセスする必要があることに注意してください。

于 2013-10-14T07:39:00.813 に答える
0

C++これを達成するために(何らかの理由で) in のように同じ懸念事項に従いたい場合は、あるファイルでC#宣言(たとえば)しinterface、別のファイルで実装しますが、基本的にあなたの場合、それは必要ないと思います。する必要があります:

  • 1 つのファイルでクラスを宣言する
  • main.csファイルでインスタンス化する
  • これを使って

C#開発者のようなあなたにはなじみがあるように見える他のさまざまな側面がたくさんあるC++ので、少し学ぶことをお勧めします.

于 2013-10-14T07:07:40.390 に答える