1

ここでNoobの質問ですが、私は本当に立ち往生しています!

というアプリケーションで使用できるクラスを確立しようとしていますUpdateDatabaseUpdateDatabase.csファイルは私の名前空間に保存され、使用AppName.Helpersusing AppName.Helpersたいすべての場所で宣言しましUpdateDatabaseた。

に電話できませんUpdateDatabase。として設定しましたpublic class UpdateDatabase。それは正しいことですか?

私の中UpdateDatabaseには、他のいくつかのクラスUpdateCustomersUpdateEmployeesありUpdateProductsます。UpdateDatabaseユーザーがボタンをクリックし、その呼び出しを行ってから、3 つの「サブクラス」の実行を開始できるようにしたいと考えていますUpdateDatabase

どこに電話してもUpdateDatabase、エラーが表示されますAppName.Helpers.UpdateDatabase' is a 'type' but is used like a 'variable

4

5 に答える 5

3

あなたはおそらく次のようなことをしようとしています:

UpdateDatabase.UpdateCustomers();

ここにはいくつかのオプションがあります。

1) クラスのオブジェクトを作成する

var helper = new UpdateDatabase();
helper.UpdateCustomers();

2) 静的クラスとして使用する

public static class UpdateDatabase {
    public static void UpdateDatabase(){}
}

クラスのメソッドを使用するには、そのインスタンスを作成して、それらのメソッドにアクセスする必要があります。または、インスタンスが不要になるように静的にすることもできますが、このクラスは使用するたびに共有されます。

これで質問の答えが得られない場合は、投稿をコードで編集する必要があります。

于 2013-08-17T01:42:36.337 に答える
2

私は C# プログラマーではありませんが、クラスをインスタンス化する必要があるように思えます。クラスは、実際にtypeのオブジェクトupdateDatabaseではなく、その変数がどのように見えるかをコンパイラに伝えるだけです。 updateDatabase

ほとんどの OO 言語では、キーワードを使用すると暗黙的に発生するコンストラクターmyClassを呼び出して、型のオブジェクトを作成します。new

したがって

var db = new updateDatabase();
db.myMethod();

これらの理由により、コンパイラはメッセージに不平を言っています

AppName.Helpers.UpdateDatabase' is a 'type' but is used like a 'variable

于 2013-08-17T01:49:18.760 に答える
1

コードとその使用法を少し示していただけると助かります。問題は、UpdateDatabaseクラスが静的クラスではないこと、および/または「新規作成」によってそのインスタンスを作成していないことであり、コードの他の部分で実際に使用できるようになっていると想定しています。

于 2013-08-17T01:44:04.873 に答える
0

ボタンの onClick イベントの場合、次のようにクラスを呼び出します。

UpdateDatabase.subclass();
于 2013-08-17T01:49:21.683 に答える
0

大丈夫です、ここにいる全員がかつて初心者でした。=)

あなたの問題は、メソッドに直接アクセスしようとしているという事実にあると思います。

MSDN によると、クラスを public '[...] としてマークすることは、最も寛容なアクセス レベルです。パブリック メンバーへのアクセスに制限はありません。ただし、次のようにクラスをインスタンス化する必要があります。

    AppName.Helpers.UpdateDatabase _obj = new AppName.Helpers.UpdateDatabase();

その後、そのメンバー (メソッドとプロパティ) を使用できるようになります。

一方、クラスをstaticとして宣言することもできます。インスタンス化する必要はありませんが、インスタンスを作成することはできず、破棄することもできません。

于 2013-08-17T01:51:07.630 に答える