我正在查看Web应用程序的源代码,并且可以看到很多用例,例如下面的示例代码。我在C#(复杂类型)中声明局部变量时无法在线找到任何信息,只是想确定它是否创建了该对象的引用或副本。我来自JavaScript背景,我想除非它是原始数据类型,否则它总是会创建一个引用。
代码是这样的
CustomItemType myVarA = (CustomItemType) this.Session["VAR_1"];
// Do some work on the properties of VAR_1
int num2 = checked (myVarA.Items.Count - 1);
int index = 0;
while (index <= num2)
{
myVarA.Items[index].StatusCode = "Posted";
checked { ++index; }
}
// Save back to the session
this.Session["VAR_1"] = (object) myVarA;
我是否正确认为不需要以下行?
// Save back to the session
this.Session["VAR_1"] = (object) myVarA;
由于局部变量myVarA
只是会话中对属性的引用,因此,如果您更新本地var,那么您还将更新会话对象吗?
其次,当每个网页都在一个新线程中提供服务时,这多个线程将同时访问同一个会话对象并同时进行操作,是否会带来问题?
struct
)是“按值”,分类(声明为class
)是“按引用”。因此,这取决于什么CustomItemType
。lock
块中。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句