提问人:crazyPen 提问时间:5/20/2018 最后编辑:crazyPen 更新时间:5/20/2018 访问量:60
会话像原始类型一样传递?
Session is passing like a primitive type?
问:
我有一个 MVC Core Dotnet 应用程序,基本上我想加载会话数据的视图,但在页面加载后删除会话。我的代码有效,但我不明白为什么
public IActionResult Charge(string stripeEmail, string stripeToken, int totalPrice){
//some stripe code that went here...
var cart = HttpContext.Session.GetCart();
ClearSession();
return View(cart);
}
protected void ClearSession(){
//creates a new instance if cart doesnt exist otherwise returns it
var cart = HttpContext.Session.GetCart();
//clears the items from the collection using .Clear() ...
cart.RemoveAll();
HttpContext.Session.SetCart(cart);
}
当代码被放置在像这样的新方法中时,它就会起作用。但是如果我用相同的方法放置它,它就不起作用了。我很惊讶地将它放在一种新方法中,因为它违背了我对按值传递如何处理对象类型的理解。(将传递对象的位置)。当我在新方法中清除 Item 列表时,它的作用就像是对象的副本。
为什么这段代码有效?
答: 暂无答案
上一个:.NET:通过引用传递是谎言吗?
下一个:引用类型的 C# 7 引用返回
评论
var cart = HttpContext.Session.GetCart();
Charge
ClearSession
var cart = HttpContext.Session.GetCart();