1

我有一个动态创建的会话变量,例如,我有以下会话变量

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

在每个会话中,我都有一个列表

然后我有这个是为了得到名字并在我的代码中使用它

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

Session["area"] 是一个会话变量,它根据按钮被点击的次数自行增加

现在,如果我尝试将 areaName 传递给需要 List 作为参数的函数,它不会让我这样做,即使该会话变量中的值是一个列表

我只使用“areaName”来获取会话的名称

我如何使用它来将其传递给需要 List 类型的函数?

4

2 回答 2

2

如果你知道它包含一个列表,那就做演员表。例如

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

通过调用以下命令:

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

您是说,获取字符串“area”,并将来自 Session 的变量(默认情况下是一个对象)附加到该变量,这将调用它的 ToString() 方法。您在这里的最终结果是一个字符串,而不是一个列表。(而且不是一个有意义的)。

您需要做的就是获取 Session 值,并将其转换为您知道的类型。

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

或者

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

你不能在没有第一次强制转换的情况下传入 Session["area"] 的原因是因为 session 将你的变量作为对象返回。当然,它可能是内存中的列表,但系统将其视为与任何其他对象相同(查找多态以获取更多信息),这不是它所期望的列表。因此,除非您将其转换为正确的类型,否则您将收到编译时错误。

于 2013-07-31T19:30:16.197 回答