[英]Do asp.net application variables pass by reference or value?
我最近发现,当在ASP.net应用程序中使用Session或Application对象时,它会通过引用传递值。
这在大多数情况下都很有效,但现在我在一个我真正需要数据副本的地方,而不是对它的引用,因为我会在完成处理时放弃对它的任何更改。
我也知道在应用程序的根目录中设置变量,有效地创建具有更好性能的全局应用程序变量,并消除会话/应用程序对象的所有投射疯狂。
有人知道应用程序变量是通过引用还是值传递? 我似乎无法挖掘有关该主题的任何数据,并希望消除我目前必须将数据从Application对象“复制”到新变量进行处理的代码。
实际上,默认情况下会发生什么(假设您有引用类型而不是值类型)是它传递引用的副本 。
所以你有一个不同的变量,但它指向同一个对象。
“Application”变量只是一个常规成员变量。 它就像任何其他变量一样工作,它的范围只比大多数变量大。
如果复制变量的值取决于变量是否为值类型。
如果它是值类型,例如int
,则始终复制该值。
如果它是引用类型,例如List<int>
则会获得对该对象的引用的副本。 对象本身不会被复制。
因此,如果您需要复制的是引用类型,则必须显式创建副本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.