我有一个动态创建的会话变量,所以假设我有以下会话变量
Session["area1"]
Session["area2"]
Session["area3"]
Session["area4"]
在每个会话中,我都有一个列表
然后我有了这个以获得名称将在我的代码中使用它
string areaName = "area" + Session["area"];
Session [“area”]是一个会话变量,根据点击按钮的次数增加自我
现在,如果我尝试将areaName传递给需要List作为参数的函数,它就不允许我这样做,即使该会话变量中的值是一个列表
我只使用“areaName”来获取会话名称
如何使用它以将其传递给需要List类型的函数?
答案 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以获取更多信息),这不是它期望的列表。因此,除非将其转换为正确的类型,否则将出现编译时错误。