gpt4 book ai didi

c# - ContextStaticAttribute 到底是什么?

转载 作者:可可西里 更新时间:2023-11-01 08:47:54 25 4
gpt4 key购买 nike

来自documentation :

A static field marked with ContextStaticAttribute is not shared between contexts. If the indicated static field is accessed on a different context, it will contain a different value. Use this attribute as it is, and do not derive from it.

The following example shows the syntax of this attribute:

[ContextStatic]
static int f=7;

不幸的是,它没有阐明在这种情况下“上下文”的含义。有人可以举例说明何时使用此属性吗?

最佳答案

属性在您使用远程处理的情况下很重要,例如从 MarshalByRefObject 派生的类。然后,您的代码将与客户端程序中的代理一起工作,这是一个伪造的类对象,它看起来与原始类完全一样,但其方法由 CLR 实现,并将方法参数序列化到在服务器上运行的实际对象。通常在另一台机器上。

字段在这样的类中是一个问题,它们不能用替代方法来伪造。这是抖动处理的事情。当它检测到对 MRBO 对象中某个字段的访问时,它不会生成直接读取/写入该字段的代码,而是调用 CLR 中的辅助方法。它知道对象是代理对象还是真实对象,并直接返回字段值或进行远程调用。

这当然会增加开销,这是一个可以非常频繁访问的静态字段的问题。 [ContextStatic] 属性表示您不关心实际的静态字段值,它的本地副本就足够了。或者,如果出于某种原因在本地跟踪状态很重要,则可以有意使用它。我想不出一个很好的例子。框架程序员也没有,它没有在框架代码中的任何地方使用。

关于c# - ContextStaticAttribute 到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15927864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com