变量声明,它是否创建对实际对象或副本的引用?

盟友

我正在查看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,那么您还将更新会话对象吗?

其次,当每个网页都在一个新线程中提供服务时,这多个线程将同时访问同一个会话对象并同时进行操作,是否会带来问题?

网络游戏
  1. 基本数据类型和结构(声明为struct)是“按值”,分类(声明为class)是“按引用”。因此,这取决于什么CustomItemType
  2. 是的,它引起潜在的线程同步问题。在简单的情况下,您可以将对象操作放入lock块中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ToDictionary()是否创建副本或引用?

来自分类Dev

ToDictionary()是否创建副本或引用?

来自分类Dev

如果通过引用对象代替函数中的变量,它是否调用复制构造函数?

来自分类Dev

当场对象创建与变量声明

来自分类Dev

当场对象创建与变量声明

来自分类Dev

extern变量声明是否还声明(对象)实体?

来自分类Dev

如何在javascript中创建json对象的副本,而不是引用

来自分类Dev

创建列表的副本,不引用所包含的对象

来自分类Dev

如何在javascript中创建json对象的副本,而不是引用

来自分类Dev

引用声明是否为引用对象引入了新名称?

来自分类Dev

R:在创建R对象之前检查它是否存在

来自分类Dev

如何制作实际上是struct的对象(而不是其引用)的副本?

来自分类Dev

是否可以通过引用传递或访问实际对象?

来自分类Dev

引用对象而不在std :: vector中为其创建变量的情况下,是否会创建该对象的新实例?

来自分类Dev

是否存在无法为其创建深层副本的对象?

来自分类Dev

我是否必须为线程需要创建对象的副本

来自分类Dev

dict __getitem__是否会创建相应对象的副本?

来自分类Dev

我是否必须为线程需要创建对象的副本

来自分类Dev

dict __getitem__是否会创建相应对象的副本?

来自分类Dev

javascript 对象方法如何引用尚未声明的变量?

来自分类Dev

类扩展中声明的变量是否具有强引用?

来自分类Dev

引用未声明的实体和副本

来自分类Dev

C#词典是否只存储对象的引用或作为键添加的对象的完整副本?

来自分类Dev

当对象实际引用数组时,为什么Java在方法声明中使用Object而不是T []

来自分类Dev

当对象实际引用数组时,为什么Java在方法声明中使用Object而不是T []

来自分类Dev

为什么要声明/创建一个单独的变量以通过引用进行调用,而不只是在函数调用中创建一个自动对象?

来自分类Dev

返回闭包的变量是创建一个副本而不是一个引用

来自分类Dev

自动变量创建的顺序是否与声明的顺序相对应?

来自分类Dev

C ++:创建对象的本地副本

Related 相关文章

  1. 1

    ToDictionary()是否创建副本或引用?

  2. 2

    ToDictionary()是否创建副本或引用?

  3. 3

    如果通过引用对象代替函数中的变量,它是否调用复制构造函数?

  4. 4

    当场对象创建与变量声明

  5. 5

    当场对象创建与变量声明

  6. 6

    extern变量声明是否还声明(对象)实体?

  7. 7

    如何在javascript中创建json对象的副本,而不是引用

  8. 8

    创建列表的副本,不引用所包含的对象

  9. 9

    如何在javascript中创建json对象的副本,而不是引用

  10. 10

    引用声明是否为引用对象引入了新名称?

  11. 11

    R:在创建R对象之前检查它是否存在

  12. 12

    如何制作实际上是struct的对象(而不是其引用)的副本?

  13. 13

    是否可以通过引用传递或访问实际对象?

  14. 14

    引用对象而不在std :: vector中为其创建变量的情况下,是否会创建该对象的新实例?

  15. 15

    是否存在无法为其创建深层副本的对象?

  16. 16

    我是否必须为线程需要创建对象的副本

  17. 17

    dict __getitem__是否会创建相应对象的副本?

  18. 18

    我是否必须为线程需要创建对象的副本

  19. 19

    dict __getitem__是否会创建相应对象的副本?

  20. 20

    javascript 对象方法如何引用尚未声明的变量?

  21. 21

    类扩展中声明的变量是否具有强引用?

  22. 22

    引用未声明的实体和副本

  23. 23

    C#词典是否只存储对象的引用或作为键添加的对象的完整副本?

  24. 24

    当对象实际引用数组时,为什么Java在方法声明中使用Object而不是T []

  25. 25

    当对象实际引用数组时,为什么Java在方法声明中使用Object而不是T []

  26. 26

    为什么要声明/创建一个单独的变量以通过引用进行调用,而不只是在函数调用中创建一个自动对象?

  27. 27

    返回闭包的变量是创建一个副本而不是一个引用

  28. 28

    自动变量创建的顺序是否与声明的顺序相对应?

  29. 29

    C ++:创建对象的本地副本

热门标签

归档