Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个方法名称“LogClick”,每秒调用 2 次或更多次。我用传统的方式称呼它:
Call New MyClass().LogClick()
每次我调用“LogClick”时,都会实例化“MyClass”。所以我想:“为什么不把这个方法改成共享呢?”
Public Shared Sub LogClick() ... End Sub MyClass.LogClick()
将这种方法转换为共享时,我会遇到性能、并发内存问题吗?
]嘿,
本身没有性能问题,但任何静态变量都将保留在内存中,即使在 ASP.NET 中也是如此。所以你必须考虑到这一点。但通常,如果没有任何静态变量,性能将与实例相同......取决于实例中的内容,使用静态方法可能会更好。
HTH。
Shared(C# 中的静态)本质上是非线程安全的,因为您的所有页面实例都将访问同一个对象。
“问题”完全取决于 LogClick() 在做什么。您必须非常小心地分析代码,假设执行将在每一行执行后转移到不同的线程,然后再返回。