1

私は動的に作成するセッション変数を持っているので、たとえば、次のセッション変数があるとしましょう

Session["area1"]
Session["area2"]
Session["area3"]
Session["area4"]

そして、これらのセッションのそれぞれに、そこにリストがあります

次に、名前がどうなるかを取得し、コードで使用するためにこれを持っています

string areaName = "area" + Session["area"];

Session["area"] は、ボタンがクリックされた回数に基づいて自己増加するセッション変数です

パラメータとして List を必要とする関数に areaName を渡そうとすると、セッション変数の値がリストであっても渡せません。

セッションの名前を取得できるように「areaName」のみを使用しています

リスト型を必要とする関数に渡すためにどのように使用できますか?

4

2 に答える 2

2

リストが含まれていることがわかっている場合は、キャストを実行します。例えば

myMethod(Session["area1"] as List<string>);
于 2013-07-31T19:28:15.220 に答える
1

以下を呼び出すことにより:

string areaName = "area" + Session["area"];

あなたが言っているのは、文字列「area」を取得し、それに ToString() メソッドを呼び出す Session (デフォルトではオブジェクト) の変数を追加するということです。ここでの最終結果は、リストではなく文字列です。(そして、意味のあるものではありません)。

必要な作業は、Session 値を取得して、それが既知の型にキャストすることだけです。

method((List<string>)Session["area"])

また

method(Session["area"] as List<string>)

最初にキャストせずに Session["area"] を渡すことができない理由は、セッションが変数をオブジェクトとして返すためです。確かに、それはメモリ内のリストかもしれませんが、システムはそれを他のオブジェクトと同じように扱い (詳細についてはポリモーフィズムを調べてください)、期待するリストではありません。したがって、正しい型にキャストしないと、コンパイル時エラーが発生します。

于 2013-07-31T19:30:16.197 に答える