在 C# 中使用自定义属性是内存/性能瓶颈吗?

zee*_*zee 2 c# performance custom-attributes

我想用自定义属性装饰我的方法和 GUI 控件。我想知道属性如何消耗内存或影响应用程序性能。什么是属性的生命周期。意味着当一个类的对象在方法、属性和自身中具有自定义属性时。被实例化,然后被释放。如果所有自定义属性实例也随着对象的解构而处理,或者它们仍然保留在内存中?

Sam*_*eff 5

属性存在于类型上,而不是对象实例上,因此属性实例的生命周期与对象实例的生命周期无关。

如果在大量使用的代码中重复使用反射来访问相同的属性,那么在代码中大量使用属性可能会成为瓶颈。这可以通过缓存轻松解决。缓存的确切方式和时间取决于您的应用程序和环境。

In general though, attributes provide a great solution to a common programming scenario and when used properly will not cause a memory or performance bottleneck.