7

それぞれにクラスが含まれる2つの.csファイルがあります。Form2.cs内の別のクラスのForm1.csからクラスのメソッドを呼び出すにはどうすればよいですか?

このように見えます...

Form1.cs

public partial class Class1 : ClassContainer
{
    public void awesomeMethod()
        {
        }
}

Form2.cs

class Class2 : SomethingChanged
{
    public void decentMethod()
    {
    }
}

decentMethod()内でawesomeMethod()を呼び出したいと思います。ありがとう。

4

6 に答える 6

9

つまり、このように?

public void decentMethod()
{
    Class1 instance = new Class1();
    instance.awesomeMethod();
}

メソッドを呼び出すクラスのインスタンスが必要です。


または、インスタンスを使用する必要がない、または使用したくない場合は、メソッドを静的にします。

public partial class Class1 : ClassContainer
{
    public static void awesomeMethod()
    {
    }
}

...

public void decentMethod()
{
    Class1.awesomeMethod();
}
于 2012-08-02T13:40:54.793 に答える
4

クラスのインスタンス メソッドを呼び出すには、クラスのインスタンスが必要です。したがって、Class1 の awesomeMethod を呼び出すには、Class1 のインスタンスを作成する必要があります。

Class1 c = new Class1();
c.awesomeMethod();

ただし、冒頭の段落から、2 つの実際のクラスは 2 つの異なる形式のように聞こえます。その場合、1 つのフォームが別のフォームの新しいインスタンスを作成して、ヘルパー メソッドと思われるものを取得するだけでは意味がありません。ヘルパー メソッドを別の軽量クラスに配置する方がよいでしょう。

于 2012-08-02T13:45:46.767 に答える
1

これらは実際のメソッド シグネチャではないと推測しています。

awesomeMethodのメンバーのいずれかへの参照が必要ですdecentMethodか?

そうでない場合は、次のように簡単です。

new Class1().awesomeMethod();
于 2012-08-02T13:41:13.723 に答える
0

Visual Studio で試すことができるものを次に示します。定義なしでメソッドの使用法を記述します。たとえば、コードのどこかに次のように入力します。

cls_a instance_a;

次に、cls_a の下に波線が表示されます。"cls_a" を右クリックし、ポップアップ メニューから [生成] を選択します。次に何が起こるか見てみましょう。

App_Code ディレクトリが作成され、クラス cls_a がそのディレクトリ内のファイル cls_a.cs に生成されていることがわかりました。Visual Studio によって定義が生成されました。そしてコンパイルします。

次に、次のように cls_a からの定義なしでメソッドの使用を入力できます。

instance_a.meth_x();

再び波線を右クリックし、生成を選択します。Visual Studio に定義を生成させます。

ASP .NET では、追加のクラスを App_Code サブディレクトリに配置する必要があると思います。また、ASP.NET を思い通りに曲げる必要がある場合は、Web.config ファイルを編集して、コード ファイルを好きな場所に配置できると思います。これを行う方法を確認していないので、あなたまたは他の誰かに任せます.

とにかく、クラスとメソッドが App_Code サブディレクトリにない場合、他のすべてが正しい場合でも、クラスと関数が Web フォーム コードに表示されない可能性があります。

于 2013-09-12T03:56:35.057 に答える