我有基类,很多继承的类和我的大脑问题:
abstract class Base
{
abstract Dictionary<string, string> X { get; }
abstract Dictionary<string, string> Y { get; }
}
class A : Base
{
override Dictionary<string, string> X { get; } = ... // different
override Dictionary<string, string> Y { get; } = ... // same for all instances of A
}
class B : Base { ... }
对于A.Y
的所有实例,我看到A
将相同,B.Y
对于所有实例B
都是相同的,等等。 ,对new Dictionary
使用Y
有点......愚蠢,不必要的内存分配。
如何在所有实例中共享Y
?我的大脑想让它成为static
并继承。
X
和Y
永远不会更改(可能应该是只读字典,但这不是问题)。
答案 0 :(得分:2)
在派生类中使class A : Base {
private static readonly Dictionary<string, string> sharedY = ...
override Dictionary<string, string> X { get; } = ... // different
override Dictionary<string, string> Y {
get => sharedY
}
}
的实例为private static,并在getter中返回它:
{{1}}
注意:我假设共享字典会填充一次,永远不会再次修改。否则你会遇到很多麻烦,特别是在并发环境中。