将列表<string>传递给函数</string>

时间:2013-07-31 19:25:20

标签: asp.net list function session

我有一个动态创建的会话变量,所以假设我有以下会话变量

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

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

然后我有了这个以获得名称将在我的代码中使用它

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

Session [“area”]是一个会话变量,根据点击按钮的次数增加自我

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

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

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

2 个答案:

答案 0 :(得分:2)

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

myMethod(Session["area1"] as List<string>);

答案 1 :(得分:1)

通过调用以下内容:

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

你要说的是,取字符串“area”,然后在Session中附加变量(默认情况下是一个对象),它将调用它的ToString()方法。你的最终结果是一个字符串,而不是一个列表。 (而不是那个有意义的人)。

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

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

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

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