0

私はc#で書かれたWebアプリを持っています。3つのプロジェクトで構成されています。そのうちの 2 つは asp.net mvc プロジェクトで、そのうちの 1 つは、2 つの mvc プロジェクトで使用するクラスのみを含む単純なプロジェクトです。したがって、2 つの mvc アプリは 3 番目のプロジェクトを参照します。

非 mvc プロジェクトに、基本的にこれを行う静的メソッドがあります。これには、文字列テキスト、MyEntities db の 2 つの入力パラメーターがあります。MyEntities は、私のデータベースである .edmx ファイルのインスタンスです。

メソッド内で、テキストを解析し、それを別々の行に分割して、それらの一部を取得します。その部分については、ユーザーによっては、db.tblToy にその名前のレコードがあるかどうかを確認します。

ユーザーごとに異なるデータベースがあります。したがって、user_id を取得し、それに従って、対応するデータベースの tblToy テーブルを検索します。危険とは、メソッドが間違った結果を返す場合です。たとえば、user1 の場合、静的であるため、user2 のデータベースをチェックインします。

そのメソッドは静的です。クラスインスタンスでは呼び出しません。私の質問はこれです:このメソッドが静的であることは危険ですか?

4

2 に答える 2

1

いいえ、パラメーターからのみ情報を処理する場合、静的メソッドはこのシナリオでは危険がありません。メソッドが静的変数/自動実装プロパティで機能する場合、ゲームは変わります

于 2013-03-10T15:58:09.800 に答える
1

いいえ、静的であることは、インスタンス メソッドであることよりも危険ではありません。そのメソッドに何を入れるかが重要です。

静的メソッドとインスタンス メソッドの唯一の違いは、一方はクラスのインスタンスで呼び出す必要があり、もう一方は単に型自体で呼び出されることです。

マスターからのこの回答が役立つ場合があります。

静的メソッドは本質的にスレッドセーフではありません。これらは、CLR によってインスタンス メソッドと同じように扱われます。

于 2013-03-10T15:54:29.017 に答える